Exercice Java POO : comptes bancaires - classes, methodes, constructeurs, sous-classe

Exercice 1 : comptes bancaires

On reprend les classes de comptes bancaires du cours (chapitre 16) : CompteBancaire,CompteAvecDecouver
CompteRemunere, CompteRemunereAvecDecouvert.
Voici un morceau de code avec des inconnues :

1
2
3
4
5
6
7
class Exo14_1{
XXX c1 = new YYY;
ZZZ c2 = new TTT;
c1.depot ( 50 . 0 ) ;
c2.depot ( 50 . 0 ) ;
c2.calculInteret ( ) ;
}

Donnez toutes les combinaisons de classes possibles pour XXX, YYY, ZZZ et TTT (vous ne vous
préoccuperez pas des paramètres des constructeurs pour YYY et TTT).

 Exercice 2 : des personnes bien nées

On définit comme suit une classe de personnes : {sidebar id=8}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class LaDate {
int jour ;
int mois ;
int annee ;
/ / ===================================================
/ / l ’ année en c o u r s . . .
staticint CETTE_ANNE = 2 0 0 5 ;
publ i c LaDate ( int j , int m, int a ) {
this . jour = j ;
this . mois = m;
this . annee = a ;
}
public void ecrire ( ) {
Terminal . ecrireString ( j o u r +" / "+mois+" / "+annee ) ;
}
}
class LaPersonne {
LaDate naissance ;

String nom;
public LaPersonne ( String name , LaDatenaiss ) {
this . nom = name ;
this . naissance = naiss ;
}
public void ecrire ( ) {
Terminal . ecrire String ( nom+" ( " ) ;
naissance . ecrire ( ) ;
Terminal . ecrire String ( " ) " ) ;
}
}

Pour certaines personnes, on connaît en plus le lieu de naissance, mais par pour toutes.
Ecrire une sous-classe des personnes dont on connaît le lieu de naissance. Redéfinir la méthode ecrire pour que le lieu de naissance s’affiche. Ecrivez un petit programme qui utilise la nouvelle sous-classe.

Exercice 3 : des employés

Une entreprise a un certain nombre d’employés. Un employé est connu par son nom, son matricule (qui l’identifie de façon unique) et son indice salairial. Le salaire est calculé en multipliant cet indice par une certaine valeur qui peut changer en cas d’augmentation générale des salaires, mais qui est la même pour tous les employés.{sidebar id=1}

Question 1

Ecrivez la classe des employés avec les informations utiles et des méthodes pour afficher les caractéristiques d’un employé et pour calculer son salaire.

Question 2

Certains employés ont des responsabilités hiérarchiques. Ils ont sous leurs ordres d’autres employés. Ecrivez une sous-classe des employés qui représente ces responsables en enregistrant leurs inférieurs hiérarchiques directs dans un tableau.
Ecrivez une méthode qui affiche les inférieurs directs (placés directement sous leurs ordres).

Question 3

Les commerciaux ont un salaire composé d’un fixe et d’un intéressement proportionnel à leurs ventes.
Ecrivez une sous-classe des commerciaux qui contient l’information sur leurs ventes du dernier mois, une méthode pour mettre à jour cette information et redéfinissez la méthode de calcul de leurs salaires.

Question 4

Ecrivez une classe représentant tout le personnel de l’entreprise, avec une méthode calculant la somme des salaires à verser.

Exercice JAVA opérateur infixé et postfixé

But:
Apprendre la différence entre un opérateur infixé et postfixé.
Thème:
Opérateurs et expressions
Fichiers:
Moyenne1.java, Moyenne2.java

Compilez et exécutez les deux programmes Moyenne1.java et Moyenne2.java. Expliquez pourquoi la valeur retournée est différente d'un programme à l'autre.

Moyenne1.java
1234567class Moyenne1{ public static void main(String[] args) { double noteProgrammation = 6.0; double noteAlgebre = 5.0; System.out.println("Ma moyenne est " + (noteProgrammation++ + noteAlgebre) / 2.0 ); }}
Moyenne2.java
1234567class Moyenne2{ public static void main(String[] args) { double noteProgrammation = 6.0; double noteAlgebre = 5.0; System.out.println("Ma moyenne est " + (++noteProgrammation + noteAlgebre) / 2.0 ); }}

Dans le premier cas l'incrémentation se fait après l'évaluation de l'expression et dans l'autre avant.

TD de Programmation par objets et Java #4 : Les tableaux

Les tableaux  

Exercice 2 : Programmation

