Introduction la Programmation Oriente Objet Retour sur les
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI 3 MAM 3 Hydro Nathan Cohen cohen@inria. sophia. fr Igor Litovsky lito@polytech. unice. fr Christophe Papazian papazian@polytech. unice. fr Anne-Marie Pinna Dery pinna@polytech. unice. fr http: //courswiki. polytech. unice. fr/SI 3/IPA
Instances et une classe Circle circle 1=new Circle(50, 80, 30); Allocation mémoire pour toutes les variables d’instances et affectation des valeurs
Constructeurs Surcharge des Constructeurs : signatures différentes On peut aussi surcharger des méthodes Les constructeurs par défaut sont conseillés Appel des constructeurs en cascade public Circle() { this(0, 0 , ”red”, 12); } public Circle(int x, int y) { this(x, y, ”red”, 12); } public Circle(int x, int y, String c, int diameter) { x. Position = x; y. Position = y; this. diameter=diameter; color=c; is. Visible=true; }
Usage du mot-clé this dans une classe this désigne l’instance sur laquelle s’exécute le code public Circle(int x, int y, String c, int diameter) { x. Position = x; y. Position = y; this. diameter=diameter; color=c; is. Visible=true; } x. Position raccourci d’écriture de this. x. Position get. Xposition() raccourci d’écriture de this. get. XPosition() this pour appeler un autre constructeur : appels en cascade public Circle() { this(0, 0 , ”red”, 12); }
2 types de méthode Méthodes qui sont des fonctions : Déclaration : public int get. XPosition() {…} Appel : Point p = new Point(); int x = p. get. XPosition() + distance; System. out. println(p. get. XPosition()); p. get. XPosition(); get. XPosition(p); ERREUR
2 types de méthode Méthodes qui sont des procédures Déclaration : public void show. Coord() {…. } public void set. X(int x) {…. . } Appel : p. show. Coord(); p. set. X(12); int x = p. set. X(12); ERREUR System. out. println(p. set. X(12)); ERREUR
Attributs (fields), variables d’instances paramètres – variables locales Déclaration : private int abscisse; private int abscisse = 10; abscisse est de type entier Utilisation dans toute la classe this. abscisse; ou abscisse; Affectation des valeurs initiales dans le constructeur : this. abscisse = 10; this. abscisse = abscisse;
Attributs (fields), variables d’instances – paramètres – variables locales Déclaration : public void set. X(int p) {……. } p est le paramètre formel de set. X p est de type entier et est visible dans le corps de la méthode Utilisation : abscisse=p; p=12: INUTILE ECRASE Appel : Point pt = new Point(12, 34); pt. set. X(25); 25 est le paramètre effectif pt. set. X(25. 5); ERREUR
Attributs (fields), variables d’instances – paramètres – variables locales Déclaration : int y; int y = 0; Utilisation : y = 0; y++; ++y; y=y*10; y=12, 5 ERREUR y = x; si x n’est pas int ERREUR y est visible dans le bloc (bloc {…}) dans lequel il est défini (déclaré)
Types int x = 0; entier double y = 12, 5; réel float z = 12, 5; réel. . . String s = “Coucou”; String s= new String(“Coucou”); Classe prédéfinie chaîne de caractères boolean b = true; true et false On peut affecter un entier dans un double, un float dans un double pas le contraire. x=y; y=x; z=x; x=z; z=y; y=z; ? ? ? Si nécessaire on peut faire des cast explicites y=(double)x; x=(int) y; ? ? ? Toutes les classes API Java : java. lang java. util Il existe les classes Integer, Boolean, Double, Float
Opérateurs et Comparateurs Opérateurs : Un opérateur particulier : . Opérateurs sur les entiers, double, float : +, -, *, Opérateurs sur les String : + Opérateurs logiques : &, &&, !, |, || Attention au = instruction d’affectation Comparateurs : ==, >=, <=, >, < Pour les chaines de caractères : . equals()
API Java : à quoi ça vous sert ? http: //java. sun. com/javase/7/docs/api/index. html: Javadoc de l'API. Recher des informations et Comprendre un code existant
API Java : Recher des informations • sur les types de données que l’on manipule ou que l’on souhaite manipuler ? – Array. List : • Peut on ajouter un élément à une position donnée ? • Peut on enlever à une position donnée ? • Qu’existe-t-il comme autre type de données du même style ? • Comment construit on une Array. List ? Avec un tableau est ce possible ?
API Java : Comprendre un code existant String input = reader. get. Input(); if(input. starts. With("bye")) { finished = true; } Que fait starts. With("bye") ? Comment peut on trouver l’information ? Que fait get. Input()? Comment peut on trouver l’information ?
Comment cher dans l’API ? • Organisation par packages – Quels sont les packages que vous connaissez ? • java. util • java. lang – Où pouvez vous trouver la classe String ? La classe Array. List ? – Quels sont les packages qui pourront vous servir ?
particularité de to. String public String to. String() { return " x : " + x. Position + " y: " + y. Position + " diamètre: " + diameter + " couleur: " + color; } …. Fonction ou procédure ? System. out. println(circle 1); System. out. println(circle 1. to. String()); Comportement par défaut – Héritage de Object Toutes les classes héritent de Object
Erreurs à la compilation et à l’exécution Compilation : Vérification de la syntaxe Vérification du typage Exécution : probléme d’algorithme des objets null des dépassements de bornes
Utilisation d’une classe par une autre Exemple : la classe de test utilise la classe testée De la classe Cercle utilise la classe Point javac Classe. Atester. java -> erreurs ou création du fichier Classe. Atester. class javac Test. DEClasse. Atester. java -> erreurs ou création du fichier Test. De. Classe. Atester. class java Test. De. Classe. Atester exécution du code -> erreurs et/ou ATTENTION A L’ORDRE DE COMPILATION Et à la visibilité
- Slides: 18