La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

1

2 L ANGAGE O RIENTE O BJET Cours 2

3 Les 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

4 Les tableaux La déclaration se fait à l aide des crochets [] : type[] v;outype 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

5 Les 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.

6 Les 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 nest pas connue lors de l écriture du programme ou lorsqu elle dépend du contenu d une ou plusieurs variables 5

7 Les 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 dune variable de type tableau (cette variable ne référence aucun tableau). Allocation dynamique du tableau avec une taille aléatoire.

8 Les tableaux multidimensionnels 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

9 Les tableaux multidimensionnels 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]);

10 Les tableaux multidimensionnels 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]);

11 Partie 3 10 Le modèle objet

12 Introduction Constats : o croissance de la complexité des projets o besoin de gain de productivité Qualités attendues : o modularité / résistance aux modifications o réutilisabilité o lisibilité et compréhensibilité o abstraction des données Solution : L'OBJET 11

13 Procédural vs Objet (1) 12 Fonction f Valeurs d'entrée Valeurs de sortie Fonction g Fonction h Variables locales

14 Procédural vs Objet (2) 13 Données Compétences Interface Objet A Objet BObjet C

15 Les 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

16 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

17 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

18 Les messages Les objets communiquent par messages Dans le modèle objet, chaque objet a un comportement et les différents objets s'envoient des messagescomportement 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éthodescomportement d'un objet 17

19 L 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

20 Les classes - dé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.

21 L encapsulation(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 linterface avec le monde extérieur. Toutes les données sont privées. Seules certaines méthodes sont publiques et constituent linterface avec le monde extérieur.

22 L encapsulation(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 public o attribut protégé o attribut privé o opération publique o opération protégée o opération privée 21

23 L encapsulation(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

24 Partie 4 23 C LASSES ET OBJETS

25 Structure des classes (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

26 Structure des classes(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

27 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

28 Création d 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

29 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 Linvocation dun autre constructeur doit être placé en 1 ère instruction !

30 Initialisation(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

31 Les 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

32 Exemple de programme class Circle { public double x, y;// Coordonnée du centre private double rayon;// Rayon du cercle Circle(double p_rayon) { rayon = p_rayon; } double getArea() { return * rayon * rayon; } public static void main(String[] args) { Circle c; // c est une référence sur un objet Circle, // pas un objet c = new Circle(5.0); // c référence maintenant un objet alloué // en mémoire c.x = c.y = 10; System.out.println("Aire de c :" + c.getArea()); } 31 Point dentrée


Télécharger ppt "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."

Présentations similaires


Annonces Google