programmation orientÉe objet et ÉvÉnementielle david vanderhaeghe [email protected]
TRANSCRIPT
![Page 2: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/2.jpg)
Qu'est ce qu'un ordinateur ?
![Page 3: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/3.jpg)
Introduction / rappel
Les ordinateurs ordinent Et c'est tout ! Le reste c'est l'interprétation et le matériel
autour
La programmation nourri l'ordinateur Pour que l'humain lui donne à ordiner
![Page 4: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/4.jpg)
Fonctionnement d'un ordinateur
Un (des) cpu (gpus) De la mémoire (registre, cache, vive, de
masse …) De composant autour qui interprètent
les données et effectue des actions Pleins de conventions pour s'y retrouver
![Page 5: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/5.jpg)
La mémoire
Le CPU déplace des valeurs en mémoire Fait de calculs sur ces valeurs (+ - * / &
| ! ^ …) Mets le résultat dans la mémoire
à une certaine adresse
Un ordinateur applique des fonction sur des données (variables)
![Page 6: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/6.jpg)
mov ax,0A000hmov es,axxor edi, edidb 66h; xor di,dimov al,[coul]mov ah, almov bx, ax
Deux mots d'assembleur
Spécifique à un type de CPU Permet le contrôle de bas niveaux
Commande directement ce que sait faire le CPU
Inutilisable ;)
asm.developpez.com/intro/
![Page 7: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/7.jpg)
Langages de programmation
![Page 8: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/8.jpg)
Langages de programmation
fr.wikipedia.org/wiki/Hello_world
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
%PDF-1.31 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >>endobj
2 0 obj << /Type /Outlines /Count 0 >>endobj
3 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 >>endobj
4 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612 792] /Contents 5 0 R /Resources << /ProcSet 6 0 R /Font << /F1 7 0 R >> >>>>endobj
5 0 obj << /Length 73 >>stream BT /F1 24 Tf 100 100 Td (Hello World) Tj ETendstreamendobj
5 0 obj << /Length 73 >>stream BT /F1 24 Tf 100 100 Td (Hello World) Tj ETendstreamendobj
6 0 obj [/PDF /Text]endobj
7 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /MacRomanEncoding >>endobj
xref0 80000000000 65535 f0000000009 00000 n0000000074 00000 n0000000120 00000 n0000000179 00000 n0000000364 00000 n0000000466 00000 n0000000496 00000 n
trailer << /Size 8 /Root 1 0 R >>startxref625%%EOF
#include <stdio.h> int main(void){ printf("Hello world!\n"); return 0;}
#include <unistd.h> int main(void){
write(1, "Hello world!\n", 13);return 0;
}
![Page 9: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/9.jpg)
Langages et applications
Langage compilé Transformé en code machine par le
compilateur Produit un exécutable, dépendant de
l'architecture Compilé une fois puis diffusé
Langage interprété Code est interprété au moment de
l'exécution Code est directement diffusé
![Page 10: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/10.jpg)
Langage compilé
Le programme peut être très performant La compilation peut prendre le temps
De vérifier D'optimiser
Modification du code → recompiler
![Page 11: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/11.jpg)
Langage interprété
Prend plus de temps à l'exécution Doit être « compilé à la volée »
Flexibilité de changement du code Langage de script (bash, python …)
Indépendant de la cible Du moment que l'interpréteur existe
La distribution se fait en donnant le code Problème de protection du code
![Page 12: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/12.jpg)
Java : entre deux
Code compilé pour une machine virtuelle Le résultat de la compilation est interprété
par une machine virtuelle Proche d'un CPU standard Surcoût en temps d'exécution faible Une seule compilation pour toutes les
architecture Une machine virtuelle pour CHAQUE
architecture
![Page 13: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/13.jpg)
Internet et réseaux
Transfert de données entre ordinateur Architectures différentes Systèmes d'exploitation variés Mode de transmissions hétérogènes
![Page 14: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/14.jpg)
Type de programmation
![Page 15: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/15.jpg)
Programmation procédurale
Permet de décrire des procédures Décrites par les opérations simples Et l'appel d'autres procédures
Le programme principal appel les procédures
![Page 16: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/16.jpg)
Programmation fonctionnelle Décrit l'application de fonction
"comme en math" Pas de changement d'état ni de
mutation de donnée Permet de décrire simplement un
programme compliqué Récursion Fonction en paramètre ...
![Page 17: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/17.jpg)
Programmation impérative
Décrit une séquence d'opérations Recette de cuisine
Chaque opération peut modifier l'état du programme
Affectation Branchement Boucle
![Page 18: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/18.jpg)
Et bien d'autres encore
Extrait de http://people.ku.edu/~nkinners/LangList/Extras/classif.htm
Procedural Language : A language which states how to compute the result of a given problem. This term encompasses both imperative and functional languages.
Imperative Language : A language which operates by a sequence of commands that change the value of data elements. Imperative languages are typified by assignments and iteration.
Declarative Language :A language which operates by making descriptive statements about data, and relations between data. The algorithm is hidden in the semantics of the language. This category encompasses both applicative and logic languages. Examples of declarative features are set comprehensions and pattern-matching statements.
Applicative Language : A language that operates by application of functions to values, with no side effects. A functional language in the broad sense.
Functional Language : In the narrow sense, a functional language is one that operates by use of higher-order functions, building operators that manipulate functions directly without ever appearing to manipulate data. Example: FP.
Definitional Language : An applicative language containing assignments interpreted as definitions. Example: Lucid.
Single Assignment Language :An applicative language using assignments, with the convention that a variable may appear on the left side of an assignment only once within the portion of the program in which it is active.
Dataflow Language :A language suitable for use on a dataflow architecture. Necessary properties include freedom from side effects, and the equivalence of scheduling constraints with data dependencies. Examples: Val, Id, SISAL, Lucid.
Logic Language :A logic language deals with predicates or relationships p(X,Y).
![Page 19: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/19.jpg)
Programmation orienté objet Procédures + données = unité
(encapsulation) Décrite dans une classe
Sous forme de méthodes Et de données membres
Instancié par la création d'objet D'une certaine classe
La communication entre objet se fait par messages Un objet peut appeler une méthode d'un autre
objet
![Page 20: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/20.jpg)
Exemple
positiontitre
couleur
positiontaille
couleur
Fenêtre RectangleAffiche
![Page 21: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/21.jpg)
Pour pouvoir programmer en Java
![Page 22: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/22.jpg)
Syntaxe
Programme composé d'instruction Une instruction
ensemble de mots et se termine par ;x*2+4;
Les commentaires sont délimités par /* commentaire sur une ou plusieurs ligne
*/ // jusqu'à la fin de la ligne /** commentaire de documentation */
![Page 23: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/23.jpg)
Types et déclarations de variables
int x;float y;double z;String s("une chaine de caractères");
![Page 24: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/24.jpg)
Les différents type en JavaType Taille Description
Entier
byte 8 bit Entier octet
short 16 bit Entier court
int 32 bit Entier
long 64 bit Entier long
Réel
float 32 bit réel précision simple
double 64 bit réel précision double
Autre
char 16 bit un caractère Unicode
boolean true ou false valeur booléen
![Page 25: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/25.jpg)
Les classes
Une variable de type classe est une référence
Il faut avoir déclarer la classe Classe que vous créer Classe fournie par une Librairie
class NomDeLaClasse {// declaration de variables membres
int x;float valeurReel;
// declaration/definition de méthodepublic void uneMethode(int param){// variables localesint t = param;x = param+t;}
}
![Page 26: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/26.jpg)
Les classes
• Ensuite pour déclarer une instance• NomDeLaClasse nomDeLObject;
• Et pour le définir• nomDeLObject = new NomDeLaClasse();
• Ceci définit la référence déclarer
• Généralement une class dans un fichier .java
• La fichier porte le nom de la class
![Page 27: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/27.jpg)
Nom de variables
Suite de caractères "unique" Pas un mot clé du langage
byte, short, int, long, float, char, boolean, class for, while, continue, switch, case, break, default extends, implements, void , static, pulic, private …
Par convention Nom de classe commence par majuscule Nom de variables commence par minuscule
![Page 28: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/28.jpg)
Affectation et appel de fonction
int x = 3;int y = 4;int z = x+y;int valeur = fonction( x, y, z );
int valeur = objet.methode( x, y, z );
![Page 29: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/29.jpg)
Les opérateurs
Opérateur sur les nombres Unaire
+ variable- variablevariable++variable –
Binaireop1 + op2; op1 – op2; op1 * op2; op1 / op2;op1 % op2
![Page 30: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/30.jpg)
Opérateur bit à bit
Décalageop1 >> op2
op1 << op2
op1 >>> op2
Logiqueop1 & op2op1 | op2op1 ^ op2~ op
![Page 31: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/31.jpg)
Opérateur logique et comparaison
Sur les booléenop1 && op2 op1 & op2op1 || op2 op1 | op2!op
expression ? op1 : op2
op1 > op2; ou < >= <= == !=op1 instanceof op2 (entre objet et classe)
![Page 32: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/32.jpg)
Un peu de pratique
Hello World en java Définir une classe
class HelloWorld {}
![Page 33: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/33.jpg)
Un peu de pratique
Déclarer/Définir une méthode
class HelloWorld {void printMessage(){
System.out.println("Hello World"); }
}
![Page 34: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/34.jpg)
Un peu de pratique
Déclarer/Définir une méthode appel méthode System
class HelloWorld {void printMessage(){
System.out.println("Hello World"); }
}
![Page 35: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/35.jpg)
Un peu de pratique
Déclarer/Définir une méthode méthode main
class HelloWorld {void printMessage(){
System.out.println("Hello World"); }static void main(Strings [] args){
}}
![Page 36: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/36.jpg)
Un peu de pratique
Appeler une méthode de la classe
class HelloWorld {void printMessage(){
System.out.println("Hello World"); }static void main(Strings [] args){
printMessage();}
}
![Page 37: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/37.jpg)
Un peu de pratique
Appeler une méthode de la classe
class HelloWorld {void printMessage(){
System.out.println("Hello World"); }static void main(Strings [] args){
printMessage();}
}
![Page 38: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/38.jpg)
Librairies de java
Grand nombre de librairies fournie Facilite le développement Les bases pour l'affichage, les interfaces,
le réseaux, les bases de données, la gestion de données …
Difficile de connaître toutes les classes Ne pas hésiter à chercher dans l'aide en
ligne
![Page 39: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/39.jpg)
Eclipse
Un programme en java c'est Un fichier texte (source) un compilateur une machine virtuelle
![Page 40: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/40.jpg)
Eclipse
Un programme en java c'est Un fichier texte (source) un compilateur une machine virtuelle
class HelloWorld {static void main(Strings [] args){
System.out.println("Hello World"); }
}
![Page 41: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/41.jpg)
Eclipse
Environnement de développement Gérer les fichiers Colorer le code Aller aux erreurs de compilation, proposer
les corrections Aller aux erreurs d'exécution Remanier le code (envoyer des mails; faire le café ...)
![Page 42: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/42.jpg)
Eclipse
![Page 43: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/43.jpg)
Eclipse
![Page 44: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/44.jpg)
Eclipse
![Page 45: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/45.jpg)
Eclipse
![Page 46: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/46.jpg)
Eclipse
![Page 47: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/47.jpg)
Eclipse
![Page 48: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/48.jpg)
Eclipse
![Page 49: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/49.jpg)
Eclipse
![Page 50: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/50.jpg)
Eclipse
![Page 51: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/51.jpg)
Eclipse
![Page 52: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/52.jpg)
A vous maintenant
• Mais d’abord pause !
![Page 53: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/53.jpg)
Structures de contrôle
![Page 54: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/54.jpg)
Branchement
if(condition){Instructions;
}else{
Intructions;}
if(true){System.out.println(‘’toujours
vrai’’);}
if(x==0){System.out.println(‘’x egal 0’’);
}
if(x==0){}else if(x==1){}else{}
![Page 55: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/55.jpg)
Branchement
• Pour des variables de type primitif• char, byte, short out int
switch(variable){case valeur1:
instructions;break;
case valeur2:instructions;
break;default:
instructions;}
![Page 56: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/56.jpg)
Boucle
for( initialisation; test; incrementation){
Intruction;}
for( int i=0; i<10; i++){
System.out.println(‘’Compteur ’’+i);}
for(float f=2.0; f<10.0; f=f*f){}
while(test){Intruction;
}
do{instructions;
} while(test);
![Page 57: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/57.jpg)
A vous de jouer
• Créer une nouvelle classe avec méthode main
• Pour chaque point suivant, créer une méthode• A l’aide d’une boucle for
• afficher les entiers de 1 à 10• afficher les multiples de 2.53 inférieur à 50• afficher deux nombre, l’un de 0 à 10 et l’autre de 10 à 0
• Même chose avec une boucle while et do while• Déclarer deux entiers et leur affecter une valeur
• Afficher un message différent suivant quel entier est supérieur
• Tester si l’un est multiple de l’autre
• Imaginer un cas d’utilisation de switch
• Appeler les méthodes dans main pour tester
![Page 58: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/58.jpg)
Portée des variables
• Une variables est connue du programme à partir de sa déclaration
• Jusqu’à la fin du bloc de sa déclaration
• Deux variables déclarer dans un même bloc doivent avoir de noms différents
• Une variable dans un sous bloc peut masquer une variable d’un bloc supérieur (si même nom)
![Page 59: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/59.jpg)
Opérateur de conversion
• Pour convertir un type en un autre• float f =10.0;• int i = (int)f;• float g=(float)i; //facultatif
![Page 60: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/60.jpg)
Tableaux (ou vecteur)
• Déclaration avec []
• Allocation avec initialisation• int tab[] = {1,2,3,4};
• Allocation avec new• int tab[];• tab = new int[10];• tab[0]= 1;• double tab[][] = new tab[10][20];
![Page 61: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/61.jpg)
Encore un exercice
• Créer deux tableaux de 5 entiers (disons t1 et t2)
• Créer deux tableaux de 5 float (t3 et t4)
• Créer deux tableaux de 5 double (t5 et t6)
• Affecter 1000 à la première case des tableaux entier• Affecter 1 à la première case des autres tableaux
• Remplissez t1 tel que t1[i] = 10*t1[i-1];• Remplissez t2 tel que t2[i] = t2[i-1]/10;• Remplissez t3 tel que t3[i] = t3[i-1]*10000;• Remplissez t4 tel que t4[i] = t4[i-1]/10000;• Afficher le contenu des tableaux
![Page 62: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/62.jpg)
Suite de l’exercice
• Changer la taille des tableaux pour contenir 20 données
• Que ce passe-t-il ?
• Essayer aussi avec short et byte
• Créer un tableau 3 dimension de 10000 double
• Que ce passe-t-il ?
![Page 63: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/63.jpg)
Programmation orienté objet
![Page 64: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/64.jpg)
Les objets
L'encapsulation Modularité Sécurité
Héritage Réutilisation du code
Généricité Traitement abstrait de donnée
![Page 65: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/65.jpg)
Héritage
• Si une classe est presque comme une autre• Réutilisation du code• Hiérarchisation du code
• On parle de classe mère et classe fille• Les méthodes et données membres sont
héritéesForme géométrique
- affiche
Cercle
-position -centre
Rectangle
-position -largeur-longeur
![Page 66: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/66.jpg)
Héritage
• Penser l’héritage comme une relation est-un• Un rectangle est une forme géométrique• Tout ce qui est vrai pour une forme
géométrique l’est pour un rectangle• Tout ce que l’on peut faire avec une forme
géométrique, on peut le faire avec un rectangle
• Une référence d’une classe peut contenir un objet de classe héritée• Cela permet le traitement générique des
données
![Page 67: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/67.jpg)
En Java
• Visibilité d’une classe
• Modificateurs :
Modificateurs class NomDeLaClasse [extends ClasseMere] [implements NomInterface] {…}
Modificateur Signification
abstract Des méthodes sont abstraite : sans définition. La classe ne peux être instancier, elle sert seulement de classe mère.
final La classe ne peut servir de classe mère
private La classe est locale au fichier ou elle est définie
public La classe est accessible partout
![Page 68: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/68.jpg)
En Java
• extends : spécifie la classe mère• Au plus une classe mère• Une classe fille peut surchargé (redefinir)
un méthode de la classe fille (polymorphisme)
• implements : définie des interface• Une interface est un ensemble de
déclaration de méthode• Cela permets « l’héritage multiple »
![Page 69: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/69.jpg)
Modificateurs class NomDeLaClasse [extends ClasseMere] [implements NomInterface]{Modificateur type nom;Modificateur typeRetour nom(typeParam1, …);}
Visibilité des données membres
Modificateur Signification
par defaut Visible par toutes les classes du même package
public Visible par toutes les autres classes
protected Modificateur de méthode : visible par les classes du même package et les classes héritées
private Visibles qu’a l’intérieur de la classe
static Membre partagé par toutes les instances. Méthode qui n’agit que sur les membres static, pas besoin d’avoir un objet pour l’utiliser.
final Le membre ne peut être définie qu’une fois. La méthode ne peut être redefinie
![Page 70: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/70.jpg)
Interface en Java
• Toutes les méthodes sont implicitement abstraites
• Les membres sont implicitement static et final
• Toutes classe qui implemente une interface doit définir les méthodes de l’interface
[public/package] interface NomInterface [extends NomInterface, AutreInterface] { // méthode// champts static}
![Page 71: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/71.jpg)
Exercice
• Définir une classe People• Avec les données membres
• String name; String firstName;
• Avec une méthode printInformation qui affiche le nom et le prénom
• Tester cette méthode en instanciant un objet de type personne
• Définir une classe Student qui hérite de People• Avec un numéro étudiant• Redéfinir la méthode printInformation
• Définir une classe Vehicule• Avec un membre People pour le conducteur et un entier pour
le kilometrage• Définir la méthode printInformation
![Page 72: PROGRAMMATION ORIENTÉE OBJET ET ÉVÉNEMENTIELLE David Vanderhaeghe david.vanderhaeghe@labri.fr](https://reader035.vdocuments.mx/reader035/viewer/2022062303/551d9d94497959293b8cb276/html5/thumbnails/72.jpg)
Exercice suite
• Utiliser la méthode de People dans Student• Pour appeler une méthode de la classe mère on utiliser
super.nomDeLaMethode
• Instancier un People (professeur par exemple)
• Instancier un étudiant (vous par exemple)
• Instancier deux véhicules (voitureDeSport et superCinq par exemple)
• Le conducteur de la superCinq est l’étudiant
• Le conducteur de la voitureDeSport est le professeur
• Tester vos instanciations
• Définisser une interface InformationPrint avec une méthode printInformation• Modifier les classes définies pour qu’elle implémente la nouvelle
interface• Créer un tableau de InformationPrint et affecter à ce tableau les object
créés.• Appeler la méthode printInformation pour chaque élément du tableau