name: inverse layout: true class: center, middle, inverse --- # JAVA - Cours 3 ## Les classes ## Inès de Courchelle  --- layout: false # Mon programme java - Les fichiers sources se termintent par “.java” - Le nom du fichier est le même que la classe - Un programme a toujours une méthode principale
--- # Classe VS Objet
--- # Accessibilité Un élément (attribut/opération) d'une classe peut être : - Private : Accessible uniquement au sein de la classe dans laquelle il est déclaré - Public : Accessible partout - Protected : Accessible uniquement aux classes d'un package et à ses classes filles
--- # Attributs ## Objectifs .pull-left[ - **A quoi servent-ils ?** - Définir propriétés de la classe - Caractériser l'état de la classe - **Comment ça s'écrit en java ?** Pour chaque attribut d'une classe, on lui donne - une accessibilité - un type (primitif ou pas) - un nom (donné par le diagramme de classes) ] .pull-right[
] ## Traduction de la classe Personne ```java private int id; private String nom; private String prenom; private int anneeNaissance; ``` --- # Les opérations ## Plusieurs types - **Fonctions** : Réaliser des traitements - des calculs - ... - **Procédures** : Réaliser des traitements - des calculs - ... - **Constructeurw** : Définir un objet de classe dans un état initial - **Getters/Setters** : Accèder aux attributs
--- # Fonctions et Méthodes 1/2 ## Définition Pour chaque fonction/procédure d'une classe, on lui donne - Une accessibilité - Un type de retour (void si ça renvoi rien) - Un nom - Zero ou plusieurs paramétres ## Exemples #### Exemple 1 : Accessibilité public ```java public int addition (int a, int b){ int x; c=a+b; return c; } ``` --- # Fonctions et Méthodes 2/2 ## Exemples #### Exemple 2 : Accessibilité private ```java private void addition (){ int a,b,c; c=a+b; } ``` #### Exemple 3 : Accessibilité protected ```java protected void addition (int a, int b){ int c; c=a+b; } ``` --- # Les constructeurs 1/4 ## Pourquoi ? - Pour pouvoir créer des objets - Pour pouvoir donner des valeurs à des objets ## Quand ? Lorsque l'on défini la classe ## Comment ? Pour chaque fonction/méthode d'une classe, on lui donne - Le nom du constructeur est le même que celui de la classe - Il doit être obligatoirement .underG[PUBLIC] - Il peut accepter des paramètres pas de valeur de retour (mais on ne met pas de VOID) --- # Les constructeurs 2/4 ## Exemple Nous considérons la classe suivante : .pull-left[
] .pull-right[
] .otro-blockquote[ Pour pouvoir créer la bulle contenant les informations de Jimmy Page ! Je suis obligée de créer un constructeur qui pour la suite va pouvoir me permettre de créer de manière générique plein de petite bulles !] --- # Les constructeurs 3/4 ## Exemple
.underR[Remarques] - .under[Constructeur sans paramètres] : toutes les valeurs initiales des membres sont fixées par défaut - .under[Constructeur "complet"] : toutes les valeurs initiales sont fournies de l’extérieur - .under[Constructeur partiel] : toutes les valeurs en paramètre sont obligatoires --- # Les constructeurs 4/4 ## Constructeur sans paramètres ```java public Personne(){ id=15; nom="Potter"; prenom="Harry"; annee=1981; } ``` ## Constructeur "complet" ```java public Personne(int id,String nom, String prenom, int annee){ this.id=id; this.nom=nom; this.prenom=prenom; this.annee=annee; } ``` ## Constructeur partiel ```java public Personne(int id){ this.id=id; } ``` --- # Création d’un objet 1/2 ## Pour manipuler un objet - on déclare une rérérence sur la classe de cet objet - on utilise le nom de classe de l'objet comme un type ```java Personne p1; ``` ## 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 donc alloué en mémoire. ```java Personne p1 = new Personne(123,"Tuchel","Thomas", 1973); ``` --- # Création d’un objet 2/2 ## Description compléte de la création d'un objet
--- # Destruction d’un objet - La destruction des objets est prise en charge par le garbage collector - Les destructions sont asynchrones, aucune garantie n’est apportée lors de la destruction d’un objet - Si l’objet possède la méthode `finalize` celle ci est appelé lorsque l’objet est détruit ```java public void finalize() { System.out.println("Mon objet est détruit"); System.out.println("Et j'arrive ici !"); } ```
--- # Getter 1/2 - .under[Définition] : Un getter permet d’accèder à une propriété d’un objet .pull-left-big[ - .under[Traduction en Java] ```java public String getNom(){ return nom; } ``` - .under[Utilisation de la méthode] ```java String nom=p1.getNom(); System.out.println(" nom " + nom); ``` ] .pull-right-small[
] --- # Getter 2/2 Pour toute la classe Personne, on prend chaque attribut et on réalise son getter ! .pull-left-big[ ```java public int getId() { return id; } public String getNom() { return nom; } public String getPrenom() { return prenom; } public int getAnneeNaissance() { return anneeNaissance; } ``` ] .pull-right-small[
] --- # Setter 1/2 .under[Définition] Un setter permet de modifier une propriété d’un objet. .pull-left-big[ - .under[Traduction en Java] ```java public void setNom(String name) { this.nom = nom; } ``` - .under[Utilisation de la méthode] ```java String nom = “James”; p1.setNom(nom); System.out.println(p1.getNom()); ``` ] .pull-right-small[
] --- # Setter 2/2 Pour toute la classe Personne, on prend chaque attribut et on réalise son getter ! .pull-left-big[ ```java public void setId(int id) { this.id = id; } public void setNom(String nom) { this.nom = nom; } public void setPrenom(String prenom) { this.prenom = prenom; } public void setAnneeNaissance(int anneeNaissance) { this.anneeNaissance = anneeNaissance; } ``` ] .pull-right-small[
] --- # Classe Personne Compléte ! ## Let's go .pull-left-small[
] .pull-right-big[ ```java public class Personne { /* Définition des attributs */ private int id; private String nom; private String prenom; private int anneeNaissance; /* Constructeur(s) */ public Personne(int id,String nom){ this.id=id; this.nom=nom; } /* GETTER + SETTER */ ... /* Opérations */ public int age(int date) { ...} public String sexe(){...} } ``` ] --- # Révisions ## Quiz 1. À t-on le droit de mettre plusieurs constructeurs pour une même classe ? 2. À quoi sert un constructeur ? 3. De quel type doit être un attribut : private, public ou protected ? 4. Quelles sont les différences entre un getter et un setter ? 5. Quel est le point commun entre un getter et un setter ?