Le document 'chap' semble inachevé ou manquant d'informations concrètes. Aucun contenu substantiel n'est présent pour en effectuer un résumé adéquat. Il est donc difficile de tirer des conclusions ou de fournir des détails.
Objectifs Connaître lesconcepts de la programmation par objet et les mettre en oeuvre avec Java Créer une classe avec des attributs et des méthodes Instancier des objets et leur envoyer des messages
3.
Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
4.
1. Définition d’unObjet 1.1 Exemples…Suite Date du jour Attributs : jour (20), mois (01),année (2009) Méthodes : s’afficher Date d’aujourd’hui est un objet Voiture Attributs : marque , vitesse, couleur, kilométrage Méthodes : accélérer, freiner, arrêter Ma Voiture est un Objet : Marque : Toyota, Kilométrage 150000, couleur : verte, vitess=0km/h.
5.
1. Définition d’unObjet 1.2 Définition Un objet peut être une valeur (instance) d’un type abstrait, une “représentation” d’une classe. une abstraction d’un objet physique du monde réel, c’est-à-dire dont on a retenu uniquement les caractéristiques intéressantes lors de la modélisation.
6.
1. Définition d’unObjet 1.2 Définition…Suite Un objet est caractérisé par Un ensemble d’attributs typés et nommés représentant ses propriétés statiques. Ces attributs portent des valeurs attachées à l’objet. L’ensemble de ces valeurs à un instant donné constitue l’état de l’objet à cet instant, Un ensemble de méthodes définissant son comportement et ses réactions aux stimulations externes. Ces méthodes implémentent les algorithmes invocables sur cet objet, Une identité qui permet de le distinguer des autres objets, de manière unique.
7.
Plan Objectifs Définition d’un Objet Définition d’une Classe Définition Exemples Qu’est ce donc une classe ? Instanciation Garbage Collector Opérateur . Constructeur Méthode String
8.
2. Définition d’uneclasse 2.1 Définition C’est un modèle de définition pour les objets en termes d’attributs, en termes de méthodes. Les objets sont des représentations dynamiques (instanciation), “vivantes”, du modèle défini pour eux au travers de la classe.
9.
2. Définition d’uneclasse 2.2 Exemple class Cercle { int rayon; int epaisseur_trait; ... // autres attributs ... } Instanciation, même attributs mais de valeurs différentes
10.
2. Définition d’uneclasse 2.2 Exemple…Suite class Date{ int jour,moi,annee; } Aujourd’hui, demain, Le jour de l’an…sont des instances ou des objets de la classe Date
11.
2.Définition d’une classe2.2 Exemple…Suite class Individu { String nom; int age; float salaire; } Moi,toi, sont de exemples d’Individu,
12.
2.Définition d’une classe2.3 Qu’est-ce qu’une classe ? Une classe définit les modèles des objets qui en seront instanciés Dans la classe sont définis des attributs et des méthodes qui seront présents dans chaque objet qui sera instancié de la classe considérée. Par convention le nom d’une classe commence toujours par une Majuscule Exemple class Voiture{……………} class Cercle{………………}
13.
2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite Dans l’exemple de la page précédente, on définit une classe Cercle, contenant entre autres : un attribut rayon et un attribut epaisseur_trait. Chaque cercle instancié de cette classe possédera son propre rayon et sa propre épaisseur du trait.
14.
2.Définition d’une classe2.3 Qu’est-ce qu’une classe ?...Suite Les méthodes définies dans la classe existent de même pour chaque objet et ont un comportement identique dans chaque objet tout en y étant localisé Supposons que la classe Cercle fournisse la méthode changeRayon(int new_rayon), permettant de modifier la valeur de l’attribut rayon. Si un des cercles fait appel à cette méthode, il changera son propre rayon, pas celui des autres cercles dont il ignore probablement l’existence.
Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
17.
3.Instanciation. 3.1Mais que cela signifie-t-il ? La création d’un objet à partir d’une classe est appelé instanciation . Cet objet est une instance de sa classe. Une instanciation se décompose en trois phases 1. Création et initialisation des attributs en mémoire, à l’image d’une structure. 2. Appel de méthodes particulières, les constructeurs, définies dans la classe, dont l’étude est faite un peu plus loin... 3. Renvoi d’une référence sur l’objet (son identité) maintenant créé et initialisé.
18.
3.Instanciation 3.2Opérateur new L’opérateur new sert à instancier un Objet de type structuré Date d1 = new Date(); Date d2=new Date();
19.
3.Instanciation 3.2Opérateur new…suite En java il existe deux types Types primitifs Types structurés ou classes Les types primitifs contiennent la valeur qui leur est assignée Exemple : int x = 7; int y = x;
20.
3.Instanciation 3.2Opérateur new…suite Les types structurés sont instanciés avec l’opérateur new Exemple Date d1=new Date(); Date d2=new Date();
21.
3.Instanciation. 3.3Mais que se passe t-il en mémoire Création de l’Objet Création de la référence Sauvegarde de l’adresse de l’objet dans la référence
22.
3.Instanciation. 3.3Mais que se passe t-il en mémoire class MaDate { int day; int month; int year; }
23.
3.Instanciation. 3.3Mais que se passe t-il en mémoire MaDate today= new MaDate(); Création de la référence au départ son contenu est à null (valeur par défaut d’une référence) MaDate today; Instanciation de l’Objet avec le new new MaDate() Copie de l’adresse dans la référence MaDate d1 = new MaDate();
3.Instanciation. 3.3Mais que se passe t-il en mémoire 7 7 x int y int Cas création de deux variables primitives de type int
26.
3.Instanciation. 3.3Mais que se passe t-il en mémoire Date d1=new Date(); Date d2=new Date();
27.
3.Instanciation. 3.3Mais que se passe t-il en mémoire mois int anne int @1 @1 jour int 0 0 0 d1 Date @2 @2 jour int 0 0 0 d2 Date mois int anne int
28.
3.Instanciation. 3.3Mais que se passe t-il en mémoire Lorsque vous exécutez new pour allouer de la mémoire pour un objet, Java affecte aux valeurs de l’espace la valeur initiale "zéro". Pour les variables numériques, la valeur est réellement zéro. Pour les variables booléennes (boolean), la valeur est false. Pour les références, c’est à dire toute variable d’un type d’objet, une valeur spéciale à null indique qu’il n’y a pas de structure associée.
29.
3.Instanciation. 3.4 Initialisation des variables Dans Java, une valeur nulle indique que la variable ne renvoie pas à un objet. La machine virtuelle détecte si vous utilisez une telle référence et vous en interdit l’accès . Ce comportement sera présenté plus en détail dans le module ultérieur Exceptions . Exemple Voiture v1; //v1 est à null v1.freiner(20);//génère une exception à l’exécution
30.
3.Instanciation. 3.4Initialisation des variables Note – L’initialisation par défaut ne concerne que les variables membres de la classe et non les variables locales au bloc d’instructions. Une erreur se produit à la compilation si vous tentez d’utiliser une variable locale avant qu’une valeur ne lui ait été affectée de façon définie.
31.
4.Instanciation. 4.1Le garbage collecteur Les objets qui ne sont plus référencés sont détruit automatiquement par le garbage Collecteur Exemple Date d1=new Date(); Date d2=new Date(); d2=d1;
32.
4.Instanciation. 4.1Le garbage collecteur mois int anne int @2 @2 jour int 0 0 0 d2 Date mois int anne int @1 @1 jour int 0 0 0 d1 Date
33.
4.Instanciation. 4.1Le garbage collecteur mois int anne int @1 @1 jour int 0 0 0 d1 Date @1 @2 d2 Date anne int jour int 0 0 0 mois int
34.
Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
35.
4. L’opérateur . Java autorise l’accès aux attributs d’un objet (nom, age et salaire) à l’aide de l’opérateur (.), de la façon suivante :
36.
4. L’opérateur . class Individu { String nom; int age; float salaire; } Individu un = new Individu() Individ deux=new Individu(); un.nom = "Jean"; deux.nom="Jo"; un.age = 24; deux.age=30; un.salaire = 10000; deux.salaire=2000;
5.Méthode 5.1 Typede retour <type_retour><nom>(<liste_arguments>) <bloc> Si la méthode ne retourne rien alors le type de retour est void Une méthode peur retourner un Type primitif (int, boolean, double) Type structuré (String, Cercle…) Tableau (a voir plus tard) Si la méthode retourne une valeur alors la dernière instruction doit être un return et la valeur retournée doit être du type spécifié
43.
5.Méthode 5.1 Typede retour <type_retour><nom>(<liste_arguments>) <bloc> La liste des argument peut contenir une liste de 0 à n paramètres séparés par une , Le nom des arguments doit être en minuscule Les arguments peuvent être de type : Type primitifs Type structurés Tableaux….
44.
5.Méthode 5.1 Typede retour Par convention le nom d’une méthode commence par une miniscule Si le nom est composée de deux mots alors le deuxième commence par une majuscule Exemples: déplacerCercle(int x, int y){…..} freiner(int v){}
45.
5.Méthode 5.1 Typede retour Les variables définies dans le bloc sont appelées variables locales Leur portée ne dépasse par le bloc de la méthode Elle doivent être nécessairement initialisées
46.
5.Méthode 5.1 Typede retour. L’opérateur point sert à appeler une méthode par rapport à un objet refObjet.methode() Si la méthode est une expression, c’est-à-dire retourne une valeur alors la valeur retournée doit être exploitée c.a.d soit : Sauvegardée dans une variable Affichée …
47.
5.Méthode 5.1 Typede retour Cercle c1=new Cercle(); c1.perimetre() //faux car perimetre() est une expression ( //retourne le perimetre calculé) double p=c1.perimetre() //correct Voiture v1=new Voiture(); v1.accelerer() //Correct car accélérer n’est pas une expression (ne retourne rien)
48.
6.Les constructeurs Leconstructeur est ce qui appelé juste après l’opérateur new Date d = new Date() //Date() est un constructeur
49.
6.Les constructeurs Enfait, l’étape trois de la construction d’un nouvel objet consiste à appeler une méthode d’initialisation. Par convention, cette méthode est appelée constructeur . Pour écrire une méthode appelée constructeur, vous devez observer ces deux règles : 1. Le nom de la méthode doit correspondre exactement au nom de la classe. 2. Aucun type de retour ne doit être déclaré pour la méthode.
50.
6.Les constructeurs Leconstructeur créer un objet avec la valeur par défaut attribuée aux attributs Les valeurs initiales de jour/mois/annee de l’objet avec la référence d est 0 Comment faire pour avoir la date du 09/01/2009 il faut utiliser l’opérateur . Pour accéder et modifier les attributs.
51.
6.Les constructeurs classDate{ int jour,moi,annee; } Date d1=new Date(); //Date() est un constructeur d1.jour=9;d1.mois=1;d1.annee=2009;
52.
6.Les constructeurs Ilexiste un moyen plus simple pour réaliser deux choses en même temps : Créer l’objet Affecter les valeurs souhaitées aux attribus au moment même de la création de l’objet Il faut écrire et utiliser un constructeur paramétré
53.
6.Les constructeurs classDate{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a; } } … Date d1=new Date(9,1,2009)
54.
6.Les constructeurs Iln’y a que deux façons d’obtenir un constructeur : ou bien vous l’écrivez, ou, si vous n’avez pas écrit de constructeur du tout, la classe possède un constructeur unique par défaut comportant un code vide. Note – Vous pouvez définir plusieurs constructeurs avec des listes d’arguments différents. Lorsque vous effectuez un appel de new Xyz(liste_arguments), la liste d’arguments détermine quel constructeur doit être utilisé.
55.
6.Les constructeurs Exemple: class Xyz { // variables membres Xyz() { // définition de l’objet } Xyz(int x) { // définition de l’objet avec un paramètre } }
56.
6.Les constructeurs classDate{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a;} Date (int j, int m){jour=j;mois=m;année=2009} }
57.
6.Les constructeurs Constructeur par défaut Nous avons dit que toute classe comporte au moins un constructeur, mais avant cette section, nous n’avons écrit de constructeur pour aucune de nos classes. En fait, si vous n’en écrivez pas du tout, un constructeur vous est automatiquement fourni. Ce dernier ne prend aucun argument et son corps est vide. C’est à cause du constructeur par défaut que nous avons pu dire new Xxx(), sans quoi cette opération aurait été incorrecte.
58.
6.Les constructeurs Constructeur par défaut class Date{ int jour,mois,annee; //constructeur par défaut invisible //avec 0-arguments Date(){jour=0;mois=0;annee=0;} }
59.
6.Les constructeurs Sion ajoute une déclaration de constructeur comportant des arguments à une classe, vous perdez le constructeur par défaut. A partir de là, les appels de new Xxx() causeront des erreurs de compilation.
60.
6.Les constructeurs classDate{ int jour,mois,annee; Date(int j, int m, int a){ jour=j; mois=m; annee=a; } //on perd le constructeur par défaut invisible Date(){jour=0;mois=0;annee=0;} } … On ne peut plus écrire Date d1=new Date()
61.
Plan Objectifs Définition d’un Objet Définition d’une Classe Instanciation Garbage Collector Opérateur . Méthode Constructeur String UML
62.
7.Le type String Les variables de type String sont des objets Ecrire String s = new String( "Hello" ) ; Est la même chose que String s = "Hello";
63.
7.Le type StringExemple int x = 7;//x a un type primitif int y = x;//y a un type primitif String s = "Hello";//s a un type //structure s est donc une référence String t = s; String z = "Bienvenue"; Que se passe t-il en mémoire