Académique Documents
Professionnel Documents
Culture Documents
Objet et au C++
Concepts et exemples
Christophe Collard
Plan
Christophe Collard
1 octet = 8 bits
1 bit = 0 ou 1
Signification
char
Caractre
-128 127
unsigned char
0 255
short int
Entier court
int
Entier
unsigned int
2
2 (sur processeur 16 bits)
4 (sur processeur 32 bits)
2 (sur processeur 16 bits)
4 (sur processeur 32 bits)
0 65 535
-32 768 32 767
-2 147 483 648 2 147 483 647
0 65 535
0 4 294 967 295
long int
Entier long
float
Flottant (rel)
-3.4*10-38 3.4*1038
double
Flottant double
-1.7*10-308 1.7*10308
long double
10
-3.4*10-4932 3.4*104932
bool
Boolen
Christophe Collard
2. Les boucles
But : effectuer plusieurs fois le
Attention : en C++ il faut initialiser les variables, sinon une valeur alatoire est attribue
3. Les fonctions
int
double
float
Fonction
INPUTS
Atte tio : u e fo tio
OUTPUT
e peut e o e
u u seul t pe
Fonction standard :
float fctname (int, double)
Fonction sans argument :
float fctname ()
Fonction sans valeur de retour : void fctname (int, double)
Remarque : une fonction bien programme peut tre lue sur 1 seul cran
Christophe Collard
Transmission de variable
Il existe 3 faons de transmettre des variables une fonction :
- transmission par valeur
adresse
adresse
valeur
valeur
adresse
valeur
4. Surdfinition de fonctions
une fonction avec un mme nom possde plusieurs significations
sosie numero 1 : a = 5
sosie numero 2 : a = 2.5
7. L allo atio d a i ue de
oi e
oi e
e de la
oi e
L op ateu NEW
Exemple 1
Exemple 2
Pou alloue
e ts d u type donn :
adresse
adresse
adresse
adresse
adresse
valeur
valeur
valeur
valeur
valeur
p[0]
p[4]
e t d u ta leau
Christophe Collard
L op ateu DELETE
li
e la
o do
e o
Christophe Collard
Classes et Objets
Christophe Collard
Objectif
Variables standart du C++
double a, b, s, p;
a= 5;
b = 7;
s = a + b;
p = a * b;
Christophe Collard
Objectif
Variables standart du C++
double a, b, s, p;
a= 5;
b = 7;
s = a + b;
p = a * b;
D fi i de ou eau t pes de a ia les : e teu s,
at i e, te seu s,
double p;
vector u (4) , v(4), w(4);
u[1]=5; u[2]=3; u[3]=-1; u[4]=7;
v[1]=0.4; v[2]=7; v[3]=-1.2; v[4]=0.75
w = u + v;
p = u * v;
Christophe Collard
donnes membres
fonctions membres
public
private
Christophe Collard
Encapsulation
p i ate : do
es et
thodes o a essi les l e t ieu de la lasse
seules les fonctions membres y ont accs
p ote ted : do
es et
thodes o a essi les l e t ieu de la lasse
accs possible par les classes drives (cf plus tard)
pu li : do
es et
Remarques
pour modifier des donnes prives il faut passer via des mthodes publiques
En POO pure, les donnes sont encapsules et leur accs ne peut se faire que par le
biais de mthodes
Christophe Collard
x et y modifiables
l ide tifi ateu initialise est celui dfini dans la classe point
Christophe Collard
Utilisation de la classe
Remarques
poi t est u
ou eau t pe d fi i pa l utilisateu
Christophe Collard
2. Constructeur et destructeur
atio d u
ou el o jet
allocation de mmoire
Processus automatis
CONSTRUCTEUR
Processus automatis
DESTRUCTEUR
Christophe Collard
Christophe Collard
Exemple
3. E ploitatio d u e lasse
Disso ie l i pl
C atio de i lioth
ues ue l o
eg oupe pa th
es
ui e eoit au u a gu e t
Christophe Collard
Exemple
Christophe Collard
Exemple
a i e sui a te
a.coincide (b)
ou par symtrie du problme
b.coincide (a)
Christophe Collard
Rsultat
a et b 0 (false)
b et c 1 (true)
Christophe Collard
Christophe Collard
POO pure
u e
thode d u e aut e lasse doit passe ia les
mthodes publiques de la classe pour accder aux
donnes prives
es p i es des 2 lasses
Christophe Collard
Fo tio i d pe da te a ie d u e lasse
Une fonction amie se dclare avec le mot cl friend
Exemple
Christophe Collard
Rsultat
a et b coincident
a et c ne coincident pas
Christophe Collard
La su d fi itio d op ateu s
Christophe Collard
class vector
{ int x,y;
};
On dfinit 2 objets de type vector a et b
b
Christophe Collard
es et d a l e le ode, o hoisit e g
al de
e fo tio i d pe da te a ie de la lasse.
Christophe Collard
Rsultat
coordonnees (1,2)
coordonnees (2,5)
coordonnees (3,7)
coordonnees (6,14)
Christophe Collard
Rsultat identique
Christophe Collard
Remarques
la fonction operator + est appel de la manire suivante :
fontion indpendante : a + b
operator + (a,b)
fontion membre : a + b
a.operator + (b)
Surdfinition de l op ateu [ ]
exemple de la classe vector
l op ateu [ ] pe
et d a
e fonction membre
retour par rfrence o ligatoi e afi d utilise l op ateu pou affe te des
valeurs
Christophe Collard
Christophe Collard
Plus restrictive
toutes les fonctions ainsi fabriques ont la mme dfinition et le mme
algorithme
But
crire une fonction qui soit valable quel que soit le type des arguments utiliss
Christophe Collard
Exemple
int min (int a, int b)
{ return (a < b) ? a : b;
}
et
On crit la mme fonction pour tous les types existant en C++
est lo g, t s lo g, t s t s lo g
et de d fi i des
fonction
patron
Rsultat
type
min (n,p) = 4
min (x,y) = 2.5
Christophe Collard
Remarque
e ts de
i po te uel t pe au fo tio s
e d a gu e ts diff e t afi
Christophe Collard
Comment stocker des points avec des coordonnes int, float, dou le, ?
Christophe Collard
Christophe Collard
Christophe Collard
C
INPUTS
Loi de
comportement
Fonction
OUTPUT
Christophe Collard
C
INPUTS
Loi de
comportement
Fonction
OUTPUT
Christophe Collard
E
C
INPUTS
Loi de
comportement
Fonction
OUTPUT
Tenseurs d o d e 2 : , E
Tenseur cubique : C (tenseur d lasti it )
Comment ne pas rcrire le code de la loi de comportement dans ce nouveau cas ?
Christophe Collard
E
C
INPUTS
Loi de
comportement
Fonction
OUTPUT
Tenseurs d o d e 2 : , E
Tenseur cubique : C (tenseur d lasti it )
Comment ne pas rcrire le code de la loi de comportement dans ce nouveau cas ?
utiliser un patron pour C
C utilise dj un patron pour stocker les constantes d lasti it
=> utilisation d u pat o de pat o
Christophe Collard
Avantage :
La loi de comportement reste valable mme pour des objets non encore dfinis
Ex. On pourra dfinir plus tard un classe pour l lasti it orthotrope et utiliser
la mme loi de comportement sans changer le code grant cette loi.
Christophe Collard
La te h i ue de l h itage
Christophe Collard
classe de base
proprits de la classe
classe drive
proprits classe de base + nouvelles proprits
Christophe Collard
Remarque
L h itage est pas li it u seul i eau
une classe drive peut devenir classe de base pour une autre classe
plusieu s lasses peu e t t e d i es d u e
e lasse
Christophe Collard
Mise e u e de l h itage
Classe de base
Christophe Collard
Classe drive
Programme principal
Christophe Collard
Utilisatio des
drive
ui est appel e
ui est appel e
Christophe Collard
Utilisation
pa tie o
u edu p o l
classe de base
drive 1
drive 2
drive 3
drive 4
solution 1
solution 2
solution 3
solution 4
i u es
Christophe Collard
Christophe Collard
Mot cl : namespace
zones de dclaration permettant de dlimiter la recherche des noms des
identificateurs par le compilateur
But
D fi itio d u espa e de o
age
Christophe Collard
Exemple de projet
Christophe Collard
MOL++
MateriOL++
simula+
MPISOL++
PMOL++
materials
MOL++
MateriOL++
MPISOL++
PMOL++
materials
tests
gui
doc
Christophe Collard
Christophe Collard
Christophe Collard
Christophe Collard
Christophe Collard
Christophe Collard
Christophe Collard
Christophe Collard
Rfrences
P se tatio t l ha gea le l ad esse :
http://www.lpmm.univ-metz.fr/collard/doc/introduction a la POO.pdf
Christophe Collard