Académique Documents
Professionnel Documents
Culture Documents
Plan du cours
Sances Chapitres 1 Introduction Java
2
3 4 5 6 7 8
Classe et objet
Encapsulation Hritage Polymorphisme Exceptions Interface et collection Interface graphique
Conventions de nommage
les noms doivent tre de prfrence en anglais (pour faciliter la comprhension du code, dans le cas de dveloppement de logiciels open source) les noms doivent tre parlants, viter dutiliser des abrviations les noms des classes et des interfaces doivent commencer par une majuscule et avoir la forme suivante : MyClass les noms des attributs static final doivent tre en majuscule et avoir la forme suivante sils contiennent plusieurs noms : MY_CONSTANT les noms des autres attributs et des mthodes doivent commencer par une minuscule et avoir la forme suivante sils contiennent plusieurs noms: myAttribut, myMethod() les noms de classe hritant de la classe Exception doivent se terminer par Exception: MyException les noms de paquetage ne doivent contenir que des minuscules et chaque mot spar par un .
4
Recommandations (1)
crire une mthode main pour chacune des classes testables le main de lapplication doit tre dans une classe spare Main (ou Test) viter de dclarer des attributs comme public. Garder toutes les donnes private et implantez plutt pour un attribut , 1 accesseurs et 1 mutateur : setAttribut(), getAttribut() toutes les donnes ne ncessitent pas daccesseurs en modification
la date de naissance dune personne ne va pas changer
toujours initialiser et explicitez les attributs utiliser equals() plutt que "==" (pour les types non primitifs
comme String)
5
Recommandations (2)
initialiser les objets qui peuvent retourner une Enumeration(Vector, HashTable,) avec autre chose que null crire des mthodes qui ne font quune chose et en utilisent dautres ne dclarez les variables locales qu lendroit o vous en avez rellement besoin affectez null toutes les rfrences qui ne sont plus utilises minimiser les * dans les imports
Renaud Zigmann
CLASSE ET OBJET
Classe(attribut, mthode) Objet Surcharge des constructeurs Rle de this Static Relation entre les classes
Classe
Dfinition
une classe est un moule pour crer des objets une classe permet de modliser des objets du monde rel cest un type dobjet
Syntaxe
[<modificateurs_de_classe>]class <nom_de_classe> [extends <nom_de_superclasse>] [implements <interface_1>,<interface_2,...] { <Attribut_et_Mthodes> }
8
Attribut
class Livre{ String titre; /* un attribut de nom titre et de type String chaine de caractres */ int nb_Exemplaire; /* un attribut de nom nb_Exemplaire et de type int */ int annee_edition; /* un attribut de nom annee_edition et de type int */ }
Mthode
class Livre{
String titre; int nb_Exemplaire; int annee_edition; public Livre(){} /*mthode afficher_Titre na pas de paramtre en entre et retourne vide cette mthode agira sur les attributs de la classe livre */ Void afficher_Titre() {System.out.print("Le titre est "+titre);} /*mthode photocopier a comme paramtre un entier n et retourne le nouveau nombre dexemplaire*/ int photocopier(int n) {nb_Exemplaire=nb_Exemplaire+n; Return nb_Exemplaire; }
}
10
Objet
Dfinition un objet est une instance de classe Exemple
public class MonProgramme { public static void main(String[] args) { Livre l; // l est une rfrence sur la classe l = new Livre(); // l rfrence maintenant un objet //allou en mmoire Livre l2 = new Livre(); l.titre="Java 2, le guide du programmeur "; l.nb_Exemplaire=2; l. afficher_Titre(); } }
11
Pour crer un objet, on instancie une classe en appliquant l'oprateur new sur un de ses constructeurs. Une nouvelle instance de cette classe est alors alloue en mmoire :
l = new Livre();
Toute classe possde un constructeur par dfaut, implicite. Il peut tre redfini. Une classe peut avoir plusieurs constructeurs qui diffrent par le nombre et la nature de leurs paramtres.
12
13
Exemple de surcharge
Surcharge des constructeurs Livre(){ }//constructeur par defaut Livre(String titre, int nb_exemplaire, int annee){ }// constructeur exhaustive
15
17
Rle de this
This dsigne lobjet courant(cest une rfrence sur lobjet courant). Il permet de lever lambiguit de nom : this.titre dsigne lattribut alors que titre seul dsigne le paramtre.
public setTitre(String titre){ this.titre=titre; }
18
Final
Le mot cl Java final signifie Cela ne peut pas changer .Vous pourriez vouloir empcher les changements pour deux raisons : conception ou efficacit. Une constante est utile pour deux raisons: 1- Elle peut tre une constante lors de la compilation qui ne changera jamais ; 2- Elle peut tre une valeur initialise l'excution qu'on ne veut pas changer.19
Exemple : Final
public class FinalData { // Peut tre des constantes la compilation final int i1 = 9; static final int VAL_TWO = 99; // Constantes publiques typiques: public static final int VAL_THREE = 39; // Ne peuvent pas tre des constantes la compilation: final int i4 = (int)(Math.random()*20); static final int i5 = (int)(Math.random()*20); }
Un champ qui est la fois static et final a un emplacement de stockage fixe qui ne peut pas tre chang. 20
Static
Les variables static sont communes toutes les instances de la classe. Il n'est pas ncessaire d'instancier une classe pour accder un de ses membres statiques. Les attributs static sont initialiss par dfaut 0 pour les nombres entiers et rels, false pour les boolens et null pour les rfrences Les mthodes Static sont des fonctions qui dlivrent un rsultat indpendamment de tout objet, elles sont mises (en dehors de leur classe) en les faisant prcder du nom de la classe les dfinissant.
21
Exemple
Attribut static private double pReel;// partie Relle private double pImag;//partie Imaginaire private static int nbDecimales = 3;//nombre de dcimales fournir pour lcriture des rsultats. Mthode static Complex c1= new Complex(2,1.50); Complex c2= new Complex(-2,1.75); Complex c3= c1.plus(c2);// c1 est lobjet implicite Complex c3= Complex.plus(c1, c2); //pas dobjet implicite
22
Membres de classe
un membre est dclar avec le modificateur static : membre de classe (champ ou mthode) un membre qui nest pas de classe est dit dinstance
NomClasse.membre
public class Count { private int serialNumber; private static int counter =0; public Count(){ counter++; serialNumber=counter; } }
public class Cercle{ public double x,y,r; public Cercle bigger(Cercle c){ if (c.r>r) return c else return this; }
public static Cercle bigger(Cercle a, Cercle b){ if (a.r>b.r) return a else return b; } ..} Cercle c=Cercle.bigger(a,b);
23
Les variables de type objet que l'on dclare ne contiennent pas un objet mais une rfrence vers cet objet. c1 = c2 : copie la rfrence de l'objet c2 dans c1 mme objet (ils pointent sur le mme objet). c1 et c2 rfrent au
L'oprateur == compare ces rfrences. Deux objets avec des proprits identiques sont deux objets distincts Pour comparer l'galit des variables de deux instances, il faut munir la classe d'une mthode cette effet : la mthode equals hrite de Object. Si les deux objets sont de la mme classe: la mthode getClass() de la classe Object
(obj1.getClass().equals(obj2.getClass())
24
26
28