Professional Documents
Culture Documents
1 Notions lmentaires 1
1.1 Quest-ce quun programme ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Les types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Les conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 Les oprateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Les structures de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.1 Bloc dinstructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.2 Structures conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.3 Structures itratives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Les mthodes 9
2.1 Les mthodes prdfinies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Les mthodes propres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Les mthodes rcursives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Glossaire 19
Ce support de cours couvre lintgralit du programme de premire anne et vous permettra de com-
prendre les concepts lis la programmation en Java. La section 3.4.2 introduit quelques concepts de la
programmation objet, qui sont vus en deuxime anne du premier cycle.
1 NOTIONS LMENTAIRES
1.1 QUEST-CE QU UN PROGRAMME ?
Lobjectif de la programmation est de crer des logiciels ou programmes. Ceux-ci sont constitus dun en-
semble de traitements qui permettent de transformer des donnes numriques (les entres) en dautres don-
nes numriques (les sorties). Les donnes de sortie peuvent tre affiches sous une forme graphique (avec
1
des fentres comme le fond les programmes tels que Word et Excel) ou plus simplement affiches dans une
console?1 sous forme de texte.
Que se passe-t-il pour lordinateur lorsquon excute un programme ? Il va lire le fichier excutable du
programme comme une suite de 0 et de 1 (codage binaire) et excuter lune aprs lautre les instructions
ainsi codes. Cette suite de 0 et de 1 est appele langage machine et est directement excutable par le micro-
processeur de lordinateur. Or il est trs difficile pour un humain de programmer directement en binaire,
cest pourquoi on utilise un langage de programmation crit en langage textuel dans un fichier source (fichier
.java). Le fichier source est ensuite compil? en langage binaire (fichier .class) puis excut pour raliser les
traitements :
Compilation Excution
Avant de pouvoir utiliser une variable, il est ncessaire de la dclarer? , cest--dire dassocier la variable un
emplacement de la mmoire et de spcifier son type. Cest en fonction du type de la variable que la taille
de lemplacement mmoire (en octet, soit 8 bits) et le codage binaire de la valeur seront dtermins. La
dclaration se fait par une instruction de la forme :
typeVariable nomVariable;
La variable nomVariable est de type typeVariable. Il lui est associ un emplacement mmoire qui con-
tient une valeur quil faut initialiser? . Cela se fait en utilisant loprateur daffectation = :
nomVariable = uneValeur;
Laffectation? crit dans lemplacement mmoire associ nomVariable la valeur uneValeur. On dit alors
que nomVariable prend la valeur uneValeur.
uneValeur doit tre compatible avec le type de nomVariable. Par exemple si typeVariable est un
entier, uneValeur doit tre une valeur entire. On peut faire ici le parallle entre le type dune variable
et lunit de mesure dune grandeur physique qui spcifie la nature de la grandeur manipule.
On peut galement faire la dclaration et linitialisation dune variable en une seule instruction :
1
Le symbole ? indique que le mot est dfini dans la section Glossaire.
Dans la suite, nous allons dtailler les quatre types dits primitifs? , qui sont directement accessibles en
mmoire (contrairement aux types non primitifs que nous verrons dans la section 3), cest--dire que la valeur
affecte la variable est stocke dans lemplacement mmoire associe celle-ci. Pour chacun de ces types,
nous verrons galement les oprateurs que lon peut appliquer sur des variables de ce type pour transformer
leur valeur.
1.2.1 LES TYPES PRIMITIFS
On distingue 4 catgories de types primitifs (entier, rel, boolens, caractres). Lintervalle de valeurs reprsenta-
bles pour chacun des types peut varier en fonction de lespace mmoire quils occupent.
LES ENTIERS En Java, tous les types permettant de reprsenter des entiers sont signs. Ainsi, sur n bits, on
peut coder les entiers de (2n1 ) 2n1 1. Les valeurs ngatives sont encodes en complment 2. Pour
un rappel sur cet encodage, nous vous renvoyons au cours de numration disponible sur la page du CIPC.
Les diffrents types dentiers sont les suivants :
On peut appliquer des oprateurs arithmtiques (+,-,*,/) deux variables ou deux expressions de type entier
(la composition tant possible comme en mathmatiques). Le rsultat de cette opration est galement du
type entier (ce qui permet la composition).
Lorsque les deux oprandes sont de type entier, loprateur / calcule la division entire et loprateur %
calcule le reste de cette division.
Par exemple2 :
int valA = 7;
int valB = 2;
int valC = valA / valB; // valC contient la valeur 3
int valD = valA % valB; // valD contient la valeur 1
LES RELS La description du codage des rels est dcrite dans le cours de numration sur la page du CIPC. En
Java il existe deux types de reprsentation pour les nombres rels : simple et double prcision (respectivement
les types float et double).
Lorsquau moins une des oprandes est de type rel, loprateur / calcule la division relle.
double reelA = 7;
double reelB = 2;
double division = reelA / reelB; //La variable division contient la valeur 3.5
2
// indique que la suite de la ligne est un commentaire.
On peut appliquer des oprateurs logiques (et, ou, non) des variables ou des expressions boolennes. Le
rsultat de cette opration est galement du type boolen.
! dsigne loprateur non logique (qui transforme une valeur true en valeur false et inversement)
a b a et b a b a ou b
Faux Faux Faux Faux Faux Faux
Faux Vrai Faux Faux Vrai Vrai
Vrai Faux Faux Vrai Faux Vrai
Vrai Vrai Vrai Vrai Vrai Vrai
LES CARACTRES Le type caractre peut correspondre nimporte quel symbole du clavier (lettre en majus-
cule ou minuscule, chiffre, ponctuation et symboles).
Comme toute donne numrique, un caractre est encod sous forme dune suite de 0 et de 1 que lon peut
interprter comme un entier non sign. Dans certains contextes, il est utile de manipuler directement ce code.
On convertit alors la variable de type char en une variable de type int comme expliqu ci-dessous.
1.2.2 LES CONVERSIONS
La conversion (galement appele transtypage) dun type primitif en un autre se fait de la manire suiv-
ante :
typeVariableA variableA = (typeVariableA) valeurB
Si variableA et valeurB ne sont pas du mme type, cette instruction affecte variableA la conversion
de la valeur de valeurB dans le type typeVariableA :
double a = 8;
boolean estDansIntervalle = ((a >= 0) && (a <= 10));
// vaut true ssi a appartient [0,10]
1.3 LE PROGRAMME
De manire gnrale, la structure dun programme simple est toujours la mme. Cette structure de base doit
tre apprise par cur, car elle constitue le squelette du programme. Il est conseill, lors de la cration dun
programme, de commencer par crire cette structure. En effet, une fois cette structure cre, le programme
est fonctionnel : il peut tre compil? et excut? . Bien entendu ce stade, le programme ne fait strictement
rien puisquil ny a aucune instruction, seulement des commentaires.
Dclare et initialise deux variables celsius et fahrenheit, fahrenheit tant calcule partir de celsius,
pour ensuite les afficher lcran.
Linstruction System.out.print permet dafficher la valeur dune variable de type primitif ou un texte
dlimit par des guillemets.
Deux variables de mme nom peuvent tre dclares dans deux blocs distincts. Ce sont deux variables
diffrentes associes deux emplacements mmoires diffrents. Ainsi, leurs valeurs sont gnralement
diffrentes. Confondre lune avec lautre peut tre une source derreur de programmation.
Cette structure de contrle exprime une alternative. Or, il est possible de vouloir quun bloc soit excut sous
une certaine condition et que sinon, aucune instruction ne soit excute. Dans ce cas, la clause else et son
bloc sont supprims. Les parenthses autour de condition, qui est variable ou une expression valeur
boolenne, sont obligatoires.
LA STRUCTURE CHOIX MULTIPLES Le second type de conditionnelle permet de faire plusieurs tests de valeurs
sur le contenu dune mme variable. Sa syntaxe est la suivante :
switch (variable) {
case valeur1 :
Liste dinstructions // excutes si (variable == valeur1)
break;
case valeur2 :
Liste dinstructions // excutes si (variable == valeur2)
default:
Liste dinstructions // excutes sinon
}
Le mot cl default prcde la liste dinstructions qui sont excutes lorsque variable a une valeur dif-
frentes de valeur1,..,valeurN. Le mot cl break indique que la liste dinstructions est termine.
1.4.3 STRUCTURES ITRATIVES
Il existe 3 formes de structure itrative, chacune a un cadre dutilisation bien spcifique que nous allons voir.
LITRATION RPTE n FOIS La premire forme itrative est la boucle for. Elle permet de rpter un bloc
dinstructions un nombre de fois fix. Dans sa syntaxe, il faut dclarer et initialiser la variable qui sert de
compteur de tours de boucle, indiquer la condition sur le compteur pour laquelle la boucle sarrte et enfin
donner linstruction qui incrmente? ou dcrmente? le compteur :
La boucle for sutilise lorsque lon connat a priori le nombre de rptitions effectuer.
LITRATION RPTE TANT QUUNE CONDITION EST VRAIE La seconde forme ditrative est la boucle while.
Elle excute le bloc dinstructions tant que la condition est vraie. Le bloc peut ne jamais tre excut. La
syntaxe est la suivante :
Cette structure excute le bloc dinstructions tant que (while en anglais) la condition est ralise.
Affiche la conversion en Fahrenheit des degrs Celsius tant que la conversion est infrieur 100.
La boucle while sutilise lorsque le nombre ditrations nest pas connu a priori mais peut sexprimer au
moyen dune expression valeur boolenne qui devient fausse lorsque la rptition doit sarrter.
LITRATION EXCUTE AU MOINS UNE FOIS La troisime forme ditrative est la boucle do while. Cest
une variante de la boucle while, o la condition darrt est teste aprs que les instructions ont t ex-
cutes :
do {
// bloc dinstructions excutes
// condition doit tre modifie dans ce bloc
} while (condition); // si condition est vraie,
// le bloc est excut nouveau
Ne pas oublier le ; aprs la condition darrt. Le bloc dinstructions est excut au moins une fois.
Affiche la conversion en Fahrenheit des degrs Celsius jusqu ce que le degr Fahrenheit soit suprieur
ou gale 100.
Pour regrouper un ensemble dinstructions qui participent la ralisation dune mme tche. Cela
permet de rendre le programme plus lisible et comprhensible par une autre personne (ou vous-mme
lors du TP suivant) et de faciliter la mise au point du programme (correction et tests3 ). A ce bloc
dinstructions est associ un nom, choisi en rapport avec le traitement ralis par la mthode.
Pour regrouper un ensemble dinstructions qui sont rptes diffrents endroits du programme (con-
trairement aux formes itratives qui rptent le bloc dinstructions de manire conscutive).
Le rle dune mthode est de traiter des donnes. Cela signifie quen gnral, la mthode effectue un traite-
ment partir des donnes qui entrent, et renvoie un rsultat.
2.1 LES MTHODES PRDFINIES
En Java, il existe de nombreuses mthodes prdfinies. La plus connue est sans doute la mthode suivante
qui permet dafficher une chane de caractres lcran :
Dautres exemples de mthodes que vous pouvez utiliser sont celles de la librairie Math : sqrt, cos, sin,
abs, etc.. Lorsquon appelle une mthode, on utilise son nom suivi de la liste de ses paramtres effectifs
(spars par une virgule) entre parenthses :
nomMethode(parametre_1,... , parametre_n);
Si cette mthode renvoie un rsultat, il faut alors affecter ce rsultat une variable de type compatible pour
pouvoir ensuite utiliser ce rsultat :
Le fait que lon doive prcder la dclaration dune mthode par le mot cl static est expliqu page 15.
TypeRetour est le type de valeurRetournee, la valeur renvoye par la mthode. Si la mthode ne renvoie
aucune valeur, le mot-cl void est utilis la place du type de la valeur retourne.
Pour une raison inconnue des enseignants, il y a souvent confusion entre le fait de retourner une valeur et
le fait de lafficher.
Les paramtres correspondent aux donnes dentre de la mthode. Au niveau de la dclaration, les
paramtres sont dits formels : ce sont des variables qui reprsentent chaque donne dentre. On peut
faire ici lanalogie avec la variable x utilise en mathmatique lorsque lon dfinit une fonction f (x). Les
paramtres sont facultatifs, mais sil ny a pas de paramtres, les parenthses doivent rester prsentes.
3
Commenter la ligne dappel de la fonction commente tout le bloc dinstructions de la mthode cet endroit du programme.
En Java, le passage des paramtres se fait par valeur, cest--dire que la valeur du paramtre effectif est
affecte au paramtre formel. Ainsi, si la valeur du paramtre formel est modifie dans le bloc de la
mthode, cette modification est locale la mthode mais nest pas repercute dans le contexte appelant.
2.4 UN EXEMPLE
Lexemple suivant prsente un programme avec deux mthodes : CelsiusVersFahrenheit convertit valeurAConvertir,
une valeur relle reprsentant une temprature en degr Celsius, en une temprature en degr Fahrenheit. La
valeur en Fahrenheit est retourne par la mthode. CelsiusVersKelvin convertit valeurAConvertir,
une valeur relle reprsentant une temprature en degr Celsius, en une temprature en degr Kelvin. La
temprature en Kelvin est affiche et aucune valeur nest retourne par la mthode.
Observez la diffrence entre les appels des deux mthodes dans le main : la valeur retourne par CelsiusVersFahrenheit
est affecte la variable temperature, puis elle est affiche. La mthode CelsiusVersKelvin est directe-
ment appele, sans affectation de sa valeur de retour, puisque celle-ci nen na pas (mot cl void dans la
dclaration).
Le programme considre les tempratures entires, en degr Celsius, de 0 39 inclus. Une fois sur deux,
sa conversion en degr Fahrenheit est affiche, lautre fois cest sa conversion en degr Kelvin qui est affiche.
Notez le changement de valeur de la variable calculeFahrenheit chaque tour de boucle.
Supposons que lon souhaite raliser un programme permettant dcrire des courriers de manire automa-
tique aux abonns dune bibliothque. Pour chaque abonn, nous connaissons son nom, prnom, le nombre
de volumes emprunts ainsi que le nombre de jours couls depuis lemprunt. Nous devons alors manip-
uler des centaines dabonns, chacun dcrit par 4 valeurs, certaines de ces valeurs (nom, prnom) tant
galement une collection de valeurs primitives (une squence de caractres). Ce type de traitement est
impossible en nutilisant que des types primitifs.
Tout comme des oprateurs spcifiques sont associs chaque type primitif? , il peut tre commode de dfinir
des oprateurs ou mthodes permettant dinterroger ou transformer les valeurs de ces objets.
Nous souhaitons disposer dune mthode estEnRetard qui renvoie la liste des abonns dont le dernier
emprunt a t effectu il y a plus de 21 jours.
Dans cette section nous allons introduire les concepts relatifs aux objets ncessaires la cration dun tel
programme. Avant toute chose, nous allons expliquer les mcanismes communs tout objet Java, cest--
dire, la faon dont un objet est stock en mmoire et la manire dont on linstancie? , cest--dire la faon dont
on rserve lemplacement mmoire ncessaire lobjet. Nous verrons galement comment fonctionnent les
oprateurs de comparaison sur les objets.
STOCKAGE DES OBJETS EN MMOIRE Tout comme les variables de type primitif, une variable de type objet
est associ un emplacement mmoire de taille fixe qui contient une unique valeur. Dans cet emplacement
mmoire est stock une valeur de type adresse qui indique ladresse? de lemplacement mmoire o sont
stockes, de manire contigu, toutes les valeurs de lobjet. Ainsi, la variable est lie aux donnes de manire
indirecte : elle contient ladresse laquelle on peut trouver les donnes. La variable qui est manipule est en
fait une rfrence? lemplacement mmoire o se trouve lensemble des donnes.
maVariable
INSTANCIATION? DES OBJETS Linstanciation dun objet se fait laide du mot cl new qui rserve lemplace-
ment mmoire ncessaire pour stocker toutes les valeurs de lobjet, cest--dire un ensemble de cases mmoire
contigus, et renvoie ladresse de la premire case mmoire.
//dclaration et instanciation
TypeObjet maVariable = new TypeObjet;
COMPARAISON DE DEUX OBJETS Lorsque lon compare deux objets, laide des oprateurs ==, <=, >=, <
ou <, ce sont les adresses des objets qui sont compares. Ainsi, loprateur == renvoie la valeur true si les
deux variables font rfrence au mme emplacement mmoire, donc au mme objet.
Le type contenu dans les cases du tableau est choisi lors de la dclaration du tableau. En revanche, la taille
du tableau, ne fait pas parti de son type et sera dfinie lors de linstanciation du tableau. La dclaration dun
tableau se fait avec la syntaxe [].
Linstanciation quant elle prcise la taille rserver. Elle se fait avec le mot cl new.
A noter quil est possible, dans le cas de linitialisation uniquement, de dcrire tout le tableau sous la forme
dune liste de valeurs. Cela initialise automatiquement le tableau avec le nombre adquate de cellules et les
valeurs sont stockes dans les diffrentes cases.
int[] tabCinq = {12,33,44,0,50}; //Initialisation expresse
Une fois le tableau initialis, on accde aux lments du tableau laide de la syntaxe suivante :
int i = 0;
int valeur1 = tabCinq[i]; //Renvoie 12, llment dindice 0
int valeur2 = tabCinq[4]; //Renvoie 50, llment dindice 4
Une fois initialis, il est possible tout moment de connatre la taille dun tableau (son nombre de cases)
laide de la syntaxe suivante :
45 154 58 78 31
12 15 45 37 789 int[][] T = new int[5][5];
int i = T[0][1];//i vaut 154
457 21 78 89 365 int[] T1 = T[1];//T1 fait rfrence
87 154 58 78 42 //au tableau [12,15,45,37,789]
5841 4 45 6 47
3.3.2 MODIFICATION DES VALEURS DUNE VARIABLE DE TYPE NON-PRIMITIF DANS UNE MTHODE
Lorsquon passe un objet en paramtre dune mthode, cest ladresse de celui-ci qui est affecte au paramtre
formel de la mthode. Si la mthode modifie cette valeur (ladresse), celle-ci ne sera pas modifie en de-
hors (le contexte appelant) de la mthode. En revanche, lorsquon modifie les valeurs de lobjet, on change
directement les valeurs dans les cases mmoires de lobjet et ce changement est alors dfinitif.
Prenons lexemple suivant o lon permute les valeurs des indices i et j du tableau :
Il peut exister des mthodes spcifiques permettant dinterroger ou de transformer les valeurs des attributs
dun objet. Pour appeler? une mthode sur un objet, on utilise la syntaxe suivante :
La mthode nomMethode permet daccder ou de modifier les valeurs des attributs de monObjet.
Si une mthode naccde pas ou ne modifie pas les attributs de lobjet, on dit que cette mthode est static.
La dclaration de la mthode est prcde du mot cl static. Lappel de la mthode se fait comme expliqu
dans la section 2.
Noter la prsence de guillemets doubles pour distinguer les chanes de caractres des lments du langage
de programmation Java (mots du langage, nom de variables, nom de mthodes).
Comme le type String est trs utilis, une particularit de ce type est que lon accde lattribut principal
de lobjet, la chane de caractres, comme si ctait un type primitif :
Les objets de type String sont fournis avec un grand nombre de mthodes permettant une manipulation
facile de ces objets. Les quatre principales mthodes permettent daccder chaque caractre de la chane,
de connatre le nombre de caractres de la chane (sa longueur), dextraire une partie de la chane et de
comparer le contenu de deux chanes :
Notez les parenthses de la mthode length, parenthses absentes lorsque lon appelle cette mth-
ode sur un tableau.
String substring(int debut, int fin) : cette mthode renvoie un objet de type String qui
contient la sous-chane de caractres commenant lindice debut et se terminant lindice fin-1.
equals(String s) : cette mthode renvoie une variable de type boolen qui vaut vrai si et seulement
si la chane de caractres s est la mme que la chane de caractres de lobjet sur lequel on appelle la
mthode :
Une opration frquente consiste coller bout--bout deux chanes de caractres. On appelle cela la
concatnation. Loprateur associ est + :
Il peut tre ncessaire de pouvoir convertir un type primitif en une chane de caractres ou rciproquement.
La conversion dun type primitif en une chane de caractres se fait laide de linstruction
String.valueOf(valeurPrimitive);
La conversion dune chane de caractres en un type primitif se fait laide des instructions suivante :
On peut galement dfinir ses propres objets. Cest ce que nous allons apprendre faire ici, en illustrant
notre propos sur lexemple du dbut de section.
LES CLASSES Les classes permettent de dfinir des types ou des catgories dobjets (on pourra prendre la
mtaphore du moule des objets). Elles contiennent la description des objets, (ex : les abonns), cest--dire
quelles dfinissent les attributs et les mthodes communes aux objets dun certain type.
Les objets construits partir de ces classes sont des instances. Les instances sont des lments crs depuis
une classe : un abonn particulier. La syntaxe de dclaration dune classe est :
class NomType {
// le corps de la classe vient ici
// les attributs
// les mthodes
}
class Abonne {
//les attributs de la classe Abonne
String nom;
String prenom;
int nbLivres;
int nbJours;
}
LE CONSTRUCTEUR Toute classe doit contenir au moins une mthode particulire appel constructeur. Cette
mthode porte le mme nom que la classe et est appele lorsque lon instancie un nouvel objet. Cest
cette fonction qui gnralement initialise les valeurs des attributs. Cette mthode ne renvoie aucune valeur.
class Abonne {
//les attributs de la classe Abonne
String nom;
String prenom;
int nbLivres;
int nbJours;
Il peut exister plusieurs constructeurs qui se distinguent par leurs paramtres formels. Ainsi, en fonction
des paramtres effectifs (nombre de paramtres ou types des paramtres) passs au constructeur au mo-
ment de lappel, lun ou lautre des constructeurs sera appel. Par exemple, linstruction Abonne() d-
clenchera lexcution du premier constructeur, alors que linstruction Abonne("Dupond", "Luc",4,0) d-
clenchera lexcution du second constructeur qui instancie les attributs aux valeurs correspondant labonn
Luc Dupond.
Le mot cl this permet de spcifier que lattribut que lon rfrence est celui de lobjet en cours de con-
struction. En effet, lexpression this.nom = nom; signifie que lattribut nom de lobjet en cours de con-
struction (this.nom) prend la valeur du paramtre formel nom de type String du constructeur.
EXEMPLE Regardons maintenant comment on peut construire notre programme qui indique les abonns qui
ont emprunt un livre depuis plus de 21 jours. Nous venons de voir la classe Abonne qui contient les attributs
dun abonn. Ajoutons une mthode renseigneUnAbonne qui permet de spcifier les nouvelles valeurs des
attributs :
La classe EnsembleDesAbonnes va contenir lensemble des abonns de la bibliothque. Ses attributs sont
alors un tableau dabonns (lesAbonnes) et un entier qui indique le nombre dabonns. Son construc-
teur alloue lemplacement mmoire ncessaire au tableau lesAbonnes et instancie chacun des abonns :
class EnsembleDesAbonnes {
//Attributs de la classe EnsembleDesAbonnes
Abonne[] lesAbonnes;
int nbAbonnes;
//Constructeur
EnsembleDesAbonnes(int nbAbonnes) {
lesAbonnes = new Abonne[nbAbonnes];
this.nbAbonnes = nbAbonnes;
int i;
for(i = 0; i < this.nbAbonnes; i++) {
lesAbonnes[i] = new Abonne(); // instancie chaque abonn
}
}
Les attributs de la classe doivent tre initialiss dans le constructeur, et en particulier, les attributs de type
non-primitifs doivent tre instancis via le mot cl new qui rserve lemplacement mmoire de cet attribut.
Enfin, la mthode estEnRetard, qui renvoie la liste des abonns dont le dernier emprunt a t effectu il
y a plus de 21 jours, compte le nombre dabonns en retard, puis cre un nouvel objet EnsembleDesAbonnes
EnsembleDesAbonnes estEnRetard() {
int i;
int nbEnRetard = 0;
for(i = 0; i < lesAbonnes.length; i++) {
if( (lesAbonnes[i].nbJoursEmprunts > 21)
&&(lesAbonnes[i].nbLivresEmpruntes > 0)) {
nbEnRetard = nbEnRetard + 1;
}
}
Le tableau lesAbonnes de lobjet resultat contient des rfrences vers les abonns du tableau lesAbonnes
de lobjet en cours de dfinition.
4 GLOSSAIRE
ADRESSE : Indique la localisation dune information dans la mmoire.
AFFECTATION : Laffectation est lopration qui attribue une valeur une variable. En Java cet oprateur est
=. Il se lit prend la valeur de.
APPEL DE MTHODES : Lappel dune mthode excute le bloc dinstructions de la mthode. Lappel se fait en
crivant le nom de la mthode (en respectant la casse) suivie dune paire de parenthses avec ventuellement
une liste de paramtres effectifs? spars par une virgule. Au moment de lexcution de lappel, les valeurs
des paramtres effectifs sont affectes aux paramtres formels? , selon lordre dans lequel ils apparaissent. Si
le type renvoy par la mthode est diffrent de void, lappel de la mthode doit tre affect une variable