L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace...

31
Langage Oriente Langage Oriente Objet Objet Cours 2 Cours 2

Transcript of L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace...

Page 1: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Langage Oriente Langage Oriente Objet Objet

Cours 2Cours 2

Page 2: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableauxLes tableaux

• Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

• Un tableau est une structure linéaire de taille fixe.

• La taille ne peut pas changer durant la vie du tableau.

• Un tableau contient soit des objets soit des valeurs d’un même type primitif.

2

Page 3: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableauxLes tableaux• La déclaration se fait à l’aide des crochets [] :

type[] v; ou type v[];

• Il faut maintenant initialiser le tableau = fixer la taille et éventuellement stocker les valeurs.

• Exemple : tableau de 7 entiers

int v[]={1, 2, 3, 4, 5, 6, 7};

• L’indice du tableau est compris entre 0 et v.length-1.

3

Page 4: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableauxLes tableaux

4

class TestTableaux {public static void main(String[] args) {

int[] a1 = { 1, 2, 3, 4, 5 };int[] a2;a2 = a1;for(int i = 0; i < a2.length; i++) a2[i]++;for(int i = 0; i < a1.length; i++)

prt("a1[" + i + "] = " + a1[i]);}static void prt(String s) {

System.out.println(s);}

}a1 et a2 référent le même tableau. a1 a permis de le créer et a2=a1 permet à a2 de le référencer.

a1 et a2 référent le même tableau. a1 a permis de le créer et a2=a1 permet à a2 de le référencer.

Page 5: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableauxLes tableaux

• Il est possible de créer dynamiquement un tableau grâce à l’instruction new.

• La création dynamique est utilisée lorsque la taille du tableau n’est pas connue lors de l’écriture du programme ou lorsqu’elle dépend du contenu d’une ou plusieurs variables

5

Page 6: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableauxLes tableaux

6

class TestArray{ static Random rand = new Random(); static int pRand(int mod) {

return Math.abs(rand.nextInt()) % mod; }

public static void main(String[] args) {int[] a;a = new int[pRand(20)];prt("length of a = " + a.length);for(int i = 0; i < a.length; i++)

prt("a[" + i + "] = " + a[i]); }

static void prt(String s) { System.out.println(s); }}

Déclaration d’une variable de type tableau (cette variable ne référence aucun tableau).

Déclaration d’une variable de type tableau (cette variable ne référence aucun tableau).

Allocation dynamique du tableau avec une taille aléatoire.

Allocation dynamique du tableau avec une taille aléatoire.

Page 7: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableaux Les tableaux multidimensionnelsmultidimensionnels

• En Java, un tableau multidimensionnel n’est qu’un tableau dont les éléments sont eux-mêmes des tableaux.

• Ceci implique, par exemple, que pour connaître la taille du tableau selon la deuxième dimension, il faut écrire : t[i].length

7

Page 8: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableaux Les tableaux multidimensionnelsmultidimensionnels

8

int[][] a1 = { { 1, 2, 3, }, { 4, 5, 6, }};for(int i = 0; i < a1.length; i++) for(int j = 0; j < a1[i].length; j++) prt("a1[" + i + "][" + j + "] = " + a1[i][j]);

int[][][] a2 = new int[2][2][4]; for(int i = 0; i < a2.length; i++) for(int j = 0; j < a2[i].length; j++) for(int k = 0; k < a2[i][j].length;k++) prt("a2[" + i + "][" + j + "][" + k + "] = " + a2[i][j][k]);

Page 9: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les tableaux Les tableaux multidimensionnelsmultidimensionnels

9

int[][][] a3 = new int[pRand(7)][][];

for(int i = 0; i < a3.length; i++) { a3[i] = new int[pRand(5)][]; for(int j = 0; j < a3[i].length; j++) a3[i][j] = new int[pRand(5)];}

