3. Définition « Classe »
La notion de classe constitue le fondement de la programmation orientée objet. Une classe est
la déclaration d'un type d'objet.
En Java, les classes sont déclarées à l'aide du mot-clef class, suivi du nom de la classe déclarée,
suivi du corps de la classe entre accolades. Par convention, un nom de classe commence par une
majuscule.
Exemple:
public class MaClasse
{
// corps de la classe
}
Le fichier contenant cette déclaration doit avoir pour extension .java. Un fichier peut contenir
plusieurs déclarations de classes (ce n'est pas recommandé, il faut partir du principe 1 classe = 1
fichier, pour des problèmes évidents de relecture du code, devoir modifier du code où plusieurs
classes sont écrites dans un seul fichier est le meilleur moyen de faire n'importe quoi), mais il ne
peut contenir qu'au plus une classe dite publique (dont le mot-clef class est précédé de public,
comme dans l'exemple ci-dessus). Le fichier doit obligatoirement porter le même nom que cette
classe publique : dans l'exemple ci-dessus, il faudrait donc sauver notre classe dans un fichier
nommé MaClasse.java.
4. Définition « Classe » | Suite
Un fichier .java peut commencer par une ou plusieurs déclarations d'import. Ces imports ne
sont pas indispensables, mais autorisent en particulier l'accès aux classes prédéfinies sans avoir
à spécifier leur chemin d'accès complet dans les collections de classes prédéfinies (organisées
en packages).
Dans le code ci-dessous, on souhaite par exemple utiliser la classe prédéfinie Vector (un type de
données comparable à des tableaux dont la taille peut varier dynamiquement). Dans la souscollection de classes prédéfinies "java", cette classe se trouve dans la sous-collection "util" (ou
encore : cette classe est dans le package "java.util").
Sans import, il faut spécifier le nom complet de la classe (packages inclus) :
Exemple:
public class MaClasse
{
// ... public static void main(String[] args)
{
// sans l'import : java.util.Vector v = new java.util.Vector(); // ...
}
}
5. Définition « Classe » | Suite
Avec import, seul le nom de la classe (sans packages) utilisée est nécessaire :
Exemple:
import java.util.Vector; public class MaClasse
{
// ... public static void main(String[] args)
{
// avec l'import : Vector v = new Vector(); // ...
}
}
Instanciation d'une classe
Un objet peut être vu comme un ensemble de données regroupées à la manière des structures
de C ou des enregistrements de Pascal. Une classe définit un modèle d'objet. Chaque objet créé
à partir d'une classe est appelé instance de cette classe. L'ensemble de données internes d'un
objet - les champs de cet objet - est spécifié par sa classe. Une classe peut en outre contenir :
d'une part, des constructeurs - du code destiné à l'initialisation de ses instances au moment de
leur création ; d'autre part des méthodes - du code destiné à la gestion des données internes de
chacune de ses instances. On
dit que ces méthodes sont invocables sur les objets.
6. Les membres d’une classe
1) Attribut
Un attribut d'une classe se déclare avec un spécificateur d'accès qui précise son niveau de
visibilité. Dans un premier temps les deux seuls spécificateurs d'accès que nous verrons sont
public et private.
Exemple:
private String Libelle;
Remarque:
a) Il est possible d'attribuer des valeurs par défaut aux champs de donnée.
b) Les attributs sont déclarés privés, c'est à dire inaccessibles en dehors de la classe produit
2) Méthode
Le rôle d'une méthode est d'effectuer un traitement en utilisant, en général, les données. Les
méthodes peuvent être publiques ou privées. L'ensemble des méthodes publiques représente
l'interface de la classe, sa partie "utilisable" à l'extérieur.
On peut les classer en trois groupes selon leurs fonctionnalités
a) Les fonctions de création
b) Les méthodes accesseurs/modificateurs
7. Les membres d’une classe |Suite
Les fonctions de création.
Ces fonctions qui permettent de créer des objets seront étudiées un peu plus loin.
Les méthodes accesseurs/modificateurs
Elles permettent soit de donner l'état de l'objet sans le modifier (on utilise en général le préfixe
Get), soit de soit de modifier l'état de l'objet (on utilise en général le préfixe
Set)
Exemple:
public String GetLibelle()
{
return this.Libelle;
}
public void SetStock(int s)
{
this.QtStock = s;
}
Remarque: nous avons utilisé le mot réservé this afin de faire référence à l'objet courant, cette
écriture (non indispensable) améliore la lisibilité.
8. Les constructeurs
Java propose des méthodes particulières qui ont comme rôle d'initialiser les attributs, ce sont
les constructeurs. Un constructeur est appelé automatiquement au moment au moment de la
création de l'objet à l'aide de l'opérateur new.
Les constructeurs ont une signature particulière.
Ils portent le nom de la classe.
Ils ne retourne rien, pas même void.
Exemple:
public Produit( String l, int p, int q)
{
this.Libelle = l;
this.Prix = p;
this.QtStock = q;
}
Chaque objet de la classe Produit sera instancié en utilisant le constructeur. On peut écrire
plusieurs constructeurs pour une classe. Il existe des Constructeurs paramétrés et des
constructeurs non paramètres. Le mécanisme permettant de définir plusieurs méthodes ayant le
même nom (mais pas la même signature) s'appelle une surcharge. Le mécanisme de surcharge
s'inscrit dans un concept plus général, celui de polymorphisme.
9. Les constructeurs | Suite
Produit p = new Produit( );
// appel du constructeur par défaut.
Produit p1 = new Produit("scie",50, 10); //appel du constructeur à trois arguments
Le langage appellera le constructeur correspondant aux arguments passés au moment de
l'appel.
Remarque:
Il est fortement conseiller de toujours fournir au moins un constructeur à chaque classe.
______________________________________________________________________________
Recherche pour analyse et discussion pour le prochain cours:
Les Variables de classes
Le principe d’encapsulation
Champs et méthodes statiques
Passage de paramètres dans les méthodes
Héritage