• Aucun résultat trouvé

Programmation Java

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation Java"

Copied!
37
0
0

Texte intégral

(1)

Programmation Java

Valeur d’accueil et de reconversion en informatique (VARI1) Daniel Porumbel ([email protected])

http://cedric.cnam.fr/~porumbed/vari1/

1/21

(2)

Plan

1 Les premiers programmes : les mots clés et la compilation

2 Fonctions avancées, lecture clavier

3 Construire ses propres classes et objets, héritage

(3)

Le plus simple programme Java

SolutionProcessing

p r i n t l n (" S a l u t t o u t l e monde ");

SolutionJava

c l a s s PremierProg{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){

System . o u t . p r i n t l n (" S a l u t t o u t l e monde ") ; }

}

3/21

(4)

Le plus simple programme Java

SolutionProcessing

p r i n t l n (" S a l u t t o u t l e monde ");

SolutionJava

c l a s s PremierProg{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){

System . o u t . p r i n t l n (" S a l u t t o u t l e monde ") ; }

}

Il faut toujours déclarer une classe, car Java est très orienté objets.

Cependant, on peut utiliser que des méthodes statiques (pas associées à des objets)

La classe sert juste àdonner un nom au programme, et non pas à créer des objets

Le fichier doit avoir le même nom que la classe⊕.java

(5)

Le plus simple programme Java

SolutionProcessing

p r i n t l n (" S a l u t t o u t l e monde ");

SolutionJava

c l a s s PremierProg{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){

System . o u t . p r i n t l n (" S a l u t t o u t l e monde ") ; }

} On déclare une méthode publiqueuniquement si néces-

saire, c. à. d. pour le main et quasiment jamais ailleurs si on a un seul fichier.javatoutes les méthodes sont visibles par défautdans ce fichier

si une méthode est déclarée publique, elle aussi vi- sibles dans tous les autres fichiers

3/21

(6)

Le plus simple programme Java

SolutionProcessing

p r i n t l n (" S a l u t t o u t l e monde ");

SolutionJava

c l a s s PremierProg{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){

System . o u t . p r i n t l n (" S a l u t t o u t l e monde ") ; }

}

Remplacer leprintln(...) de Processing par System.out.println(...), il n’y a pas d’autre choix!

(7)

Le plus simple programme Java

SolutionProcessing

p r i n t l n (" S a l u t t o u t l e monde ");

SolutionJava

c l a s s PremierProg{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){

System . o u t . p r i n t l n (" S a l u t t o u t l e monde ") ; }

}

Conclusion

Beaucoup de mots clés (langage verbeux), mais le programme n’est pas si complèxe, pas d’intéractions entre les mots clés

3/21

(8)

Le plus simple programme Java

SolutionProcessing

p r i n t l n (" S a l u t t o u t l e monde ");

SolutionJava

c l a s s PremierProg{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){

System . o u t . p r i n t l n (" S a l u t t o u t l e monde ") ; }

}

Il faut deux étapes pour lancer : compilation et exécution compilation javac PremierProg.java

→un exécutablebytecodepour la machine virtuellejava exécution java PremierProg

→lance la machine virtuelleJava

(9)

Une 2ème fonction : calculer l’indice de masse corporelle IMC =

kg

mètres2

c l a s s C a l c u l e r I m c{

s t a t i c f l o a t c a l c I m c ( f l o a t kg , f l o a t m){ r e t u r n kg / (m∗m) ;

}

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){ f l o a t poidsKg = 90;

f l o a t t a i l l e C M = 2; / / cm

f l o a t t a i l l e M = t a i l l e C M /100; / / m f l o a t imc = c a l c I m c ( poidsKg , t a i l l e M ); System . o u t . p r i n t l n ( imc ) ;

}

}

! Remplacer chaque floatpar undouble: commande sed undoubleet unfloat2 fois plus grand (en nb de bits) on peut mettretailleM=1.8

4/21

(10)

Une 3ème fonction : la puissance

c l a s s C a l c u l e r P u i s s a n c e{ / / r e n v o y e r x ^n

s t a t i c double puissance (double x , i n t n ){ double p = x;

f o r( i n t i=0;i <n; i ++) / / e s t−ce que p = p ∗ x; / / c ’ e s t b i e n r e t u r n p; / / c o r r e c t ? : }

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){ double puissance5 = puissance ( 2 , 5 ); System . o u t . p r i n t l n ( puissance5 );

}

}

