Introduction
• 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
}
Introduction
• 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.
Introduction
• 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 sous-collection
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").
Introduction
• 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(); // ...
}
}
Introduction
• 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(); // ...
}
}
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;
}
Les Constructeurs
• 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.
Exemple
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.
Instancier 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.
Les méthodes: Introduction
• 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 public, private,
protected. 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
Les méthodes
a) Les fonctions de création
Ces fonctions qui permettent de créer des objets seront étudiées un
peu plus loin.
b) 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)
Les méthodes
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é.
Les méthodes: allocation
•Rien: Méthode d’objet ou d’instance. La méthode
est liée a un objet.
•Static: Méthode de classe: méthode indépendante
de tout objet. Ne peut accéder qu’a des attributs ou
des méthodes statiques.
Les méthodes: Type de retour
•Rien: C’est un constructeur
•Void: La fonction en retourne aucune valeur
(procédure).
•<type primitif>: Donnée de type valeur.
•<classe>: Nom de la classe de la référence de l’objet
retourné.
Les méthodes: static ou non static
• Une méthode static ou méthode de classe est peut être
utilisée sans instancier d’objet. Exemple : double
racinedeDeux=Math.sqrt(2);
• Une méthode est rendue static pour les raisons
suivantes:
1) Méthode utilitaire dans une classe type metier (exemple
Math.sqrt);
2) Méthode ne devant être liée a aucun objet (exemple :
main);
3) Pour se rapprocher des conventions d’ecriture.
Les attributs: Portée
• Rien: portée limitée au package;
• Public: portée générale;
• Private: portée limitée aux méthodes de la classe;
• Protected: portée limitée aux méthodes de la classe et
aux méthodes situées dans des classes derivées.
Les attributs: Durée de vie
•Rien: attribute d’objet ou d’instance. Durée de vie
égale a celle de l’objet.
•Static: attribut de classe: durée de vie égale a celle
du programme. Un attribut statique n’est lié a aucun
objet.
Les attributs: Type
•Un primitive parmi: booléan, char, int, float, double,
etc..
•Une classe connue: String, etc…
Attribut ou variables locales?
•On utilise un attribut pour:
1) Partager des données ou des objets entre
plusieurs methodes.
2) Avoir une durée de vie supérieur a celle d’une
méthode
•Dans tous autre cas, il faut utiliser des variables
locales aux méthodes.
Attributs static ou non static?
•Un attribut n’est que rarement static. Un attribut est
rendu static pour les raisons suivantes:
1. Les methodes static ne peuvent acceder qu’au
attributs static
2. On doit partager le meme attribute entre plusieurs
objets
3. On veut disposer d’une donnée indépendante de tout
objet.
TP
• Développer une classe permettant de résoudre des équations de
seconde degré; la classe doit être en mesure d’afficher les
solutions s’il en existe (S1 et S2), la valeur de delta (d)
• Travail a faire:
1. Identifier tous les attributs (portée, type, valeur initiale) et variables
locales nécessaires;
2. Ecrire le ou les constructeur(s);
3. Les méthodes
4. Les procédures
5. Une méthode qui affiche par exemple « Les solutions de l’ équation 2x^2
+3x-6 : sont S1= et S2= »;
4 points par bonne réponse