Concept de classes (1) Classes et objets en Java Master Informatique 1 ère année. Concept de classes (2) Concept de classes (3)

Documents pareils
Plan du cours. Historique du langage Nouveautés de Java 7

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Cours 1: Java et les objets

as Architecture des Systèmes d Information

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Programmer en JAVA. par Tama

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Généralités sur le Langage Java et éléments syntaxiques.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Initiation à JAVA et à la programmation objet.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

TP1 : Initiation à Java et Eclipse

Langage Java. Classe de première SI

Programmation par les Objets en Java

Une introduction à Java

2. Comprendre les définitions de classes

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Premiers Pas en Programmation Objet : les Classes et les Objets

Héritage presque multiple en Java (1/2)

Java Licence Professionnelle CISII,

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Tp 1 correction. Structures de données (IF2)

Package Java.util Classe générique

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

INITIATION AU LANGAGE JAVA

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Programmation avec des objets : Cours 7. Menu du jour

Programmation en Java IUT GEII (MC-II1) 1

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Objets et Programmation. origine des langages orientés-objet

Java c est quoi? Java pourquoi?

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Chapitre 10. Les interfaces Comparable et Comparator 1

PROGRAMMATION PAR OBJETS

Remote Method Invocation (RMI)

Auto-évaluation Programmation en Java

Chapitre 2. Classes et objets

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation Objet Java Correction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Corrigé des exercices sur les références

TD3: tableaux avancées, première classe et chaînes

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Synchro et Threads Java TM

TD/TP PAC - Programmation n 3

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Programmation MacOSX / ios

Programmer en Java. OC Informatique GYMNASE DE BURIER

Java Licence Professionnelle CISII,

Programmation Orientée Objet application au langage Java Version Novembre 2007

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Programmation par composants (1/3) Programmation par composants (2/3)

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

RMI le langage Java XII-1 JMF

TD/TP PAC - Programmation n 3

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Classe Interne, Anonyme & Enumération

ACTIVITÉ DE PROGRAMMATION

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Chapitre VI- La validation de la composition.

1 Définition d une classe en Java

TP, première séquence d exercices.

Un ordonnanceur stupide

Environnements de développement (intégrés)

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Projet de programmation (IK3) : TP n 1 Correction

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

TP1. Outils Java Eléments de correction

Corrigés des premiers exercices sur les classes

Support de cours et TD Programmation Orientée Objet

Langage à objets : JAVA (1)

Gestion distribuée (par sockets) de banque en Java

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Programmation avancée et répartie en Java : interfaçage avec d autres langages

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

TP1 : Initiation à Java et Eclipse

Machines virtuelles fonctionnelles (suite) Compilation ML Java

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Programmation Objet I

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Programmation Orientée Objet Java

Java 1.5 : principales nouveautés

Génie Logiciel avec Ada. 4 février 2013

Apprendre Java en 154 minutes

COMPARAISONDESLANGAGESC, C++, JAVA ET

Threads. Threads. USTL routier 1

Applet pour visualiser les variables «automate» notifiées

Structurer ses données : les tableaux. Introduction à la programmation

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Bases Java - Eclipse / Netbeans

Programmation Par Objets

Utiliser Java sans BlueJ

