18
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen [email protected] Igor Litovsky [email protected] Christophe Papazian [email protected] Anne-Marie Pinna Dery [email protected] http://courswiki.polytech.unice.fr/SI3/IPA

Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen [email protected]@inria.sophia.fr

Embed Size (px)

Citation preview

Page 1: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 2: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

Instances et une classeCircle circle1=new Circle(50,80,30);Allocation mémoire pour toutes les variables d’instances et affectation des valeurs

Page 3: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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;}

Page 4: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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);}

Page 5: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 6: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 7: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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;

Page 8: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 9: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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é)

Page 10: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 11: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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()

Page 12: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 13: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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 ?

Page 14: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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 ?

Page 15: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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 ?

Page 16: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 17: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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

Page 18: Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen cohen@inria.sophia.frcohen@inria.sophia.fr

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é