• Aucun résultat trouvé

Méthodes d’instance simples

N/A
N/A
Protected

Academic year: 2022

Partager "Méthodes d’instance simples"

Copied!
33
0
0

Texte intégral

(1)

Méthodes d’instance simples

Amphi 2

(2)

Remarques

• Nom de chaque classe est en Majuscule

• 1 classe = 1 fichier

• Une classe a une méthode main: la class

peut-être exécutée

(3)

Attributs + Constructeurs

attributs

constructeur

new <Constructeur> (Paramètres)

class Domino {

int m1; // marque 1 int m2; // marque 2

public Domino(int vm1, int vm2) {

this.m1 = vm1; // marque 1 this.m2 = vm2; // marque 2

} }

Domino d = new Domino (2,3);

(4)

Attributs + Constructeurs

attributs

constructeur

class Bebe { String name;

double poids;

boolean estGarçon;

public Bebe (String s, double p, boolean b){

this.name = n;

this.poids = p;

this.estGarçon = b;

} }

Bebe b = new Bebe (Antoine, 5.0, true);

(5)

Orienté-Objet

class X {

attributs

constructeurs

méthodes d’instance

}

(6)

Orienté-Objet

class X {

attributs

constructeurs

méthodes d’instance

}

permet d’inclure dans les objets les méthodes

“responsables” d’agir sur leurs attributs

(7)

Example de TD1

class MainDominos { ...

public static boolean estDouble(Domino d){

return d.m1 == d.m2;

}

}

(8)

Example de TD1

class MainDominos { ...

public static boolean estDouble(Domino d){

return d.m1 == d.m2;

} }

• Cette méthode n’est pas à sa place en Orienté-Objet

• Dans ce paradigm, on préfèrera penser que le domino est lui-même le mieux placé pour savoir s’il est ou non un double

transférer la méthode vers la class Domino

(9)

Méthodes d’instance

class Domino {

int m1; // marque 1 int m2; // marque 2

public Domino(int vm1, int vm2){

this.m1 = vm1; // marque 1 this.m2 = vm2; // marque 2

}

public boolean estDouble(){

return

this.

m1 ==

this.

m2;

} } class MainDominos {

...

public static boolean estDouble(Domino d){

return d.m1 == d.m2;

}

...

}

(10)

Méthodes d’instance

class Domino {

int m1; // marque 1 int m2; // marque 2

public Domino(int vm1, int vm2){

this.m1 = vm1; // marque 1 this.m2 = vm2; // marque 2

}

public boolean estDouble(){

return

this.

m1 ==

this.

m2;

} } class MainDominos {

...

public static boolean estDouble(Domino d){

return d.m1 == d.m2;

}

...

}

• Le paramètre d a disparu: la méthode réfère maintenant au domino en cours d’exécution

• Le mot static signifiant “réfère à la classe”, il ne doit pas être

utilisé ici.

(11)

Méthodes d’instance

class Domino {

int m1; // marque 1 int m2; // marque 2

public Domino(int vm1, int vm2){

this.m1 = vm1; // marque 1 this.m2 = vm2; // marque 2

}

public static boolean estDouble(){

return

this.

m1 ==

this.

m2;

} }

Comment appeler une méthode d’instance?

objet.nomMéthode (Paramètres)

(12)

Méthodes d’instance

class Domino {

int m1; // marque 1 int m2; // marque 2

public Domino(int vm1, int vm2){

this.m1 = vm1; // marque 1 this.m2 = vm2; // marque 2

}

public static boolean estDouble(){

return

this.

m1 ==

this.

m2;

} } class MainDominos {

...

public static void test1() {

if (d1.estDouble()) { ...

} }

...

}

Comment appeler une méthode d’instance?

objet.nomMéthode (Paramètres)

(13)

Méthodes d’instance

class Domino {

int m1; // marque 1 int m2; // marque 2

public Domino(int vm1, int vm2){

this.m1 = vm1; // marque 1 this.m2 = vm2; // marque 2

}

public static boolean estDouble(){

return

this.

m1 ==

this.

m2;

} } class MainDominos {

...

public static void test1() {

if (d1.estDouble()) { ...

} }

...

}

Comment appeler une méthode d’instance?

objet.nomMéthode (Paramètres)

invocation de méthode

mis à jour de

“this” exécution de

méthode

(14)

Méthodes d’instance

class Domino {

int m1; // marque 1 int m2; // marque 2

public boolean estDouble(){

return this.m1 == this.m2;

}

public String domino2String(){

return " (" + this.m1 + ","

+ this.m2 + ")";

}

public boolean valeur(){

return this.m1 + this.m2;

} } class MainDominos {

...

public static void test1(){

if (d1.estDouble()) { ...

}

System.out.println

(d1.domino2String());

System.out.println

(d1.valeur());

}

...

}

méthodes d’instance de la classe

invocations de

méthodes d’instance

(15)

Classes & Objets

class X {

attributs (variables d’instance) constructeurs

méthodes d’instance

}

• La manière que les objets doivent être conçus

• Un objet est vu comme une entité qui encapsule un état interne

(attributs) et qui fournit des services (méthodes d’instance)

