38
UE 2I002 (ex LI230) : éléments de programmation par objets avec Java Juliana Silva Bernardes [email protected] http://www.lcqb.upmc.fr/julianab/teaching/JAVA/

UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

UE 2I002 (ex LI230) : éléments de programmation par objets

avec Java

Juliana Silva [email protected]

http://www.lcqb.upmc.fr/julianab/teaching/JAVA/

Page 2: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

2

!

Contrôle des connaissances• Règle de la licence : exam + CC

• Pour la note exam + CC, les pondérations sont :– Examen : 60%– Contrôle continu : 40%

• TMEsolo 20%

• contrôlesTD 15%

• participation 5%!

Organisation de l’UE

Page 3: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

3

• 1 - Classe : définition, syntaxe,

• 2 - Encapsulation, surcharge

• 3 -Tableaux, tableaux d’objets

• CC 1 - 5 Oct

• 4 - Composition, copie d’objets

• 5 - Variables et méthodes de classes

• 6 - Héritage et modélisation

• CC 1I - 9 Nov

• 7 - Héritage et classe abstract

• 8 - Héritage et liaison dynamique

• 9 - Exceptions

• 10 - Flux

• CC 1II - 7 Dec

Organisation de l’UE

• TME -SOLO• 23 Nov

Page 4: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

4

Type primitifs

Types numériques entiers : byte, short, int et long,

Types numériques réels : float et double,Type caractère : char,Type booléen : boolean (2 valeurs false ou true)

• char est aussi numerique.

char

int

long

float

double

chara1=‘A';!inta2=a1;!longa3=a2;!floata4=a3;!doublea5=a4; System.out.println(a1+""+a2+""+a3+""+a4+""+a5);System.out.println(a1+a2);

A656565.065.0

Output

130

Page 5: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

5

Syntaxe du langage

‣ le caractère de fin d'une instruction est“;” a=c+c;

‣ les commentaries de ligne “//” et commentaries de blocks “/*”et“*/”! !

inta;//cecommentairetientsuruneligne

/*Cecommentairenécessite2lignes*/inta;

Page 6: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

6

Java, language à objets Notion d’objet, 1ère notion de POO

Page 7: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

7

Java, langage à objets

Pour savor plus : https://www.youtube.com/watch?v=BNEtWb3WceQ https://www.youtube.com/watch?v=bFJu2NvOhyY

Page 8: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

8

Java, langage à objets

Nom

attributs

methodes

Les propriétés

Fonctions associées à la définition d’une classe.

constructers

Notion d’objet, 1ère notion de POO

Creation des objets.

Page 9: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

9

Java, langage à objets

Exemples de classes?

Carre

cote

int surface()

carre(int cote)

publicclassCarre{

private intcote;

publicCarre(intcote){

this.cote=cote;

}

public intsurface(){ returncote*cote;

}

}

Page 10: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

10

Java, langage à objetsExemples de objets?

Carrecarre1=newCarre(5);

Carrecarre2=newCarre(10);

Carrecarre3;

System.out.println(carre1.surface());

System.out.println(carre2.surface());

System.out.println(carre3.surface());

publicclassCarre{

intcote;

Carre(intcote){

this.cote=cote;

}

public intsurface(){ returncote*cote;

}

}

ClasseCreation des objets et appelle à methodes

Memoire

cote=5

carre1

Output

cote=10

carre2 carre3

$ 25

$ 100

$ ERROR

Page 11: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

11

Premiers pas

‣Un programme écrit en Java consiste en un ensemble de classes

!‣ L’exécution du programme commence par l’exécution d’une classe qui doit avoir

(implémenter) une méthode particulière

“publicstaticvoidmain(String[]args)”

!publicclassHelloWorld{ publicstaticvoidmain(String[]args){

System.out.println(”Helloworld”);

}}

javacHelloWorld.java

javaHelloWorld.class

Compilation

Execution

Page 12: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

12

Premiers pas