Soit le programme Java suivant:

12345678910111213141516171819class ProgBoolean {boolean a[]={true, false, true, false};boolean b[]={true, true, false, false};static void afficher(boolean[] x){...}static boolean[] non(boolean[] x){...}static boolean[] et(boolean[] x, boolean[] y) {...}static boolean reduireEt(boolean[] x){...}public static void main(String[] args) {...}}

QUESTION1. Ecrire la méthode afficher qui prend un tableau de booléen et affiche son contenu de manière à ce que afficher(a) produise le résultat suivant: {vrai, faux, vrai, faux}Note: on fera attention aux blancs et aux espaces avant et après la virgule, et avant l'accolade.

2. Ecrire le code de la méthode non qui prend un tableau de booléen en argument et retourne un tableau de booléens inverses (opération logique 'non'). Donnez le résultat de afficher(non(a)).

3. Ecrire le code de la méthode et qui prend deux tableaux de booléens de même taille, effectue une opération de et logique sur chacun de ces éléments pris deux à deux et retourne un tableau de booléens contenant les résultats. On vérifiera que ces deux tableaux ont bien la même taille et on affichera un message d'erreur dans le cas contraire. Mathématiquement, le résultat ri = xi et yi, "i compris entre 0 et le nombre d'élément des tableaux x et y. Donnez le résultat de afficher(et(a,b)) et celui de afficher(non(et(a,b))).

Ecrire le code de la méthode reduireEt qui prend un tableau de booléen x et retourne un booléen qui est le et logique de tous les éléments de x. Mathématiquement, le résultat r de cette méthode est égal à x1 & x2 &.. & xn où n est le nombre d'éléments du tableau et '&' représente l'opération logique et.

J. Ferber

Exercices JAVA : terminologie, Structure, typage et conversion de type,Opérateurs relationnels

Exercices JAVA

Exercice 1 : terminologie

