Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs (caratéristiques) encapsulation (avec private) this constructeur classes immuables (get) classes mutables (set) destructeur (finalize) Autres méthodes (opérateurs, comportements, …) Mot clé static Construction d’une classe
Concepts Surcharge Il est possible que plusieurs fonctions aient le même nom. Il faut que le type des paramètres formels ou que le type de la valeur de retour soient différents. Exemple : int pow(int,int) double pow(double, int) C’est à partir des paramètres effectifs que l’appel est déterminé.
Concepts Redéfinition Il est possible que plusieurs fonctions aient le même nom, les mêmes types pour les paramètres formels et le même type de valeur de retour. C’est la fonction la plus proche qui sera appelée au point de vue visibilité. On ne peut pas redéfinir une méthode dans un même bloc.
Un langage orienté-objet Définition de classe Un langage orienté-objet Encapsulation Héritage Polymorphisme dynamique C’est rendre indépendant l’utilisation d’un classe de son implémentation. Réalisation de l’encapsulation en java L’encapsulation se fait grâce à l’aide d’attributs ayant le modificateur d’accès private. Seules les membres de la classe (exclus les objets) peuvent utiliser ces attributs.
public class Personne{ private String nom; } Définition de classe Rappel : public class Personne{ private String nom; } Personne unePersonne; //définit un objet de la classe Personne unePersonne.nom //illegal car l’attribut nom est private Une classe offrira l’accès à ses attributs via des méthodes.
Définition de classe Exemple : Les attributs d’une classe sont toujours initialisés par défaut à l’opposé des variables locales d’un sous programme. Exemple : public class Personne{ private String nom; //nom est égal à null private int age; //age est égal à 0; public void uneFonction() { int age; //age n’est pas initialisé ici }
Identificateur this Soit : this C’est une référence gérée par Java et n’est utilisable qu’à l’intérieur d’une classe. On parle de l’objet actuel. Cette référence pointe sur l’objet qui a appelé la méthode. C’est ni plus ni moins que l’objet en avant du point au moment de l’appel de la méthode. Utilisable seulement dans les méthodes non static d’une classe. Soit : Public class Personne { String nom; public void setNom(String nom) { this.nom = nom; }
Identificateur this 5 5 UneClasse objet1 = new UneClasse(); Soit : public class UneClasse int x; public void methode1(){ this.x = 5; ... } UneClasse objet1 = new UneClasse(); UneClasse objet2 = new UneClasse(); objet1.methode1(); //this == objet1 dans methode1() objet2.methode1(); //this == objet2 dans methode1() objet 1 x objet2 X 5 5
Définition de classe Rappel : Une classe est constituée d’attributs et de méthodes. Une méthode est un sous programme que l’on peut démarrer à partir d’une autre méthode d’une classe, d’une classe ou d’un objet selon le modificateur d’accès et si elle est static ou non. Les méthodes contenues dans une classes se divisent en plusieurs catégories Constructeurs Accesseurs Mutateurs Destructeur Les autres méthodes (opérateurs, comportements, …)
Définition de classe Constructeurs Méthodes qui permettent de créer une instance(objet) et d’initialiser les attributs de cet instance au moment de son instanciation (new). Il y a réservation d’espace mémoire à ce moment seulement Porte le même nom que la classe. N’a aucun type de retour dans sa définition mais retourne une instance de la classe. Définition : public String(String original){…} Appel : String s = new String(« allo »); //appel le constructeur Si aucun constructeur n’est écrit, il en existe un par défaut qui ne fait rien et les attributs sont initialisés avec leur valeur par défaut (selon le type).
Définition de classe Exemple : public class String{ } Peut être surchargé Exemple : public class String{ public String(String original) {…} public String(char[] value) {…} public String(StringBuffer buffer) {…} … } Aussitôt qu’il y a un constructeur écrit, celui par défaut n’existe plus, il faut l’écrire explicitement pour en avoir un. Exemple : public String(){}
Définition de classe Accesseurs Méthodes qui permettent d’obtenir le contenu des attributs privés d’une classe. Souvent commence par « get » Si une classe n’a que des accesseurs, on dit qu’elle est immuable (non modifiable). N’a habituellement pas de paramètres et sert à retourner le contenu d’un attribut privé. Exemple : public String getNom() { return nom; }
Définition de classe Mutateurs Méthodes qui permettent de modifier le contenu des attributs privés d’une classe. Souvent commence par « set » (setNom, setAge, setPrenom,…). Si une classe a des mutateurs, on dit qu’elle est mutable (modifiable). Ne retourne habituellement rien et a un paramètre qui remplacera le contenu d’un attribut Exemple : public void setNom(String nom) { this.nom = nom; }
Définition de classe Les comportements Celles qui définissent le comportement des instances de la classe ou de la classe elle-même, qui ne sont pas des autres catégories citées avant. Exemple : copie() //retourne une copie d’un objet toString() //retourne une chaîne de caractères //représentant l’objet equals() //opérateur relationnel de comparaison Etc.
Définition de classe Destructeur Méthode qui permet, lors de la fin de la portée d’un objet, de remettre au système les ressources utilisées par un objet. Cette méthode est appelée automatiquement lorsque la dernière référence à une instance n’y fait plus référence. Par exemple x = null; S’il n’y a aucune autre référence sur l’instance sur laquelle x pointait, la méthode Finalize() est appelée. Les ressources utilisées peuvent être une imprimante, de la mémoire, etc. Cela pourrait être aussi de terminer une autre application, … Exemple : public void Finalize() { //le code à exécuté } ****Nous n’en utiliserons pas dans ce cours
Mot clé static static La valeur d’un membre public définie comme étant static existe pour tous les objets d’une même classe. Un attribut static n’est pas initialisé lors de l’instanciation d’un objet mais une seule fois au début d’un programme. S’il y a une modification faite par un objet sur un attribut static, tous les autres objets de cette classe en verront les effets. On peut les voir comme des membres appartenant à toute la classe et non à un objet en particulier. this ne peut pas être utilisé dans une méthode static
Mot clé static Règles On ne peut utiliser directement que des variables locales ou des membres static dans une méthode static(pensez à main()). On se sert du nom de la classe (norme) pour utiliser des membres static et non du nom d’un objet. Ex: Math.pow() La fonction main() n’a pas accès aux membres de la classe dans laquelle elle est définie à moins qu’ils soient static (Ça on le savait déjà.
Exemple public class ExempleStatic { private static int n; //constructeur par défaut public ExempleStatic (){ n = n + 1; } public static int getNombreObjet(){ return n; ExempleStatic e1 = new ExempleStatic(); ExempleStatic e2 = new ExempleStatic(); ExempleStatic e3 = new ExempleStatic(); System.out.print(ExempleStatic.getNombreObjet()); //affichera 3
FIN DU COURS