Transcription:

Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Classes et objets en Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin Concept de classes (1) Calculer le prix de la location d un véhicule : Il existe 2 catégories de véhicules (tourisme, utilitaire). En fonction de ces catégories, le prix de base est le suivant : tourisme : 50 Є + 30 Є / jour + 0.50 Є / km utilitaire : 50 Є + 40 Є / jour + 0.60 Є / km Pour les véhicules tourismes, il est possible de réserver : une galerie (+5 Є) et un porte vélo (+3 Є). Pour les véhicules utilitaire, le prix dépend de la charge utile. - Demander les informations nécessaires au calcul du prix de la location. - Afficher le prix de cette location. Concept de classes (2) Enoncé spécifications location = ce que l on doit gérer Une location est définie par : type de véhicule loué (tourisme, utilitaire) nombre de jours de la location nombre de kilomètres prix galerie, porte-vélo charge Une location a une «vie», elle agit : elle doit demander les valeurs aux utilisateurs. elle doit calculer le prix. elle doit afficher ce prix. Données Fonctions Concept de classes (3) Objectifs : Regrouper les infos d une même entité : les données (variables) : champs = propriétés. les fonctions : méthodes. location Propriétés : type, km, jours, prix, gallerie, velo, charge Méthodes : saisieinfos(), calculprix(), afficheprix() ClasseA Champs Méthodes - int type - int nb_km - int nb_jours - double prix - boolean gallerie saisieinfos() calculprix()