Soit le morceau de code Java suivant : (x * 3) + 1
• quel nom donne-t-on `a ce morceau de code tout entier ?
• quels sont les opérateurs ?
• quels sont les opérandes de * ?
• quels sont les opérandes de + ?
• quel genre de chose est x dans ce morceau de code ?
• quel(s) type(s) a ou peut éventuellement avoir x ?
• quel est le type de 3 et 1 ?
• quel est le type de (x * 3) + 1 ?
• quelle est la valeur de (x * 3) + 1 ?

Exercice 2 : typage et conversion de type

Nous donnons ci-dessous des expressions avec le cas échéant les déclarations qui permettent de préciser leur sens.
Pour chacune de ces expressions, dˆ?tes si elle est correctement typée ou non. Si elle est correcte, donnez son type et sa
valeur. Notez bien qu’une expression incorrectement typée n’a ni type ni valeur. Elle n’a pas de sens.
1. 37.6 + 15
2. char c = ’a’;
c != ’d’;
3. char c = ’a’;
c + true;
4. char c = ’a’;
’c’ != c;
5. double x = 12.6;
(x + 5.6) 6. double x = 12.6;
(x + 5.6) 7. double x = 12.6;
char c = ’a’;
(x 8. double x = 12.6;
(x 9. double x = 12.6;
char c = ’a’;
(x

Exercice 3 : structure d’un programme

Dans le programme suivant , dire quelles sont les les declarations, les appels de methode et les affectations :

12345678910111213141516public class Td1 {public static void main ( String [ ] arguments ){Terminal.ecrireStringln ( ‘ ‘ exo1 ’ ’ ) ;int n=2 ;char c ;boolean b ;Terminal.ecrireDoubleln (3.0+2) ;n =3+2;n = n+n ;i n t m;m= n + ( 2 * ( n + 2 ) ) ;Terminal.ecrireIntln (m) ;Terminal.ecrireIntln(n) ;}}

Exercice 2.4 : exemples du cours

Pour chaque programme, déterminez le résultat de son exécution. Opérateurs booléans
Tous les opérateurs booléans sont binaires, sauf l’opérateur de négation ! qui est unaire. Le résultat d’une expression
booléenne est un booléan.
– && (de conjonction, “et”) ,
– || (de disjonction, “or”), et
– ! (n´egation, “non”)

123456789class Test 2 {public static void main ( String [ ] arg v ){Terminal.ecrireBooleanln(true && false ) ;boolean a = true ;boolean b = true ;boolean c = true ;Terminal.ecrireBooleanln (!a | | ( b && c ) ) ; }}

Opérateurs relationnels (de comparaison)

Permettent de comparer deux valeurs ou expressions toutes les deux de de type numérique ou char et renvoient
une valeur booléenne en résultat.

 == égalité. Renvoie true si les deux valeurs comparées sont égales, false sinon.

Exemple : 1==4 renvoie false, ’a’==’a’ renvoie true 

Exemple : 1

Programmation objet et Java Questionnaire

Question 1.

On considère l'instruction essai(); qui est l'appel d'une méthode d'objet. Qu'est-ce qui est vrai ?

      (a) l'instruction est invalide si on n'utilise pas

this.

      ;
      (b) elle est toujours valide;
      (c) elle est valide si elle apparaît dans une méthode d'objet de la même classe,
      (d) elle est invalide parce qu'elle est sans argument,
    (e) elle n'est pas valide parce qu'il n'y a pas d'objet appelant.

Question 2. Quelles sont les affirmations vraies parmi les suivantes ?

(a) une classe peut contenir à la fois des méthodes statiques et des méthodes d'objets,
(b) seules des classes sans attributs peuvent contenir des méthodes statiques,
(c) seules des classes utilisateur peuvent contenir des méthodes statiques
(d) Si une classe contient des méthodes statiques, elle ne peut contenir des méthodes d'objet.

Question 3. Une méthode publique statique peut toujours être appelée en préfixant l'appel

(a) du nom de la classe
(b) du nom d'un objet de la classe
(c) this
(d) sans préfixe.

Question 4. Une classe Exemple a les deux constructeurs

Exemple(int a)
Exemple(float f, char c)

Qu'elles sont les déclaration correctes parmi les suivantes ?

(a) Exemple e = new Exemple();
(b) Exemple e = new Exemple(7);
(c) Exemple e = new Exemple(3.1,'A');
(d) Exemple e = new Exemple(7, 'a');

Question 5. Une méthode qui lève une exception en utilisant throw doit contenir une bloc catch pour traiter cette exception.

(a) vrai,
(b) faux.

Question 6. On suppose que Beta dérive de Alpha et Gamma dérive de Beta. Dans un appel d'une méthode de profil void methode(Object p) l'argument passé à methode peut être

(a) de type Alpha, Beta, Gamma ou Object,
(b) Objectet Alpha seulement,
(c) Gamma et Beta seulement.

Question 7. On considère le programme que voici:

class Exemple {
public boolean b = true;
public boolean set(boolean x) {
x = !x ;
return (x == b);
}
public static void main(String[] args) {
Exemple ex = new Exemple();
ex.b = ex.set(ex.b);
System.out.println(ex.b);
}
}
(a) le programme imprime true.
(b) le programme imprime false.

Question 8. On considère le programme suivant:

class Point {
int x, y;
public Point(int xx, int yy) { x = xx; y = yy; }
public void change(Point p) { p.x += x; p.y += y; }

public static void main(String[] args) {
Point a = new Point(2, 3), b = new Point(5, 10);
a.change(b);
}
}

Quel est le résultat ?

(a) a et b sont inchangés.
(b) seul a est changé
(c) seul b est changé
(d) a et b sont changés.

Question 9. Une classe Beta dérive d'une classe Alpha. Les deux classes ont une méthode public boolean estIl(). On considère le fragment de programme

Beta b = new Beta();
Alpha a = b;
if ( a.estIl() ) ...

Qu'est-ce qui est vrai ?

(a)  la méthode de la classe Alpha est appelée parce que Java utilise la liaison dynamique
(b)  la méthode de la classe Beta est appelée parce que Java utilise la liaison dynamique
(c)  la méthode de la classe Alpha est appelée parce que a est de type Alpha
(d)  l'appel n'est pas valable parce que le compilateur ne sait pas déterminer laquelle des méthodes appeler.

Question 10. On considère la classe suivante.

public class X {
int x = 10;
public X() { x = 20; }
public int getX() { return x; }
}

Que se passe-t-il avec l'instruction que voici:

System.out.println( new X().getX() );

(a) Ne compile pas
(b) Compile mais lève une exception à l'exécution
(c) Affiche 10
(d) Affiche 20
(e) Boucle indéfinimen

TD de Programmation par objets et Java #3 : Les association entre les Objets

Les associations entre objets

Exercice 1: variation sur le compte en banque

On donne les classes Compte et Personne suivantes :

12345678910111213141516171819202122232425262728293031class Compte {int numero;int solde;Personne client;void deposer(int s){solde = solde + s;}void retirer (int s){solde = solde - s;}int avoirSolde() {return(solde);}void associerPersonne(Personne p){client = p;p.ajouterCompte(this);}}class Personne {String nom;String prenom;Compte monCompte;void ajouterCompte(Compte c){monCompte = c;}Personne(String m, String p, int a){nom = m;prenom = p;annee = a;}}


Définir un constructeur de la forme:

Compte(int n, String m, String p, int a) où n représente le numéro du compte, m le nom du client, p son prénom et a son
année de naissance.
Ce constructeur doit créer une personne et mettre à jour les liens entre le client du compte et le compte lui-même.

Exercice 2: L'arbre généalogique

On désire réaliser un système permettant de construire et d'afficher un arbre généalogique.

Question A

a) Créer la classe Date qui contient une date sous la forme de 3 entiers, le jour, le mois et l'année.
b) Définir un constructeur de la forme Date(int j, int m, int a) qui sert à construire une telle date.
c) Définir une méthode versChaine() qui retourne une chaîne de caractère, représentation de la date sous la forme jour/mois/année.
Exemple:
Date d = new Date(20, 10, 1999);
System.out.println(d.versChaine()); // affiche: 20/10/1999

Question B

a) Définir la classe Personne qui est telle que toute personne est définie par son nom, son prénom, sa date de naissance et éventuellement par son père, sa mère (qui sont tous deux des personnes) et par sa date de décès.

b) Faire un constructeur qui permet de créer une personne à partir de son nom, son prénom, le jour, le mois et l'année de sa date de naissance.

c) Faire des méthodes d'accès pour la définition du pere, de la mere et de l'année de décès de la personne. Voilà ce que cela donne:
Personne jean = new Personne("Dupond", "Jean", 3, 1, 1966);
Personne marie = new Personne("Durand", "Marie", 5, 9, 1942);
Personne marcel = new Personne("Dupond", "Marcel", 15, 10, 1938);
Personne helene = new Personne("Leblanc", "Hélène", 21, 11, 1908);
Personne paul = new Personne("Durand", "Paul", 12, 06, 1905);

helene.deces(10,08,1986);
paul.deces(1,12,1970);
jean.pere(marcel); // Jean a comme pere Marcel
jean.mere(Marie);
marie.pere(Paul);
marie.mere(Helene);

d) Faire une méthode afficher() dans Personne qui donne le résultat suivant:
jean.afficher()

Jean Dupond
né(e) le 3/1/1996
helene.afficher()

Hélène Leblanc
né(e) le 21/11/1908
décédé(e) le 10/08/1986


e) Faire une méthode afficherGenealogie() dans Personne affiche toute la généalogie d'une personne. Exemple:
jean.afficherGenealogie();

Jean Dupond
né(e) le 3/1/1996
a comme père:
Marcel Dupond
né(e) le 15/10/1938
a comme mère:
Marie Durand
né(e) le 5/9/1942
a comme père:
Paul Durand
né(e) le 5/9/1942
décédé(e) le 1/12/1970
a comme mère
Hélène Leblanc
né(e) le 21/11/1908
décédé(e) le 10/08/1986

Note: dans un premier temps on ne s'intéressera pas à l'indentation. Mais dansun deuxième temps on se posera la question de l'indentation. Idée: créer une méthode auxiliaire (que l'on appellera afficherGenealogie1(int i) où i est le nombre de blanc qui sont affichées avant les message de sortie, et créer de même une méthode auxiliaire afficher1(int i) qui fait comme afficher mais qui place i blanc avant le message de sortie.

J. Ferber

Exercice java sur les conversions entre les types de base entiers et doubles

But:
Apprendre quelles conversions on peut faire entre entiers et doubles.
Thème:
Types de base
Fichiers:
Transtypage.java

Indiquez, pour chaque affectation dans le programme Transtypage ci-dessous, si l'affectation est possible et, le cas échéant, la valeur exacte qui sera affectée à la variable.

123456789101112131415161718192021222324252627class Transtypage { public static void main(String[] args) { int n1 = 2; double r1 = 2.7; int n2 = 2.7; double r2 = 5; int n3 = (int) 5.6; double r3 = 5.6; int n4 = 9; double r4 = (double) n4; double r5 = (int) r4; int n5 = 19 / 4; double r6 = 5.0; int n6 = n5 / r5; int n7 = (int) (n5 / r5); double r7 = 19.0 / r6; double r8 = 15.0 / n3; double r9 = 19 / 4; double r10 = (double) (19 / 4); double r11 = (double) 19 / (double) 4; }}

n1 vaut 2
r1 vaut 2.7

n2 vaut (affectation impossible)
r2 vaut 5.0

n3 vaut 5
r3 vaut 5.6

n4 vaut 9
r4 vaut 9.0
r5 vaut 9.0

n5 vaut 4
n6 vaut (affectation impossible)
r6 vaut 5.0
n7 vaut 0
r7 vaut 3.8

r8 vaut 3.0
r9 vaut 4.0
r10 vaut 4.0
r11 vaut 4.75

Exercice JAVA modularisation et portée d'une variable

But:
Illustrer un point important concernant la portée des variables
Thème:
Modularisation, portée

Le programme Portee.java ci-dessous sert à illustrer un point important qui concerne la portée des variables dans un programme. Sans exécuter le programme, indiquez tout ce que le programme affichera à l'écran lors de l'exécution. Exécutez ensuite le programme (en cliquant ci-dessous sur "Exécutez le programme") pour vérifier votre réponse.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748class Portee { public static void main(String[] args) { int x = 11, y = 22; System.out.println("1. x = " + x); System.out.println("2. y = " + y); System.out.println(); calculer1(x, y); System.out.println("5. x = " + x); System.out.println("6. y = " + y); System.out.println(); calculer2(x, y); System.out.println("11. x = " + x); System.out.println("12. y = " + y); System.out.println(); int [] object = {5}; System.out.println("13. object [0] = " + object [0]); calculer3(object); System.out.println("15. object [0] = " + object [0]); } static void calculer1(int x, int y) { x = 878; y++; System.out.println("3. x = " + x); System.out.println("4. y = " + y); } static void calculer2(int a, int b) { int x = 33; int y = 44; a = 2 * x; b = 2 * y; System.out.println("7. x = " + x); System.out.println("8. y = " + y); System.out.println("9. a = " + a); System.out.println("10. b = " + b); } static void calculer3(int [] object) { object [0] = 37; System.out.println("14. object [0] = " + object [0]); }}

Le programme illustre le fait que chaque variable est locale au bloc où elle a été déclarée. Cela veut dire que la portée (en anglais scope) de la variable est limitée à ce bloc et que la variable n'est pas visible ou utilisable ailleurs dans le programme. Notamment les variables déclarées dans une méthode sont locales à la méthode en question et ne peuvent pas être accédées depuis d'autres méthodes. Pour communiquer une valeur d'une méthode à une autre, il faut l'envoyer comme argument dans l'appel.
Exécution du programme Portee:

1. x = 112. y = 223. x = 8784. y = 235. x = 116. y = 227. x = 338. y = 449. a = 6610. b = 8811. x = 1112. y = 2213. object [0] = 514. object [0] = 3715. object [0] = 37

Exercice Java : Programme de gestion de ligne d'autocar

Exercice 1 : prix des billets d’autocar

           Dans cet exercice, on veut gérer une ligne de car qui relie Vierzon à Orléans en passant par Salbris, Nouans, Lamotte-Beuvron et La Ferté Saint-Aubin. Chaque tronçon du trajet a un certain prix et le prix d’un billet est la somme des prix des tronçons qu’il comporte.
      La ligne fonctionne dans les deux sens, le prix est identique dans les deux sens.
      Dans cet exercice, on ne veut utiliser que des tableaux, pas d’enregistrement.
      On va stocker dans un tableau les noms des villes, en les mettant dans l’ordre dans lequel elles sont desservies (l’ordre donné ci-dessus). Dans un autre tableau, on va stocker les prix des différents tronçons.

Ces prix sont les suivants :

départarrivéeprix

Vierzon

Salbris

Nouans

Lamotte-Beuvron

La Ferté Saint-Aubin

Salbris

Nouans

Lamotte-Beuvron

La Ferté Saint-Aubin

Orléans

3.20

1.80

2.30

4.20

5.00

             Avant de commencer à programmer, dessinez les deux tableaux sur papier et réfléchissez aux algorithmes permettant de répondre aux différentes questions. {sidebar id=1}

1. écrivez une méthode permettant de retrouver l’indice d’une ville dont on donne le nom en paramètre (c’est à dire sa position dans le premier tableau).

2. écrivez une méthode qui calcule le prix d’un trajet étant donnés les noms des villes de départ et d’arrivée

Question 2

         On veut instaurer des tarifs dégressifs selon le nombre de tronçons parcourus : le premier tronçon est payé à plein tarif, le second avec 10% de réduction, le second avec 20%, etc. Ecrivez une méthode qui réalise le calcul du prix d’un trajet selon ce principe.

Question 3

     On veut généraliser le système pour un ensemble de lignes de bus : que faut-il changer dans le programme?

Vous écrirez un programme avec deux lignes de bus et un seul programme qui calcule les prix des trajets. Les billets sont pour un trajet sur une ligne donnée, on ne fait pas de billet avec correspondance

Exercice 2 : distances entre villes

         On s’intéresse aux distances entre deux villes situées le long d’une même route. Comme exemple, on prend la nationale 20 entre Orléans et Vierzon. Voici le tableau des distances :

départarrivéedistance

Orléans

La Ferté Saint-Aubin

Lamotte-Beuvron

Nouans

Salbris

La Ferté Saint-Aubin

Lamotte-Beuvron

Nouans

Salbris

Vierzon

21 Km

14 Km

8 Km

13 Km

23 Km

1. représentez le tableau ci-dessus en java au moyen d’un premier tableau enregistrant les noms de ville et d’un second enregistrant les distances.

2. écrivez un programme qui calcule la distance entre deux villes.

3. écrivez un programme qui calcule un tableau à deux dimensions en registrant toutes les distances entre deux villes.

Question 2 {sidebar id=8}

         On veut réaliser la même chose, mais avec plusieurs routes, si bien qu’il peut y avoir plusieurs routes pour aller d’une ville à un autre. Dans ce cas, on veut calculer et enregistrer dans le tableau à deux dimensions la distance la plus courte.
           Les données du calculs seront les tronçons de route qui relient directement deux villes, c’est-à-dire qui vont d’une ville à l’autre sans passer par aucune autre ville. Pour chaque tronçon, on doit donner sa distance.
          Comment peut-on représenter ces données en Java ? Comment peut-on calculer la distance la plus petite entre deux villes ? Attention, il faut éviter que le calcul proposé ne produise des boucles infinies (par exemple en refaisant éternellement certains trajets).
          Cette question est une question de réflexion à laquelle vous pouvez répondre sans écrire de programme. Vous pouvez également écrire le programme si vous le désirez.

Exercice portée d'une variable

But:
Illustrer un point important concernant la portée des variables
Thème:
Modularisation, portée
Fichiers:


Le programme Portee.java ci-dessous sert à illustrer un point important qui concerne la portée des variables dans un programme. Sans exécuter le programme, indiquez tout ce que le programme affichera à l'écran lors de l'exécution. Exécutez ensuite le programme (en cliquant ci-dessous sur "Exécutez le programme") pour vérifier votre réponse.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647class Portee { public static void main(String[] args) { int x = 11, y = 22; System.out.println("1. x = " + x); System.out.println("2. y = " + y); System.out.println(); calculer1(x, y); System.out.println("5. x = " + x); System.out.println("6. y = " + y); System.out.println(); calculer2(x, y); System.out.println("11. x = " + x); System.out.println("12. y = " + y); System.out.println(); int [] object = {5}; System.out.println("13. object [0] = " + object [0]); calculer3(object); System.out.println("15. object [0] = " + object [0]); } static void calculer1(int x, int y) { x = 878; y++; System.out.println("3. x = " + x); System.out.println("4. y = " + y); } static void calculer2(int a, int b) { int x = 33; int y = 44; a = 2 * x; b = 2 * y; System.out.println("7. x = " + x); System.out.println("8. y = " + y); System.out.println("9. a = " + a); System.out.println("10. b = " + b); } static void calculer3(int [] object) { object [0] = 37; System.out.println("14. object [0] = " + object [0]); }}

Le programme illustre le fait que chaque variable est locale au bloc où elle a été déclarée. Cela veut dire que la portée (en anglais scope) de la variable est limitée à ce bloc et que la variable n'est pas visible ou utilisable ailleurs dans le programme. Notamment les variables déclarées dans une méthode sont locales à la méthode en question et ne peuvent pas être accédées depuis d'autres méthodes. Pour communiquer une valeur d'une méthode à une autre, il faut l'envoyer comme argument dans l'appel.
Exécution du programme Portee:

1. x = 112. y = 223. x = 8784. y = 235. x = 116. y = 227. x = 338. y = 449. a = 6610. b = 8811. x = 1112. y = 2213. object [0] = 514. object [0] = 3715. object [0] = 37Article publié le 18 Mars 2010 Mise à jour le Samedi, 17 Décembre 2022 17:19 par BENKIRANE Fatima Ezzahra