for(int i = 0; i < a3.length; i++) for(int j = 0; j < a3[i].length; j++) for(int k = 0; k < a3[i][j].length;k++) prt("a3[" + i + "][" + j + "][" + k + "] = " + a3[i][j][k]);

Page 10: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Partie 3Partie 3

10

Le modèle objet

Page 11: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

IntroductionIntroduction• Constats :

o croissance de la complexité des projetso besoin de gain de productivité

• Qualités attendues :o modularité / résistance aux modificationso réutilisabilitéo lisibilité et compréhensibilitéo abstraction des données

• Solution : L'OBJET

11

Page 12: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Procédural vs Objet Procédural vs Objet (1)(1)

12

Fonction f

Valeurs d'entrée

Valeurs de sortie

Fonction g

Fonction h

Variables locales

Page 13: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Procédural vs Objet Procédural vs Objet (2)(2)

13

Données

CompétencesInte

rface

Objet AObjet B

Objet C

Page 14: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les concepts de baseLes concepts de base• Orienté objet :

o organisation du logiciel comme une collection d’objets comprenant à la fois une structure de données et un comportement

• Orienté objet (OMG) : o Encapsulation + Héritage + Polymorphisme

14

Page 15: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les objets (1)Les objets (1)• Un objet est à la fois des données et un

comportement.

• Les objets sont des boîtes noires : o seuls les services rendus par l'objet sont importants au niveau de

l'utilisateur.

15

Page 16: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les objets (2)Les objets (2)• Exemple : tout Rectangle possède des coordonnées

et des dimensions.

• Ainsi, un Rectangle est constitué de données.

Partie Donnée

• Un Rectangle sait se dessiner, se translater, s'effacer et se redimensionner.

• Le Rectangle qui se dessine.

Partie Comportement

16

Page 17: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les messagesLes messages• Les objets communiquent par messages

• Dans le modèle objet, chaque objet a un comportement et les différents objets s'envoient des messages

• A la réception d'un message, l'objet exécute la méthode correspondante

• Une méthode est une « fonction » exécutée par un objet.

• Le comportement d'un objet est entièrement décrit par ses méthodes

17

Page 18: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

LL’’identitéidentité

• Deux objets peuvent avoir exactement les mêmes valeurs dans leur partie donnée et le même comportement, ils ne se confondent pas l'un avec l'autre

• Réciproquement, les données d'un objet peuvent changer, l'objet lui-même ne change pas d'identité

• Un langage objet fournit en général un moyen de désigner un objet en tant qu'élément unique, indépendamment de ses valeurs (référence, pointeur, identificateur...).

18

Page 19: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les classes - Les classes - définitionsdéfinitions

19

• Les objets ayant la même structure de données (attributs) et le même comportement (opérations) sont regroupés en une classe

• Chaque objet est dit instance de la classe, possède ses propres valeurs pour chaque attribut, mais partage les noms d'attributs et d'opérations avec les autres instances de la classe.

Page 20: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

LL’’encapsulationencapsulation(1)(1)• Chaque objet encapsule des données dans son état

• Le type des données encapsulées et les opérations applicables à un objet sont décrites dans la classe

• Les classes permettent de décrire des contrats qui seront valables pour tous les objets issus de ces classes interface

20

Toutes les données sont privées.

Seules certaines méthodes sont publiques et constituent l’interface avec le monde extérieur.

Toutes les données sont privées.

Seules certaines méthodes sont publiques et constituent l’interface avec le monde extérieur.

Page 21: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

LL’’encapsulationencapsulation(2)(2)• La spécification d’une classe définit la partie

visible des objets, le reste est caché dans la réalisation

• Règles de visibilité : o attribut publico attribut protégéo attribut privéo opération publique o opération protégéeo opération privée

21

Page 22: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

LL’’encapsulationencapsulation(3)(3)• L’encapsulation présente deux avantages :

o Les données encapsulées sont protégées des accès intempestifs, ce qui permet de garantir leur intégrité