! Remarquez qu’on met staticdevant chaque fonction !

(11)

Plan

1 Les premiers programmes : les mots clés et la compilation

2 Fonctions avancées, lecture clavier

3 Construire ses propres classes et objets, héritage

6/21

(12)

Valeurs minimales et maximales d’un tableau

1 Écrire une fonctionJavapour déterminer la valeur minimale d’un tableau

2 Faire appel à la fonction ci-dessus pour calculer la valeur maximale :

inverser tous les nombres calculer min

inverser tous les nombres

3 Écrire une fonction qui calcule la valeur minimale dans une matrice (tableau de tableaux)

(13)

Valeurs minimales et maximales d’un tableau

1 Écrire une fonctionJavapour déterminer la valeur minimale d’un tableau

2 Faire appel à la fonction ci-dessus pour calculer la valeur maximale :

inverser tous les nombres calculer min

inverser tous les nombres

3 Écrire une fonction qui calcule la valeur minimale dans une matrice (tableau de tableaux)

7/21

(14)

Valeurs minimales et maximales d’un tableau

1 Écrire une fonctionJavapour déterminer la valeur minimale d’un tableau

2 Faire appel à la fonction ci-dessus pour calculer la valeur maximale :

inverser tous les nombres calculer min

inverser tous les nombres

3 Écrire une fonction qui calcule la valeur minimale dans une matrice (tableau de tableaux)

(15)

Les variables globales : déclaration static

Et si on voulait calculer la valeurminimaleetmaximaled’un tableau :

il ne suffit pas un seulreturn

=⇒ on met le résultat dans des variables globalesminetmax il suffit de les déclarerstaticau début du code

c l a s s TabMinEtMax{ s t a t i c i n t min; s t a t i c i n t max;

s t a t i c v o i d c a l c u l e r M i n M a x ( i n t [ ] t ){ . . . . . .

}

Il est aussi possible de créer une classeMinMaxavec deux attributsmin et max et faire calculerMinMax(...) ren- voyer un objet de typeMinMax

8/21

(16)

La racine carré

1 UtiliserMath.sqrt(x), c. à. d. la fonction statique sqrtde la classeMath

2 Écrire notre propre fonctionracine(double x) Utiliser la suite convergente suivante :

rn+1 = rn+rx

n

2 3 Calculer√4

81, implémenter une fonction pour la racine d’ordre 4 !

(17)

La racine carré

1 UtiliserMath.sqrt(x), c. à. d. la fonction statique sqrtde la classeMath

2 Écrire notre propre fonctionracine(double x) Utiliser la suite convergente suivante :

rn+1 = rn+rx

n

2

3 Calculer√4

81, implémenter une fonction pour la racine d’ordre 4 !

9/21

(18)

La racine carré

1 UtiliserMath.sqrt(x), c. à. d. la fonction statique sqrtde la classeMath

2 Écrire notre propre fonctionracine(double x) Utiliser la suite convergente suivante :

rn+1 = rn+rx

n

2

3 Calculer√4

81, implémenter une fonction pour la racine d’ordre 4 !

(19)

Demander à l’utilisateur de saisir x

Il faut utiliser un objet de classeScanner Ce code permet de lire un entier :

j a v a . u t i l . Scanner s ;

s = new j a v a . u t i l . Scanner ( System . i n ) ; i n t x = s . n e x t I n t ( ) ;

On peut lire :

un double s.nextDouble() un mot s.next()

une ligne s.nextLine()

10/21

(20)

Tester le scanner

c l a s s TestScanner{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){ j a v a . u t i l .Scanner s ;

s = new j a v a . u t i l .Scanner( System . i n ); i n t x = s. n e x t I n t ( ) ;

System . o u t . p r i n t l n ( x ) ;

System . o u t . p r i n t l n (s. nextDouble ( ) ); System . o u t . p r i n t l n (s. n e x t ( ) );

System . o u t . p r i n t l n (s. n e x t L i n e ( ) ); }

}

Note :System.outetSystem.infont référence à l’entrée et la sortie par rapport au terminal

(21)

Passer des arguments au programme dans la console

