Pas de variable globale JAVA : orienté objet Pas de fonction isolée Pas de variable globale
Le modèle objet Caractéristiques Identité État une voiture Contenu réservoir = 40 l Après 250 km une voiture Contenu réservoir = 20 l
Le modèle objet Caractéristiques Identité État Comportement un avion État = En vol Atterrir un avion État = au sol
Le modèle objet Synthèse orienté objet Un état Un comportement Il s’appuie sur le monde réel. Un objet regroupe : Un état Un comportement
Le modèle objet Des objets et des classes Voiture Couleur : string nbKilometre : int Instance de UneVoiture : Couleur = rouge nbKilometre = 50 000 Voiture Donnez des exemples de classes et d'objets associés En déduire la différence conceptuelle entre ces deux éléments
Les classes dans le modèle objet Une classe est un modèle de définition pour des objets ayant même structure (même ensemble d'attributs), ayant même comportement (mêmes opérations, méthodes), Ayant une signification commune C'est donc une entité abstraite Parmi les classes définies précédemment, donnez des attributs et des méthodes
Les classes dans le modèle objet (suite) Une classe est constituée de la description de : Données membres appelées attributs fonctions membres appelées méthodes Indiquez les caractéristiques essentielles pour : ==>Les attributs ==>Les méthodes
Les classes dans le modèle objet (suite) Les objets sont des représentations dynamiques (instanciation), « vivantes » du modèle défini pour eux au travers de la classe. Une classe permet d’instancier (créer)plusieurs objets Chaque objet est instance (un exemplaire) d’une (seule) classe
Le modèle objet Les classes Identification Voiture - couleur : string nbKilometre : int - nom : string - nbKg : int + Voiture(string) + ~Voiture() + rouler(int) : void Données : Attributs Opérations : méthodes En terme de qualité de code, indiquez les particularités des noms dans les différents blocs (identification, attributs et méthodes)
Syntaxe d'une classe Fichier Point.java Nom de la classe identique au nom du fichier Class Point { } double x; double y; Attribut void translater(double dx,double dy) { x += dx; y += dy; } Les attributs fournissent les caractéristiques d'un objet Méthodes double distance() { double dist; dist = Math.sqrt(x*x+y*y); return dist; } Une méthode est une fonction membre d'une classe
Syntaxe d'une classe (suite) Class Point { } double x; double y; double distance() { double dist; dist = Math.sqrt(x*x+y*y); return dist; void translater(double dx,double dy) x += dx; y += dy; Les attributs sont directement accessibles dans toutes les méthodes de la classe
Portée et visibilité des variables en java Les variables sont visibles à l'intérieur du bloc où elles sont définies (limitée par {...} Class Visibilite { } void methodeA(){ float z, w; x = 10; void methodeB(float y) { int z; do { float w; z++; }while (z < 1); x = z + w; int x; Symbole x attribut de la classe est accessible dans les méthodes de la classe Symbole w limité au bloc do { } while(..);
Portée et visibilité des variables en java La redéfinition de variables cache la définition du bloc englobant Class Visibilite { } void methodeA(){ float z, w; x = 10; void methodeB(float y) { int z; float x; do { float w; z++; }while (z < 1); x = z + w; int x; Variables visibles dans methodeA x : int z : float w : float Variables visibles dans methodeB x : int y : float z : int x : float Variables visibles dans bloc do x : int y : float z : int x : float w : float La ligne x = z + w ; est-elle compilable ?
Java : les objets Un objet est une instance (un exemplaire) d'une classe Il a une valeur pour chaque attribut L'ensemble des valeurs des attributs forment l'état de l'objet Chaque objet a une identité : Son nom Il est référencé par celui-ci
Java : déclaration des instances Par exemple avec la classe Point précédente : Point p1; Point p2, p3; L'instance déclarée en java est une référence, c'est un pseudo-pointeur Lors de la déclaration d'un attribut, la référence vaut null, elle ne pointe sur rien Que vaut un pointeur en C après sa déclaration ?
Java : création des objets La création d'un objet s'appelle l'instanciation Cette Instanciation se décompose en trois phases : Allocation de l'espace mémoire correspondant à l'objet (l'espace pour les attributs) Construction de l'objet (appel du constructeur) et initialisation des attributs Renvoi d'une référence sur l'objet créé
Java : création des objets (suite) Point p1 ; p1 = new Point() ; Point p2 = new Point() ; Point p3 = p2 ; Indiquez ce qui est réalisé à chaque ligne du code précédent. Montrez le bilan en mémoire.
Java : les constructeurs Ils portent le même nom que la classe Ils ne sont pas typés contrairement aux autres méthodes/fonctions Un constructeur par défaut n'a pas de paramètre Un constructeur est une méthode particulière Un constructeur peut avoir des paramètres Une classe peut avoir plusieurs constructeurs Comment le compilateur peut-il dans ce cas différencier les divers constructeurs ?
Java : les constructeurs (suite) Le constructeur doit initialiser les attributs Faire des opérations supplémentaires
Java : les méthodes Syntaxe : Point p1; p1 = new Point(); nomDeObjet.nomDeMethode([paramètres effectifs]) Point p1; p1 = new Point(); p1.translater(10.0, 20.1);
Java : accès aux attributs A l'extérieur d'une classe, la visibilité des attributs doit être restreinte, voire interdite C'est le principe d'encapsulation
Java : accès aux attributs (suite) L'accès aux attributs doit être impossible directement public class Point { private double x; private double y; } public static void main() { Point p1 ; p1 = new Point() ; p1.x = 10 ; // impossible ici }
Java : exemple Application : définir une classe carre longueurDuCote == 100 longueurDuCote == 15 longueurDuCote == 15 longueurDuCote == 10 Elle doit permettre de fournir son périmètre et son aire.