Upload
damien-pujol
View
109
Download
1
Embed Size (px)
Citation preview
1
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Java : Programmation Impérative
Paradigme impératifAlgorithmique simpleDécoupage fonctionnel
•Qu’est-ce qu’ un programme informatique ? / un langage de programmation ? / un paradigme de programmation ?•Le paradigme impératifinstructions, séquence, états, variables d’état, affectation •Algorithmique simple (Java noyau C)
o instructions de contrôle: tests (if, ?:, switch), boucles (for, while, do / break, continue, return), bloc d’instructions (simples, imbriqués)
o Types primitifs: noms, codage, opérateurs + librairie Math, typage fort, déclaration de variables, initialisation, constantes de type (2f, 0xA2, …)
o Tableaux de types simples: déclaration (types), initialisation (notation accolades), manipulation (notation crochets: itération, affectation, lecture)
o Chaînes de caractères (Java): String avec construction, déclaration et manipulations simples
•Découpage fonctionnel o Fonctions: méthodes statiques, signature, paramètres formels, application, paramètres
effectifs (passage par valeurs)o Raffinement fonctionnel: granularité générale (modules, fonction, instruction, …),
raffinement
Résumé du cours précédent (I11)
Résumé du cours précédent (I11)
2Qu’est-ce qu’un programme informatique ?
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Mais, pour en donner une vision quelque peu concrète et usuelle, on peut voir un programme comme ce qui doit être exécuté par un ordinateur pour :•soit transformer des données d’un état initial vers un état final,•soit faire transiter des données d’un endroit à un autre,•soit les deux à la fois.
oDéf.3: un programme informatique est un ensemble d’instructions, rédigées pour qu’un ordinateur puisse, à l’aide de ses informations mémorisées, résoudre un problème donné. [Petit Robert]
Qu’est-ce qu’un programme informatique ?oDéf.1: un programme informatique est une séquence d'instructions sous forme compréhensible par l'ordinateur (dite binaire), décrivant une tâche à accomplir par celui-ci.[http://www.linux-france.org/article/kafkafr/node59.html]
oDéf.2: un programme informatique est une liste d'instructions, rédigée par un programmeur, sans laquelle un ordinateur ne saurait rien faire d'autre que rouiller. [http://rad2000.free.fr/glosntci.htm]
3Exemple de programme informatique
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
4 Qu’est-ce qu’un paradigme de programmation ?
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Qu’est-ce qu’un paradigme de programmation ?oDéf.: Un paradigme de programmation est un style fondamental de programmation informatique qui traite de la manière dont les solutions aux problèmes doivent être formulées dans un langage de programmation(à comparer à la méthodologie, qui est une manière de résoudre des problèmes spécifiques de génie logiciel).[http://fr.wikipedia.org/wiki/Paradigme_%28programmation%29].
Un paradigme de programmation conditionne la vision que le développeur se fera de l’exécution de son programme.Il en existe de nombreux. Par exemple, les paradigmes :
5 Qu’est-ce qu’un paradigme de programmation ?
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
6Qu’est-ce que le paradigme impératif ?
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Qu’est-ce que le paradigme impératif ?oDéf.: Le paradigme impératif est un paradigme de programmation qui repose sur trois notions principales que sont :
• celle de séquence d’instructions,• de variables mutables,• et d’affectation.
7Algorithmique simple
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Qu’est-ce que l’algorithmiqueoDéf.: L’algorithmique est l’ensemble des instructions permettant de réaliser un traitement recherché sur des données. En paradigme impératif, c’est une séquence d’instructions.
Les ensembles suivants d’instructions sont équivalents :
boucles (for / while / do) ou récursivité (appels récursifs)
8Qu’est-ce que le découpage fonctionnel ?
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Qu’est-ce que le découpage fonctionnel ?oDéf.: Le découpage fonctionnel consiste à morceler un traitement en plusieurs parties fonctionnelles (ou méthodes en O-O).
9Objectifs de ce cours (I21)
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Ce cours (I21)Ce cours (I21)
• Classes et objets simples sans méthode
• Aspects dynamiques : le « garbage collector »
• Méthodes d’instance simples
• Connaissance de base de classes de l’API Java
• Méthodes d’instance spéciales
• Propriétés de classes : attributs et méthodes de classes
• Les tableaux d’objets versus les types ensemblistes ArrayList<E> et TreeMap<K,V> de Java
• Premiers éléments de conception logicielle
• La notion de package
• Prolongement : les classes comme types abstraits
10Comment réaliser le clavier de cette calculatrice ?
Classes et objets simples : exemple
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Il faudrait disposer de boutons tels que :
⇛ chaque bouton soit différent des autres par :sa légende, sa couleur, sa position et sa taille...⇛ mais que tous possèdent :une légende, une couleur, des coordonnées, une largeur et une hauteur...
11Classes et objets simples : exemples (1)
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Classe DOMINO
Classe BOUTON
Classe MAISON
Classe PIONClasse
POISSON
Classe LOTO
Classe LIVRE
Classe BILLET
Classe ACROBATIE
12Classes et objets simples : exemples (2)
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
1 couleur1 formen trous
Classes & Objets
ClasseDOMINO
ClasseBOUTON
ClassePION
ClassePOISSON
ClasseLOTO
ClasseLIVRE
ClasseBILLET Classe
ACROBATIE
2 marques 1 couleur1 forme1 valeur
n lignesm colonnesn*m valeursn*m positions
1 couleur1 espèce1 nourriture
1 pays1 valeur1 nom de
monnaie
1 titre1 auteurn pages
1 nom de figure
n acrobates
Descripteurs des attributs
des objets
Instances particulières
valuées
1 objet = 1 instance de classe
Objets BOUTON Objets DOMINO Objets PION
Objets LOTO
Objets POISSON
Un objetACROBATIEObjets LIVRE
Objets BILLET
13Classes et objets simples : code de classe (1)
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Classes & Objets
Descripteurs des attributs
des objets
Instances particulières
valuées
1 objet = 1 instance de classe
/** Classe représentant un domino * avec ses 2 marques. */class Domino { // Attributs communs // à tous les objets // (données propres) int m1; // marque 1 int m2; // marque 2
// ...à suivre...}
un domino (2,5)
m1 = 2m2 = 5
un domino (3,4)
m1 = 3m2 = 4
un domino (2,5)
m1 = 2m2 = 5
un domino (6,6)
m1 = 6m2 = 6
Déclarations non statiqueDéclarations non statique
14Constructeur d’objets (détail 1)
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
La signature des construc-
teurs estparticulière :
elle n’admet
pas de type de retour !
La signature des construc-
teurs estparticulière :
elle n’admet
pas de type de retour !
Déclaration « public » seulement et non plus « public
static » !
Déclaration « public » seulement et non plus « public
static » !
15Constructeur d’objets (détail 2)
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Dès l’entrée dans le constructeur, le futur objet a déjà un emplacement mémoire qui lui est réservé. Pour valuer l’objet, le constructeur doit donc référencer cet espace mémoire
MAIS il ne le connaît pas directement ! Pour cela, Java lui fournit la variable spéciale « this » (dite d’auto-référencement).
Notation pointée habituelleNotation pointée habituelle
16Constructeur d’objets (détail 3)
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
MAIS on peut aussi vouloir construire des dominos selon d’autres schémas.
Par exemples :o un domino doubleo un domino par défaut.
17Construction d’objet : new
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
La classe étant maintenant finalisée, il ne reste qu’à construire des dominos !
class MainDominos { /** Construction de dominos */ public static void main(String[] args) { Domino d1 = new Domino(2,5); Domino d2 = new Domino(3,4); Domino d3 = new Domino(6); Domino d4 = new Domino(2,5); // Faire quelque chose des dominos... if ( d4.m1!=d4.m2 ) d4.m1 = d4.m2; }}
domino d1
m1 = 2m2 = 5
domino d2
m1 = 3m2 = 4
domino d3
m1 = 6m2 = 6
domino d4
m1 = 2m2 = 5d1 et d4 sont des objets différents !d1 et d4 sont des objets différents !
18Accès aux attributs des objets : OID versus this
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
this:Domino
d4: Domino
m1 = 2m2 = 5
Visionexterne
Visioninterne
En de
hors
de l’
obje
t,on
util
isel’o
bjet
Dan
sl’o
bjet
,on
"es
t"
l’obj
et
classe MainDominos
+$ Main(String[])
classe Domino
m1 : intm2 : int
+Domino(int,int)+Domino(int)+Domino()
+ = public$ = static
19
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Classes et objets simples : VISION EXTERNE
classe MainDominos
Quand le code en cours d’exécution se trouve
Un domino
m1 = 2m2 = 5
Un domino
m1 = 3m2 = 4
d2d4
Visionexterne
+ = public$ = static
20
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Classes et objets simples: VISION INTERNE
classe Domino
m1 : intm2 : int
Quand le code en cours d’exécution se trouve
Dominos déjà construits
m1 = 3m2 = 4
Visioninterne
+ = public
21
Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde
Acta est fabula* * « La pièce est jouée. » On annonçait ainsi la fin de la représentation dans le théâtre antique.