Ch Jaillet (URCA) - Info0201 [ L1 INFO et MATH ] 14/01/2017
1
Info0201
Introduction à la programmation orientée objet
Chapitre 1 : POO - Introduction
1. Objet ? un exemple
2. Langage orienté objet
3. La vie des objets
4. Java
Ch Jaillet + J Jonquet, Fl Mazière, C Rabat
URCA > UFR Sciences > Dept Maths, Méca, Info
christophe.jaillet@univ-reims.fr
http://cosy.univ-reims.fr/~cjaillet
Ch Jaillet
Janv. 2017
0. Préambule
Info0101 : objectif = algorithmique
On « pense » traitement
fonctions + procédures
Classe = moyen d’exécuter un code (tester un algo)
main, qui appelle des fonctions/procédures
NB : une seule classe
Info0201 : objectif = données
On « pense » données
Les données caractérisant un élément
NB : lorsque les éléments sont structurés
Classe = description des données (de la structure d’une catégorie
d’éléments)
On crée des éléments ; on agit avec
Il peut donc y avoir des traitements (bien sûr !) : des traitements
sur les données
2
1. Objet ? Un exemple
Exemple ?
En classe de 2
nde
, on étudie les vecteurs
Pour commencer on ne s’intéresse qu’à la constitution d’un
vecteur
Ensuite on crée des vecteurs ; on s’en sert
Puis on définit des règles
Pour les construire :
à partir de deux réels, à partir de deux points, ….
Pour les utiliser :
addition de vecteurs, norme d’un vecteur, …
3
1. Objet ? Un exemple
Modèle ?
Fixons les choses : un vecteur c’est ….
Un nom
Deux valeurs
Types :
Le nom : une chaîne de caractères
Les valeurs : des réels
Noms des données caractérisant un élément
Le nom : « nom »
Les deux valeurs : « abscisse » et « ordonnée »
ça vous va ?
nom : ’’u’’
u (3.5 ; -2.6) pourrait être représenté par abscisse : 3.5
ordonnée : -2.6
4
Ch Jaillet (URCA) - Info0201 [ L1 INFO et MATH ] 14/01/2017
2
1. Objet ? Un exemple
Modélisation ?
Nom des éléments : « Vecteur »
Définition :
nom : chaîne de caractères
Vecteur = abscisse : réel
ordonnée : réel
Code Java
Nom donné aux éléments
Puis leurs caractéristiques
class Vecteur {
String nom;
double abscisse;
double ordonnee;
}
class Vecteur {
}
5
1. Objet ? Un exemple
Modélisation ?
Un vecteur : une variable
v1 : Vecteur
Le nom de ce vecteur
(on veut que ça soit ’’u’’)
v1.nom ’’u’’
Fixons ses coordonnées
v1.abscisse 3.5
v1.ordonnee -2.6
// declaration de la variable
Vecteur v1;
v1.nom = ’’u’’;
v1.abscisse = 3.5;
v1.ordonnee = -2.6;
IL MANQUE QUELQUE
CHOSE ICI !!
Code Java
6
1. Objet ? Un exemple
Ce qu’il manque ? Voyons la représentation mémoire
Avant
// declaration de la variable
Vecteur v1;
v1.nom = ’’u’’;
v1.abscisse = 3.5;
v1.ordonnee = -2.6;
Après
v1 ?
(Vecteur)
nom ''u''
(String) String
ordonnee -2.6
Vecteur
abscisse 3.5
création de l’objet
+ « le tenir »
avec la variable
7
// instanciation
v1 = new Vecteur();
nom ''u''
(String) String
v1
(Vecteur)
abscisse 3.5
ordonnee -2.6
Vecteur
// instanciation
v1 = new Vecteur();
1. Objet ? Un exemple
Codes à ce stade
Définition du nouveau type, Vecteur
class Vecteur {
// 1. les donnees qui caracterisent les objets
String nom;
double abscisse;
double ordonnee;
} // fin de la classe Vecteur
8
// 2. construction, minimaliste
public Vecteur() {
// ne fait rien de special
}
Ch Jaillet (URCA) - Info0201 [ L1 INFO et MATH ] 14/01/2017
3
1. Objet ? Un exemple
Codes à ce stade
Utilisation (exécution = main), dans une autre classe
9
class TestVecteur { // juste le main
public static void main(String[] args) {
Vecteur v1, v2;
v1 = new Vecteur();
v1.nom = ’’u’’; v1.abscisse = 3.5; v1.ordonnee = -2.6;
System.out.print(’’v1 : ’’ + v1.nom + ’’(’’
+ v1.abscisse + ’’;’’ + v1.ordonnee + ’’)\n’’); // ou println(…);
// idem avec v2, double de v1 (coord. doubles de celles de v1)
// test d’égalité (des composantes)
// calcul et affichage de la norme de v2
} // fin du main
} // fin de la classe de test
Pour s’en servir
Classe Vecteur => fichier Vecteur.java
Classe TestVecteur => fichier TestVecteur.java
Compilation des deux fichiers
$> javac Vecteur.java => Vecteur.class
$> javac TestVecteur.java => TestVecteur.class
Exécution
$> java TestVecteur
$>
1. Objet ? Un exemple
10
1bis. Objet ? autre exemple
A vous de jouer !!
Exercice : faites de même pour une personne, puis
quelques personnes
informations définissant une personne
données caractérisant un Personne
diagramme UML
code de la classe Personne (dont un constructeur élémentaire)
code d’un main (un peu intéressant quand même SVP)
NB : on aurait [presque] pu commencer par la dernière question
11
Info0201
Introduction à la programmation orientée objet
Chapitre 1 : POO - Introduction
1. Objet ? un exemple
2. Langage orienté objet
COO, classe, objet, instanciation
3. La vie des objets
4. Java
Ch Jaillet
Ch Jaillet (URCA) - Info0201 [ L1 INFO et MATH ] 14/01/2017
4
2. Langage orienté objet
a. Rappels
Terminologie (rappels)
Algorithme : méthode de résolution de problème
Langage : moyen de description des algorithmes
Programme : mise en œuvre concrète d’un / des
algorithme(s), selon un langage
Machine : capable de mémoriser et d’exécuter des programmes
Initialement
programmes dépendants de la machine
programmation dirigée par les traitements
on détermine les manipulations à effectuer sur les données
on structure ces données selon ces manipulations
=> fonctions et procédures dépendantes de l’environnement *,
ou qui le prennent en compte comme une donnée
* les éléments en présence
13
2. Langage orienté objet
b. COO, Conception Orientée Objet
1.
analyser les différents types d’éléments en présence
2.
définir leurs caractéristiques (données les caractérisant)
3.
expliciter l’ensemble des traitements qu’ils peuvent réaliser/subir
programmation dirigée par les données
TDA : type de données abstrait
données membres (éléments caractéristiques)
opérations/traitements : méthodes
UML : Unified Modeling Language
moyen de modélisation, graphique => diagramme UML
module : entité regroupant l’ensemble des membres
(attributs et méthodes) => encapsulation
langage orienté objet
décrit des TDA + organisation modulaire
14
2. Langage orienté objet
c. Terminologie
classe, objet, …
classe : un modèle décrivant les caractéristiques communes et
les comportements communs d’un ensemble d’éléments
objet : un représentant d’une classe donnée
une classe constitue un générateur d’objets
un objet est une instance de cette classe
membres :
champs = attributs = membres données
méthodes décrivant le comportement des objets de la classe
diagramme UML d’une classe : représente les membres du
modèle (attributs, méthodes), au sein du module.
15
2. Langage orienté objet
c. Terminologie
instanciation
instanciation :
concrétisation d’une classe, en un objet particulier
code : utilise l’opérateur new, avec un constructeur
un programme instancie des objets de différentes classes, et les
fait interagir
classe = concept, description
objet = représentant concret de cette classe
une classe constitue un générateur d’objets
un objet est une instance de cette classe
caractérisation
un objet est caractérisé par les valeurs de ses attributs
son comportement est défini par les méthodes de sa classe
16
Ch Jaillet (URCA) - Info0201 [ L1 INFO et MATH ] 14/01/2017
5
Info0201
Introduction à la programmation orientée objet
Chapitre 1 : POO - Introduction
1. Objet ? un exemple
2. Langage orienté objet
3. La vie des objets
a. Référence
b. Construction
c. Suppression d’un objet
d. Représentation graphique
4. Java
Ch Jaillet
3. La vie des objets
a. Référence
variable déclarée selon un type de base :
contient sa valeur
variable déclarée selon un type tableau :
ne contient pas le tableau mais une référence vers ce tableau
variable déclarée selon un type objet :
ne contient pas l’objet mais une référence vers cet objet
ATTENTION :
En Java, il n’y a pas de notion de pointeur (notion du langage C)
test d’égalité : attention !!! ( identité
égalité )
18
3. La vie des objets
a. Référence
Manipulation d’un objet, hors de la classe qui le définit
accès à un attribut :
par la référence
notation pointée
appel de méthode :
idem
elle doit être définie dans la classe décrivant lobjet
elle peut ...
avoir des paramètres formels et des variables locales
manipuler les champs de l’objet
appeler d’autres méthodes
l’objet est paramètre implicite de la méthode appelée
(exemple …)
19
3. La vie des objets
a. Référence
Manipulation d’un objet, dans la classe qui le définit
exemple : accès à un attribut, dans une méthode vieillir()
code ...
age désigne l’attribut
age
de l’objet courant
accès direct, sans notation pointée
(sauf avec this : voir plus tard)
la référence de l’objet courant est implicite
accès sans restriction
=> voir « qualificateurs de portée » (chapitre 2)
20
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !