ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java
ESIEE Paris © Denis BUREAU IN101 - Cours Cours 1.2 I. Suite du cours 1.1 II. Déclarations III. Instructions simples IV. Objets et références
ESIEE Paris © Denis BUREAU IN101 - Cours I. I. Suite du cours 1.1 I.1 Généralités I.2 Nommage I.3 Commentaires et documentation I.4 Types de données
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I.2 I.2 Nommage (Obligations et Conventions obligatoires) V.2.1 O: Identificateur : lettres, chiffres, _, sans chiffre initial, sauf mot réservé V.2.2 C: UneClasse (majuscule initiale) => O: fichier UneClasse.java (UneClasse.class) V.2.3 C: aNomAttribut, verbeMethode(), pNomParametre, vNomVariableLocale V.2.4 O: exception: le constructeur (= nom de la classe), contradiction ?
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I.3 I.3 Commentaires et documentation I.3.1 le commentaire de code I.3.2 le commentaire javadoc I.3.3 les conseils pour la javadoc I.3.4 le commentaire de suppression temporaire I.3.5 la javadoc dans BlueJ
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I.3.1 I.3.1 Le commentaire de code // jusqu'à la fin de la ligne (ignoré par le compilateur) Exemple : bla bla bla; // commentaire
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I I.3.2 Le commentaire javadoc /** jusqu'à */ même sur plusieurs lignes (ignoré par le compilateur, mais pas javadoc) I.3.3 Les conseils pour la javadoc /**... */ AVANT chaque classe et AVANT chaque méthode a) Classe b) Méthode c) Lire ce guideguide
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I.3.4 I.3.4 Le commentaire de suppression temporaire /* jusqu'à */ même sur plusieurs lignes ou intra-ligne (ignoré par le compilateur) attention ! pas d'imbrication, à conserver pour déboguer /* X /* Y */ Z */ Exemple : bla /* bla */ bla;
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I.3.5 I.3.5 La javadoc dans BlueJ bouton implémentation ( source java) attributs privés et instructions interface ( javadoc) signatures publiques
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I.3 I.3 Commentaires et documentation I.3.1 le commentaire de code I.3.2 le commentaire javadoc I.3.3 les conseils pour la javadoc I.3.4 le commentaire de suppression temporaire I.3.5 la javadoc dans BlueJ
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – I.4 I.4 Types de données I.4.1 Entier : int (+- / non nul / chiffres, défaut: 0) I.4.2 Booléen : boolean ( false ou true, défaut: false) I.4.3 Chaîne : String ("c", "des mots", défaut: "")
ESIEE Paris © Denis BUREAU IN101 - Cours I. I. Suite du cours 1.1 I.1 Généralités I.2 Nommage I.3 Commentaires et documentation I.4 Types de données
ESIEE Paris © Denis BUREAU IN101 - Cours II. II. Déclarations II.1 Classe II.2 Attribut II.3 Fonction II.4 Procédure II.5 Constructeur II.6 Paramètres II.7 Variable locale II.8 Initialisation II.9 Différence déclaration / définition II.10 Durée de vie / visibilité II.11 Exemple complet (sans les instructions)
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.1 II.1 Classe Dans le fichier NomClasse.java : public class NomClasse { attributs (o.i.) constructeurs (o.i.) autres méthodes (o.i.) } // NomClasse (o.i.) = ordre indifférent
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.2 II.2 Attribut private Type aNomAttribut; protège de l'extérieur de la classe ==> un autre objet de la même classe peut y accéder !
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.3 II.3 Fonction public Type nomFonction( L.P.F. ) { instructions ; return expression ; } // nomFonction L.P.F. = Liste des Paramètres Formels
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.4 II.4 Procédure public void nomProc( L.P.F. ) { instructions ; } // nomProc L.P.F. = Liste des Paramètres Formels
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.5 II.5 Constructeur 1/2 public /*rien*/ NomClasse( L.P.F. ) { instructions ; } // NomClasse() L.P.F. = Liste des Paramètres Formels
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.5 II.5 Constructeur 2/2 rôle = initialiser les attributs ==> constructeur naturel : autant de paramètres que d'attributs ==> instructions dans l'ordre des attributs mais surcharge ==> plusieurs constructeurs ==> plusieurs moyens d'initialiser un objet (exemple: "origine" ==> 0,0)
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.6 II.6 Paramètres 1/2 L.P.F. = aucun P. OU 1 P. OU plusieurs P. aucun P.: /*rien*/ => () obligatoires ! 1 P.: final Type pNomParamètre plusieurs P.: final Type1 pNomParamètre1, final Type2 pNomParamètre2
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.6 II.6 Paramètres 2/2 final souvent oublié, mais évite certaines erreurs car le compilateur peut vérifier que le paramètre n'est jamais modifié => il faut le mettre systématiquement !
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.7 II.7 Variable locale Type vNomVarLocale; en tête du corps d'une méthode OU juste avant d'en avoir besoin Attention ! non initialisée par défaut !
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.8 II.8 Initialisation Type vNomVarLocale = valeurInitiale ; Impossible pour les paramètres Ne pas utiliser pour les attributs (rôle du constructeur)
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.9 II.9 Différence déclaration / définition II.9.1 Classe : toujours définition II.9.2 Méthode : - déclaration = juste signature (plus tard !) - définition = déclaration + corps II.9.3 Variable : - déclaration = juste type + nom - définition = déclaration + initialisation
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.10 II.10 Durée de vie / visibilité II.10.1 Attribut : durée de vie de l'objet / interne à la classe II.10.2 Paramètre (formel) : pendant l'exécution de la méthode / interne à la méthode II.10.3 Variable locale : depuis sa déclaration jusqu'à la fin du bloc / interne au bloc
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.11 II.11 Exemple (sans les instructions) 1/3 /** classe Cercle * (exemple sans les instructions) */ public class Cercle { // Attributs : private int aRayon; private boolean aPlein; private String aNom;
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.11 II.11 Exemple (sans les instructions) 2/3 /** constructeur naturel */ public Cercle( final int pRayon, final boolean pPlein, final String pNom ) { /* recopie des 3 param dans les attributs corresp */ } // Cercle(...) /** constructeur sans parametre */ public Cercle() { /* initialisation des 3 attributs avec des valeurs par défaut choisies */ } // Cercle()
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – II.11 II.11 Exemple (sans les instructions) 3/3 /** fonc qui calc & retourne le diametre */ public int getDiametre() { int vDiametre; // VL non initialisee /* calcule et retourne la valeur du diamètre */ } // getDiametre() /** proc daffichage du cercle courant */ public void affiche() { String vCh = "cercle"; // VL initialisee /* construit la chaine vCh selon les attributs puis affiche vCh */ } // affiche(.) } // Cercle
ESIEE Paris © Denis BUREAU IN101 - Cours II. II. Déclarations II.1 Classe II.2 Attribut II.3 Fonction II.4 Procédure II.5 Constructeur II.6 Paramètres II.7 Variable locale II.8 Initialisation II.9 Différence déclaration / définition II.10 Durée de vie / visibilité II.11 Exemple complet (sans les instructions)
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – III. III. Instructions simples III.1 instruction(s) III.2 affectation III.3 retour de résultat III.4 fin de méthode III.5 affichage
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – III.1 III.1 Instruction(s) Toute instruction ou déclaration se termine par un ; (même avant une } ) { des instructions } = un bloc = une instruction composée => compte pour une seule instruction !
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – III.2 III.2 Affectation ou assignation ou car non symétrique variable= expression; variable : aNomAttribut ou vNomVarLocale initialisation déclaration + affectation
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – III.3 III.3 Retour de résultat uniquement dans une fonction : return expression ; même type que dans la signature instruction expression voir plus loin la définition d'une expression
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – III.4 III.4 Fin de méthode uniquement dans une procédure : return; facultatif : - ne sert à rien à la fin - permet de terminer prématurément
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – III.5 III.5 Affichage non graphique ==> terminal, console / linux, dos, BlueJ : System.out.println( uneString ); III.5.1 concaténation de String : " une " + " " + " phrase " " une phrase " III.5.2 concaténation d'un type primitif : "Resultat=" + vRes "Resultat=12" si vRes vaut 12 III.5.3 println print
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – III. III. Instructions simples III.1 instruction(s) III.2 affectation III.3 retour de résultat III.4 fin de méthode III.5 affichage
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV. IV. Objets et références IV.1 création d'un nouvel objet IV.2 classe spéciale IV.3 accès à un attribut IV.4 appel de méthode IV.5 appels successifs IV.6 exemple (avec les instructions)
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.1 IV.1 Création d'un nouvel objet Cercle vC2; ne crée pas de cercle ! vC2= new Cercle (); ou vC2= new Cercle ( param_effectifs ); appel automatique du constructeur avec les mêmes paramètres référence pointeur adresse reference type = type objet référence spéciale : null => pas dobjet ! vC2
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.2 IV.2 Classe spéciale String : ne nécessite pas d'appel de constructeur String vM; puis vM= "mot"; remplace vM= new String("mot"); paramètre effectif très utilisée, beaucoup de méthodes (exemple: length() ), opérateur +
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.3 IV.3 Accès à un attribut dans une méthode de la même classe : vC2.aNomAttribut (sur l'objet vC2) ou this.aNomAttribut this = référence spéciale, à l'objet courant (objet sur lequel a été appelée la méthode)
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.4 IV.4 Appel de méthode vC2.move( param_effectifs ); ou vS= vC2.surface(); (sur l'objet vC2) this.move( param_effectifs ); ou vS= this.surface(); (rappel : this = l'objet courant) l'appel de procédure est un exemple d'instruction et l'appel de fonction est un exemple d'expression
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.5 IV.5 Appels successifs pour les attributs référence ou les fonctions qui retournent une référence : this.aChaine.length() ou this.getChaine().length() la dernière peut être une procédure : this.getCercle().deplace(10,20);
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.6 IV.6 Exemple (avec les instructions) 1/4 /** classe Cercle * (exemple avec les instructions) */ dans le fichier Cercle.java public class Cercle { // Attributs : private int aRayon; private boolean aPlein; private String aNom;
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.6 IV.6 Exemple (avec les instructions) 2/4 /** constructeur naturel */ public Cercle( final int pRayon, final boolean pPlein, final String pNom ) { this.aRayon = pRayon; // affectation this.aPlein = pPlein; this.aNom = pNom; } // Cercle(...) /** constructeur sans parametre */ public Cercle() { this.aRayon = 10; this.aPlein = false; this.aNom = "anonyme"; // ces 3 instruc. n'en feront plus qu'une lorsqu'on saura appeler l'autre constructeur } // Cercle()
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.6 IV.6 Exemple (avec les instructions) 3/4 /** fonc qui calc & retourne le diametre */ public int getDiametre() { int vDiametre; // VL non initialisee vDiametre = 2 * this.aRayon; // affect. return vDiametre; } // getDiametre() /** proc daffichage du cercle courant */ public void affiche() { String vCh = "cercle"; // VL initialisee vCh = vCh + " " + this.aNom + " : "; // c. vCh = vCh + this.getDiametre(); // a.m. System.out.print( vCh ); // affichage } // affiche() } // Cercle
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV.6 IV.6 Exemple (avec les instructions) 4/4 dans le fichier Essai.java /** classe de test de la classe Cercle */ public class Essai { // pas d'attributs /** procédure de test */ public void lance() { Cercle vC1 = new Cercle( 20,true,"c1" ); Cercle vC2 = new Cercle(); int vD1 = vC1.aRayon * 2; // interdit int vD1 = vC1.getDiameter(); // OK vC2.affiche(); // OK } // lance() } // Essai
ESIEE Paris © Denis BUREAU IN101 - Cours 1.2 – IV. IV. Objets et références IV.1 création d'un nouvel objet IV.2 classe spéciale IV.3 accès à un attribut IV.4 appel de méthode IV.5 appels successifs IV.6 exemple (avec les instructions)
ESIEE Paris © Denis BUREAU IN101 - Cours A apprendre : I. Suite du cours 1.1 II. Déclarations III. Instructions simples IV. Objets et références Lire le poly : tout jusqu'à la section 2.2, sections 4, 5.2.0, 7.1, 7.2, 8.1, et annexes 6 & 7