41
Programmation Orientée Objet Introduction à Java Frédéric Mallet http://deptinfo.unice.fr/~fmallet/ F. Mallet POO 1 20122013

Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Introduction à Java

Frédéric Mallet

http://deptinfo.unice.fr/~fmallet/

F. Mallet ‐ POO 12012‐2013

Page 2: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Organisation du coursVolume Horaire 12*1h30 de cours 12*1h30 de TD machine

Evaluation Contrôle 1 (mi‐parcours) : 35% Contrôle 2 (fin du semestre) : 35% Note de TD : 30%

F. Mallet ‐ POO 22012‐2013

Page 3: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Bibliographie et webographie« Programmer en Java », C. Delannoy, Eyrolles 2012« Pensez en java », B. Eckel, http://pensezenjava.free.fr/Tutoriel Oracle, http://docs.oracle.com/javase/tutorial/

API Java Standard Edition 7, http://docs.oracle.com/javase/7/docs/api/

« Informatique Industrielle et Java », F. Mallet et            F. Boéri, Dunod 2003

F. Mallet ‐ POO 32012‐2013

Page 4: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Plan du coursLes basesPolymorphisme: héritage et interfacesExceptionsCollectionsGénéricitéInterface graphique (Swing)Entrées‐sortiesCompléments sur le langage

F. Mallet ‐ POO 42012‐2013

Page 5: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Les basesObjectifs Définir la programmation orientée objet

• Historique• Avantages

Notions essentielles Environnement de développement

F. Mallet ‐ POO 52012‐2013

Page 6: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

La programmation impérativeProgrammation concevoir (algorithme) et réaliser (programme) pour une exécution automatique

Algorithme

Impératif: succession d’ordres• Pour calculer le maximum, je parcours les éléments un à un et je les compare à l’élément supposé maximum

Déclaratif• max(T) = { m | t  T, t m }

2012-2013 F. Mallet - POO 6

Page 7: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 7

Exemple de la factorielle Impératif

Itératiflong factorielle(int n) {long res = 1;for(int i = 2; i<n; i++) {res = res * i;

}return res;

}

Récursiflong factorielle(int n) {if(n==0) return 1;return n*factorielle(n-1);

}

Déclaratif Fonctionnel / Applicatif