RappelLa fonctionmain(String[] args) reçoit un tableau d’objetsStringcomme argument

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){ . . .

}

Ce tableau deStringreprésenteles arguments passés à la commandejava

java PROGNAME unArgument

Écrire un programme qui fait la somme des entiers passés comme arguments

Integer.parseInt(...)fait la conversion String→int

12/21

(22)

Passer des arguments au programme dans la console

RappelLa fonctionmain(String[] args) reçoit un tableau d’objetsStringcomme argument

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){ . . .

}

Ce tableau deStringreprésenteles arguments passés à la commandejava

java PROGNAME unArgument

Écrire un programme qui fait la somme des entiers passés comme arguments

Integer.parseInt(...)fait la conversion String→int

(23)

Plan

1 Les premiers programmes : les mots clés et la compilation

2 Fonctions avancées, lecture clavier

3 Construire ses propres classes et objets, héritage

13/21

(24)

Rappel notions théoriques de classe et objet

Une classe est unmodèlepour construire des objets

sauf si tous les attributs/méthodes sont statiques: dans ce cas là, on ne construit jamais d’objet de cette classe

Un objet

possède un état constitué de valeurs (attributs)

possède des actions (méthodes) qui peuvent agir sur ce cet état pour le modifier

les méthodes définissent le comportement d’un objet

Un objet est une instance (un exemplaire) d’une classe

(25)

La classe Frac du cours précédent

1 Faire fonctionner la classe sousJavaet tester

Il faut uniquement rendre toString() publique, le reste est identique !

2 Améliorer la méthodesimplifier() Il y a au moins deux solutions

3 FairetoString()affichernumet non pas num/denlorsque den=1

15/21

(26)

La classe Frac du cours précédent

1 Faire fonctionner la classe sousJavaet tester

Il faut uniquement rendre toString() publique, le reste est identique !

2 Améliorer la méthodesimplifier() Il y a au moins deux solutions

3 FairetoString()affichernumet non pas num/denlorsque den=1

(27)

La classe Frac du cours précédent

1 Faire fonctionner la classe sousJavaet tester

Il faut uniquement rendre toString() publique, le reste est identique !

2 Améliorer la méthodesimplifier() Il y a au moins deux solutions

3 FairetoString()affichernumet non pas num/denlorsque den=1

15/21

(28)

L’héritage : classe de base

→ Quel est le résultat du code ci-dessous ?

c l a s s Automobile{

f l o a t v i t e s s e M a x A u t o r o u t e ( ) { r e t u r n 130;

}

f l o a t t e m p s T r a j e t ( f l o a t d i s t a n c e ) {

r e t u r n d i s t a n c e / v i t e s s e M a x A u t o r o u t e ( ) ; }

};

/ / Et dans l e main :