publicclassHelloWorld2{ publicstaticvoidmain(String[]args){

System.out.println(”Helloworld”);

}}

javacHelloWorld.java

javaHelloWorld.class

Compilation

ExecutionHello world

HelloWorld.java:1: error: class HelloWorld2 is public, should be declared in a file named HelloWorld2.java public class HelloWorld2 { ^ 1 error

A

Page 13: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

13

Premiers pas

publicclassHelloWorld{ publicvoidmain(String[]args){

System.out.println(”Helloworld”);

}}

javacHelloWorld.javaCompilation

java HelloWorld Error: Main method is not static in class HelloWorld, please define the main method as: public static void main(String[] args)

javaHelloWorld.classExecution

B

Page 14: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

14

Premiers pas

publicclassHelloWorld{ publicstaticvoidmain(Stringargs){

System.out.println(”Helloworld”);

}}

javacHelloWorld.javaCompilation

javaHelloWorld.classExecution

Error: Main method not found in class HelloWorld, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application

C

Page 15: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

15

Premiere class

publicclassRectangle{

privateintlongueur;

privateintlargeur;

privateintorigine_x;

privateintorigine_y;

publicRectangle(intlongueur,intlargeur){

this.longueur=longueur;

this.largeur=largeur;

}

publicvoiddeplace(intx,inty){

this.origine_x=this.origine_x+x;

this.origine_y=this.origine_y+y;

}

publicintsurface(){ returnthis.longueur*this.largeur;

}

}

Quelles sont (a) les variables d’instance ?

Les variables qui sont des parametres de methodes ?

Où est le constructeur ?

Quelles sont les methodes de cette classe ?

DEFG

Page 16: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

16

Premiere class

publicclassForme{

publicstaticvoidmain(String[]args){

//Creeunretangledelongueur5etlargeur10Rectanglemon_rectangle=newRectangle(5,10);

//Deplaceràlaposition3,4mon_rectangle.deplacer(3,4);

//CalculeetafficherlasurfaceSystem.out.println(”lasurfaceest:”+mon_rectangle.surface());

}

Page 17: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

17

La methode toString

publicclassRectangle{

privateintlongueur,largeur,origine_x;origine_y;

publicRectangle(intlongueur,intlargeur){

this.longueur=longueur;

this.largeur=largeur;

}

public voiddeplace(intx,inty){

this.origine_x=this.origine_x+x;

this.origine_y=this.origine_y+y;

}

publicintsurface(){ returnthis.longueur*this.largeur;

}

publicStringtoString(){

Strings;

s=“Position(“+this.origine_x+“,”+this.origine_y+“)\n”;

s=s+"Surface(“+this.surface()+“)";

returns;

}

}

Page 18: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

18

La methode toString

publicclassForme{

publicstaticvoidmain(String[]args){

Rectangler1=newRectangle(5,10);

r1.deplace(4,5);

System.out.println(r1.toString());

}

Page 19: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

19

Packages

‣ Un grand nombre de classes, fournies par Java SE, implémentent des données et traitements génériques utilisables par un grand nombre d’applications.

‣ Ces classes forment l’API (Application Programmer Interface) du langage Java.

‣ Une documentation en ligne pour l’API java est disponible à l’URL :http://docs.oracle.com/javase/7/docs/api/

‣ Toutes ces classes sont organisées en packages (ou bibliothèques) dédiés à un thème précis.

������ ����� ������������� Ƈ������ ������ ���� ����ſ������ƃƄ ����ƀ Ƈ

��������� ���� ʰ ��� ���������ſɬř ɨɥƀŚ������Ŝ���Ŝ�������ſŪ�� ������� ��� Ū ʫ ����Ŝ�������ſƀƀŚ

ƈƈ

�������������Ŝ���� ���������Ŝ����

����śŵŵ����Ŝ������Ŝ���ŵ������ŵɮŵ����ŵ���ŵ

���� ����Ŝ����

●������ ����Ŝ����Ŝ����Ś

●������ ����Ŝ����ŜƋŚ

������ ����Ŝ����Ŝ����Ś

������ ����� �������� Ƈ������ ������ ���� ����ſ������ƃƄ ����ƀ Ƈ

���� ����� ʰ ��� ����ſƀŚ������Ŝ���Ŝ�������ſŪ���� ������ �� Ū ʫ �����Ŝ��������ſƀƀŚ

ƈƈ

‣ Pour accéder à une classe d’un package donné, il faut importer cette classe ou son packageimportjava.util.Date;

importjava.util.*;

Page 20: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

20

Packages

‣ Le programme suivant utilise cette classe pour afficher la date actuelle :

importjava.util.Date;

publicclassDateMain{

publicstaticvoidmain(String[]args){

Datetoday=newDate();

System.out.println(”Noussommesle”+today.toString());}}

‣ Vous pouvez créer vos propres packages en précisant, avant la déclaration d’une classe, le package auquel elle appartient.

packagemyPack;

publicclassHelloWorld{ publicstaticvoidmain(String[]args){

System.out.println(”Helloworld”);

}}

mkdir myPack

Page 21: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

21

!

Variables et méthodes

!‣ Visibilité des champs

‣ Le mot-clé public autorise n’importe quel objet à utiliser la classe, les variables ou la méthode déclarée comme publique.

��Ŝ����

������� ��Ŝ���� Ś

������ ����Ŝ����Ŝ����Ś

������ ����� �������� ƇŜŜŜ

ƈ

��������Ŝ������ŵ����ŵ��������Ŝ����

������

��������������� �������

������ ��������� �������

‣ Deux autres mot- clés peuvent être utilisés pour limiter l’accès: protectedet private.

��Ŝ����

������� ��Ŝ���� Ś

������ ����Ŝ����Ŝ����Ś

������ ����� �������� ƇŜŜŜ

ƈ

��������Ŝ������ŵ����ŵ��������Ŝ����

������

��������������� �������

������ ��������� �������

Page 22: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

22

!

Structures de contrôle

!!‣ Instructions conditionnelles

������ ����Ŝ����

●● ʫ

������ �ɨ ʰ Ū�����ŪŚ������ �ɩ ʰ Ū�����ŪŚ������ �ɪ ʰ �ɨ ʫ Ū Ū ʫ �ɩ Śŵŵ���±� ��� ������������ �ɰ ���� Ū����� �����Ū

●������ � ʰ ��� ������ſƀŚ ŵŵ���� ��� ������ ���������� �ɩ ʰ ��� ������ſŪ����� �����ŪƀŚŵŵ ���� ��� ���Ä�� �� ������ Ū����� �����Ū

● ����Ŝ����Ŝ������������

●● Ƈƈ

�� ſʳ���������ʴƀ ʳ����ɨʴ ���� ʳ����ɩʴ

ʳ���������ʴţʳ�����������ɨʴśʳ�����������ɩʴ

ʳ���������ʴ ʳ����ɨʴʳ�����������ɨʴ ʳ����ɩʴ ʳ�����������ɩʴ���� ʳ����ɩʴ

if(a==b){

a=50;

b=0;

}else{

a=a-1;

}

Page 23: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

23

!

Structures de contrôle

!!‣ Instructions conditionnelles

« == » : permet de tester l'égalité.! « != » : permet de tester l’inégalité.! « < » : strictement inférieur.! « <= » : inférieur ou égal.! « > » : strictement supérieur.! « >= » : supérieur ou égal.! « && » : l'opérateur ET. Il permet de préciser une condition! « || » : le OU. Même combat que le précédent.! « ? : » : l'opérateur ternaire. Pour celui-ci, vous comprendrez mieux avec un exemple qui sera donné vers la fin de ce chapitre.

Page 24: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

24

!

Structures de contrôle

!!‣ Instructions conditionnelles

Faire une méthode pour tester si un entier est positif ou négatif. HpublicvoidtestNombre(inti){! if(i<0) System.out.println("Cenombreestnégatif!"); elseif(i>0) System.out.println("Cenombreestpositif!"); else System.out.println("Cenombreestnul!");

Page 25: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

25

!

Structures de contrôle

!!‣ Instructions conditionnelles

Faire une méthode pour vérifier si un entier est compris entre 50 et 100 I

publicvoidtestIntervalle(inti){! if(i<100&&i>50) System.out.println("Lenombreestbiendansl'intervalle."); else System.out.println("Lenombren'estpasdansl'intervalle.");}

Page 26: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

26

!

Structures de contrôle

!!

‣ Instructions itératives‣ Les instruction itératives permettent d’exécuter plusieurs fois un bloc

d’instructions

����� ſʳ���������ʴƀ ʳ����ʴ

����� ſ� Šʰ �ƀ �ʫʫŚ

�� ʳ����ʴ ����� ſʳ���������ʴƀŚ

�� �ʫʫ����� ſ� Šʰ �ƀŚ

��� ſʳ����ʴŚʳ���������ʴŚʳ�����ɏ����ɏ��²������ʴƀ ʳ����ʴ

��� ſ��� � ʰ ɥř � ʰ ɫɰ Ś ſ� ʳ ɩɬƀ ĺĺ ſ� ʴʰ ɩɬƀŚ �ʫʫř �ŞŞƀ Ƈ�� ſ���ƃ�Ƅ ʴ ���ƃ�Ƅƀ Ƈ

��� ������ ʰ ���ƃ�ƄŚ

➲ ����� ���� Ũ�Ũ

����� ſʳ���������ʴƀ ʳ����ʴ

����� ſ� Šʰ �ƀ �ʫʫŚ

�� ʳ����ʴ ����� ſʳ���������ʴƀŚ

�� �ʫʫ����� ſ� Šʰ �ƀŚ

��� ſʳ����ʴŚʳ���������ʴŚʳ�����ɏ����ɏ��²������ʴƀ ʳ����ʴ

��� ſ��� � ʰ ɥř � ʰ ɫɰ Ś ſ� ʳ ɩɬƀ ĺĺ ſ� ʴʰ ɩɬƀŚ �ʫʫř �ŞŞƀ Ƈ�� ſ���ƃ�Ƅ ʴ ���ƃ�Ƅƀ Ƈ

��� ������ ʰ ���ƃ�ƄŚ

➲ ����� ���� Ũ�Ũ

for(inti=0,(i<10);i++){

System.out.print(i+““)

}

����� ſʳ���������ʴƀ ʳ����ʴ

����� ſ� Šʰ �ƀ �ʫʫŚ

�� ʳ����ʴ ����� ſʳ���������ʴƀŚ

�� �ʫʫ����� ſ� Šʰ �ƀŚ

��� ſʳ����ʴŚʳ���������ʴŚʳ�����ɏ����ɏ��²������ʴƀ ʳ����ʴ

��� ſ��� � ʰ ɥř � ʰ ɫɰ Ś ſ� ʳ ɩɬƀ ĺĺ ſ� ʴʰ ɩɬƀŚ �ʫʫř �ŞŞƀ Ƈ�� ſ���ƃ�Ƅ ʴ ���ƃ�Ƅƀ Ƈ

��� ������ ʰ ���ƃ�ƄŚ

➲ ����� ���� Ũ�Ũ

Page 27: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

27

!

Structures de contrôle

!!

‣ Instructions itératives‣ Qu’est-ce qu’affiche le code suivant

for(inti=0,j=2;(i<10&&j<6);i++,j+=2){System.out.println("i="+i+",j="+j);}

J

i j Output

0 2 i = 0, j=2

1 4 i = 1, j=4

Page 28: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

28

!

Structures de contrôle

!!

‣ Iterations sur char

for(inti=0;(i<=9);i++){

System.out.print(i+““)

}

0 1 2 3 4 5 6 7 8 9

for(charc='0';(c<='9');c++){

System.out.print(c+““)

}

0 1 2 3 4 5 6 7 8 9

for(charc='A';(c<='Z');c++){

System.out.print(c+““)

}

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

for(inti='A';(i<='Z');i++){

System.out.print(i+““)

}65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

K

L

M

N

Page 29: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

29

!

Materiaux et cours WEB

!!• Chez coursera, une plateforme d'Enseignement en ligne, il y a des cours en

français, il faut créer une compte, mais c'est gratuit.!

https://fr.coursera.org/learn/init-prog-java https://fr.coursera.org/learn/java-poo https://openclassrooms.com/courses/apprenez-a-programmer-en-java

!• Les video class que peuvent aiderhttps://www.youtube.com/watch?v=wZuxBgbCNto&list=PLFFD959BEDF9DFEE2

!• d'autre materiauxhttp://www.emse.fr/~picard/cours/1A/java/livretJava.pdfhttps://fr.wikibooks.org/wiki/Programmation_Java/Bases_du_langage

Page 30: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

30

!

Exercices

Page 31: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

31

Exercice 1 – Premier programme Java

1.1) Ecrire une classe Bonjour qui affiche ”Bonjour Monde”.

1.2) Quel est le rôle de la methode main ?

Page 32: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

32

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :2i002 – Introduction a la Programmation Objet page 7

1 public class Planete {2 private St r ing nom;3 private double rayon ; // en k i l ome t r e4

5 public Planete ( S t r ing n , double r ) {6 nom=n ;7 rayon=r ;8 }9

10 public St r ing toS t r i ng ( ) {11 St r ing s="Planete "+nom+" de rayon "+rayon ;12 return s ;13 }14

15 public double getRayon ( ) {16 return rayon ;17 }18 }

Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des parametres demethodes ? (c) les variables qui sont des variables locales a une methode ?

(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)On les reconnaıt car ces variables ne sont pas declarees dans une methode(b) ligne 5 : n et r sont des parametres de methode(c) ligne 11 : s est une variable locale a la methode toString() quand la methode toString() se termine, cettevariable n’existe plus. Remarque : la variable s est inutile.

Q 2.2 Ou est le constructeur ? Comment le reconnaıt-on ? Quel est le role des constructeurs en general ? Quandsont-ils appeles ?

Le constructeur commence a la ligne 5 et termine a la ligne 8.On reconnaıt les constructeurs car ils :– portent le meme nom que la classe,– seules methodes qui par convention commencent par une majuscule– n’ont pas de valeur de retour.Le role des constructeurs est :– d’initialiser les variables d’instance– et d’e↵ectuer les instructions necessaires pour la creation d’un objet de cette classeLes constructeurs sont appeles quand on cree (mot-cle new) un objet de cette classe

Q 2.3 Quelles sont les methodes de cette classe ?

Les methodes sont la methode standard toString() et l’accesseur : getRayon()

Q 2.4 Ecrire une nouvelle classe appelee SystemeSolaire. On souhaite que cette classe soit le point d’entree duprogramme, que doit-elle contenir ? Creer un objet (ou instance) de la classe Planete pour la planete Mercurequi a un rayon de 2439.7 km et un autre objet pour la planete Terre qui a un rayon de 6378.137 km. A�cher lavaleur de retour de la methode toString() pour la planete Mercure, puis a�cher le rayon de la planete Terre.

2.1 Dans cette classe, quelles sont

(a) les variables d’instance ?

(b) les variables qui sont des parametres de methodes ?

(c) les variables qui sont des variables locales à une methode ?

Page 33: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

33

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :2i002 – Introduction a la Programmation Objet page 7

1 public class Planete {2 private St r ing nom;3 private double rayon ; // en k i l ome t r e4

5 public Planete ( S t r ing n , double r ) {6 nom=n ;7 rayon=r ;8 }9

10 public St r ing toS t r i ng ( ) {11 St r ing s="Planete "+nom+" de rayon "+rayon ;12 return s ;13 }14

15 public double getRayon ( ) {16 return rayon ;17 }18 }

Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des parametres demethodes ? (c) les variables qui sont des variables locales a une methode ?

(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)On les reconnaıt car ces variables ne sont pas declarees dans une methode(b) ligne 5 : n et r sont des parametres de methode(c) ligne 11 : s est une variable locale a la methode toString() quand la methode toString() se termine, cettevariable n’existe plus. Remarque : la variable s est inutile.

Q 2.2 Ou est le constructeur ? Comment le reconnaıt-on ? Quel est le role des constructeurs en general ? Quandsont-ils appeles ?

Le constructeur commence a la ligne 5 et termine a la ligne 8.On reconnaıt les constructeurs car ils :– portent le meme nom que la classe,– seules methodes qui par convention commencent par une majuscule– n’ont pas de valeur de retour.Le role des constructeurs est :– d’initialiser les variables d’instance– et d’e↵ectuer les instructions necessaires pour la creation d’un objet de cette classeLes constructeurs sont appeles quand on cree (mot-cle new) un objet de cette classe

Q 2.3 Quelles sont les methodes de cette classe ?

Les methodes sont la methode standard toString() et l’accesseur : getRayon()

Q 2.4 Ecrire une nouvelle classe appelee SystemeSolaire. On souhaite que cette classe soit le point d’entree duprogramme, que doit-elle contenir ? Creer un objet (ou instance) de la classe Planete pour la planete Mercurequi a un rayon de 2439.7 km et un autre objet pour la planete Terre qui a un rayon de 6378.137 km. A�cher lavaleur de retour de la methode toString() pour la planete Mercure, puis a�cher le rayon de la planete Terre.

2.2 Où est le constructeur ?

Comment le reconnaît-on ?

Quel est le rôle des constructeurs en general ?

Quand sont-ils appeles ?

Page 34: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

34

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :2i002 – Introduction a la Programmation Objet page 7

1 public class Planete {2 private St r ing nom;3 private double rayon ; // en k i l ome t r e4

5 public Planete ( S t r ing n , double r ) {6 nom=n ;7 rayon=r ;8 }9

10 public St r ing toS t r i ng ( ) {11 St r ing s="Planete "+nom+" de rayon "+rayon ;12 return s ;13 }14

15 public double getRayon ( ) {16 return rayon ;17 }18 }

Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des parametres demethodes ? (c) les variables qui sont des variables locales a une methode ?

(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)On les reconnaıt car ces variables ne sont pas declarees dans une methode(b) ligne 5 : n et r sont des parametres de methode(c) ligne 11 : s est une variable locale a la methode toString() quand la methode toString() se termine, cettevariable n’existe plus. Remarque : la variable s est inutile.

Q 2.2 Ou est le constructeur ? Comment le reconnaıt-on ? Quel est le role des constructeurs en general ? Quandsont-ils appeles ?

Le constructeur commence a la ligne 5 et termine a la ligne 8.On reconnaıt les constructeurs car ils :– portent le meme nom que la classe,– seules methodes qui par convention commencent par une majuscule– n’ont pas de valeur de retour.Le role des constructeurs est :– d’initialiser les variables d’instance– et d’e↵ectuer les instructions necessaires pour la creation d’un objet de cette classeLes constructeurs sont appeles quand on cree (mot-cle new) un objet de cette classe

Q 2.3 Quelles sont les methodes de cette classe ?

Les methodes sont la methode standard toString() et l’accesseur : getRayon()

Q 2.4 Ecrire une nouvelle classe appelee SystemeSolaire. On souhaite que cette classe soit le point d’entree duprogramme, que doit-elle contenir ? Creer un objet (ou instance) de la classe Planete pour la planete Mercurequi a un rayon de 2439.7 km et un autre objet pour la planete Terre qui a un rayon de 6378.137 km. A�cher lavaleur de retour de la methode toString() pour la planete Mercure, puis a�cher le rayon de la planete Terre.

2.3 Quelles sont les methodes de cette classe ?

Page 35: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

35

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :2i002 – Introduction a la Programmation Objet page 7

1 public class Planete {2 private St r ing nom;3 private double rayon ; // en k i l ome t r e4

5 public Planete ( S t r ing n , double r ) {6 nom=n ;7 rayon=r ;8 }9

10 public St r ing toS t r i ng ( ) {11 St r ing s="Planete "+nom+" de rayon "+rayon ;12 return s ;13 }14

15 public double getRayon ( ) {16 return rayon ;17 }18 }

Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des parametres demethodes ? (c) les variables qui sont des variables locales a une methode ?

(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)On les reconnaıt car ces variables ne sont pas declarees dans une methode(b) ligne 5 : n et r sont des parametres de methode(c) ligne 11 : s est une variable locale a la methode toString() quand la methode toString() se termine, cettevariable n’existe plus. Remarque : la variable s est inutile.

Q 2.2 Ou est le constructeur ? Comment le reconnaıt-on ? Quel est le role des constructeurs en general ? Quandsont-ils appeles ?

Le constructeur commence a la ligne 5 et termine a la ligne 8.On reconnaıt les constructeurs car ils :– portent le meme nom que la classe,– seules methodes qui par convention commencent par une majuscule– n’ont pas de valeur de retour.Le role des constructeurs est :– d’initialiser les variables d’instance– et d’e↵ectuer les instructions necessaires pour la creation d’un objet de cette classeLes constructeurs sont appeles quand on cree (mot-cle new) un objet de cette classe

Q 2.3 Quelles sont les methodes de cette classe ?

Les methodes sont la methode standard toString() et l’accesseur : getRayon()

Q 2.4 Ecrire une nouvelle classe appelee SystemeSolaire. On souhaite que cette classe soit le point d’entree duprogramme, que doit-elle contenir ? Creer un objet (ou instance) de la classe Planete pour la planete Mercurequi a un rayon de 2439.7 km et un autre objet pour la planete Terre qui a un rayon de 6378.137 km. A�cher lavaleur de retour de la methode toString() pour la planete Mercure, puis a�cher le rayon de la planete Terre.

2.4 Ecrire une nouvelle classe appelee SystemeSolaire.

On souhaite que cette classe soit le point d’entrée du programme, que doit-elle contenir?

Page 36: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

36

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :2i002 – Introduction a la Programmation Objet page 7

1 public class Planete {2 private St r ing nom;3 private double rayon ; // en k i l ome t r e4

5 public Planete ( S t r ing n , double r ) {6 nom=n ;7 rayon=r ;8 }9

10 public St r ing toS t r i ng ( ) {11 St r ing s="Planete "+nom+" de rayon "+rayon ;12 return s ;13 }14

15 public double getRayon ( ) {16 return rayon ;17 }18 }

Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des parametres demethodes ? (c) les variables qui sont des variables locales a une methode ?

(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)On les reconnaıt car ces variables ne sont pas declarees dans une methode(b) ligne 5 : n et r sont des parametres de methode(c) ligne 11 : s est une variable locale a la methode toString() quand la methode toString() se termine, cettevariable n’existe plus. Remarque : la variable s est inutile.

Q 2.2 Ou est le constructeur ? Comment le reconnaıt-on ? Quel est le role des constructeurs en general ? Quandsont-ils appeles ?

Le constructeur commence a la ligne 5 et termine a la ligne 8.On reconnaıt les constructeurs car ils :– portent le meme nom que la classe,– seules methodes qui par convention commencent par une majuscule– n’ont pas de valeur de retour.Le role des constructeurs est :– d’initialiser les variables d’instance– et d’e↵ectuer les instructions necessaires pour la creation d’un objet de cette classeLes constructeurs sont appeles quand on cree (mot-cle new) un objet de cette classe

Q 2.3 Quelles sont les methodes de cette classe ?

Les methodes sont la methode standard toString() et l’accesseur : getRayon()

Q 2.4 Ecrire une nouvelle classe appelee SystemeSolaire. On souhaite que cette classe soit le point d’entree duprogramme, que doit-elle contenir ? Creer un objet (ou instance) de la classe Planete pour la planete Mercurequi a un rayon de 2439.7 km et un autre objet pour la planete Terre qui a un rayon de 6378.137 km. A�cher lavaleur de retour de la methode toString() pour la planete Mercure, puis a�cher le rayon de la planete Terre.

2.4 Ecrire une nouvelle classe appelee SystemeSolaire.

• Créer un objet de la classe Planete pour Mercure qui a un rayon de 2439.7 km et un autre objet pour la Terre qui a un rayon de 6378.137 km.

• Afficher la valeur de retour de la methode toString() pour la planete Mercure, puis afficher le rayon de la Terre.

Page 37: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

37

Exercice 2 – Planete

Soit la classe Planete suivante situee dans le fichier Planete.java :2i002 – Introduction a la Programmation Objet page 7

1 public class Planete {2 private St r ing nom;3 private double rayon ; // en k i l ome t r e4

5 public Planete ( S t r ing n , double r ) {6 nom=n ;7 rayon=r ;8 }9

10 public St r ing toS t r i ng ( ) {11 St r ing s="Planete "+nom+" de rayon "+rayon ;12 return s ;13 }14

15 public double getRayon ( ) {16 return rayon ;17 }18 }

Q 2.1 Dans cette classe, quelles sont (a) les variables d’instance ? (b) les variables qui sont des parametres demethodes ? (c) les variables qui sont des variables locales a une methode ?

(a) Les variables d’instance sont : nom et rayon (ligne 2 et 3)On les reconnaıt car ces variables ne sont pas declarees dans une methode(b) ligne 5 : n et r sont des parametres de methode(c) ligne 11 : s est une variable locale a la methode toString() quand la methode toString() se termine, cettevariable n’existe plus. Remarque : la variable s est inutile.

Q 2.2 Ou est le constructeur ? Comment le reconnaıt-on ? Quel est le role des constructeurs en general ? Quandsont-ils appeles ?

Le constructeur commence a la ligne 5 et termine a la ligne 8.On reconnaıt les constructeurs car ils :– portent le meme nom que la classe,– seules methodes qui par convention commencent par une majuscule– n’ont pas de valeur de retour.Le role des constructeurs est :– d’initialiser les variables d’instance– et d’e↵ectuer les instructions necessaires pour la creation d’un objet de cette classeLes constructeurs sont appeles quand on cree (mot-cle new) un objet de cette classe

Q 2.3 Quelles sont les methodes de cette classe ?

Les methodes sont la methode standard toString() et l’accesseur : getRayon()

Q 2.4 Ecrire une nouvelle classe appelee SystemeSolaire. On souhaite que cette classe soit le point d’entree duprogramme, que doit-elle contenir ? Creer un objet (ou instance) de la classe Planete pour la planete Mercurequi a un rayon de 2439.7 km et un autre objet pour la planete Terre qui a un rayon de 6378.137 km. A�cher lavaleur de retour de la methode toString() pour la planete Mercure, puis a�cher le rayon de la planete Terre.

2.5 Quel doit être le nom du fichier contenant la classe SystemeSolaire ?

Quelles sont les commandes pour compiler les classes Planete et SystemeSolaire ?

Quelle est la commande pour exécuter ce programme ?

Page 38: UE 2I002 (ex LI230) : éléments de programmation par objets ...de programmation par objets avec Java ... • 4 - Composition, copie d’objets • 5 - Variables et méthodes de classes

38

Exercice 3 – TME

En utilisant un boucle while

Exercice 4 – Alphabet

Q 4.1.1 Afficher les chiffres de 0 à 9, ainsi que leur code ASCII.

Q 4.1.2 Afficher les lettres de l’alphabet de ’A’ à ’Z’, ainsi que leur code ASCII.