(factorielle (n) (fac n 1))(fac (n acc)((zero? n) acc)(fac (- n 1) (* n acc))

Logiquefactoriel(0,1):-!.

factoriel(N,T):-N1 is N-1,factoriel(N1,T1),T is T1*N.

Page 8: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 8

La Programmation Orientée‐Objet

La POO guide la conception par Un ensemble de concepts

• abstraction, modularité, encapsulation, polymorphisme

Des langages et des outils qui supportent ces concepts• Classification vs. prototype• Héritage (multiple)• Typage : fort/faible, explicite/inféré

Ses forces (supposées) Reflète plus finement les objets du monde réel

• Du code (plus) facile à maintenir• Plus stable : un changement s’applique à un sous‐système facile à identifié et isolé du reste du système

Page 9: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Système de gestion d’un lycée

Objets Personne

Etudiant, enseignant, principal, secrétaire

Diplôme Année, matière, parcours

Bulletin Notes Coefficients

Fonctions Calculer la moyenne Calculer les taux 

d’encadrement Calculer le nombre de 

redoublants Calculer le taux de réussite 

au baccalauréat

2012-2013 F. Mallet - POO 9

Page 10: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 10

Historique Simula 61‐67 : Dahl et Nygaard http://www.simula.no

Smalltalk 72 : A. Kay http://www.smalltalk.org

C++ 81‐86 : Stroustrup Eiffel 85 : B. Meyer http://www.eiffel.com

Java 94‐95 : J. Gosling/Sun http://java.sun.com

Ruby 95 : Y. "Matz" Matsumoto  http://www.ruby‐lang.org

C# 2000 :  Microsoft http://www.learn‐c‐sharp.com

Turing Award 2001 à Dahl et Nygaard 'for their role in the invention of OOP, the most widely used

programming model today'. 

Page 11: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Les basesObjectifs Définir la programmation orientée objet Notions essentielles

• Type, Classe/Objet, instanciation• Variable, Référence• Champ/attribut, méthode

Environnement de développement

F. Mallet ‐ POO 112012‐2013

Page 12: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 12

Types de données (1/2)Les objets Java représentent Les objets du système modélisé

• Une personne (nom, prénom, date de naissance…)• Des formes géométriques (triangle, cercle, …)• Des portes logiques (et, ou, inverseur, mux, …)• Des bases de données et fichiers (images, texte, son, vidéo…)

Page 13: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 13

Types de données (2/2)Le type encode les données Domaine de valeurs Opérations autorisées (arithmétiques, booléennes…)

On distingue Types primitifs (caractères, entiers, réels, booléens) Types composés

• Image = ensemble de pixels de couleur• Couleur = Rouge + Vert + Bleu

Page 14: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 14

Valeurs numériquesChiffres numériques : BInary digiT = BIT Signaux électriques encodés = valeurs logiques Binaire: 2 valeurs logiques (0 et 1)

Ensembles finis: encodés sur plusieurs BITs 1 octet = 8 bits (28 = 256 valeurs logiques)  1 mot = 32 bits (232 valeurs logiques)

Ensembles infinis ? Entiers naturels, nombres réels, …

Page 15: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 15

Type primitif booleanDomaine de valeurs: vrai ou faux {true, false}

Opérations autorisées Affectation =

Comparaison ==, != Opérations booléennes &&, ||, !

Exemples boolean estVisible = true;

if (estVisible) …

Page 16: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 16

Type primitif charDomaine de valeurs: Unicode 16 bits Code ASCII (7 bits: 128 caractères) Code ANSI (8 bits, ISO‐latin‐1, ISO‐8859‐1)

Opérations autorisées Affectation =

Comparaison ==, !=

Exemples char c = 'c'; // code ASCII 99

c = '\u00e9'; // code unicode 00e9 => é

Page 17: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 17

Nombres entiers relatifs  Domaine de valeurs

8 bits byte [‐128,127] 16 bits short [‐32768, 32767] 32 bits int [‐231, 231‐1] 64 bits long [‐263, 263‐1] 0l

Opérations autorisées Affectation =

Comparaison ==, != Opérations arithmétiques +, -, *, /, % (int, long) Opérations binaires &, |, ~, <<, >> (int, long)

Division entière: 23 = 3 * 7 + 2 / quotient de la division entière 23/7 → 3 % reste de la division entière 23%7 → 2 23 / 0  Erreur !

Page 18: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 18

Nombres approchés  Domaine de valeurs

32 bits float ?? 12.5f

64 bits double ?? -12.5, 1e-23

Opérations autorisées Affectation =

Comparaison ==, != Opérations arithmétiques +, -, *, / Opérations binaires &, |, ~, <<, >>

Particularités Division approchée: 23.0 / 0 → +∞

Page 19: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 19

Nombres approchés – IEEE 754Codage sur 32 bits => 232 valeurs Complément à 2 (int)  [‐231, 231‐1] Virgule flottante  (float)   [‐2128, 2128]

Signe Exposant Mantisse Nombre représentéS E=]0,255[ M

S 0 >00 0 0 +01 0 0 -0- 255 >0 NaN0 255 01 255 0

(-1)Sx2E-127x(1,M)2

(-1)Sx2-126x(0,M)2

+Not a Number !

Page 20: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 20

VariableCase de la mémoire Nom (identifiant): cercle, nom2, _1, … Type : primitif ou composé Valeur : dans le domaine défini par le type

• Change au cours du programme (#constante)

Déclaration int premiere;

Initialisation premiere = 12;

Utilisation premiere = premiere + 1;

Obligatoire: initialisation avant utilisation !

Page 21: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 21

Affectation =Pour donner/forcer une valeur à une variable <variable> = <expression>;

Asymétrique L’expression est évaluée puis la variable est affectée à (prend comme valeur) la valeur calculée

Exemples premiere = 12 + 6 / 5 * 5;

premiere = premiere * 2 + 1;

premiere = Math.max(12, premiere);

Page 22: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 22

Affectations combinées +=Incrémente une variable <variable> += <expression>;

Attention Surchargé pour tous les types numériques

• byte, short, int, long, float, double Différent d’une addition

• byte b = 127;• b = b + b; b += b

Variantes -=, *=, /=, <<=, >>=, &=, |= b++, ++b

Page 23: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 23

Classe = Type composé Types primitifs normalisés par le langage

boolean, char, byte, short, int, long, float, double

Composition => champs/propriétés (nom + type) Couleur : rouge (8 bits) + vert (8 bits) + bleu (8 bits) Image : ensemble de points de couleur Nom : séquence/chaîne de caractères Date : ?

Compromis espace mémoire/temps de calcul Couleur : RGB vs. YUV Nombre complexe:  c = re + i.im

ou c = z.ei.θ

Page 24: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 24

Classe: encodage Couleurclass CouleurRGB {

byte rouge;byte vert;byte bleu;

}

class CouleurYUV {byte luminance;byte chrominanceRouge;byte chrominanceBleue;

}

Complexeclass ComplexeCartesien {

double reelle;double imaginaire;

}

class ComplexePolaire {double module;double argument;

}

Page 25: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 25

c2

Objet = instance d’une classeType  → valeurs → variables Classe → objets → références

Complexe c1; // référencec1 = new Complexe(1, -1);

Complexe c2; // référencec2 = new Complexe(2, 0);

c1

Page 26: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 26

Méthode = opération sur les objetsNorme d’un complexeclass ComplexeCartesien {double re;double im;

double norme () {return re*re+im*im;

}

double argument () {return Math.atan2(im, re);

}}

class ComplexePolaire {double module;double argument;

double norme() {return module*module;

}

double argument() {return argument;

}}

Page 27: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 27

Notation pointéePour accéder aux membres d’un objet Membre = champs + méthodes

Exemple Complexe c1 = new Complexe();

c1.reelle désigne le champ reelle de c1 c1.norme() désigne la méthode norme de c1

Page 28: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 28

Méthodes et paramètresDonnées supplémentaires Le calcul de la norme nécessite seulement la valeur de ‘reelle’ et de ‘imaginaire’

Certaines méthodes nécessitent des paramètres• Signature

int addition(int x, int y);

• Corpsint addition(int x, int y) {return x + y ;

}

Page 29: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

2012-2013 F. Mallet - POO 29

Classe Moyenneclass Moyenne { // bloc de déclaration de classe/** Somme des notes obtenues */int notes = 0 ; /** Nombre de notes obtenues */int nombreDeNotes = 0 ;

/** Ajoute une note à la moyenne* @param note nouvelle note obtenue */void ajouteNote (int note) {

notes += note;nombreDeNotes += 1;

}

/** @return moyenne des notes */double calculMoyenne() {return ((double)notes) / nombreDeNotes ;

}}

Page 30: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Classe StringClasse qui représente une séquence de caractères Classe spéciale (utilisation très fréquente)

• Pas besoin d’utiliser new pour créer des instancesString str = "Un example!";

• Les objets sont immutables (on ne peut pas les modifier)L’expression "rou"+"ge" fait intervenir 3 objets différents

Concaténationint x = 20, y = 40;

"Je place " + x + " euros." "Je place 20 euros."x + y + " euros sont placés." "60 euros sont placés.""Je place " + x + y "Je place 2040"

2012‐2013 F. Mallet ‐ POO 30

Page 31: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Vocabulaire

2012-2013 F. Mallet - POO 31

121

Page 32: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Les basesObjectifs Définir la programmation orientée objet Notions essentielles Environnement de développement

• Java Development Kit (JDK)• Compilation, interprétation, machine virtuelle• Méthode main

F. Mallet ‐ POO 322012‐2013

Page 33: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

CompilateurL’ordinateur (son processeur) ne comprend pas le code Java (code source)

Un interpréteur interprète directement le code source (langage interprété)

Le compilateur traduit (compile) le code source Vers du code binaire natif (langage compilé)

• Spécifique à un processeur donné• Spécifique au système d’exploitation utilisé

Vers un langage neutre (ex: bytecode)• Ce langage neutre est alors interprété par la machine virtuelle java(Java Virtual Machine ‐ JVM) 

2012‐2013 F. Mallet ‐ POO 33

Page 34: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Processeur

OS

JREAPI

Processus de compilation en Java

2012‐2013 F. Mallet ‐ POO 34

Test.javaFichier source

javac Test.javaCompilation(JDK)

Test.classbytecode java Test

interprétation

JRE 7.0

Windows, Mac, Linux

Intel, AMD, ARM

Write once, Run everywhere

Page 35: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Méthode main – java TestTest.java:

Moyenne e = new Moyenne();

e.ajouterNote(8);e.ajouterNote(18);e.ajouterNote(12);

double m = e.calculMoyenne();

Moyenne.java:

class Moyenne {int notes = 0 ; int nombreDeNotes = 0 ;

void ajouteNote (int note) {notes += note;nombreDeNotes += 1;

}

double calculMoyenne() {return ((double)notes) /

nombreDeNotes ;}

}

2012‐2013 F. Mallet ‐ POO 35

Page 36: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Méthode main – java TestTest.java:

class Test {

static public void main(String[] args) {Moyenne e = new Moyenne();

e.ajouterNote(8);e.ajouterNote(18);e.ajouterNote(12);

double m = e.calculMoyenne();

System.out.println("Moyenne="+m);}

}

Moyenne.java:

class Moyenne {int notes = 0 ; int nombreDeNotes = 0 ;

void ajouteNote (int note) {notes += note;nombreDeNotes += 1;

}

double calculMoyenne() {return ((double)notes) /

nombreDeNotes ;}

}

2012‐2013 F. Mallet ‐ POO 36

Page 37: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Méthode main – java TestTest.java:

class Test {

static public void main(String[] args) {Moyenne e = new Moyenne();

e.ajouterNote(8);e.ajouterNote(18);e.ajouterNote(12);

double m = e.calculMoyenne();

System.out.println("Moyenne="+m);}

}

> dir214 Moyenne.java229 Test.java> javac Test.java> dir411 Moyenne.class214 Moyenne.java744 Test.class229 Test.java>  java TestMoyenne=12.666666666666666

2012‐2013 F. Mallet ‐ POO 37

Page 38: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

Processeur

OS

Navigateur

JREAPI

Processus de compilation en Java

2012‐2013 F. Mallet ‐ POO 38

Test.javaFichier source

javac Test.javaCompilation(JDK)

Test.classbytecode appletviewer Test

interprétation

JRE 7.0

Mozilla, IE, OperaWrite once, Run everywhere

Page 39: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

appletviewer Test.htmlTest.java:

public class Test extends Applet {

public void paint(Graphics g) {Moyenne e = new Moyenne();

e.ajouterNote(8);e.ajouterNote(18);e.ajouterNote(12);

double m = e.calculMoyenne();

g.drawString("Moyenne="+m, 10, 10);}

}

Moyenne.java:

class Moyenne {int notes = 0 ; int nombreDeNotes = 0 ;

void ajouteNote (int note) {notes += note;nombreDeNotes += 1;

}

double calculMoyenne() {return ((double)notes) /

nombreDeNotes ;}

}

2012‐2013 F. Mallet ‐ POO 39

Page 40: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

appletviewer Test.htmlTest.java:

public class Test extends Applet {

public void paint(Graphics g) {Moyenne e = new Moyenne();

e.ajouterNote(8);e.ajouterNote(18);e.ajouterNote(12);

double m = e.calculMoyenne();

g.drawString("Moyenne="+m, 10, 10);}

}

Test.html:

<object width="200" height="100"><param name="code"

value="Test.class"></object>

2012‐2013 F. Mallet ‐ POO 40

Page 41: Programmation Orientée bjet - LISICverel/TEACHING/12-13/... · 2020. 9. 3. · Programmation Orientée Objet 2012-2013 F. Mallet - POO 8 La Programmation Orientée‐Objet La POOguide

Programmation Orientée Objet

appletviewer Test.htmlTest.java:

public class Test extends Applet {

public void paint(Graphics g) {Moyenne e = new Moyenne();

e.ajouterNote(8);e.ajouterNote(18);e.ajouterNote(12);

double m = e.calculMoyenne();

g.drawString("Moyenne="+m, 10, 10);}

}

Test.html:

<object width="200" height="100"><param name="code"

value="Test.class"></object>

2012‐2013 F. Mallet ‐ POO 41

> javac Test.java> dir411 Moyenne.class214 Moyenne.java702 Test.class92 Test.html271 Test.java>  appletviewer Test.html