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

Programmation par Objets et Java Exercices. Eclipse Création dun projet Java Choix de la machine virtuelle Création dun package Création dune classe.

Présentations similaires


Présentation au sujet: "Programmation par Objets et Java Exercices. Eclipse Création dun projet Java Choix de la machine virtuelle Création dun package Création dune classe."— Transcription de la présentation:

1 Programmation par Objets et Java Exercices

2 Eclipse Création dun projet Java Choix de la machine virtuelle Création dun package Création dune classe

3 Déclaration des classes

4 Par défaut

5 Constructeur Si aucun constructeur nest déclaré, par défaut, le système fournit un constructeur vide qui ne fait rien

6 Déclaration des classes Par défaut

7 Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile => pour empêcher le compilateur de faire certaines optimisations (registre) –Exemple dusage « User variables that are referenced by multiple threads should have the attribute volatile to ensure that all changes to the value of the variable are performed immediately by the compiler. » to ensure that the variable is loaded from memory before each use, and stored to memory after each use to ensure that the value of the variable is consistent and coherent within each thread

8 Contrôle de laccès aux variables Par défaut

9 Variables de classe Une variable de classe est créée une seule fois. La même variable de classe est partagée par toutes les instances de cette classe Les variables de classes peuvent être accédées via les instances et via les classes Les méthodes dinstance peuvent accéder aux variables de classes Les méthodes de classe NE peuvent PAS accéder aux variables dinstance class AnIntegerNamedX { static int x; public int x() { return x; } public void setX(int newX) { x = newX; } }

10 Initialisation directe des variables class BedAndBreakfast { static final int MAX_CAPACITY=10; boolean full = false; }

11 Initialisation des variables: bloc static Une classe peut avoir autant de bloc dinitialisation quelle le désire Ces blocs peuvent apparaitre nimporte où dans le corps de la classe. A lexécution, le système garantit que ces blocs statiques dinitialisation et les initialisation statiques seront appelées dans leur ordre dapparition dans le code source, i.e. de gauche à droite et de haut en bas).

12 Initialisation dans les constructeurs class Rectangle { Rectangle() { this(0,0,0,0); } Rectangle(int width, int height) { this(0,0,width,height); } Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height ; } La meilleure approche Tout le code dinitialisation se trouve à un seul endroit –Code plus facile à lire –Code plus facile à maintenir. Les valeurs par défaut sont manipulées explicitement.

13 Portée des variables

14 Les packages Comme mécanisme dencapsulation –Fournit une façon de partager de linformation à lintérieur du package tout en empêchant son usage à lextérieur –Seuls les classes et interfaces déclarés public peuvent être utilisés par le code situé à lextérieur du package Comme mécanisme de nommage –Un package possède un nom hiérarchique qui permet de le distinguer des autres packages –Les classes et les interfaces ont des noms relatifs à leur package –Les définitions des autres packages peuvent être utilisés à laide de leur nom complètement qualifié Il peut y avoir conflit entre ces deux rôles –Il peut être pratique de grouper plusieurs définitions dans le même package parce que le code externe aura accès à toutes ces classes en important un seul package –Cette approche est souvent mal fondée du point de vue de lencapsulation parce que le code dun package a souvent accès à de linformation interne des autres définitions du package –Morale: résoudre ce conflit en faveur de lencapsulation

15 Héritage des variables et des méthodes Une sous-classe hérite de tous les membres de sa superclasse qui sont accessibles à cette sous-classe à moins que –la sous-classe ne cache explicitement une variable –la sous-classe ne redéfinisse une méthode. Les constructeurs ne sont pas des variables ou des méthodes – par conséquent ils ne sont pas hérités par les sous-classes.

16 Héritage des variables et des méthodes Les sous-classes héritent des membres (variables et méthodes) déclarés public ou protected. Les sous-classes héritent des membres des superclasses déclarés sans spécification daccès en autant que la sous-classe se trouve dans le même package que les superclasses. Les sous-classes nhéritent pas des membres de la superclasse si la sous-classe déclare un membre avec le même nom. –Dans le cas dune variable, la variable de la sous-classe cache celle de la superclasse. –Dans le cas dune méthode, la méthode de la sous-classe redéfinit celle de la superclasse

17 Interfaces /IandI/createinterface.html /IandI/createinterface.html

18 Classes internes –http://java.sun.com/docs/books/tutorial/java/jav aOO/nested.htmlhttp://java.sun.com/docs/books/tutorial/java/jav aOO/nested.html –http://java.sun.com/docs/books/tutorial/java/jav aOO/innerclasses.htmlhttp://java.sun.com/docs/books/tutorial/java/jav aOO/innerclasses.html –http://java.sun.com/docs/books/tutorial/java/jav aOO/QandE/nested-questions.htmlhttp://java.sun.com/docs/books/tutorial/java/jav aOO/QandE/nested-questions.html Classes anonymes

19 Exceptions

20 Eclipse Test Junit Exécution Propriétés du main –Passer des paramètres au main Debugging Console

21 Si la classe Point possède une sous-classe, par exemple Tortue, quel sera leffet de this() ? Que se passe-t-il si vous remplacez par super() /** * Point constructor comment. */ public Point(int x, int y) { this();//super(); //this.x = x; this.setX(x); //setX(x); this.setY(y); }

22 Au niveau des membres static, comment sappliquent – les règles dhéritage ? –les règles de visibilité ?

23 Vérifier les règles daccès aux constructeurs. –Est-il vrai que le système fourni un constructeur par défaut si aucun nest fourni? –Que se passe-t-il si un constructeur avec un paramètre est fourni? Peut-on utiliser le constructeur sans paramètre fourni par défaut? Que se passe-t-il si une superclasse invoquait this() ?

24 Peut-on définir la même variable plusieurs fois dans la hiérarchie ? avec des types différents ? avec une visibilité différente ?

25 Quelle est la visibilité par défaut dune classe ? dune variable ? dune méthode ?

26 Exercices complémentaires Learning the Java Language –http://java.sun.com/docs/books/tutorial/java/index.html

27 Conversion, surcharge et redéfinition Vérification de typage utilise toujours le type apparent –cast (nom dune classe) expression Conversion implicite des valeurs dun type en un autre –Seulement pour les types primitifs –Ordre croissant de généralité byte -> short -> int -> long -> float -> double –i = l illegal –l = i legal int = charlegal char = intillegal

28 Surcharge –Plusieurs méthodes qui partagent le même nom –Les méthodes sont différenciées par le nombre et le type des paramètres La méthode la plus spécifique est invoquée –Une méthode m1 est plus spécifique quune méthode m2 si toute invocation légale de m1 serait aussi une invocation légale de m2 si dautres conversions seraient effectuées –Sil nexiste pas de méthode plus spécifique, alors erreur de compilation –Tient compte des conversions implicites et des relations dhéritage

29 Redéfinition Une classe peut redéfinir une méthode de sa superclasse. Cette méthode doit avoir –le même nom, –le même type de résultat –la même liste de paramètres. On ne peut pas redéfinir une méthode déclarée final On doit redéfinir une méthode déclarée abstract

30 Sécurité du typage Java garantit la sécurité du typage (type safety) –Un langage fortement typé Les erreurs de typage sont détectés par le compilateur –Gestion automatique de lespace-mémoire Ramasse-miettes –Vérification de tous les accès aux vecteurs pour sassurer quils en respectent les bornes. Une différence importante entre Java et C++


Télécharger ppt "Programmation par Objets et Java Exercices. Eclipse Création dun projet Java Choix de la machine virtuelle Création dun package Création dune classe."

Présentations similaires


Annonces Google