Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro...
-
Upload
albain-tixier -
Category
Documents
-
view
103 -
download
0
Transcript of Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro...
Introduction à la Programmation Orientée Objet
Retour sur les principaux concepts
SI3 MAM3 Hydro
Nathan Cohen [email protected] Litovsky [email protected]
Christophe Papazian [email protected] Pinna Dery [email protected]
http://courswiki.polytech.unice.fr/SI3/IPA
Instances et une classeCircle circle1=new Circle(50,80,30);Allocation mémoire pour toutes les variables d’instances et affectation des valeurs
Constructeurs
Surcharge des Constructeurs : signatures différentesOn peut aussi surcharger des méthodesLes constructeurs par défaut sont conseillésAppel des constructeurs en cascadepublic 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){ xPosition = x; yPosition = y; this.diameter=diameter; color=c; isVisible=true;}
Usage du mot-clé thisdans une classe
this désigne l’instance sur laquelle s’exécute le code
public Circle(int x,int y,String c,int diameter){ xPosition = x; yPosition = y; this.diameter=diameter; color=c; isVisible=true;}
xPosition raccourci d’écriture de this.xPositiongetXposition() raccourci d’écriture de this.getXPosition()
this pour appeler un autre constructeur : appels en cascadepublic Circle(){
this(0,0 ,”red”,12);}
2 types de méthode
Méthodes qui sont des fonctions :Déclaration : public int getXPosition() {…}
Appel : Point p = new Point(); int x = p.getXPosition(); int x = p.getXPosition() + distance; System.out.println(p.getXPosition());
p.getXPosition(); ERREUR getXPosition(p); ERREUR
2 types de méthode
Méthodes qui sont des procédures Déclaration : public void showCoord() {….} public void setX(int x) {…..}
Appel : p.showCoord(); p.setX(12); int x = p.setX(12); ERREURSystem.out.println(p.setX(12)); ERREUR
Attributs (fields), variables d’instancesparamètres – variables locales
Déclaration : private int abscisse; private int abscisse = 10;abscisse est de type entierUtilisation 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 setX(int p) {…….}p est le paramètre formel de setXp est de type entier et est visible dans le corps de la
méthodeUtilisation : abscisse=p; p=12: INUTILE ECRASE Appel : Point pt = new Point(12,34); pt.setX(25); 25 est le paramètre effectifpt.setX(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 ERREURy est visible dans le bloc (bloc {…}) dans lequel il est
défini (déclaré)
Typesint x = 0; entierdouble y = 12,5; réelfloat z = 12,5; réel ...String s = “Coucou”; String s= new String(“Coucou”);Classe prédéfinie chaîne de caractèresboolean 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 explicitesy=(double)x; x=(int) y; ?????
Toutes les classes API Java : java.lang java.utilIl 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.
Rechercher des informations
et
Comprendre un code existant
API Java : Rechercher des informations
• sur les types de données que l’on manipule ou que l’on souhaite manipuler ?– ArrayList :
• 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 ArrayList ? Avec un tableau
est ce possible ?
API Java : Comprendre un code existant
String input = reader.getInput();if(input.startsWith("bye")) {
finished = true;}
Que fait startsWith("bye") ?Comment peut on trouver l’information ?Que fait getInput()?Comment peut on trouver l’information ?
Comment chercher 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 ArrayList ?
– Quels sont les packages qui pourront vous servir ?
particularité de toString
public String toString(){return " x : " + xPosition + " y: " + yPosition + " diamètre: " +
diameter + " couleur: " + color;} ….
Fonction ou procédure ?
System.out.println(circle1); System.out.println(circle1.toString());
Comportement par défaut – Héritage de ObjectToutes 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’algorithmedes objets null
des dépassements de bornes
Utilisation d’une classe par une autre
Exemple : la classe de test utilise la classe testéeDe la classe Cercle utilise la classe Point
javac ClasseAtester.java -> erreurs ou création du fichier ClasseAtester.class
javac TestDEClasseAtester.java -> erreurs ou création du fichier TestDeClasseAtester.class
java TestDeClasseAtester -> erreurs et/ou exécution du code
ATTENTION A L’ORDRE DE COMPILATIONEt à la visibilité