530 likes | 805 Views
I N 1 0 1. Initiation à la programmation avec le langage Java. IN101 - Cours 1.2 -. Cours 1.2 I. Suite du cours 1.1 II. Déclarations III. Instructions simples IV. Objets et références. IN101 - Cours 1.2 - I. I. Suite du cours 1.1 I.1 Généralités I.2 Nommage
E N D
I N 1 0 1 Initiation à la programmation avec le langage Java
IN101 - Cours 1.2 - Cours 1.2 • I. Suite du cours 1.1 • II. Déclarations • III. Instructions simples • IV. Objets et références
IN101 - Cours 1.2 - 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
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 ?
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
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
IN101 - Cours 1.2 – I.3.2+3 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 etAVANT chaque méthode • a) Classe : @author et @version • b) Méthode : @param et @return • c) Lire ce guide
IN101 - Cours 1.2 – I.3.4 I.3.4 Le commentaire de suppression temporaire • /* jusqu'à */ même sur plusieurs lignesou intra-ligne (ignoré par le compilateur) • attention ! pas d'imbrication, à conserver pour déboguer /*X/* Y*/ Z */ • Exemple :bla /* bla */ bla;
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
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
IN101 - Cours 1.2 – I.4 I.4 Types de données • I.4.1 Entier : int(+- / non nul / chiffres, défaut: 0)-1 23 +456 • I.4.2 Booléen : boolean(false ou true, défaut: false) • I.4.3 Chaîne : String("c", "des mots", défaut: "")
IN101 - Cours 1.2 - 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
IN101 - Cours 1.2 - II. • 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) II. Déclarations • II.1 Classe • II.2 Attribut • II.3 Fonction • II.4 Procédure • II.5 Constructeur • II.6 Paramètres
IN101 - Cours 1.2 – II.1 II.1 Classe Dans le fichier NomClasse.java : publicclass NomClasse { attributs (o.i.) constructeurs (o.i.) autres méthodes (o.i.) } // NomClasse (o.i.) = ordre indifférent
IN101 - Cours 1.2 – II.2 II.2 Attribut privateTypeaNomAttribut; protège de l'extérieur de la classe ==> un autre objet de la même classe peut y accéder !
IN101 - Cours 1.2 – II.3 II.3 Fonction publicTypenomFonction(L.P.F.){ instructions; returnexpression; } // nomFonction L.P.F. = Liste des Paramètres Formels
IN101 - Cours 1.2 – II.4 II.4 Procédure publicvoidnomProc(L.P.F.){ instructions; } // nomProc L.P.F. = Liste des Paramètres Formels
IN101 - Cours 1.2 – II.5 II.5 Constructeur1/2 public /*rien*/NomClasse(L.P.F.){ instructions; } // NomClasse() L.P.F. = Liste des Paramètres Formels
IN101 - Cours 1.2 – II.5 II.5 Constructeur2/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)
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.: finalType1pNomParamètre1, finalType2pNomParamètre2
IN101 - Cours 1.2 – II.6 II.6 Paramètres 2/2 finalsouvent 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 !
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 !
IN101 - Cours 1.2 – II.8 II.8 Initialisation TypevNomVarLocale =valeurInitiale; • Impossible pour les paramètres • Ne pas utiliser pour les attributs(rôle du constructeur)
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
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
IN101 - Cours 1.2 – II.11 II.11 Exemple (sans les instructions) 1/3 /** classe Cercle * (exemple sans les instructions) */ publicclass Cercle { // Attributs : privateint aRayon; privateboolean aPlein; privateString aNom;
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()
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 d’affichage du cercle courant */ public void affiche() { String vCh = "cercle"; // VL initialisee /* construit la chaine vCh selon les attributs puis affiche vCh */ } // affiche(.) } // Cercle
IN101 - Cours 1.2 - II. • 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) II. Déclarations • II.1 Classe • II.2 Attribut • II.3 Fonction • II.4 Procédure • II.5 Constructeur • II.6 Paramètres
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
IN101 - Cours 1.2 – III.1 III.1 Instruction(s) • Toute instruction ou déclarationse termine par un ;(même avant une }) • { des instructions }= un bloc = une instruction composée=> compte pour une seule instruction !
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
IN101 - Cours 1.2 – III.3 III.3 Retour de résultat • uniquement dans une fonction : • returnexpression; • même type que dans la signature • instruction ≠ expression • voir plus loin la définition d'une expression
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
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" → "unephrase" • III.5.2 concaténation d'un type primitif :"Resultat=" + vRes→ "Resultat=12" si vRes vaut 12 • III.5.3println ≠ print
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
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)
IN101 - Cours 1.2 – IV.1 IV.1 Création d'un nouvel objet • Cercle vC2;ne crée pas de cercle ! • vC2=newCercle(); ouvC2= new Cercle(param_effectifs); • appel automatique du constructeuravec les mêmes paramètres • référence ≡ pointeur ≡ adresse • reference type = type objet • référence spéciale : null => pas d’objet ! vC2
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"; remplacevM= new String("mot"); ← paramètre effectif • très utilisée, beaucoup de méthodes (exemple: length()), opérateur +
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)
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
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()outhis.getChaine().length() • la dernière peut être une procédure : • this.getCercle().deplace(10,20);
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 publicclass Cercle { // Attributs : privateint aRayon; privateboolean aPlein; privateString aNom;
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()
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 d’affichage 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
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
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)
IN101 - Cours 1.2 - 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