(16)

Example Bebe

public class Bebe { String nom;

boolean estGarcon;

double poids;

Bebe (String n, boolean b, double p){

nom = n; estGarcon = b; poids = p;

}

void ditBonjour(){

System.out.println("Bonjour, mon nom est " + name);

}

void grandir(double poids_plus){

if (poids_plus > 0){

this.poids = this.poids + poids_plus;

} }

}

(17)

Example Bebe

public class X {

Bebe b1 = new Bebe

("Bryan", true, 5.0);

System.out.println(b1.nom);

System.out.println(b1.nom);

}

public class X {

Bebe b1 = new Bebe

("Bryan", true, 5.0);

b1.ditBonjour();

b1.grandir(1.0);

}

accéder aux attributs appeler une méthode d’instance OBJET.NOM_ATTRIBUT OBJET.NOM_METHODE

(ARGUMENT)

(18)

Références vs valeurs

• Types primitives sont les types basiques

• Types de références sont les tableaux ou les objets

‣ int, long, double, boolean, char, short, byte, float

‣ Les valeurs sont stockées dans les variables

‣ String, int[], Bebe ...

(19)

Stockage de Java

• Variables ressemblent aux tasses.

• Les primitifs sont suffisament petits

int double char boolean

(20)

Stockage de Java

• Les objets sont “trop” grands

‣ stocker ailleurs

‣ Variable stocke un numéro (adresse) pour localiser l’objet

Bebe String

(21)

Stockage de Java

• Les objets sont “trop” grands

‣ stocker ailleurs

‣ Variable stocke un numéro (adresse) pour

localiser l’objet

(22)

Stockage de Java

• Les objets sont “trop” grands

‣ stocker ailleurs

‣ Variable stocke un numéro (adresse) pour localiser l’objet localisation

de l’objet

(23)

Stockage de Java

• Les objets sont “trop” grands

‣ stocker ailleurs

‣ Variable stocke un numéro (adresse) pour localiser l’objet

référence

localisation

de l’objet

(24)

Références

• “==” compare les références

Bebe b1 = new Bebe ("Bryan", true, 5.0);

Bebe b2 = new Bebe ("Bryan", true, 5.0); b1 == b2?

(25)

Références

• “==” compare les références

Bebe b1 = new Bebe ("Bryan", true, 5.0);

Bebe b2 = new Bebe ("Bryan", true, 5.0); b1 == b2?

Non

b1 b2

référence b1 référence b2

(26)

Références

Bebe b1 = new Bebe ("Bryan", true, 5.0);

b1

référence b1

nom = Bryan

(27)

Références

Bebe b1 = new Bebe ("Bryan", true, 5.0);

b1.nom = Antoine;

b1

référence b1

nom = Bryan

(28)

Références

Bebe b1 = new Bebe ("Bryan", true, 5.0);

b1.nom = Antoine;

b1

référence b1

nom = Bryan

nom = Antoine

(29)

Références

Bebe b1 = new Bebe ("Bryan", true, 5.0);

b1.nom = Antoine;

b1

référence b1

nom = Bryan nom = Antoine

Utiliser “=” pour mettre à jour les attributs

(30)

Références

b1 = b2;

Utiliser “=” pour mettre à jour les références

b1 b2

référence b1 référence b2

objet b1

objet b2 nom = Bryan

nom = Antoine

(31)

Références

b1 = b2;

Utiliser “=” pour mettre à jour les références

b1 b2

référence b2

objet b1

objet b2 nom = Bryan

nom = Antoine

(32)

Références

b1 = b2;

Utiliser “=” pour mettre à jour les références

b1 b2

référence b2

objet b1

objet b2 nom = Bryan

nom = Antoine

b1.nom = ?

(33)

Remarques

• TD: groupe Eco1 + Bio: mardi12 Fev 13h15

Dominos

Livres

Notes:

max{1/3 DS + 2/3 Examen, Examen}

Autres groupes: Jeudi 14 Fev, 8h00

Références

Documents relatifs

Effets aigu de peau : Aucun effet important ou danger critique connu.. Effets aigu des yeux : Aucun effet important ou danger

Pour obtenir plus de robustesse face à ces limites, nous présentons dans la section 3.2 notre nouvelle approche hiérarchique basée sur le regroupement progressif des CCs en

Aucune dans des conditions de stockage et de manipulation recommandées (voir rubrique 7). Matières incompatibles Acides forts

Toxicité aiguë : Non classé (Compte tenu des données disponibles, les critères de classification ne sont pas remplis). Corrosion cutanée/irritation cutanée :

Le numéro TTYLOC est un nombre de 64 bits composé de deux (2) nombres de 32 bits: L’adresse officielle de 32 bits d’adresse d’hôte ARPA Internet (qui peut être n’importe

‣ Variable stocke un numéro (adresse) pour localiser l’objet.

A long terme - effets systémiques, cutanée 1 mg/kg de poids corporel/jour A long terme - effets systémiques, inhalation 3,3 mg/m³. DNEL/DMEL

Indications complémentaires : Compte tenu des données disponibles, les critères de classification ne sont pas remplis Toxicité spécifique pour certains organes cibles.