public Circle(int x,int y)

publicité
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
Instances et une classe
Circle 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é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)
{
xPosition = x;
yPosition = y;
this.diameter=diameter;
color=c;
isVisible=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)
{
xPosition = x;
yPosition = y;
this.diameter=diameter;
color=c;
isVisible=true;
}
xPosition
raccourci d’écriture de this.xPosition
getXposition() raccourci d’écriture de this.getXPosition()
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 getXPosition() {…}
Appel : Point p = new Point();
int x = p.getXPosition();
int x = p.getXPosition() + distance;
System.out.println(p.getXPosition());
p.getXPosition();
getXPosition(p);
ERREUR
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);
ERREUR
System.out.println(p.setX(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 setX(int p) {…….}
p est le paramètre formel de setX
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.setX(25);
25 est le paramètre effectif
pt.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 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.
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 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 ClasseAtester.java
-> erreurs ou
création du fichier ClasseAtester.class
javac TestDEClasseAtester.java
-> erreurs ou
création du fichier TestDeClasseAtester.class
java TestDeClasseAtester
exécution du code
-> erreurs et/ou
ATTENTION A L’ORDRE DE COMPILATION
Et à la visibilité
Téléchargement