o Les clients d’une abstraction ne dépendent pas de la réalisation de l’abstraction, mais seulement de sa spécification

22

Page 23: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Partie 4Partie 4

23

Classes et objets

Page 24: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Structure des classes Structure des classes (1)(1)

• Une classe est un agrégat d'attributs et de méthodes appelés les membres

class nom_classe {type nom_attribut;…type nom_methode(paramètres) {…}

}

• Les méthodes sont définies directement au sein de la classe.

24

Page 25: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Structure des classesStructure des classes(2)(2)

• Les membres sont accessibles via une instance de la classe ou via la classe (pour les membres statiques)

c.r = 3; // Accède à l'attribut 'r' de l'instance 'c'a = c.area(); // Invoque la méthode 'area' de l'instance 'c'

pi = Math.PI; // Accède à l'attribut statique 'PI' de la classe 'Math'

b = Math.sqrt(2.0); // Invoque la méthode statique 'sqrt' de la classe 'Math'

25

Page 26: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Création d'un objet (1)Création d'un objet (1)

• Pour créer un objet, on instancie une classe en appliquant l'opérateur new sur un de ses constructeurs.

• Une nouvelle instance de cette classe est alors allouée en mémoire :

c = new Circle(5) ;

26

Page 27: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Création dCréation d’’un objet (2)un objet (2)• Un constructeur est une méthode qui a pour objectif d’initialiser l’objet en

cours de création. Cette méthode a pour nom le nom de la classe et ne retourne pas de résultat (void).

• Toute classe possède un constructeur par défaut, implicite sans paramètre. Il peut être redéfini. Par défaut, les données sont initialisées à des valeurs par défaut définies par Java.

• Une classe peut avoir plusieurs constructeurs qui diffèrent par le nombre et la nature de leurs paramètres.

• Les variables dont le type est primitif (boolean, byte, char, short, int, long, float et double) ne font pas l’objet d’allocation (new)

27

Page 28: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Création d'un objet(3)Création d'un objet(3)class Circle {

double m_x, m_y, m_rayon;

Circle(double p_x, double p_y, double p_rayon) {m_x = p_x; m_y = p_y; m_rayon = p_rayon;

}Circle(Circle p_circle) {

m_x = p_circle.m_x; m_y=p_circle.m_y;m_rayon=p_circle.m_rayon;

}Circle() {

this(0.0, 0.0, 0.0);}

}

28

Constructeur par défaut

Constructeur par recopie

Un constructeur à trois paramètres

L’invocation d’un autre constructeur doit être placé en 1ère instruction !

L’invocation d’un autre constructeur doit être placé en 1ère instruction !

Page 29: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

InitialisationInitialisation (2)(2)• L’initialisation des variables et des attributs peut être

spécifié lors de leur définition.

int i=1;

class C {int p=3;…

}

29

Page 30: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Les unités de compilationLes unités de compilation• Le code source d'une classe est appelé unité de compilation.

• Il est recommandé (mais pas imposé) de ne mettre qu'une classe par unité de compilation.

• L'unité de compilation (le fichier) doit avoir le même nom que la classe qu'elle contient.

30

ClassName.java

Class ClassName{…}

javac ClassName.class

java ClassName

Page 31: L ANGAGE O RIENTE O BJET Cours 2 Les tableaux Les tableaux sont la plus simple et la plus efficace des solutions pour stocker et accéder à des objets.

Exemple de programmeExemple de programmeclass Circle {

public double x, y;// Coordonnée du centreprivate double rayon; // Rayon du cercle

Circle(double p_rayon) {rayon = p_rayon;

}

double getArea() {return 3.14159 * rayon * rayon;

}

public static void main(String[] args) {Circle c; // c est une référence sur un objet Circle,

// pas un objetc = new Circle(5.0); // c référence maintenant un objet alloué

// en mémoirec.x = c.y = 10;System.out.println("Aire de c :" + c.getArea());

}

}

31

Point d’entrée