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

Langage Oriente Objet Cours 2.

Présentations similaires


Présentation au sujet: "Langage Oriente Objet Cours 2."— Transcription de la présentation:

1 Langage Oriente Objet Cours 2

2 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.

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

4 Les tableaux 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.

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

6 Les tableaux 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). Allocation dynamique du tableau avec une taille aléatoire.

7 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

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

9 Les tableaux multidimensionnels
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 k = 0; k < a3[i][j].length;k++) prt("a3[" + i + "][" + j + "][" + k + "] = " + a3[i][j][k]);

10 Partie 3 Le modèle objet

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

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

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

14 Les concepts de base Orienté objet : Orienté objet (OMG) :
organisation du logiciel comme une collection d’objets comprenant à la fois une structure de données et un comportement Orienté objet (OMG) : Encapsulation + Héritage + Polymorphisme

15 Les objets (1) Un objet est à la fois des données et un comportement.
Les objets sont des boîtes noires : seuls les services rendus par l'objet sont importants au niveau de l'utilisateur.

16 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

17 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 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

18 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...).

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

20 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 Toutes les données sont privées. Seules certaines méthodes sont publiques et constituent l’interface avec le monde extérieur.

21 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é : attribut public attribut protégé attribut privé opération publique opération protégée opération privée

22 L’encapsulation (3) L’encapsulation présente deux avantages :
Les données encapsulées sont protégées des accès intempestifs, ce qui permet de garantir leur intégrité Les clients d’une abstraction ne dépendent pas de la réalisation de l’abstraction, mais seulement de sa spécification

23 Partie 4 Classes et objets

24 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.

25 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'

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

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

28 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); Un constructeur à trois paramètres Constructeur par recopie Constructeur par défaut L’invocation d’un autre constructeur doit être placé en 1ère instruction !

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

30 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. ClassName.java Class ClassName{ } javac ClassName.class java ClassName

31 Exemple de programme Point d’entrée
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()); Point d’entrée


Télécharger ppt "Langage Oriente Objet Cours 2."

Présentations similaires


Annonces Google