Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Tutorat en bio-informatique
5 février 2013
2
Au programme… Les classes et les objets Attributs Constructeurs
Méthodes
3
Les classes Les classes ne servent pas uniquement à englober des fonctions main public class MonProgramme { public static void main (String[] args) System.out.println("Ceci est mon programme."); … }
4
Les classes Les classes peuvent également servir de modèles pour la définition d'objets public class MonObjet { (attributs) (constructeurs) (méthodes d'instance) (variables et fonctions statiques de classe) }
5
Les objets On dit d'un objet en particulier qu'il s'agit d'une instance d'une classe En effet, un objet est une instance qui se conforme au modèle d'une classe (qui possède les propriétés définies dans la classe)
6
Les attributs On appelle attributs les variables non statiques qui sont déclarées dans une classe Chaque instance d'une classe (objet) possèdera une valeur spécifique pour chacun de ses attributs C'est ce qui fait que chaque objet est différent (tout en faisant partie de la même classe)
7
Les attributs Afin de les retrouver facilement dans le code, on déclare habituellement les attributs au tout début de la classe L'affectation se fait normalement dans le constructeur ou dans une méthode d'instance On doit indiquer le droit d'accès (public ou private) dans la déclaration. public class Table { public int largeur; public int longueur; public int hauteur; … }
8
Les attributs Un objet composite est un objet qui ne possède rien d'autre que des attributs Les objets composites servent uniquement à regrouper des informations
9
Les attributs Les attributs public sont accessibles dans toutes les classes En supposant qu'on a déjà instancié un objet Table nommé t, on peut accéder à ses attributs public en écrivant t.attribut : t.largeur = 35; int temp = t.longueur; System.out.println("Hauteur = " + t.hauteur);
10
Les attributs Les attributs private sont accessibles seulement à l'intérieur de la classe dans laquelle ils ont été déclarés Comme on le verra plus tard, des méthodes public devront être définies afin de lire ou de modifier les attributs private à partir d'une autre classe Les objets composites ne peuvent donc pas avoir d'attributs private
11
Les attributs Il est recommandé d'utiliser des attributs private plutôt que public Les attributs private vous permettent de protéger les valeurs des attributs afin qu'elles ne soient pas modifiées par erreur Avec des attributs private, seules les méthodes de l'objet ont la possibilité de modifier leur état
12
Les variables static de classe
On peut déclarer dans une classe des variables qui ne seront pas spécifiques à chaque instance (contrairement aux attributs) : les variables static de classe Il peut s'agir de constantes ou de variables, mais l'utilisation de variables static de classe est peu recommandé
13
Les variables static de classe
public class Table { //Constante: public static final int NB_PATTES = 4; //Variable static de classe: private static int nbTables = 0; private int largeur; private int longueur; private int hauteur; … }
14
Constructeurs La déclaration d'un objet se fait comme celle d'un type primitif : int nombre; //type Table t; //objet L'instanciation se fait à l'aide de constructeurs : Table t = new Table(); //appel au constructeur
15
Constructeurs Un constructeur doit être défini de cette façon :
public NomDeLaClasse(arguments) { … } Un constructeur doit (normalement) être public, sinon il sera impossible de créer une instance de cette classe en dehors de la classe
16
Constructeurs Comme pour les fonctions, il est possible de créer plusieurs constructeurs, en autant que les paramètres soient différents public class Table { private static int nbTables = 0; private int largeur, longueur, hauteur; public Table() //Premier constructeur sans argument largeur = 10; longueur = 10; hauteur = 10; nbTables++; System.out.println("Une table a été crée!"); } public Table(int largeur, int longueur, int hauteur) //Deuxième constructeur avec arguments this.largeur = largeur; this.longueur = longueur; this.hauteur = hauteur;
17
Constructeurs Le constructeur suivant est fourni par défaut par le compilateur dans le cas où aucun constructeur n'a été défini dans une classe : public NomDeLaClasse() {} Ce constructeur ne fait rien, mais permet tout de même d'instancier des objets Ce constructeur par défaut disparaît dès qu'un constructeur (peu importe sa signature) est défini dans la classe
18
Constructeurs javac Test.java cannot find symbol constructor Table()
public class Table { private static int nbTables = 0; private int largeur, longueur, hauteur; public Table(int largeur, int longueur, int hauteur) this.largeur = largeur; this.longueur = longueur; this.hauteur = hauteur; nbTables++; } public class Test { public static void main (String[] args) Table t = new Table(); } javac Test.java cannot find symbol constructor Table()
19
Fonctions dans une classe
Dans une classe, on peut avoir des méthodes private et des méthodes public. À quoi correspond chacun de ces genres de méthodes? Une méthode private est une méthode qui ne pourra être appelée qu’à l’intérieur de cette classe. Une méthode public peut être appelée à l’extérieur de la classe.
20
Fonctions dans une classe
Dans une classe, on peut avoir des méthodes static et non static public static void printText(String text) { System.out.println(text); } public void printAttribut() System.out.println("La valeur de l'attribut est : " + attribut);
21
Fonctions dans une classe
Les méthodes static ne s'appliquent pas sur des instances. Elles n'ont pas accès aux attributs. Elles peuvent être utilisées à l'intérieur même de la classe (comme vous les avez utilisées jusqu'à maintenant) ou à l'extérieur (comme les fonctions de la classe Math par exemple). Appel à l'extérieur de la classe : Classe.methodeStatique();
22
Fonctions dans une classe
Les méthodes non static s'appliquent uniquement sur des instances d'objets. Elles sont les seules qui ont accès aux attributs. Appel à l'extérieur de la classe : instance.methodeDinstance(); Appel à l'intérieur de la classe et dans un contexte non static : methodeDinstance(); this.methodeDinstance();
23
Copie d’un objet On ne peut pas copier des objets (et des tableaux) de la même façon que des types primitifs : int a = 55; int b = a; //Erreur logique! Table t = new Table(1, 2, 3); Table t2 = t; De cette façon, on ne fait qu'obtenir 2 pointeurs vers la même instance! Adresse mémoire t Largeur (1) Longueur (2) Hauteur (3) t2
24
Copie d’un objet Pour copier correctement un objet (ou un tableau), il faut créer un nouvel objet qui aura les mêmes valeurs d’attributs (ou les mêmes valeurs dans les cases du tableau) On peut créer une fonction static ou non statique pour copier des objets
25
Copie d’un objet public class Table { private static int nbTables = 0; private int largeur, longueur, hauteur; … public Table copy() //Non static return new Table(largeur, longueur, hauteur); } public static Table copy(Table t) //Static return new Table(t.largeur, t.longueur, t.hauteur);
26
Copie d’un objet Exemples d'appels aux fonctions : public class Test {
public static void main(String[] args) Table t1 = new Table(1, 2, 3); Table t2 = t1.copy(); //Non static Table t3 = Table.copy(t1); //Static }
27
Comparaison de deux objets
La comparaison suivante compare uniquement les références (comme pour les String) et non pas les valeurs des attributs : if (t1 == t2) Afin de vérifier si deux objets sont identiques, il faut plutôt vérifier si les valeurs de leurs attributs sont identiques
28
Les objets Les objets sont en quelques sortes des types que vous créez
Les objets peuvent donc être employés comme : attributs paramètres valeurs de retour
29
Objets comme paramètres
Avec les types primitifs, on passe en paramètre une copie de la valeur Avec les objets (et les tableaux), on passe en paramètre une copie de la référence
30
Objets comme paramètres
Si on modifie les attributs du paramètre formel, les attributs du paramètre actuel sont modifiés aussi Si on modifie la référence du paramètre formel, on ne modifie pas la référence du paramètre actuel
31
Objets comme paramètres
public class Table { private static int nbTables = 0; private int largeur, longueur, hauteur; … public static void modifieReference(Table t) t = new Table(5, 5, 5); } La fonction modifieReference n'aura aucun effet sur le paramètre actuel
32
Saisir et modifier des attributs
Lorsque les attributs sont private, on doit créer des fonctions public get() et set() pour permettre de saisir ou de modifier la valeur d’un attribut Ces méthodes seront accessibles dans toutes les classes et permettront d’obtenir ou de modifier la valeur de l’attribut
33
Saisir et modifier des attributs
public class Table { private int largeur; private int longueur; private int hauteur; public int getLargeur() return largeur; //ou this.largeur; } public void setLargeur(int largeur) this.largeur = largeur;
34
Saisir et modifier des attributs
Si on crée une méthode : public setLargeur(int largeur) on permet de modifier la largeur de la table n’importe où dans le programme Si on ne veut pas que l’attribut soit modifiable suite à la création de celui-ci, on ne doit pas créer de fonction set Si on veut créer un attribut non modifiable, on doit l'initialiser dans le constructeur
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.