Automobile maVoiture = new Automobile ( ) ; f l o a t temps = maVoiture . t e m p s T r a j e t ( 1 3 0 . 0 ) ; System . o u t . p r i n t l n (" Temps de t r a j e t pour 130

km en v o i t u r e :="+ temps+ " heures . ");

(29)

L’héritage : classe dérivée

→ Quel est le résultat du code ci-dessous ?

c l a s s Bus{

f l o a t v i t e s s e M a x A u t o r o u t e ( ) { r e t u r n 90;

} }

/ / Et dans l e main :

Bus monBus = new Bus ( ) ;

f l o a t temps = monBus . t e m p s T r a j e t ( 1 3 0 . 0 ); System . o u t . p r i n t l n (" Temps de t r a j e t pour 130

km en v o i t u r e :="+ temps+ " heures . ");

Comment peut-onappeler la méthodetempsTrajet?

17/21

(30)

L’héritage : classe dérivée

→ Quel est le résultat du code ci-dessous ?

c l a s s Bus extends Automobile{ f l o a t v i t e s s e M a x A u t o r o u t e ( ) {

r e t u r n 90; }

}

/ / Et dans l e main :

Bus monBus = new Bus ( ) ;

f l o a t temps = monBus . t e m p s T r a j e t ( 1 3 0 . 0 ); System . o u t . p r i n t l n (" Temps de t r a j e t pour 130

km en v o i t u r e :="+ temps+ " heures . ");

Comment peut-onappeler la méthodetempsTrajet? Réponse : Par héritage → la classe Bus hérite toutes les méthodes et tous lesattributsde la classeAutomobile

(31)

Héritage classes Java

Toutes les classes héritentObjectpar défaut

On trouve dans la classeObjectla méthodetoString() qui renvoie l’adresse mémoire de l’objet

On va étudier des classes graphiques. Exemples : JButtonetjCheckBoxhéritentAbstractButton

La doc d’une classe standard est disponible si on cherche le nom de la classe sur Internet

Bonnes Pratiques de Programmation Orienté Objet

1ère lettre d’un nom declasse: Majuscule

1ère lettre d’un nom deméthode/variable/paquetage: minuscule Toute accolade fermante occupe une ligne !

19/21

(32)

Héritage classes Java

Toutes les classes héritentObjectpar défaut

On trouve dans la classeObjectla méthodetoString() qui renvoie l’adresse mémoire de l’objet

On va étudier des classes graphiques. Exemples : JButtonetjCheckBoxhéritentAbstractButton

La doc d’une classe standard est disponible si on cherche le nom de la classe sur Internet

Bonnes Pratiques de Programmation Orienté Objet

1ère lettre d’un nom declasse: Majuscule

1ère lettre d’un nom deméthode/variable/paquetage: minuscule Toute accolade fermante occupe une ligne !

(33)

Autre Classe : quel est le résultat du code ?

c l a s s Compte{ i n t s o l d e;

Compte( ) { / / c o n s t r u c t e u r s o l d e = 0; / / sans arguments }

v o i d a j o u t e r ( i n t montant ){ s o l d e = s o l d e + montant; }

}

Classe Exec{

p u b l i c s t a t i c v o i d main( S t r i n g [ ] args ){ Compte c = new Compte( ) ;

c . a j o u t e r ( 1 0 ); p r i n t l n ( c . s o l d e ) ; }

} 20/21

(34)

Contineur la classe Compte pour :

1 Ajouter un nom de titulaire à la classeCompte

Ajouter une deuxième constructeur qui reçoit comme argu- ment le nom du titulaire

2 Accorder par défaut un crédit de 10 euros 3 Pouvoir retirer de l’argent

4 Pouvoir verser tout l’argent d’un comptec1dans un compte c2

(35)

Contineur la classe Compte pour :

1 Ajouter un nom de titulaire à la classeCompte

Ajouter une deuxième constructeur qui reçoit comme argu- ment le nom du titulaire

2 Accorder par défaut un crédit de 10 euros 3 Pouvoir retirer de l’argent

4 Pouvoir verser tout l’argent d’un comptec1dans un compte c2

21/21

(36)

Contineur la classe Compte pour :

1 Ajouter un nom de titulaire à la classeCompte

Ajouter une deuxième constructeur qui reçoit comme argu- ment le nom du titulaire

2 Accorder par défaut un crédit de 10 euros 3 Pouvoir retirer de l’argent

4 Pouvoir verser tout l’argent d’un comptec1dans un compte c2

(37)

Contineur la classe Compte pour :

1 Ajouter un nom de titulaire à la classeCompte

Ajouter une deuxième constructeur qui reçoit comme argu- ment le nom du titulaire

2 Accorder par défaut un crédit de 10 euros 3 Pouvoir retirer de l’argent

4 Pouvoir verser tout l’argent d’un comptec1dans un compte c2

21/21

Références

Documents relatifs

[r]

3pts Tache 3 : sachant que le congélateur et le téléviseur doivent fonctionner sans arrêt, évaluer le nombre minimum de lampes à éteindre pour utiliser le fer à

Sun détient une licence non exclusive de Xerox sur l’interface d’utilisation graphique Xerox, cette licence couvrant aussi les licenciés de Sun qui mettent en place

Puis, il faut multiplier le résultat de l'étape 1 par la valeur en volt d'un carreau et trouver ainsi la valeur en volt de Um (tension maximale). Sur l'axe des abcisses (l'axe du bas)

[r]

- Le domaine sera petit, car à un moment donné, la température baissera et ce ne sera plus une fonction racine carrée.. - L’image correspond aussi

Pour cela, il a à sa disposition deux planches de longueur 2m et de largeur 1m qui constitueront les côtés latéraux de la maie et une troisième planche de mêmes dimensions

[r]