Concept de classes (4) public class { public int type; public int km; public int nb_jours; public double prix; public boolean a_porte_velo; public double calculprix() {.java Propriétés/Champs Concept de classes (5) Propriétés accessibles dans chaque méthode. Initialiser les propriétés : public double km = 1000; public void saisieinfos() { km = Lire.i(); Méthodes public void afficheprix() { System.out.println(prix); (fin de la classe).java Définition : Objets (1) Un objet = instance de classe variable de type classe La classe prend une valeur particulière. Ex : location tourisme pour 3 jours, sans km supplémentaire... Instanciation : Syntaxe : NomClasse nom_objet; () nom_objet = new NomClasse(); ou directement déclaration + instanciation NomClasse nom_objet = new NomClasse(); l1; l2; l1 = new (); L2 = new (); l = new (); l est donc un pointeur. Objets (2) l type km jour prix charge Réserve un espace mémoire.

Objets (3) Accès aux champs et méthodes : Syntaxe : nom_objet.champ nom_objet.méthode(argument,...) public class LeMain { public static void main(string [] arg) { l = new (); Déclaration + Instanciation l.prix = 0; l.saisieinfos(); Affecter une propriété Appeller une méthode Objets (4) Programme principale : classe avec main(). Il n est pas nécessaire d instancier cette classe. Accessibilité : mettre les différentes classes dans le même répertoire. Désallocation : automatique (c.f. Garbage Collector). Principal void main(string []) Principal.java.java int type int km... saisieinfos() calculprix() Constructeur (1) Rappel, calcul du prix d'un location : tourisme : 50 Є + 30 Є / jour + 0.50 Є / km Change régulièrement! Champ (variable) mais : valeur non demandée à l utilisateur, valeur par défaut obligatoire. Constructeur (2) Objectifs : initialiser l objet et l ensemble de ces champs. Exemple (rappel): - double prix_jour - double forfait - double prix_km + double calculprix() donner une valeur par défaut à ces champs. Démarche et mécanisme : méthode appelée systématiquement à l initialisation (new)

Constructeur (3) Implémentation : constructeur = méthode pas de type de retour nom identique à la classe plusieurs constructeurs possibles Syntaxe: public class NomClasse { public NomClasse (type param,) { Constructeur par défaut Non static (cf. cours ultérieur sur les portées) public class LocaTourisme { double prix_km; Constructeur (4) public LocaTourisme(double p_prix_km){ prix_km = p_prix_km; public double calculprix() {... public static void main(... ) { double le_prix_km = 0.9; LocaTourisme l = new LocaTourisme(le_prix_km); Accesseurs - mutateurs Démarche et mécanisme : o empêcher l accès direct aux champs. accesseurs : méthodes d accès à un champ. mutateurs : méthodes de modification d un champ. o définir la porté des méthodes. public class Vecteur { private int price; public void setprice(int val) { if (val > 0) price = val; public int getprice() { return price; champs price caché mutateur accesseur Dans l'exemple précédent : Héritage (1) Il existe plusieurs types de location. Pour chaque type, les informations et les calculs sont différents locations tes classes tes Mais chaque type a également des points communs :! notion d héritage locatourisme locautilitaire

Héritage (2) Héritage (3) - double prix - int nb_km - int nb_jours locatourisme - boolean a_velo - boolean a_gallerie locautilitaire double charge Généralisation Objectifs : o Centraliser le code. o Structurer le programme. o Faciliter la maintenance. Démarche et mécanisme : o Une (super) classe ancêtre / mère : + générale. o Des classes héritières / filles : " + spécifiques. " héritent des champs et méthodes. " définissent de nouveaux champs / méthodes. " modifient les méthodes existantes. Généralisation ClasseMère ClasseFille Syntaxe : Héritage (4) public class NomClasseFille extends NomClasseMere { LeMain void main(string []) LocaTourisme prix, km, jours saisieinfos() afficherprix(); Utilitaire Héritage (5) - surcharge Mécanisme associé : surcharge Exemple: int i=4; double d=7.0; System.out.println(d); System.out.println(i); System.out.println("les deux marchent"); Pourquoi? Plusieurs méthodes println sont définies : public void println(double x) { public void println(string x) { (etc.) a_velo charge! La méthode println est dite surchargée.

Héritage (6) - surcharge a) Objectifs: o étendre le domaine d application des méthodes, o permettre une meilleure cohérence des dénominations. Signature d une méthode = nom + paramètres + ordre des paramètres ce qui rend la méthode unique. b) Démarche et mécanismes : o entre méthodes d une même classe ou d une hiérarchie o nom identique o paramètres différents! signatures différentes Syntaxe : Héritage (7) - surcharge public static int nomfonction (int param1) { public static int nomfonction (float param1) { public static int nomfonction (int param1) { public static float nomfonction (int param1) { Erreur de Compilation! c) Avantage : Utilisation intuitive des méthodes par d autres programmeurs. Héritage (8) - outrepassement Mécanisme associé : Outrepassement LocaTourisme LocaUtilitaire Héritage (9) - outrepassement public class { public double calculprix() { return 50 + prix;... commun public class LocaTourisme extends { public double calculprix() { prix = 30*jours + 0,5*km; particulier return super.calculprix();...

Héritage (10) - outrepassement a) Objectifs : o cacher la méthode mère par la méthode fille, o étendre ou modifier le corps de la méthode. b) Démarche et mécanismes : o redéclaration d une méthode de la classe mère, o signatures identiques, o modificateurs d accès moins restrictifs (cf. modificateurs). o La méthode mère doit être accessible (cf. protection et portée). o Le mot clef super donne l accès à la méthode de la classe mère. Objectifs : Polymorphisme (1) o généraliser le code, o simplifier l écriture du programme (minimiser Ctrl+C/Ctrl+V), o obtenir des exécutions différentes suivant le contexte. Démarche et mécanisme : o le type effectif d une variable = type de l instanciation public class MainVoiture { Polymorphisme (2) public static void main (String [] arg) { System.out.println("Categorie de voiture?"); int categ=lire.i(); l=null; Contexte Déclaration type le + générique Transtypage (1) La classe déclarée d un objet n est pas forcément la classe instanciée. + générique + détaillée Comment accéder aux champs/méthodes? if (categ==1) l= new LocaTourisme(); else l= new LocaUtilitaire(); l.saisieinfos(); l.calculprix(); l.afficheprix(); nécessite une relation d héritage. Instanciation 1 seul traitement Object o = new LocaVoiture(); o.calculprix(); o.calculprix(); Faux : Object ne définit pas de méthode calculprix()!

Transtypage (2) La classe déclarée d un objet n est pas forcément la classe instanciée. Packages API Java https://docs.oracle.com/javase/8/docs/api/ Description de la classe + générique + détaillée Comment accéder aux champs/méthodes? Object o = new LocaVoiture(); LocaVoiture lv = (LocaVoiture)o; lv.calculprix(); transtypage Classes