Plan du cours
Table des mati`eres
1 La notion de package 1
2 Les interfaces 3
1 La notion de package
Organisation g´en´erale d’un projet Java
Pour le moment, nos applications Java sont constitu´ees de
un ensemble de classes
chaque classe est dans un fichier
le nom du fichier est exactement identique au nom de la classe, aux ma-
juscules pr`es.
Organisation g´en´erale d’un projet Java
Dans les projets plus grands :
les classes peuvent ˆetre rang´ees dans diff´erents r´epertoires et sous-r´epertoires
les classes qui sont dans un mˆeme r´epertoire sont dans un mˆeme paquetage
ou package
le nom d’un package est compos´e des noms des r´epertoires formant le
chemin d’acc`es `a ses classes, s´epar´es par un .
les noms des r´epertoires commencent par une minuscule.
eclaration de package
La d´efinition des classes commence par la d´esignation du package dans
lequel la classe se trouve.
Cette indication est optionnelle.
Si cette instruction est pr´esente, elle doit ˆetre la premi`ere instruction du
fichier.
package etudiant;
class Etudiant{...
}
eclaration de package
Les tr`es gros projets sont plus g´en´eralement organis´es en une hi´erarchie de
r´epertoires `a plusieurs niveaux.
package monrep.monsousrep;
Le chemin monrep.monsousrep doit indiquer la liste des sous-r´epertoires `a
traverser pour atteindre cette classe.
Les API Java
API :Application Programming Interface
C’est l’ensemble des classes Java d´ej`a programm´ees auxquelles vous avez
acc`es.
Elles sont organis´ees en packages et sous-packages. En voici quelques uns :
java.lang
java.util
java.awt
java.awt.event
javax.swing
. . .
Importation de classes
Par d´efaut, acc`es `a toutes les classes d´efinies :
dans java.lang
dans votre r´epertoire courant
Pour utiliser des classes provenant d’autres packages, on utilise l’instruc-
tion import.
Par exemple import java.util.Date ;
Plus g´en´eralement
import rep1.rep2.UneClasse;
import rep1.rep3.*;
Les instructions import doivent se trouver apr`es l’instruction package, si
elle est pr´esente, et avant la d´efinition de la classe.
Utiliser les classes d’un package
Pour pouvoir utiliser une classe MaClasse d’un package monPackage, il faut :
que MaClasse soit d´efinie public dans le package monPackage ;
que le code qui veut utiliser MaClasse l’indique par une instruction import
monPackage.MaClasse ; ou bien import monPackage.* ;.
Visibilit´e d’une classe
Dans un mˆeme package, les classes sont d´efinies public ou rien.
Si une classe est d´eclar´ee public, alors elle est accessible en dehors du
package auquel elle appartient.
Par d´efaut, (i.e. sans public), l’acc`es `a la classe sera dit package et la
classe ne sera accessible que par les classes du mˆeme package.
La variable CLASSPATH
La variable classpath permet au compilateur javac et `a l’interpr`ete java
de savoir o`u se trouvent les classes utilis´ees.
Par d´efaut, classpath contient .et le chemin d’acc`es aux API Java.
2
2 Les interfaces
Les interfaces
D´ecomposer un probl`eme en sous-probl`emes :
c’est d´efinir le contrat `a respecter par chaque partie
c’est d´efinir les protocoles de communication entre objets
contrat interface
Une interface n’est pas une classe :
elle n’impl´emente aucune m´ethode.
elle ne peut pas ˆetre instanci´ee (pas de new) ;
Une interface ne peut contenir que
la signature de m´ethodes (public)
la d´eclaration de constantes (public static final)
Exemple
public interface Article {
public String getDescriptif();
public int getQuantite();
public float getPrix();
public Article ajouteQuantite(int nb);
public Article retireQuantite(int nb);
}
eclaration d’une interface
Une interface est dans un fichier du mˆeme nom que l’interface ;
Une interface peut ˆetre d´eclar´ee dans un package ;
Une interface est public ou rien (i.e. package) ;
Un fichier qui contient une d´efinition d’interface peut contenir des instruc-
tions import ;
Impl´ementation d’une interface
Une classe, si elle impl´emente une interface, doit fournir une impl´ementation
pour toutes les m´ethodes d´efinies dans l’interface.
Une classe peut impl´ementer plusieurs interfaces.
Syntaxiquement :
class NomDeLaClasse implements NomDUneInterface, NomDUneAutreInterface{
...}
Exemple
public class Crayon implements Article{
private String nom;
private String couleur;
3
private int qte;
private float prix;
public Crayon(String nom, String couleur, float prix){
this.nom = nom;
this.couleur = couleur;
this.prix = prix;
}
public Crayon(String nom, String couleur,
float prix, int qte){
this(nom, couleur, prix);
if (qte > 0)
this.qte = qte; }
Exemple
public int getQuantite(){
return qte; }
public float getPrix(){
return prix; }
public String getDescriptif( ){
return nom+" - "+couleur; }
public String getNom(){
return nom; }
public String getCouleur(){
return couleur; }
Exemple
public Article ajouteQuantite(int nb){
if (nb > 0)
return new Crayon(nom,prix,qte+nb);
return null;
}
public Article retireQuantite(int nb){
if (nb < 0)
return null;
if (qte >= nb)
return new Crayon(nom,couleur,prix, qte - nb);
return new Crayon(nom,couleur,prix); }
}//Crayon
4
Exemple
public class Vetement implements Article{
private String type;
private String couleur;
private int taille;
private int qte;
private float prix;
public Vetement(String type, String couleur,
int taille, float prix){
this.type = type;
this.taille = taille;
this.couleur = couleur;
this.prix = prix; }
public Vetement(String type, String couleur, int taille,
float prix, int qte){
this(type, couleur, taille, prix);
if (qte > 0)
this.qte = qte; }
Exemple
public int getQuantite(){
return qte; }
public float getPrix(){
return prix; }
public String getType( ){
return type; }
public String getCouleur(){
return couleur; }
public int getTaille(){
return taille; }
public String getDescriptif( ){
return nom+" - "+couleur+" - taille : "+taille; }
Exemple
public Article ajouteQuantite(int nb){
if (nb > 0)
qte += nb;
return this;
}
public Article retireQuantite(int nb){
5
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !