program mat ion objet c-c++ [ebook, french, computers, programming langage, verified by ghost]
TRANSCRIPT
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
P r o g r a m m a t i o n o b j e t
T a b l e d e s s e c t i o n s
1 . C e t C + +
( a ) \ U n m e i l l e u r C "
( b ) I n c o m p a t i b i l i t e s e n t r e C e t C + +
( c ) E n t r e e s - s o r t i e s
( d ) C o m m e n t a i r e s
( e ) E m p l a c e m e n t d e s d e c l a r a t i o n s
( f ) A r g u m e n t s p a r d e f a u t
( g ) A r g u m e n t s p a r r e f e r e n c e
( h ) S u r c h a r g e d e f o n c t i o n s
( i ) A l l o c a t i o n d y n a m i q u e
( j ) F o n c t i o n s e n l i g n e
( k ) C l a s s e s e t o b j e t s
2 . I n s t r u c t i o n s
( a ) I d e n t i c a t e u r s
( b ) I n s t r u c t i o n s
( c ) I t e r a t i o n s
( d ) E x c e p t i o n s
( e ) C o n s t a n t e s
3 . R e f e r e n c e s
( a ) R e f e r e n c e s
( b ) P a s s a g e p a r r e f e r e n c e
( c ) R e t o u r p a r r e f e r e n c e
4 . S u r c h a r g e d e f o n c t i o n s
( a ) S u r c h a r g e
( b ) R e s o l u t i o n
5 . L e s c l a s s e s c o m m e s t r u c t u r e s d e d o n n e e s
( a ) O b j e c t i f
( b ) C o n s t r u c t e u r s
( c ) U n e c l a s s e d e c o m p l e x e s
( d ) U n e c l a s s e d e r a t i o n n e l s
( e ) S u r c h a r g e d ' o p e r a t e u r s
( f ) M e m b r e s s t a t i q u e s
( g ) M e t h o d e s c o n s t a n t e s
J e a n B e r s t e l 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
6 . C o p i e s , a e c t a t i o n s
( a ) C o n s t r u c t e u r s
( b ) C o n s t r u c t e u r d e c o p i e
( c ) A e c t a t i o n
7 . S u r c h a r g e d ' o p e r a t e u r s
( a ) P r i n c i p e
( b ) O p e r a t e u r s a m i s
( c ) S y n t a x e
( d ) O p e r a t e u r d ' i n d e x a t i o n
( e ) O p e r a t e u r s l o g i q u e s
( f ) O p e r a t e u r d ' i n s e r t i o n e t d ' e x t r a c t i o n
( g ) O p e r a t e u r s + + e t - -
( h ) I t e r a t e u r s
8 . S t r u c t u r e s d e d o n n e e s c l a s s i q u e s
( a ) P i l e s
( b ) E x c e p t i o n s
( c ) F i l e s
9 . H e r i t a g e
( a ) O b j e c t i f
( b ) C l a s s e c o m p o s e e o u c l a s s e d e r i v e e
( c ) S y n t a x e
( d ) A c c e s a u x d o n n e e s e t m e t h o d e s
( e ) C l a s s e s d e r i v e e s e t c o n s t r u c t e u r s
( f ) H e r i t a g e m u l t i p l e
( g ) M e t h o d e s v i r t u e l l e s
( h ) U n e x e m p l e : l e s e x p r e s s i o n s
1 0 . H e r i t a g e ( s u i t e )
( a ) T a b l e d e f o n c t i o n s v i r t u e l l e s
( b ) L i s t e s , d e u x i e m e v e r s i o n
( c ) C o m p o s i t e s
( d ) V i s i t e u r s
1 1 . D r o i t s d ' a c c e s
( a ) O b j e c t i f
( b ) L e s t r o i s c a t e g o r i e s
( c ) F o n c t i o n s a m i e s
( d ) A c c e s e t h e r i t a g e
1 2 . F l o t s
( a ) H i e r a r c h i e d e c l a s s e s
( b ) M a n i p u l a t e u r s
( c ) F i c h i e r s
J e a n B e r s t e l 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
1 3 . P a t r o n s
( a ) F o n c t i o n s g e n e r i q u e s
( b ) C l a s s e s g e n e r i q u e s
1 4 . S T L
( a ) O b j e c t i f s
( b ) E x e m p l e s
( c ) M e t h o d e s c o m m u n e s
J e a n B e r s t e l 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
1
C E T C + +
1 . \ U n m e i l l e u r C "
2 . I n c o m p a t i b i l i t e s e n t r e C e t
C + +
3 . E n t r e e s - s o r t i e s
4 . C o m m e n t a i r e s
5 . E m p l a c e m e n t d e s d e c l a r a t i o n s
6 . A r g u m e n t s p a r d e f a u t
7 . A r g u m e n t s p a r r e f e r e n c e
8 . S u r c h a r g e d e f o n c t i o n s
9 . A l l o c a t i o n d y n a m i q u e
1 0 . F o n c t i o n s e n l i g n e
1 1 . C l a s s e s e t o b j e t s
J e a n B e r s t e l 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
\ U n m e i l l e u r C "
L e l a n g a g e C + + s e v e u t u n l a n g a g e C a m e l i o r e .
I l p o s s e d e d e s f o n c t i o n n a l i t e s s u p p l e m e n t a i r e s , e t n o t a m m e n t
l a s u r c h a r g e d e f o n c t i o n s
l e p a s s a g e p a r r e f e r e n c e
l ' e m p l a c e m e n t d e s d e c l a r a t i o n s
l ' a l l o c a t i o n d y n a m i q u e
L e s a p p o r t s s p e c i q u e s d e C + + s o n t
l ' a i d e a l ' a b s t r a c t i o n d e d o n n e e s : d e n i t i o n d e t y p e s d e d o n -
n e e s , e t d e l e u r i m p l e m e n t a t i o n c o n c r e t e .
l ' a i d e a l a p r o g r a m m a t i o n o b j e t : h i e r a r c h i e d e c l a s s e s e t
h e r i t a g e .
l ' a i d e a l a p r o g r a m m a t i o n g e n e r i q u e : c l a s s e s p a t r o n e t a l g o -
r i t h m e s g e n e r i q u e s .
J e a n B e r s t e l 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
I n c o m p a t i b i l i t e s e n t r e C e t C + +
D e c l a r a t i o n s d e f o n c t i o n s
T o u t e f o n c t i o n d o i t
{ ^ e t r e d e n i e a v a n t u t i l i s a t i o n
{ o u ^ e t r e d e c l a r e e p a r u n p r o t o t y p e
f l o a t f c t ( i n t , d o u b l e , c h a r * )
( E n C , u n e f o n c t i o n n o n d e c l a r e e e s t s u p p o s e e d e t y p e d e r e t o u r
i n t . )
U n e f o n c t i o n q u i n e r e t o u r n e p a s d e v a l e u r a l e t y p e d e r e t o u r
v o i d
L e q u a l i c a t i f c o n s t p e u t ^ e t r e u t i l i s e e p o u r u n e e x p r e s s i o n
c o n s t a n t e , e t u t i l i s e e p o u r d e n i r l a t a i l l e d ' u n t a b l e a u ( e n C ,
i l f a u t u n # d e f i n e )
c o n s t i n t N = 1 0
i n t v a l e u r s N ]
J e a n B e r s t e l 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
E n t r e e s - s o r t i e s
L e s e n t r e e s e t s o r t i e s s o n t g e r e e s d a n s C + + a t r a v e r s d e s o b j e t s
p a r t i c u l i e r s a p p e l e e s s t r e a m s o u o t s . I n c l u r e < i o s t r e a m . h >
D e u x o p e r a t e u r s s o n t s u r c h a r g e s d e m a n i e r e a p p r o p r i e e p o u r l e s
o t s :
l ' o p e r a t e u r d ' i n s e r t i o n < < ( e c r i t u r e )
l ' o p e r a t e u r d ' e x t r a c t i o n > > ( l e c t u r e )
L e s o t s p r e d e n i s s o n t
c o u t a t t a c h e a l a s o r t i e s t a n d a r d
c e r r a t t a c h e a l a s o r t i e e r r e u r s t a n d a r d
c i n a t t a c h e a l ' e n t r e e s t a n d a r d .
# i n c l u d e < i o s t r e a m . h >
m a i n ( ) {
c o u t < < " B o n j o u r , m o n d e ! \ n "
}
P l u s i e u r s e x p r e s s i o n s :
c o u t < < e x _ 1 < < e x _ 2 < < . . . < < e x _ n
P l u s i e u r s \ l v a l u e s " :
c i n > > l v _ 1 > > l v _ 2 > > . . . > > l v _ n
J e a n B e r s t e l 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
L e s t y p e s e c r i t s o u l u s s o n t
c h a r , s h o r t , i n t , l o n g , f l o a t , d o u b l e , c h a r *
# i n c l u d e < i o s t r e a m . h >
i n t i
m a i n ( ) {
c o u t < < " U n e n t i e r : "
c i n > > i
c o u t < < " L e c a r r e d e " < < i
< < " e s t " < < i * i < < e n d l
}
J e a n B e r s t e l 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
C o m m e n t a i r e s
/ / c o m m e n t a i r e d e \ n d e l i g n e "
# i n c l u d e < i o s t r e a m . h > / / p o u r l e s s t r e a m s
i n t i
m a i n ( ) {
c o u t < < " U n e n t i e r : " / / a f f i c h a g e e t
c i n > > i / / l e c t u r e s y n c h r o n i s e s
c o u t < < " L e c a r r e d e " < < i
< < " e s t " < < i * i < < e n d l / / " e n d l " i n s e r e " \ n "
}
L e s c o m m e n t a i r e s d e C , d e l a f o r m e / * . . . * / s o n t t o u j o u r s v a -
l a b l e s .
J e a n B e r s t e l 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E m p l a c e m e n t d e s d e c l a r a t i o n s
U n e d e c l a r a t i o n p e u t a p p a r a ^ t r e p a r t o u t , m a i s d o i t p r e c e d e r s o n
u t i l i s a t i o n .
i n t n
. . .
n = . . .
. . .
i n t q = 2 * n - 1
f o r ( i n t i = 0 i < n i + + ) { . . . }
J e a n B e r s t e l 1 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
A r g u m e n t s p a r r e f e r e n c e
E n f a i s a n t s u i v r e l e t y p e d ' u n p a r a m e t r e d e & , i l e s t t r a n s m i s p a r
r e f e r e n c e , d o n c
p a s d e c o p i e d e l ' a r g u m e n t a l ' a p p e l
p o s s i b i l i t e d e m o d i e r l ' a r g u m e n t .
D e c l a r a t i o n
v o i d e c h a n g e ( f l o a t & , f l o a t & )
D e n i t i o n
v o i d e c h a n g e ( f l o a t & a , f l o a t & b ) {
f l o a t t = a
a = b
b = t
}
A p p e l
f l o a t x , y
. . .
e c h a n g e ( x , y )
P a s s a g e p a r r e f e r e n c e c o n s t a n t e p o u r
n e p a s c o p i e r l ' a r g u m e n t a l ' a p p e l
n e p a s m o d i e r l ' a r g u m e n t .
v o i d a f f i c h e r ( c o n s t o b j e t & )
J e a n B e r s t e l 1 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
A r g u m e n t s p a r d e f a u t
D a n s u n e f o n c t i o n , l e s d e r n i e r s a r g u m e n t s p e u v e n t p r e n d r e d e s
\ v a l e u r s p a r d e f a u t " .
D e c l a r a t i o n
f l o a t f ( c h a r , i n t = 1 0 , c h a r * = " T o u t " )
A p p e l s
f ( c , n , " r i e n " )
f ( c , n ) / / < - > f ( c , n , " T o u t " )
f ( c ) / / < - > f ( c , 1 0 , " T o u t " )
f ( ) / / e r r e u r
S e u l s l e s d e r n i e r s a r g u m e n t s p e u v e n t a v o i r d e s v a l e u r s p a r d e f a u t
D e c l a r a t i o n
f l o a t f ( c h a r = ' a ' , i n t , c h a r * = " T o u t " ) / / e r r e u r
J e a n B e r s t e l 1 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
S u r c h a r g e
U n m ^ e m e i d e n t i c a t e u r p e u t d e s i g n e r p l u s i e u r s f o n c t i o n s , s i e l l e s
d i e r e n t p a r l a l i s t e d e s t y p e s d e l e u r s a r g u m e n t s .
f l o a t m a x ( f l o a t , f l o a t )
f l o a t m a x ( f l o a t , f l o a t , f l o a t )
f l o a t m a x ( i n t , f l o a t ] )
v o i d m a i n ( ) {
f l o a t x , y , z
f l o a t T ] = { 1 1 . 1 , 2 2 . 2 , 3 3 . 3 , 4 4 . 4 , 7 . 7 , 8 . 8 }
x = m a x ( 1 . 8 6 , 3 . 1 4 )
y = m a x ( 1 . 8 6 , 3 . 1 4 , 3 7 . 2 )
z = m a x ( 6 , T )
}
L ' a n a l y s e d e l a s i g n a t u r e d e t e r m i n e l a f o n c t i o n a u t i l i s e r . L e s p r o -
m o t i o n s e t c o n v e r s i o n s u s u e l l e s s ' a p p l i q u e n t . L e t y p e d e r e t o u r
n ' i n t e r v i e n t p a s
f l o a t m i n ( i n t , f l o a t )
d o u b l e m i n ( i n t , f l o a t ) / / e r r e u r
A t t e n t i o n a l ' a m b i g u t e , s u r t o u t e n c o n j o n c t i o n a v e c l e s v a l e u r s
p a r d e f a u t .
O n p e u t a u s s i s u r c h a r g e r l e s o p e r a t e u r s : d e n i r p a r e x e m p l e
l ' a d d i t i o n d e n o m b r e s c o m p l e x e s e t r e p r e s e n t e r c e t t e a d d i t i o n
p a r l e s i g n e +
J e a n B e r s t e l 1 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
A l l o c a t i o n d y n a m i q u e
L e s o p e r a t e u r s n e w e t d e l e t e g e r e n t l a m e m o i r e d y n a m i q u e m e n t .
n e w t y p e n ]
a l l o u e l a p l a c e p o u r n e l e m e n t s d e t y p e t y p e e t r e t o u r n e l ' a d r e s s e
d u p r e m i e r e l e m e n t
d e l e t e a d d r e s s e
l i b e r e l a p l a c e a l l o u e e p a r n e w
i n t * a = n e w i n t / / m a l l o c ( s i z e o f ( i n t ) )
d o u b l e * d = n e w d o u b l e 1 0 0 ]
/ / m a l l o c ( 1 0 0 * s i z e o f ( d o u b l e ) )
E x e m p l e
c h a r t ] = " H e l l o , w o r l d ! "
c h a r * c o p y ( c o n s t c h a r * t ) {
c h a r * a
a = n e w c h a r 1 + s t r l e n ( t ) ]
s t r c p y ( a , t )
r e t u r n a
}
J e a n B e r s t e l 1 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
F o n c t i o n s e n l i g n e
U n e f o n c t i o n e n l i g n e ( i n l i n e ) e s t u n e f o n c t i o n d o n t l e s i n s t r u c -
t i o n s s o n t i n c o r p o r e e s p a r l e c o m p i l a t e u r d a n s l e m o d u l e o b j e t a
c h a q u e a p p e l . D o n c
i l n ' y p a s d ' a p p e l : g e s t i o n d e c o n t e x t e , g e s t i o n d e p i l e
l e s i n s t r u c t i o n s s o n t e n g e n d r e e s p l u s i e u r s f o i s
r a p p e l l e n t l e s m a c r o s .
D e c l a r a t i o n p a r q u a l i c a t i f i n l i n e
i n l i n e i n t s q r ( i n t x ) { r e t u r n x * x }
J e a n B e r s t e l 1 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C l a s s e s e t o b j e t s
U n e c l a s s e e s t u n e s t r u c t u r e , d o n t l e s a t t r i b u t s s o n t d e s d o n n e e s
o u d e s m e t h o d e s . U n o b j e t , o u u n e i n s t a n c e , e s t u n e x e m p l a i r e d e
c e t t e s t r u c t u r e .
c l a s s C o m p l {
p u b l i c :
f l o a t r e , i m
v o i d s h o w ( )
}
O n d e c l a r e d e s o b j e t s d e l a c l a s s e p a r :
C o m p l s , t
O n l e s m a n i p u l e d e m a n i e r e u s u e l l e :
s . r e = t . i m
t . r e = 7
s . s h o w ( )
L a d e n i t i o n d ' u n e m e t h o d e s e f a i t s o i t e n l i g n e , s o i t s e p a r e m e n t
d a n s l e d e u x i e m e c a s , e l l e u t i l i s e l ' o p e r a t e u r d e p o r t e e : : p o u r
d e s i g n e r l a c l a s s e .
v o i d C o m p l : : s h o w ( ) {
c o u t < < r e < < ' ' < < i m
}
A l ' a p p e l s . s h o w ( ) , l e s c h a m p s r e e t i m s o n t c e u x d e l ' o b j e t
a p p e l a n t , c ' e s t - a - d i r e s . r e e t s . i m
J e a n B e r s t e l 1 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L a s u r c h a r g e d ' o p e r a t e u r p e r m e t d e d e n i r u n e f o r m e a g r e a b l e
p o u r d e s o p e r a t i o n s s u r d e s o b j e t s .
C o m p l o p e r a t o r + ( C o m p l s , C o m p l t ) {
C o m p l w
w . r e = s . r e + t . r e
w . i m = s . i m + t . i m
r e t u r n w
}
O n p e u t a l o r s e c r i r e
C o m p l s , t , w
. . .
w = s + t
}
J e a n B e r s t e l 1 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
2
I N S T R U C T I O N S
1 . I d e n t i c a t e u r s
2 . I n s t r u c t i o n s
3 . I t e r a t i o n s
4 . E x c e p t i o n s
5 . C o n s t a n t e s
J e a n B e r s t e l 1 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
I d e n t i c a t e u r s
L e s i d e n t i c a t e u r s s o n t c o m m e e n C f o r m e s d ' u n e l e t t r e o u ` ' ,
s u i v i e d e l e t t r e s , c h i r e s , o u ` ' :
A - Z a - z ] A - Z a - z 0 - 9 ]
l e s m i n u s c u l e s e t m a j u s c u l e s s o n t d i e r e n c i e e s
l a l o n g u e u r e s t a r b i t r a i r e
l e n o m b r e d e c a r a c t e r e s s i g n i c a t i f s d e p e n d d e l a m a c h i n e
h e l l o f o O _ c l a s s e _ _ _ / / o k
$ s y s i f . n o m f o o ^ b a r / / e r r e u r
J e a n B e r s t e l 1 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
I d e n t i c a t e u r s r e s e r v e s :
a s m d o i n t s i g n e d u n s i g n e d
a u t o d o u b l e i n t s i z e o f v i r t u a l
b r e a k e l s e l o n g s t a t i c v o i d
c a s e e n u m n e w s t r u c t v o l a t i l e
c a t c h e x t e r n o p e r a t o r s w i t c h w h i l e
c h a r f l o a t p r i v a t e t e m p l a t e
c l a s s f o r p r o t e c t e d t h i s
c o n s t f r i e n d p u b l i c t h r o w
c o n t i n u e g o t o r e g i s t e r t r y
d e f a u l t i f r e t u r n t y p e d e f
d e l e t e i n l i n e s h o r t u n i o n
N o u v e a u x p a r r a p p o r t a C :
a s m c a t c h c l a s s d e l e t e f r i e n d
i n l i n e n e w o p e r a t o r p r i v a t e p r o t e c t e d
p u b l i c t e m p l a t e t h i s t h r o w t r y
v i r t u a l
J e a n B e r s t e l 2 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
I n s t r u c t i o n s
E x p r e s s i o n s
e x p r e s s i o n
C o n d i t i o n n e l l e s
i f
i f e l s e
s w i t c h c a s e
I t e r a t i o n s
f o r
w h i l e
d o w h i l e
B l o c
f
d e c l a r a t i o n s e t
i n s t r u c t i o n s m e l a n g e e s
g
R u p t u r e s d e s e q u e n c e
c o n t i n u e
b r e a k
r e t u r n e x p r
t r y . . . t h r o w . . . c a t c h
J e a n B e r s t e l 2 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
I t e r a t i o n s
D e n i t i o n d ' u n e v a r i a b l e d a n s l ' i n i t i a l i s a t e u r d e l a b o u c l e
f o r ( i n t i = 0 i < 5 i + + )
c o u t < < i
c o u t < < e n d l
D a n s d e s v e r s i o n s p l u s a n c i e n n e s , l a p o r t e e d e s n o m s d e c l a r e s d a n s
l ' i n i t i a l i s a t e u r s ' e t e n d j u s q u ' a l a n d u b l o c e n g l o b a n t l a b o u c l e .
f o r ( i n t i = 0 i < 5 i + + ) / / o k
f o r ( i n t i = 0 i < 5 i + + ) / / e r r e u r
D a n s l e s v e r s i o n s A N S I , l a p o r t e e d e s n o m s d e c l a r e s d a n s
l ' i n i t i a l i s a t e u r e s t r e s t r e i n t e a u b l o c d e l a b o u c l e
f o r ( i n t i = 0 i < 5 i + + ) / / o k
f o r ( i n t i = 0 i < 5 i + + ) / / O K !
J e a n B e r s t e l 2 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E x c e p t i o n s
L e s e x c e p t i o n s s o n t u n m e c a n i s m e d e d e r o u t e m e n t c o n d i t i o n n e l
t h r o w l e v e u n e e x c e p t i o n
c a t c h c a p t e l ' e x c e p t i o n .
v o i d f ( i n t i ) {
t r y {
i f ( i )
t h r o w " H e l p ! "
c o u t < < " O k ! \ n "
}
c a t c h ( c h a r * e ) {
c o u t < < e < < " \ n "
}
}
v o i d m a i n ( )
{
f ( 0 )
f ( 1 )
}
R e s u l t a t
O k !
H e l p !
J e a n B e r s t e l 2 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C o n s t a n t e s
U n i d e n t i c a t e u r d o n t l a v a l e u r n e c h a n g e p a s p e u t ^ e t r e d e c l a r e
c o n s t a n t e n u t i l i s a n t l e m o t - c l e c o n s t
L e m o t - c l e c o n s t p e u t i n t e r v e n i r d a n s q u a t r e c o n t e x t e s :
d a n s l a s p e c i c a t i o n d u t y p e d ' u n o b j e t
d a n s l a s p e c i c a t i o n d u t y p e d ' u n p a r a m e t r e d e f o n c t i o n i l
i n d i q u e q u e c e t t e f o n c t i o n n ' e n m o d i e p a s l a v a l e u r
d a n s l a s p e c i c a t i o n d u t y p e d ' u n m e m b r e d e c l a s s e
c o m m e q u a l i c a t i f d ' u n e m e t h o d e p o u r i n d i q u e r q u ' e l l e n e
m o d i e p a s l e s d o n n e e s m e m b r e s d e c e t t e c l a s s e .
U n e c o n s t a n t e d o i t ^ e t r e i n i t i a l i s e e , e t n e p e u t p a s ^ e t r e a e c t e e .
L e s c o n s t a n t e s s e s u b s t i t u e n t a v a n t a g e u s e m e n t a u x # d e f i n e
c o n s t N = 1 0
f l o a t a 1 + N ]
J e a n B e r s t e l 2 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L a s y n t a x e p e u t p r ^ e t e r a c o n f u s i o n :
c o n s t i n t * p
s e l i t ( c o n s t i n t ) * p . D o n c p e s t u n p o i n t e u r v e r s u n e c o n s t a n t e
d e t y p e i n t . A v e c
i n t i
c o n s t i n t * p = & i
l a v a l e u r d e i n e p e u t p a s ^ e t r e m o d i e e a t r a v e r s l e p o i n t e u r : o n
p e u t e c r i r e i = 1 0 m a i s p a s * p = 1 0 !
i n t i
i n t * c o n s t q = & i
I c i , q e s t u n p o i n t e u r c o n s t a n t v e r s u n e n t i e r l ' i n i t i a l i s a t i o n e s t
n e c e s s a i r e . L a v a l e u r d e q ( c ' e s t - a - d i r e l a c a s e p o i n t e e ) n e p e u t
^ e t r e m o d i e e , m a i s o n p e u t m o d i e r l a v a l e u r c o n t e n u e d a n s c e t t e
c a s e , e t e c r i r e * q = 1 0 ( N o t e r l ' a n a l o g i e a v e c l e s t a b l e a u x e n C ) .
i n t i
c o n s t i n t * c o n s t r = & i
E n n , r e s t u n p o i n t e u r c o n s t a n t v e r s u n o b j e t c o n s t a n t .
J e a n B e r s t e l 2 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E X E R C I C E S
1 . C a l c u l e t t e : e c r i r e u n p r o g r a m m e d e c a l c u l e t t e , c a p a b l e
d ' e v a l u e r l e s q u a t r e o p e r a t i o n s + , - , * , / . P r e v o i r l e c a s
d ' u n e d i v i s i o n p a r 0 .
J e a n B e r s t e l 2 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C a l c u l e t t e
# i n c l u d e < i o s t r e a m . h >
v o i d e v a l ( f l o a t x , f l o a t y , c h a r o p , f l o a t & r ) {
s w i t c h ( o p ) {
c a s e ' + ' : r = x + y r e t u r n
c a s e ' - ' : r = x - y r e t u r n
c a s e ' * ' : r = x * y r e t u r n
c a s e ' / ' :
i f ( y = = 0 ) t h r o w " D I V p a r 0 "
r = x / y r e t u r n
}
t h r o w " O p e r a t e u r i n c o n n u "
}
v o i d m a i n ( ) {
f l o a t x , y , r e s u l t a t
c h a r o p e r a t e u r , c
c o u t < < " C a l c u l e t t e \ n "
d o {
c o u t < < " E x p r e s s i o n ? "
c i n > > x > > o p e r a t e u r > > y
t r y {
e v a l ( x , y , o p e r a t e u r , r e s u l t a t )
c o u t < < x < < o p e r a t e u r < < y < < " = " < < r e s u l t a t < < e n d l
}
c a t c h ( c h a r * m e s s a g e ) {
c e r r < < m e s s a g e < < e n d l
}
d o {
c o u t < < " E n c o r e ( o / n ) ? "
c i n > > c
} w h i l e ( c ! = ' o ' & & c ! = ' n ' )
} w h i l e ( c ! = ' n ' )
c o u t < < " A u r e v o i r ! \ n "
}
J e a n B e r s t e l 2 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
3
R E F E R E N C E S
1 . R e f e r e n c e s
2 . P a s s a g e p a r r e f e r e n c e
3 . R e t o u r p a r r e f e r e n c e
J e a n B e r s t e l 2 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
R e f e r e n c e s
U n o b j e t a u s e n s c o u r a n t d u t e r m e e s t u n e p l a c e e n m e m o i r e d e s -
t i n e e a c o n t e n i r u n e d o n n e e . U n e v a r i a b l e e s t u n o b j e t , m a i s u n
o b j e t p e u t ^ e t r e c o n s t a n t s i l a d o n n e e e s t n o n m o d i a b l e .
U n e r e f e r e n c e e s t u n n o u v e a u n o m ( s y n o n y m e , a l i a s ) a t t r i b u e a
u n o b j e t d e j a d e n i .
L a s y n t a x e e s t
t y p e & i d e n t = e x p r e s s i o n
U n e r e f e r e n c e d o i t ^ e t r e i n i t i a l i s e e a s a d e n i t i o n .
L ' e x p r e s s i o n d ' i n i t i a l i s a t i o n d o i t d e s i g n e r u n o b j e t ( l - v a l u e ) .
i n t i = 1
i n t & r = i / / r e t i d e s i g n e n t l e m e m e e n t i e r
i n t x = r / / x = 1
r = 2 / / x = 1 i = 2
i n t & y / / e r r e u r : p a s d ' i n i t i a l i s a t i o n
i n t * p = & r / / = = & i : m e m e o b j e t
U s a g e d e s r e f e r e n c e s
s p e c i c a t i o n d e s p a r a m e t r e s e t v a l e u r s d e r e t o u r d e s f o n c t i o n s
s u r c h a r g e d ' o p e r a t e u r s
J e a n B e r s t e l 2 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
N e p a s c o n f o n d r e
i n t & v a l = 1 / / v a l e s t r e f e r e n c e a i n t
& v a l / / a d r e s s e d e v a l
v a l & 1 / / ` ` e t ' ' b i t a b i t
U n e r e f e r e n c e c o n s t a n t e n e n e p e r m e t p a s d e c h a n g e r l a v a l e u r .
i n t n
c o n s t i n t & k = n
. . .
+ + n / / o k
+ + k / / e r r e u r
J e a n B e r s t e l 3 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
P a s s a g e p a r r e f e r e n c e
P a s s a g e p a r r e f e r e n c e d ' a r g u m e n t s d e f o n c t i o n s . R a p p e l o n s :
i n t f ( i n t k ) { . . . }
m a i n ( ) {
. . .
j = f ( i )
. . .
}
L o r s d e l ' a p p e l f ( i )
1 . i l y a c r e a t i o n d ' u n e n o u v e l l e v a r i a b l e i b i s ,
2 . i n i t i a l i s a t i o n d e i b i s a v e c l a v a l e u r d e i
3 . l e s m o d i c a t i o n s s u b i e s p a r k d a n s l a d e n i t i o n s o n t s u b i e s p a r
i b i s ,
4 . a u r e t o u r , i b i s e s t d e t r u i t e e t i a c o n s e r v e s a v a l e u r
J e a n B e r s t e l 3 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
S i m a i n t e n a n t , k e s t d e c l a r e e e n r e f e r e n c e
i n t f ( i n t & k ) { . . . }
l o r s d e l ' a p p e l f ( i )
1 . i l y a c r e a t i o n d ' u n e r e f e r e n c e i b i s i n i t i a l i s e e a i , ( d o n c i b i s
e t i d e s i g n e n t l a m ^ e m e p l a c e )
2 . l e s m o d i c a t i o n s s u b i e s p a r k d a n s l a d e n i t i o n s o n t s u b i e s p a r
i b i s , d o n c p a r i
3 . a u r e t o u r , i b i s e s t d e t r u i t e e t i a c o n s e r v e s e s m o d i c a t i o n s .
v o i d i n c r ( i n t & a ) { a + + }
m a i n ( ) {
i n t x = 1
i n c r ( x ) / / x = 2
}
E n e e t , l ' a p p e l i n c r ( x ) r e a l i s e
{ l ' i n i t i a l i s a t i o n i n t & a = x
{ l ' i n c r e m e n t a t i o n a + +
J e a n B e r s t e l 3 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
# i n c l u d e < i o s t r e a m . h >
s t r u c t P e r s o n n e {
i n t a g e
c h a r * n o m
}
/ / P a s s a g e p a r r e f e r e n c e p o u r c h a n g e r l e c o n t e n u
v o i d c h a n g e ( P e r s o n n e & p ) {
p . a g e = 4 5
p . n o m = " B j o r n e S t r o u s t r u p "
}
/ / P a s s a g e p a r r e f e r e n c e p o u r e v i t e r r e c o p i e
v o i d a f f i c h e ( c o n s t P e r s o n n e & p ) {
c o u t < < p . n o m < < e n d l
}
v o i d m a i n ( )
{
P e r s o n n e a u t e u r
c h a n g e ( a u t e u r )
a f f i c h e ( a u t e u r )
}
L e r e s u l t a t e s t b i e n e n t e n d u
B j o r n e S t r o u s t r u p
J e a n B e r s t e l 3 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
R e t o u r p a r r e f e r e n c e
P a s s a g e p a r r e f e r e n c e e n r e s u l t a t d e f o n c t i o n s . R a p p e l o n s :
i n t f ( ) { . . . r e t u r n x }
L ' i n s t r u c t i o n r e t u r n x r e t o u r n e l a v a l e u r d e x
i l y a c r e a t i o n d ' u n e v a r i a b l e s u r l a p i l e c o n t e n a n t c e t t e v a l e u r
f ( ) n ' e s t p a s u n e l - v a l e u r
i n t & f ( ) { . . . r e t u r n x }
I c i r e t u r n x r e t o u r n e u n e r e f e r e n c e , d o n c u n s y n o n y m e d ' u n
o b j e t
i l y a c r e a t i o n d ' u n e v a r i a b l e s u r l a p i l e c o n t e n a n t c e t t e v a l e u r
f ( ) e s t u n e r e f e r e n c e p o u r l a v a r i a b l e x , e t c ' e s t u n e l - v a l u e .
J e a n B e r s t e l 3 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < m a t h . h >
s t r u c t C o m p l {
f l o a t r e , i m
C o m p l ( f l o a t r = 0 , f l o a t i = 0 ) { r e = r i m = i }
f l o a t m o d u l e ( ) { r e t u r n s q r t ( r e * r e + i m * i m ) }
}
C o m p l & m a x m o d ( C o m p l & x , C o m p l & y ) {
r e t u r n ( x . m o d u l e ( ) > y . m o d u l e ( ) ) ? x : y
}
v o i d m a i n ( )
{
C o m p l u ( 3 , 5 ) , v ( 4 , 4 )
C o m p l & z = m a x m o d ( u , v )
c o u t < < & z < < ' ' < < & u < < ' ' < < & v < < e n d l
}
L e r e s u l t a t e s t
0 x 0 1 8 8 7 6 8 2 0 x 0 1 8 8 7 6 8 2 0 x 0 1 8 8 7 6 8 A
J e a n B e r s t e l 3 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E x e m p l e
i n t & i n c r ( i n t & x ) {
x + = 1 0
r e t u r n x
}
m a i n ( ) {
i n t i = 5
i n c r ( i ) + = 1 5
c o u t < < i < < e n d l
i n c r ( i ) e s t s y n o n y m e d e i , e t m a i n l ' i n c r e m e n t e d e 1 5 . L e r e -
s u l t a t e s t 3 0
I l n e f a u t p a s f a i r e r e t o u r n e r u n e r e f e r e n c e a u n e v a r i a b l e l o c a l e .
J e a n B e r s t e l 3 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
4
S U R C H A R G E D E F O N C T I O N S
1 . S u r c h a r g e
2 . R e s o l u t i o n
J e a n B e r s t e l 3 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
S u r c h a r g e
I l y a s u r c h a r g e l o r s q u ' u n m ^ e m e i d e n t i c a t e u r d e s i g n e p l u s i e u r s
f o n c t i o n s . P o u r c e l a , c e s f o n c t i o n s d o i v e n t d i e r e r p a r l a l i s t e d e s
t y p e s d e l e u r s a r g u m e n t s .
L a s u r c h a r g e e x i s t e d e j a e n C : 3 / 5 e t 3 . 5 / 5 , m a i s e s t s y s t e m a t i s e e
e n C + + .
U s a g e d e l a s u r c h a r g e :
d a n s l e s c o n s t r u c t e u r s
d a n s l e s o p e r a t e u r s .
J e a n B e r s t e l 3 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
# i n c l u d e < i o s t r e a m . h >
v o i d a f f i c h e ( i n t i )
{ c o u t < < " E n t i e r v a l e u r " < < i < < e n d l }
v o i d a f f i c h e ( c h a r c )
{ c o u t < < " C a r a c t e r e " < < c < < e n d l }
v o i d a f f i c h e ( d o u b l e d )
{ c o u t < < " R e e l " < < d < < e n d l }
v o i d a f f i c h e ( c h a r * t x t , i n t n ) {
f o r ( i n t j = 0 j < n j + + ) c o u t < < t x t j ]
c o u t < < e n d l
}
v o i d m a i n ( )
{
a f f i c h e ( 3 )
a f f i c h e ( ' x ' )
a f f i c h e ( 1 . 0 )
a f f i c h e ( " B o n j o u r , m o n d e ! " , 7 )
}
R e s u l t a t
E n t i e r 3
C a r a c t e r e x
R e e l 1
B o n j o u r
J e a n B e r s t e l 3 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L e c o m p i l a t e u r e n g e n d r e u n e f o n c t i o n p a r t y p e , p o s t x e e p a r u n
c o d a g e d e s t y p e s .
a f f i c h e _ _ F i
a f f i c h e _ _ F c
a f f i c h e _ _ F d
a f f i c h e _ _ F P c i
C ' e s t p o u r q u o i u n e f o n c t i o n C e x t e r n e d o i t ^ e t r e d e c l a r e e
e x t e r n " C " f ( )
L ' a n a l y s e d e l a s i g n a t u r e d e t e r m i n e l a f o n c t i o n a u t i l i s e r . L e s p r o -
m o t i o n s e t c o n v e r s i o n s u s u e l l e s s ' a p p l i q u e n t . L e t y p e d e r e t o u r
n ' i n t e r v i e n t p a s . L e s c o n v e r s i o n s d i t e s \ t r i v i a l e s " i m p l i q u e n t :
P o u r t o u t t y p e T , u n T e t u n T & n e d o i v e n t p a s ^ e t r e e n m ^ e m e
p o s i t i o n :
v o i d f ( i n t i ) { . . . }
v o i d f ( i n t & i ) { . . . } / / e r r e u r
D e m ^ e m e p o u r u n T e t u n c o n s t T , s a u f p o u r u n c o n s t T *
e t u n T *
U n t y p e d e f n e d o n n e p a s u n t y p e s e p a r e
t y p e d e f i n t I n t
v o i d f ( i n t i ) { . . . }
v o i d f ( I n t i ) { . . . } / / e r r e u r
P o i n t e u r e t t a b l e a u s o n t i d e n t i q u e s
f ( c h a r * p )
f ( c h a r p ] )
f ( c h a r p 1 2 ] )
J e a n B e r s t e l 4 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
R e s o l u t i o n
R e g l e s d e c h o i x
1 . R e c h e r c h e d ' u n e c o r r e s p o n d a n c e e x a c t e e t c o n v e r s i o n s \ t r i -
v i a l e s " :
T e n T & e t v i c e - v e r s a ,
a j o u t d e c o n s t
t r a n s f o r m a t i o n T ] e n T *
2 . P r o m o t i o n e n t i e r e ( c h a r e n i n t , f l o a t e n d o u b l e . . . ) .
3 . R e g l e s d e c o n v e r s i o n , s u r t o u t e n t r e c l a s s e s .
4 . R e g l e s d e c o n v e r s i o n d e n i e s p a r l e p r o g r a m m e u r .
5 . C o r r e s p o n d a n c e a v e c p o i n t s d e s u s p e n s i o n .
T o u t e a m b i g u t e e s t u n e e r r e u r .
J e a n B e r s t e l 4 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E x e m p l e
P r o t o t y p e s
v o i d f ( i n t ) / / f o n c t i o n 1
v o i d f ( f l o a t ) / / f o n c t i o n 2
v o i d f ( i n t , f l o a t ) / / f o n c t i o n 3
v o i d f ( f l o a t , i n t ) / / f o n c t i o n 4
V a r i a b l e s
i n t i , j
f l o a t x , y
c h a r c
d o u b l e z
A p p e l s
f ( c ) / / f o n c t i o n 1
f ( i , j ) / / e r r e u r : e n 3 o u e n 4 ?
f ( i , c ) / / f o n c t i o n 3
f ( i , z ) / / c o n v e r s i o n d e g r a d a n t e d e z e n f l o a t
f ( z , z ) / / a m b i g u i t e d e s d e g r a d a t i o n s
J e a n B e r s t e l 4 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E x e m p l e
v o i d f ( i n t )
{ c o u t < < " E n t i e r \ n " }
v o i d f ( . . . )
{ c o u t < < " H e l l o ! \ n " }
V a r i a b l e s
i n t i
f l o a t y
c h a r c
d o u b l e z
A p p e l s
f ( i ) / / E n t i e r
f ( c ) / / H e l l o !
f ( z ) / / H e l l o !
f ( y ) / / H e l l o !
B i e n e n t e n d u , l a f o r m e e l l i p t i q u e j o u e l e r ^ o l e d u d e f a u l t d a n s u n
a i g u i l l a g e . E l l e s e r t p a r f o i s d a n s l e t r a i t e m e n t d e s e x c e p t i o n s .
J e a n B e r s t e l 4 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E x e m p l e : l a f a c t o r i e l l e
i n t f a c t ( i n t n ) {
r e t u r n ( ! n ) ? 1 : n * f a c t ( n - 1 )
}
E l l e s e p r o g r a m m e a v e c u n e r e c u r s i v i t e t e r m i n a l e a l ' a i d e d e
i n t F a c t ( i n t n , i n t p ) {
r e t u r n ( ! n ) ? p : F a c t ( n - 1 , p * n )
}
O n a a l o r s f a c t ( n ) = F a c t ( n , 1 ) . O n d e n i t d o n c
i n t F a c t ( i n t n ) {
r e t u r n F a c t ( n , 1 )
}
o u m i e u x e n c o r e
i n t F a c t ( i n t n , i n t p = 1 ) {
r e t u r n ( ! n ) ? p : F a c t ( n - 1 , p * n )
}
J e a n B e r s t e l 4 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
5
L E S C L A S S E S C O M M E S T R U C T U R E S D E
D O N N E E S
1 . O b j e c t i f
2 . D e c l a r a t i o n
3 . D e n i t i o n
4 . U t i l i s a t i o n
5 . E n c a p s u l a t i o n
6 . C o n s t r u c t e u r s
7 . U n e c l a s s e d e c o m p l e x e s
8 . U n e c l a s s e d e r a t i o n n e l s
9 . S u r c h a r g e d ' o p e r a t e u r s
1 0 . M e m b r e s s t a t i q u e s
1 1 . M e t h o d e s c o n s t a n t e s
J e a n B e r s t e l 4 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
O b j e c t i f
L e p r e m i e r d e s p a r a d i g m e s d e l a p r o g r a m m a t i o n o b j e t e s t
l ' e n c a p s u l a t i o n . C ' e s t l a p o s s i b i l i t e d e n e m o n t r e r d e l ' o b j e t q u e
c e q u i e s t n e c e s s a i r e a s o n u t i l i s a t i o n . D ' o u
s i m p l i c a t i o n d e l ' u t i l i s a t i o n d e s o b j e t s
m e i l l e u r e r o b u s t e s s e d u p r o g r a m m e
s i m p l i c a t i o n d e l a m a i n t e n a n c e .
E l l e a p o u r c o n s e q u e n c e d e
r a p p r o c h e r l e s d o n n e e s e t l e u r t r a i t e m e n t : c ' e s t l ' o b j e t q u e s a i t
l e m i e u x c o m m e n t g e r e r u n e d e m a n d e ,
m a s q u e r l ' i m p l e m e n t a t i o n .
S o n t f o u r n i s a l ' u t i l i s a t e u r :
d e s m e c a n i s m e s d e c o n s t r u c t i o n ( d e s t r u c t i o n ) d ' o b j e t s
d e s m e t h o d e s d ' a c c e s e t d e m o d i c a t i o n d e s d o n n e e s e n c a p -
s u l e e s .
J e a n B e r s t e l 4 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
Q u e l q u e s p r i n c i p e s :
C h a q u e f o n c t i o n a u n e s i g n a t u r e , q u i e s t l a l i s t e d e s t y p e s d e s
p a r a m e t r e s f o r m e l s ( e t l e t y p e d u r e s u l t a t )
U n m ^ e m e n o m d e f o n c t i o n p e u t d e s i g n e r p l u s i e u r s f o n c t i o n s d e
s i g n a t u r e s d i e r e n t e s ( s a n s c o m p t e r l e t y p e d u r e s u l t a t )
I l y a s u r c h a r g e s i l e c h o i x d e l a f o n c t i o n e s t d e t e r m i n e p a r l e
t y p e d e s p a r a m e t r e s d ' a p p e l
I l y a p o l y m o r p h i s m e s i l e c h o i x d e l a f o n c t i o n e s t d e t e r m i n e
p a r l a v a l e u r d e s p a r a m e t r e s d ' a p p e l .
L a s u r c h a r g e p e u t ^ e t r e r e a l i s e e s u r d e s f o n c t i o n s g l o b a l e s , d e s
m e t h o d e s , d e s o p e r a t e u r s l e p o l y m o r p h i s m e s e m e t e n p l a c e p a r
l ' h e r i t a g e d e m e t h o d e s v i r t u e l l e s .
J e a n B e r s t e l 4 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
U n e c l a s s e e s t l a d e s c r i p t i o n d ' u n e f a m i l l e d ' o b j e t s a y a n t m ^ e m e
s t r u c t u r e e t m ^ e m e c o m p o r t e m e n t .
U n e c l a s s e r e g r o u p e u n e n s e m b l e d ' a t t r i b u t s o u m e m b r e s , r e p a r t i s
e n
u n e n s e m b l e d e d o n n e e s
u n e n s e m b l e d e f o n c t i o n s , a p p e l e e s m e t h o d e s
U n o b j e t e s t e l e m e n t d e l a c l a s s e . C ' e s t u n e i n s t a n c e d e l a c l a s s e .
I l e s t o b t e n u p a r i n s t a n c i a t i o n
L a c l a s s e p e r m e t d e p r o d u i r e a u t a n t d ' e x e m p l a i r e s d ' o b j e t s q u e
n e c e s s a i r e .
L e s v a l e u r s d e s d o n n e e s m e m b r e s p e u v e n t d i e r e r d ' u n e i n -
s t a n c e a l ' a u t r e ( s a u f p o u r d e s d o n n e e s s t a t i q u e s , d e c l a s s e ) .
L e s m e t h o d e s s o n t l e s m ^ e m e s p o u r t o u t e s l e s i n s t a n c e s d ' u n e
c l a s s e . O n d i s t i n g u e e n t r e m e t h o d e s d ' o b j e t ( d ' i n s t a n c e ) e t
m e t h o d e s d e c l a s s e .
L a d e c l a r a t i o n d ' u n e c l a s s e d o n n e l a n a t u r e d e s m e m b r e s ( t y p e ,
s i g n a t u r e ) , e t l e s d r o i t s d ' a c c e s : p u b l i c , p r o t e c t e d , p r i v a t e
( d e f a u t ) .
L a d e n i t i o n d ' u n e c l a s s e f o u r n i t l a d e n i t i o n d e s m e t h o d e s .
L ' e n c a p s u l a t i o n s e r e a l i s e e n d o n n a n t a l ' u t i l i s a t e u r
u n c h i e r e n - t ^ e t e c o n t e n a n t l a d e c l a r a t i o n d e l a c l a s s e
u n m o d u l e o b j e t c o n t e n a n t l a v e r s i o n c o m p i l e e d u c h i e r c o n -
t e n a n t l a d e n i t i o n d e l a c l a s s e .
J e a n B e r s t e l 4 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
D e c l a r a t i o n
L a s y n t a x e e s t c e l l e d e s s t r u c t u r e s . U n e s t r u c t e s t u n e c l a s s e
d o n t t o u s l e s a t t r i b u t s s o n t p u b l i c s .
c l a s s P t {
f l o a t x , y
p u b l i c :
v o i d i n i t ( f l o a t , f l o a t )
v o i d d e p l a c e ( f l o a t , f l o a t )
v o i d a f f i c h e ( )
}
L a c l a s s e P t a d e u x m e m b r e s d o n n e e s p r i v e s x e t y
E l l e a t r o i s m e t h o d e s p u b l i q u e s i n i t , d e p l a c e e t a f f i c h e
J e a n B e r s t e l 4 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
D e n i t i o n
E l l e u t i l i s e l ' o p e r a t e u r d e p o r t e e : : p o u r i n d i q u e r l a c l a s s e a
l a q u e l l e a p p a r t i e n t l a m e t h o d e .
v o i d P t : : i n i t ( f l o a t a , f l o a t b ) {
x = a y = b
}
v o i d P t : : d e p l a c e ( f l o a t d x , f l o a t d y ) {
x + = d x y + = d y
}
v o i d P t : : a f f i c h e ( ) {
c o u t < < " x = " < < x < < " , y = " < < y < < e n d l
}
L e s c h a m p s x , y i n v o q u e s d a n s l e s m e t h o d e s s o n t c e u x d e l ' o b j e t
q u i a p p e l l e l a m e t h o d e . C e t o b j e t e s t e x p l i c i t e m e n t a c c e s s i b l e p a r
l e p o i n t e u r t h i s . O n p e u t e c r i r e
v o i d P t : : i n i t ( f l o a t a , f l o a t b ) {
t h i s - > x = a t h i s - > y = b
}
. . .
J e a n B e r s t e l 5 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
U t i l i s a t i o n
v o i d m a i n ( ) {
P t a , b
a . i n i t ( 1 . 5 , 2 . 5 )
b . i n i t ( 3 , - 5 )
a . a f f i c h e ( )
b . a f f i c h e ( )
a . d e p l a c e ( 0 . 1 , 0 . 1 )
a . a f f i c h e ( )
}
R e s u l t a t
x = 1 . 5 , y = 2 . 5
x = 3 , y = - 5
x = 1 . 6 , y = 2 . 6
J e a n B e r s t e l 5 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E n c a p s u l a t i o n
L e p r o j e t e s t c o m p o s e d e t r o i s c h i e r s
U n c h i e r p t . h d e d e c l a r a t i o n d e l a c l a s s e P t
U n c h i e r p t . c d ' i m p l e m e n t a t i o n d e s m e t h o d e s d e l a c l a s s e
U n c h i e r m a i n . c d ' u t i l i s a t i o n .
L e c h i e r d ' i m p l e m e n t a t i o n e s t a t e r m e r e m p l a c e p a r u n m o d u l e
o b j e t p t . o o u u n e b i b l i o t h e q u e .
P o u r e v i t e r l ' i n c l u s i o n m u l t i p l e , u n c h i e r d ' e n - t ^ e t e c o n t i e n t u n e
d i r e c t i v e a p p r o p r i e e p o u r l e p r e p r o c e s s e u r .
J e a n B e r s t e l 5 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
- - - - - - - - - - - - - - - - - - - - - - - - - -
/ / F i c h i e r p t . h
# i f n d e f P T _ H
# d e f i n e P T _ H
c l a s s P t {
f l o a t x , y
p u b l i c :
P t ( f l o a t , f l o a t )
v o i d d e p l a c e ( f l o a t , f l o a t )
v o i d a f f i c h e ( )
}
# e n d i f
- - - - - - - - - - - - - - - - - - - - - - - - - -
/ / F i c h i e r p t . c
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e " p t . h "
P t : : P t ( f l o a t a , f l o a t b ) {
x = a y = b
}
v o i d P t : : d e p l a c e ( f l o a t d x , f l o a t d y ) {
x + = d x y + = d y
}
v o i d P t : : a f f i c h e ( ) {
c o u t < < " x = " < < x < < " , y = " < < y < < e n d l
}
- - - - - - - - - - - - - - - - - - - - - - - - - -
/ / F i c h i e r m a i n . c
# i n c l u d e " p t . h "
v o i d m a i n ( )
{
P t a ( 1 . 5 , 2 . 5 ) , b ( 3 , - 5 )
a . a f f i c h e ( )
b . a f f i c h e ( )
a . d e p l a c e ( 0 . 1 , 0 . 1 )
a . a f f i c h e ( )
}
- - - - - - - - - - - - - - - - - - - - - - - - - -
J e a n B e r s t e l 5 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C o n s t r u c t e u r s
U n c o n s t r u c t e u r e s t u n e m e t h o d e d ' i n i t i a l i s a t i o n d e s a t t r i b u t s d ' u n
o b j e t a l a c r e a t i o n .
E n C + + , u n c o n s t r u c t e u r a l e n o m d e l a c l a s s e , e t p a s d e t y p e
d e r e t o u r .
U n e c l a s s e p e u t a v o i r p l u s i e u r s c o n s t r u c t e u r s .
U n c o n s t r u c t e u r s a n s a r g u m e n t s e s t a p p e l e c o n s t r u c t e u r p a r
d e f a u t
{ c e c o n s t r u c t e u r e x i s t e i m p l i c i t e m e n t , s ' i l e s t l e s e u l c o n s t r u c -
t e u r .
{ l a d e n i t i o n d ' u n d e u x i e m e c o n s t r u c t e u r e x i g e q u e l ' o n
d e n i s s e e x p l i c i t e m e n t l e c o n s t r u c t e u r p a r d e f a u t s i l ' o n v e u t
s ' e n s e r v i r .
L e c o n s t r u c t e u r p a r d e f a u t e s t u t i l i s e
l o r s d e l a d e n i t i o n d ' u n o b j e t , p a r
X x
l o r s d ' u n e a l l o c a t i o n , p a r
p x = n e w X
S a u f e c r i t u r e e x p l i c i t e , l e c o n s t r u c t e u r p a r d e f a u t n ' e e c t u e p a s
d ' a c t i o n a u t r e q u e l a r e s e r v a t i o n d e p l a c e .
L e d e s t r u c t e u r e s t n o t e ~ X ( ) p o u r u n e c l a s s e X . I l e s t u t i l i s e
l o r s q u e l e p r o g r a m m e q u i t t e l e b l o c o u l ' o b j e t e s t d e c l a r e
p o u r l a d e s t r u c t i o n e x p l i c i t e p a r
d e l e t e p x
J e a n B e r s t e l 5 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
U n d e s t r u c t e u r l i b e r e e x p l i c i t e m e n t u n e p l a c e a l l o u e e . C e c i e s t
i m p o r t a n t q u a n d u n c o n s t r u c t e u r f a i t d e l ' a l l o c a t i o n e x p l i c i t e .
E n p l u s , i l e x i s t e u n c o n s t r u c t e u r d e c o p i e , u n o p e r a t e u r
d ' a e c t a t i o n , e t d e s c o n s t r u c t e u r s d e c o n v e r s i o n q u i s e r o n t v u s
p l u s t a r d .
E x e m p l e . R e m p l a c e m e n t d e l a m e t h o d e i n i t p a r u n c o n s t r u c t e u r :
c l a s s P t {
f l o a t x , y
p u b l i c :
P t ( f l o a t , f l o a t )
v o i d d e p l a c e ( f l o a t , f l o a t )
v o i d a f f i c h e ( )
}
P t : : P t ( f l o a t a , f l o a t b ) {
x = a y = b
}
. . .
v o i d m a i n ( )
{
P t a ( 1 . 5 , 2 . 5 ) , b ( 3 , - 5 )
. . .
}
L e c o n s t r u c t e u r P t r e n d i n o p e r a n t l e c o n s t r u c t e u r p a r d e f a u t s ' i l
n ' e s t p a s r e d e n i .
L e c o n s t r u c t e u r e s t e m p l o y e e n p a s s a n t l e s a r g u m e n t s e n
p a r a m e t r e .
V a r i a t i o n s
U n c o n s t r u c t e u r s i m p l e p e u t ^ e t r e d e n i e n l i g n e , p a r
J e a n B e r s t e l 5 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
c l a s s P t {
f l o a t x , y
p u b l i c :
P t ( f l o a t a , f l o a t b ) { x = a y = b }
. . .
}
A u l i e u d e c o n s t r u i r e l ' o b j e t p u i s d ' a e c t e r d e s v a l e u r s a u x
c h a m p s , o n p e u t i n i t i a l i s e r l e s c h a m p s a v e c l e s v a l e u r s , p a r
c l a s s P t {
p u b l i c :
f l o a t x , y
P t ( ) { }
P t ( f l o a t a , f l o a t b ) : x ( a ) , y ( b ) { }
. . .
}
V o i c i d e s e x e m p l e s d ' e m p l o i d e c e t t e c l a s s e
1 . - L e s c o n s t r u c t e u r s :
m a i n ( ) {
P t p / / p a r d e f a u t
P t q ( 4 , 5 ) / / d e u x i e m e
P t * a = n e w P t / / p a r d e f a u t
P t * b = n e w P t ( 4 , 5 ) / / d e u x i e m e
d e l e t e a , b / / l i b e r a t i o n
2 . - T a b l e a u x d ' o b j e t s :
m a i n ( ) {
c o n s t i n t t a i l l e = 7
P t * a = n e w P t t a i l l e ] / / p a r d e f a u t
f o r ( i n t i = 0 i < t a i l l e i + + )
J e a n B e r s t e l 5 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
c o u t < < i < < a i ] . x < < a i ] . y < < e n d l
d e l e t e ] a
L a l i b e r a t i o n d ' u n t a b l e a u d ' o b j e t s s e f a i t p a r d e l e t e ] q u i
p a r c o u r t l e t a b l e a u e t a p p e l l e l e d e s t r u c t e u r s u r c h a q u e e l e m e n t
d u t a b l e a u
p u i s l i b e r e l e t a b l e a u .
J e a n B e r s t e l 5 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
E x e m p l e d e c o n s t r u c t e u r e t d e s t r u c t e u r
V o i c i u n e p e t i t e c l a s s e . L a m e n t i o n e x p l i c i t e d u c o n s t r u c t e u r p a r
d e f a u t e t d u d e s t r u c t e u r s i g n i e l e u r r e d e n i t i o n .
c l a s s I d {
c h a r * n o m
p u b l i c :
I d ( )
~ I d ( )
}
L e c o n s t r u c t e u r e t l e d e s t r u c t e u r s o n t d e n i s c o m m e s u i t :
I d : : I d ( ) {
c h a r t 2 0 ]
c o u t < < " E n t r e z v o t r e n o m : "
c i n > > t
n o m = n e w c h a r 1 + s t r l e n ( t ) ]
s t r c p y ( n o m , t )
}
I d : : ~ I d ( ) {
c o u t < < " M o n n o m e s t " < < n o m < < e n d l
d e l e t e n o m
}
J e a n B e r s t e l 5 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L e p r o g r a m m e s e r e d u i t a :
v o i d m a i n ( )
{
I d p i e r r e , p a u l
}
V o i c i u n e t r a c e d ' e x e c u t i o n :
E n t r e z v o t r e n o m : P i e r r e
E n t r e z v o t r e n o m : P a u l
M o n n o m e s t P a u l
M o n n o m e s t P i e r r e
J e a n B e r s t e l 5 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
U n e c l a s s e d e c o m p l e x e s
c l a s s C o m p l {
f l o a t r e , i m
C o m p l ( ) { r e = i m = 0 }
}
L e c o n s t r u c t e u r p a r d e f a u t C o m p l ( ) e s t e x p l i c i t e p o u r x e r d e s
v a l e u r s d e d e p a r t . A i n s i
C o m p l s , t
d e n i t d e u x c o m p l e x e s s , t i n i t i a l i s e s c o m m e i n d i q u e .
U n c o n s t r u c t e u r ( d e c o n v e r s i o n ) e s t u t i l e p o u r c o n v e r t i r u n c o u p l e
d e f l o a t e n c o m p l e x e s :
C o m p l : : C o m p l ( f l o a t x , f l o a t y ) { r e = x i m = y }
L a c o n v e r s i o n d ' u n r e e l e n c o m p l e x e e s t f a i t e e n m e t t a n t i m a z e r o :
C o m p l : : C o m p l ( f l o a t x ) { r e = x i m = 0 }
S i l e s f o n c t i o n s s o n t c o u r t e s , o n l e s d e n i t e n l i g n e . E n s e m b l e :
c l a s s C o m p l {
f l o a t r e , i m
C o m p l ( ) { r e = i m = 0 }
C o m p l ( f l o a t x , f l o a t y ) { r e = x i m = y }
C o m p l ( f l o a t x ) { r e = x i m = 0 }
}
E n u t i l i s a n t l e s a r g u m e n t s p a r d e f a u t , l e s t r o i s c o n s t r u c t e u r s s e r e -
d u i s e n t e n u n s e u l . I c i , o n r e m p l a c e l ' a e c t a t i o n p a r l ' i n i t i a l i s a t i o n ,
e t o n a j o u t e u n e m e t h o d e :
J e a n B e r s t e l 6 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
c l a s s C o m p l {
f l o a t r e , i m
C o m p l ( f l o a t r = 0 , f l o a t i = 0 ) : r e ( r ) , i m ( i ) { }
f l o a t m o d u l e ( ) { r e t u r n s q r t ( r e * r e + i m * i m ) }
}
O n s ' e n s e r t
a l ' i n i t i a l i s a t i o n , p a r e x e m p l e
C o m p l h , a ( 3 , 5 ) , b = C o m p l ( 2 , 4 )
C o m p l c ( 5 ) , d = C o m p l ( 6 ) , e = 7
P a r c o n v e r s i o n d e t y p e , 7 e s t t r a n s f o r m e e n C o m p l ( 7 ) p u i s
c o p i e .
p o u r l a r e a l i s a t i o n d ' u n e c o n v e r s i o n d a n s u n e e x p r e s s i o n :
v o i d f ( C o m p l z ) { . . . }
. . .
f ( 3 . 1 4 )
p a r a p p e l e x p l i c i t e d a n s u n e i n s t r u c t i o n
r = C o m p l ( 3 , 4 ) . m o d u l e ( )
J e a n B e r s t e l 6 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
U n e c l a s s e d e r a t i o n n e l s
L ' o b j e c t i f e s t d e m o n t r e r l ' u t i l i s a t i o n d e s u r c h a r g e s , c e t t e f o i s - c i
s u r l e s o p e r a t e u r s a r i t h m e t i q u e s e t d ' e n t r e e - s o r t i e .
D a n s n o t r e i m p l e m e n t a t i o n , u n n o m b r e r a t i o n n e l e s t t o u j o u r s r e -
d u i t , e t l e d e n o m i n a t e u r e s t t o u j o u r s p o s i t i f . D ' o u l a n e c e s s i t e
d ' u n e m e t h o d e d e r e d u c t i o n .
c l a s s R a t {
s t a t i c i n t p g c d ( i n t , i n t )
p u b l i c :
i n t n u m , d e n
v o i d r e d ( ) / / r e d u i t l a f r a c t i o n
R a t ( i n t n = 0 ) : n u m ( n ) , d e n ( 1 ) { }
R a t ( i n t n , i n t d ) : n u m ( n ) , d e n ( d ) { r e d ( ) }
}
I l y a d e u x c o n s t r u c t e u r s s e u l l e d e u x i e m e f a i t u s a g e d u r e d u c t e u r .
R a t a / / a = 0
R a t b ( 3 ) / / b = 3
R a t c ( 3 , 2 ) / / c = 3 / 2
R a t d = 7 / / d = 7
P a r c o n v e r s i o n d e t y p e , 7 e s t t r a n s f o r m e e n R a t ( 7 ) p u i s d e s t
i n i t i a l i s e a c e t t e v a l e u r .
J e a n B e r s t e l 6 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L a r e d u c t i o n f a i t a p p e l a u n e f o n c t i o n d e c a l c u l d e p g c d :
v o i d R a t : : r e d ( ) {
i n t p = p g c d ( ( n u m > 0 ) ? n u m : - n u m , d e n )
n u m / = p d e n / = p
}
i n t R a t : : p g c d ( i n t a , i n t b ) {
r e t u r n ( ! b ) ? a : p g c d ( b , a % b )
}
U n e m e t h o d e d e c l a r e e s t a t i c
p e u t ^ e t r e a p p e l e e s a n s r e f e r e n c e a u n e i n s t a n c e
p e u t ^ e t r e a p p e l e e p a r r e f e r e n c e a s a c l a s s e
n ' a p a s d e p o i n t e u r t h i s a s s o c i e .
U n e d o n n e e d e c l a r e e s t a t i c e s t c o m m u n e a t o u t e s l e s i n s t a n c e s .
J e a n B e r s t e l 6 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
S u r c h a r g e d ' o p e r a t e u r s
C o m m e t o u t e f o n c t i o n , u n o p e r a t e u r p e u t e g a l e m e n t ^ e t r e s u r -
c h a r g e . P o u r s u r c h a r g e r u n o p e r a t e u r o p o n d e n i t u n e n o u v e l l e
f o n c t i o n d e n o m
o p e r a t o r o p
P a r e x e m p l e o p e r a t o r = o u o p e r a t o r + . L a s y n t a x e e s t
t y p e o p e r a t o r o p ( t y p e s d e s o p e r a n d e s )
P a r e x e m p l e
R a t o p e r a t o r + ( R a t , R a t )
L ' e x p r e s s i o n
a + b
e q u i v a u t a
o p e r a t o r + ( a , b )
U n o p e r a t e u r s u r c h a r g e p e u t s e d e n i r
a u n i v e a u g l o b a l ,
c o m m e m e m b r e d ' u n e c l a s s e .
A p p o r t d e l a s u r c h a r g e : l e c a l c u l s ' e c r i t c o m m e p o u r u n t y p e e l e -
m e n t a i r e !
J e a n B e r s t e l 6 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
N o u s d e n i s s o n s l e s q u a t r e o p e r a t i o n s a r i t h m e t i q u e s p a r :
R a t o p e r a t o r + ( R a t a , R a t b ) {
r e t u r n R a t ( a . n u m * b . d e n + a . d e n * b . n u m , a . d e n * b . d e n )
}
R a t o p e r a t o r - ( R a t a , R a t b ) {
r e t u r n R a t ( a . n u m * b . d e n - a . d e n * b . n u m , a . d e n * b . d e n )
}
R a t o p e r a t o r / ( R a t a , R a t b ) {
r e t u r n R a t ( a . n u m * b . d e n , a . d e n * b . n u m )
}
R a t o p e r a t o r * ( R a t a , R a t b ) {
r e t u r n R a t ( a . n u m * b . n u m , a . d e n * b . d e n )
}
L e m o i n s u n a i r e s e d e n i t p a r :
R a t o p e r a t o r - ( R a t a ) {
r e t u r n R a t ( - a . n u m , a . d e n )
}
L e s r a t i o n n e l s p a s s e e n a r g u m e n t n e s o n t p a s m o d i e s , o n p e u t
d o n c l e s s p e c i e r c o n s t R a t &
R a t o p e r a t o r + ( c o n s t R a t & a , c o n s t R a t & b ) { . . . }
R a t o p e r a t o r - ( c o n s t R a t & a , c o n s t R a t & b ) { . . . }
. . .
L ' o p e r a t e u r d ' i n c r e m e n t a t i o n + = s e s u r c h a r g e e g a l e m e n t :
J e a n B e r s t e l 6 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
R a t & o p e r a t o r + = ( R a t & a , c o n s t R a t & b ) {
r e t u r n a = R a t ( a . n u m * b . d e n + a . d e n * b . n u m , a . d e n * b . d e n
}
L ' u n d e s a p p e l s
a + = b / / o u
a = o p e r a t o r + = ( a , b )
c o n s t r u i t u n r a t i o n n e l t e m p o r a i r e ,
l e c o p i e d a n s a p a s s e p a r r e f e r e n c e
e n t r a n s m e t l a r e f e r e n c e e n s o r t i e .
M a i s i c i , u n e d e n i t i o n e n m e t h o d e e s t p l u s l o g i q u e ( v o i r p l u s l o i n ) .
J e a n B e r s t e l 6 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L e s o p e r a t e u r s d ' e n t r e e e t d e s o r t i e s e s u r c h a r g e n t e g a l e m e n t :
o s t r e a m & o p e r a t o r < < ( o s t r e a m & o u t , R a t r ) {
r e t u r n o u t < < r . n u m < < " / " < < r . d e n
}
i s t r e a m & o p e r a t o r > > ( i s t r e a m & i n , R a t & r ) {
i n > > r . n u m > > r . d e n r . r e d ( )
r e t u r n i n
}
L e s o p e r a t e u r s d ' e n t r e e e t d e s o r t i e p r e n n e n t e t r e t o u r n e n t l a
r e f e r e n c e a u o t e n a r g u m e n t , p o u r e v i t e r u n e c o p i e .
N o t e r l a r e f e r e n c e d a n s l a l e c t u r e !
J e a n B e r s t e l 6 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
E t v o i c i u n t e s t :
v o i d m a i n ( )
{
R a t a , b , c
c o u t < < " 1 - 1 / 2 = " < < 1 - R a t ( 1 ) / 2 < < e n d l
c o u t < < " D o n n e r d e u x r a t i o n n e l s : " c i n > > a > > b
c o u t < < " J ' a i l u : " < < a < < " " < < b
c o u t < < e n d l
c o u t < < - a < < e n d l
c o u t < < - a + 1 < < e n d l
c o u t < < - a + 1 - ( R a t ) 1 / 2 < < e n d l
c o u t < < - a + 1 - ( R a t ) 1 / 2 + a < < e n d l
c = - a + 1 - ( R a t ) 1 / 2 + a + b * 2
c o u t < < " \ n R e s u l t a t " < < c < < e n d l
}
C e c i d o n n e :
1 - 1 / 2 = 1 / 2
D o n n e r d e u x r a t i o n n e l s : 2 5 8 4
J ' a i l u : 2 / 5 2 / 1
- 2 / 5
3 / 5
1 / 1 0
1 / 2
R e s u l t a t 9 / 2
J e a n B e r s t e l 6 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
V o i c i u n e m p l o i , p r o c h e d ' u n c a l c u l f o r m e l . L e s n o m b r e s d e
B e r n o u l l i B
n
s o n t d e s n o m b r e s r a t i o n n e l s q u i v e r i e n t
B
n
=
n
X
k = 0
0
B
@
n
k
1
C
A
B
k
a v e c B
0
= 1 , B
1
= ; 1 = 2 . O n m o n t r e q u e B
2 n + 1
= 0 p o u r n > 1 ,
e t q u e
B
n ; 1
= ;
1
n
n ; 2
X
k = 0
0
B
@
n
k
1
C
A
B
k
C ' e s t c e t t e d e r n i e r e f o r m u l e q u e n o u s c a l c u l o n s :
v o i d B e r n o u l l i ( i n t N , R a t B ] ) {
B 0 ] = 1
B 1 ] = R a t ( - 1 , 2 )
f o r ( i n t n = 2 n < = N n + + )
B n ] = 0
f o r ( n = 3 n < = N n + = 2 ) {
R a t s
f o r ( i n t k = 0 k < = n - 2 k + + )
s + = b i n o m i a l ( n , k ) * B k ]
B n - 1 ] = - s / n
}
}
I l f a u t n o t e r l ' a p p o r t d e l a s u r c h a r g e : l e c a l c u l s ' e c r i t c o m m e p o u r
u n t y p e e l e m e n t a i r e ! D e m ^ e m e p o u r l ' a c h a g e :
J e a n B e r s t e l 6 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
v o i d m a i n ( )
{
c o n s t N = 2 2
R a t B N + 1 ]
B e r n o u l l i ( N , B )
f o r ( i n t i = 0 i < = N i + + )
c o u t < < " B ( " < < i < < " ) = " < < B i ] < < e n d l
}
e t l e r e s u l t a t e s t :
B ( 0 ) = 1 / 1
B ( 1 ) = - 1 / 2
B ( 2 ) = 1 / 6
B ( 3 ) = 0 / 1
B ( 4 ) = - 1 / 3 0
B ( 5 ) = 0 / 1
B ( 6 ) = 1 / 4 2
. . .
J e a n B e r s t e l 7 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
M e m b r e s s t a t i q u e s
P a r m i l e s a t t r i b u t s , o n d i s t i n g u e
l e s m e m b r e s d e c l a s s e , q u a l i e s d e s t a t i q u e s
l e s m e m b r e s d ' o b j e t .
U n e d o n n e e m e m b r e s t a t i q u e e s t s p e c i e e p a r s t a t i c
E l l e n ' e s t i n s t a n c i e e q u ' u n e s e u l e f o i s
E l l e e s t c o m m u n e a t o u t e s l e s i n s t a n c e s d e l a c l a s s e
S i u n o b j e t l a m o d i e , e l l e e s t m o d i e e p o u r t o u s l e s o b j e t s .
E l l e e s t i n i t i a l i s e e a v a n t u t i l i s a t i o n .
U n e d o n n e e s t a t i q u e e t c o n s t a n t e e s t u n e d o n n e e i m m u a b l e .
U n m e t h o d e s t a t i q u e e s t s p e c i e e p a r s t a t i c
E l l e n e f a i t p a s r e f e r e n c e a u n o b j e t ( p a s d e t h i s )
E l l e e s t a p p e l e e c o m m e u n e f o n c t i o n g l o b a l e
S ' i l f a u t p r e c i s e r s a c l a s s e , s o n n o m p r e x e a l ' a i d e d e
l ' o p e r a t e u r d e p o r t e e : M a t h : : p g c d ( )
# i n c l u d e < i o s t r e a m . h >
c l a s s X Y {
p u b l i c :
s t a t i c i n t a p p
X Y ( ) { c o u t < < " + : " < < + + a p p < < e n d l }
~ X Y ( ) { c o u t < < " - : " < < a p p - - < < e n d l }
}
J e a n B e r s t e l 7 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
i n t X Y : : a p p = 0 / / d o i t e t r e i n i t i a l i s e
v o i d m a i n ( ) {
X Y a , b , c
{
X Y a , b
}
X Y d
}
R e s u l t a t :
+ : 1
+ : 2
+ : 3
+ : 4
+ : 5
- : 5
- : 4
+ : 4
- : 4
- : 3
- : 2
- : 1
J e a n B e r s t e l 7 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
M e t h o d e s c o n s t a n t e s
U n e m e t h o d e q u i n e m o d i e p a s l ' o b j e t a p p e l a n t p e u t r e c e v o i r l e
q u a l i c a t i f c o n s t e n s u x e . L e s \ g e t t e r f u n c t i o n s " s o n t d e c e
t y p e .
U n e d e s d i s c i p l i n e s d e p r o g r a m m a t i o n o b j e t s u g g e r e :
l e s d o n n e e s m e m b r e s s o n t p r i v e e s o u p r o t e g e e s
o n p e u t o b t e n i r l a v a l e u r d ' u n m e m b r e d o n n e e p a r u n e f o n c t i o n
d ' a c c e s ( g e t t e r f u n c t i o n )
o n p e u t m o d i e r ( q u a n d c ' e s t p e r m i s ) l a v a l e u r d ' u n e d o n n e e
m e m b r e p a r u n e f o n c t i o n d e m o d i c a t i o n ( s e t t e r f u n c t i o n )
C e t t e d i s c i p l i n e s ' e t e n d a u n o m d e s f o n c t i o n s . U n e p r o p o s i t i o n :
u n e d o n n e e m e m b r e ( p r i v e e ) n i t p a r l e c a r a c t e r e d e s o u l i g n e -
m e n t : x y z _
l a \ g e t t e r f u n c t i o n " a l e n o m g e t x y z ( )
l a \ s e t t e r f u n c t i o n " a l e n o m s e t x y z ( )
U n e a u t r e p r o p o s i t i o n ( J a v a ) :
l e n o m d ' u n e d o n n e e m e m b r e c o m m e n c e p a r u n e m i n u s -
c u l e c h a q u e m o t q u i s u i t c o m m e n c e p a r u n e m a j u s c u l e :
r a y o n G l o b a l
l a \ g e t t e r f u n c t i o n " a l e n o m g e t R a y o n G l o b a l ( )
l a \ s e t t e r f u n c t i o n " a l e n o m s e t R a y o n G l o b a l ( )
L a \ g e t t e r f u n c t i o n " n e m o d i e p a s l a d o n n e e . E l l e r e c o i t l e s u x e
c o n s t
J e a n B e r s t e l 7 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
c l a s s R a t {
p r o t e c t e d :
i n t n u m _ , d e n _
p u b l i c :
. . .
i n t g e t n u m ( ) c o n s t { r e t u r n n u m _ }
i n t g e t d e n ( ) c o n s t { r e t u r n d e n _ }
. . .
v o i d s e t n u m ( i n t n u m ) { n u m _ = n u m }
v o i d s e t d e n ( i n t d e n ) { d e n _ = d e n }
}
J e a n B e r s t e l 7 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
6
C O P I E E T A F F E C T A T I O N
1 . C o n s t r u c t e u r s
2 . C o n s t r u c t e u r d e c o p i e
3 . A e c t a t i o n
4 . C o n v e r s i o n s
J e a n B e r s t e l 7 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C o n s t r u c t e u r s
L e s c o n s t r u c t e u r s s e c l a s s e n t s y n t a c t i q u e m e n t e n 4 c a t e g o r i e s
1 . l e c o n s t r u c t e u r p a r d e f a u t , s a n s a r g u m e n t ,
2 . l e s c o n s t r u c t e u r s d e c o n v e r s i o n , a u n a r g u m e n t
3 . l e c o n s t r u c t e u r d e c o p i e ,
4 . l e s a u t r e s c o n s t r u c t e u r s .
U n c o n s t r u c t e u r d e c o n v e r s i o n s e r t s o u v e n t a l a p r o m o t i o n
E x e m p l e :
c l a s s R a t {
i n t n u m , d e n
p u b l i c :
i n t n u m , d e n
. . .
R a t ( i n t n ) { n u m = n d e n = 1 }
. . .
}
O n s ' e n s e r t p o u r l a c o n v e r s i o n
R a t r , s
. . .
r = s + 7
L ' e n t i e r 7 e s t p r o m u e n R a t ( 7 )
J e a n B e r s t e l 7 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C o n s t r u c t e u r d e c o p i e
C h a q u e c l a s s e p o s s e d e u n c o n s t r u c t e u r d e c o p i e ( n e p a s c o n f o n d r e
a v e c l ' o p e r a t e u r d ' a e c t a t i o n ) .
L e c o n s t r u c t e u r d e c o p i e p a r d e f a u t c o p i e b i t a b i t u n e z o n e d e
m e m o i r e d a n s u n e a u t r e ( c o p i e s u p e r c i e l l e ) . C e c i e s t i n s u s a n t
e n p r e s e n c e d ' a d r e s s e s . I l f a u t a l o r s a l l o u e r d e n o u v e l l e s z o n e s
m e m o i r e ( c o p i e p r o f o n d e ) .
L e c o n s t r u c t e u r d e c o p i e e s t u t i l i s e
l o r s d ' u n e i n i t i a l i s a t i o n :
X x = y
X x ( y )
X * x x = n e w X ( y )
o u y e s t u n o b j e t d e j a e x i s t a n t
l o r s d u r e t o u r d ' u n e f o n c t i o n r e t o u r n a n t u n o b j e t p a r v a l e u r
l o r s d u p a s s a g e d ' u n o b j e t p a r v a l e u r a u n e f o n c t i o n .
L e c o n s t r u c t e u r d e c o p i e a d e u x p r o t o t y p e s p o s s i b l e s :
X ( X & )
X ( c o n s t X & )
L ' a r g u m e n t e s t d o n c u n o b j e t d e l a c l a s s e X p a s s e p a r r e f e r e n c e
( e v i d e m m e n t ! ) e t e v e n t u e l l e m e n t s p e c i e c o m m e n o n m o d i a b l e
d a n s l e c o n s t r u c t e u r .
J e a n B e r s t e l 7 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
E x e m p l e s :
X i d e n t
X i b i s = i d e n t
X i b i s ( i d e n t )
X * p i d = n e w X ( i d e n t )
J e a n B e r s t e l 7 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
V o i c i u n e c l a s s e p o s s e d a n t :
U n c o n s t r u c t e u r d e c o p i e P t ( c o n s t P t & p )
U n o p e r a t e u r d ' a e c t a t i o n P t & o p e r a t o r = ( c o n s t P t & p )
U n d e s t r u c t e u r ~ P t ( )
# i n c l u d e < i o s t r e a m . h >
c l a s s P t {
s t a t i c c h a r u
c h a r n o
i n t x , y
p u b l i c :
P t ( i n t a b s = 1 , i n t o r d = 0 ) {
x = a b s y = o r d
n o = u + +
c o u t < < " C o n s t r u c t i o n d e " < < n o < < " : " < < x < < " " < < y < < e n d l
}
P t ( c o n s t P t & p ) {
x = p . x y = p . y n o = u + +
c o u t < < " R e c o p i e d e " < < p . n o < < " e n " < < n o < < e n d l
}
~ P t ( ) {
c o u t < < " D e s t r u c t i o n d e " < < n o < < e n d l
}
P t & o p e r a t o r = ( c o n s t P t & p ) {
x = p . x y = p . y
c o u t < < " A f f e c t a t i o n d e " < < p . n o < < " a " < < n o < < e n d l
r e t u r n * t h i s
}
}
c h a r P t : : u = ' a '
J e a n B e r s t e l 7 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
V o i c i u n p r o g r a m m e u t i l i s a n t c e t t e c l a s s e
v o i d F n ( P t , P t & , P t * )
v o i d m a i n ( )
{
c o u t < < " e n t r e e \ n "
P t a
P t b = 3
P t c = P t ( 0 , 2 )
{
P t d = P t ( a )
P t e = a
}
P t f
P t * p = n e w P t ( 6 , 7 )
F n ( a , b , p )
c = P t ( 5 , 5 )
c = f
P t j = 0
c o u t < < " s o r t i e \ n "
}
v o i d F n ( P t p , P t & q , P t * r ) {
c o u t < < " e n t r e e f \ n "
d e l e t e r
c o u t < < " s o r t i e f \ n "
}
J e a n B e r s t e l 8 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
e n t r e e
C o n s t r u c t i o n d e a : 1 0 / / P t a
C o n s t r u c t i o n d e b : 3 0 / / P t b = 3
C o n s t r u c t i o n d e c : 0 2 / / P t c = P t ( 0 , 2 )
R e c o p i e d e a e n d / / P t d = P t ( a )
R e c o p i e d e a e n e / / P t e = a
D e s t r u c t i o n d e e / / s o r t i e d u b l o c
D e s t r u c t i o n d e d
C o n s t r u c t i o n d e f : 1 0 / / P t f
C o n s t r u c t i o n d e g : 6 7 / / P t * p = n e w P t ( 6 , 7 )
R e c o p i e d e a e n h / / F n ( a , b , p )
e n t r e e f
D e s t r u c t i o n d e g / / d e l e t e r
s o r t i e f
D e s t r u c t i o n d e h / / d e l a c o p i e d e a
C o n s t r u c t i o n d e i : 5 5 / / P t ( 5 , 5 ) t e m p o r a i r e
A f f e c t a t i o n d e i a c
D e s t r u c t i o n d e i / / d u t e m p o r a i r e
A f f e c t a t i o n d e f a c
C o n s t r u c t i o n d e j : 0 0
s o r t i e
D e s t r u c t i o n d e j / / d a n s l ' o r d r e i n v e r s e
D e s t r u c t i o n d e f / / d e l e u r c r e a t i o n
D e s t r u c t i o n d e c
D e s t r u c t i o n d e b
D e s t r u c t i o n d e a
J e a n B e r s t e l 8 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
A e c t a t i o n
I l n e f a u t p a s c o n f o n d r e c o p i e e t a e c t a t i o n .
l e c o n s t r u c t e u r d e c o p i e s e r t a l ' i n i t i a l i s a t i o n e t p o u r l e p a s s a g e
d e p a r a m e t r e s . I l r e t o u r n e l ' o b j e t .
l ' o p e r a t e u r d ' a e c t a t i o n = p o u r l ' a e c t a t i o n d a n s u n e e x p r e s -
s i o n . I l r e t o u r n e u n e r e f e r e n c e .
L ' o p e r a t e u r d ' a e c t a t i o n e s t u n o p e r a t e u r , e t p e u t d o n c ^ e t r e
r e d e n i e x p l i c i t e m e n t p a r u n e f o n c t i o n o p e r a t o r = ( )
C h a q u e c l a s s e p o s s e d e u n o p e r a t e u r d ' a e c t a t i o n p a r d e f a u t .
L ' a e c t a t i o n e s t s u p e r c i e l l e c o m m e l a c o p i e , e t c o n s i s t e e n u n e
a e c t a t i o n m e m b r e a m e m b r e , c e q u i p o s e l e s m ^ e m e s p r o b l e m e s
q u e p o u r l a c o p i e . L a s i g n a t u r e d e l ' o p e r a t e u r e s t
X & o p e r a t o r = ( X )
e t l ' e x p r e s s i o n y = x e q u i v a u t a
y . o p e r a t o r = ( x )
L e r e s u l t a t d e l ' a e c t a t i o n e s t d o n c d a n s l ' o b j e t a p p e l a n t .
J e a n B e r s t e l 8 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
V o i c i u n e p e t i t e c l a s s e I d :
c l a s s I d {
c h a r * n o m
p u b l i c :
I d ( c o n s t I d & )
I d & o p e r a t o r = ( I d )
}
L e c o n s t r u c t e u r d e c o p i e e s t :
I d : : I d ( c o n s t I d & x ) {
n o m = n e w c h a r 1 + s t r l e n ( x . n o m ) ]
s t r c p y ( n o m , x . n o m )
}
L ' o p e r a t e u r d ' a e c t a t i o n e s t :
I d & I d : : o p e r a t o r = ( I d x ) {
n o m = n e w c h a r 1 + s t r l e n ( x . n o m ) ]
s t r c p y ( n o m , x . n o m )
r e t u r n * t h i s
}
L a r e f e r e n c e r e t o u r n e e e s t c e l l e d e l ' o b j e t a p p e l a n t .
C h a q u e m e t h o d e c o n t i e n t u n p o i n t e u r s u r l ' o b j e t a p p e l a n t l a m e t h -
o d e c e p o i n t e u r a p o u r n o m t h i s . L ' o b j e t l u i - m ^ e m e e s t d o n c
* t h i s
J e a n B e r s t e l 8 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
P o u r i l l u s t r e r l e r ^ o l e d e l a c o p i e , v o i c i q u a t r e f o n c t i o n s
I d v v ( I d x ) { r e t u r n x }
I d v r ( I d & x ) { r e t u r n x }
I d & r v ( I d x ) { r e t u r n x }
I d & r r ( I d & x ) { r e t u r n x }
L e s r e s u l t a t s d e s q u a t r e a p p e l s s o n t
y = v v ( x ) / / d e u x c o p i e s , u n e d e s t r u c t i o n
y = v r ( x ) / / u n e c o p i e
y = r v ( x ) / / u n e c o p i e , u n e d e s t r u c t i o n , A r g h !
y = r r ( x ) / / p a s d e c o p i e
D a n s l e t r o i s i e m e a p p e l , o n d e t r u i t l a v a r i a b l e c r e e e s u r l a p i l e
p o u r c o n s e r v e r l a c o p i e , a p r e s a v o i r p a s s e s o n n o m e n r e f e r e n c e !
U n \ b o n " c o m p i l a t e u r e m e t a u m o i n s u n a v e r t i s s e m e n t .
J e a n B e r s t e l 8 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
C o n v e r s i o n s
P o u r l e s c o n v e r s i o n s d e n i e s p a r l e p r o g r a m m e u r , i l y a d e u x p o s s -
s i b i l i t e s :
l e s c o n s t r u c t e u r s d e c o n v e r s i o n
l e s o p e r a t e u r s d e c o n v e r s i o n .
U n o p e r a t e u r d e c o n v e r s i o n d ' u n e c l a s s e C
e s t u n e f o n c t i o n m e m b r e d e C
a l e p r o t o t y p e
o p e r a t o r T ( )
o u T e s t l e t y p e c i b l e ( c l a s s e o u t y p e d e b a s e .
e s t a p p e l e i m p l i c i t e m e n t p a s l ' o b j e t ,
n ' e s t u t i l i s e q u e s i n e c e s s a i r e .
E x e m p l e . O n v e u t p o u v o i r e c r i r e
R a t r
. . .
i f ( r ) . . .
C ' e s t p o s s i b l e e n c o n v e r t i s s a n t r e n b o o l e a n q u i e s t v r a i s i l e
n u m e r a t e u r d e r e s t n o n n u l .
c l a s s R a t {
. . .
o p e r a t o r i n t ( ) { r e t u r n ( r . n u m ) ? 1 : 0 }
}
J e a n B e r s t e l 8 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
7
S U R C H A R G E D ' O P E R A T E U R S
1 . P r i n c i p e
2 . O p e r a t e u r s a m i s
3 . S y n t a x e
4 . O p e r a t e u r d ' i n d e x a t i o n
5 . O p e r a t e u r s l o g i q u e s
6 . O p e r a t e u r d ' i n s e r t i o n e t
d ' e x t r a c t i o n
7 . O p e r a t e u r s + + e t - -
8 . I t e r a t e u r s
J e a n B e r s t e l 8 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
P r i n c i p e
L e s o p e r a t e u r s f o r m e n t u n e f a m i l l e p a r t i c u l i e r e d e f o n c t i o n s , s p e -
c i q u e a C + + .
L ' u t i l i s a t i o n d e s o p e r a t e u r s p a r s u r c h a r g e i l l u s t r e u n a s p e c t i n -
t e r e s s a n t d e l a p r o g r a m m a t i o n e v o l u e e , i n d e p e n d a n t d e l a p r o -
g r a m m a t i o n o b j e t .
R a p p e l d e q u e l q u e s p r i n c i p e s :
C h a q u e f o n c t i o n a u n e s i g n a t u r e , q u i e s t l a l i s t e d e s t y p e s d e s
p a r a m e t r e s f o r m e l s ( e t l e t y p e d u r e s u l t a t )
U n m ^ e m e n o m d e f o n c t i o n p e u t d e s i g n e r p l u s i e u r s f o n c t i o n s d e
s i g n a t u r e s d i e r e n t e s , s a n s c o m p t e r l e t y p e d u r e s u l t a t
I l y a s u r c h a r g e s i l e c h o i x d e l a f o n c t i o n e s t d e t e r m i n e p a r l e
t y p e d e s p a r a m e t r e s d ' a p p e l
I l y a p o l y m o r p h i s m e s i l e c h o i x d e l a f o n c t i o n e s t d e t e r m i n e
p a r l a v a l e u r d e s p a r a m e t r e s d ' a p p e l .
J e a n B e r s t e l 8 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
L e s o p e r a t e u r s s o n t a u n o m b r e d e 4 0 :
+ - * / % ^ & | ~ !
+ = - = * = / = % = ^ = & = | =
+ + - - = = = ! = < > < = > =
< < > > < < = > > = & & | |
- > * , - > ] ( ) n e w d e l e t e
L e s c i n q d e r n i e r s s o n t : l ' i n d i r e c t i o n , l ' i n d e x a t i o n , l ' a p p e l d e f o n c -
t i o n , l ' a l l o c a t i o n e t l a d e s a l l o c a t i o n . I l n ' e s t p a s p o s s i b l e d e c h a n g e r
l a p r e c e d e n c e d e s o p e r a t e u r s , n i l a s y n t a x e d e s e x p r e s s i o n s , n i d e
d e n i r d e n o u v e a u x o p e r a t e u r s . D ' a u t r e s o p e r a t e u r s e x i s t e n t :
. : : ? : s i z e o f
m a i s i l n e p e u v e n t ^ e t r e s u r c h a r g e s .
J e a n B e r s t e l 8 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
O p e r a t e u r s a m i s
U n e f o n c t i o n a m i e d ' u n e c l a s s e a l e s m ^ e m e s d r o i t s q u ' u n e f o n c t i o n
m e m b r e , e t e n p a r t i c u l i e r p e u t a c c e d e r a u x m e m b r e s p r i v e s d e l a
c l a s s e .
c l a s s R a t {
i n t n u m , d e n / / d o n c p r i v e s
p u b l i c :
i n t N u m ( ) { r e t u r n n u m }
i n t D e n ( ) { r e t u r n d e n }
R a t ( i n t n = 0 , i n t d = 1 ) : n u m ( n ) , d e n ( d )
}
L ' a d d i t i o n
R a t o p e r a t o r + ( c o n s t R a t & a , c o n s t R a t & b ) {
i n t n = a . N u m ( ) * b . D e n ( ) + a . D e n ( ) * b . N u m ( )
r e t u r n R a t ( n , a . D e n ( ) * b . D e n ( ) )
}
s ' e c r i t p l u s e c a c e m e n t e t p l u s l i s i b l e m e n t :
R a t o p e r a t o r + ( c o n s t R a t & a , c o n s t R a t & b ) {
r e t u r n R a t ( a . n u m * b . d e n + a . d e n * b . n u m , a . d e n * b . d e n )
}
P o u r c e l a , l ' o p e r a t e u r e s t d e c l a r e a m i , d a n s l a d e c l a r a t i o n d e l a
c l a s s e R a t , p a r
f r i e n d R a t o p e r a t o r + ( R a t , R a t )
U n e f o n c t i o n a m i e a l e s m ^ e m e s d r o i t s q u ' u n e f o n c t i o n m e m b r e .
B i e n n o t e r l a d i e r e n c e e n t r e f o n c t i o n m e m b r e e t f o n c t i o n a m i e .
J e a n B e r s t e l 8 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
S y n t a x e
U n o p e r a t e u r e s t u n a i r e , b i n a i r e .
U n o p e r a t e u r p e u t ^ e t r e d e n i
s o i t c o m m e f o n c t i o n g l o b a l e a u n o u d e u x a r g u m e n t s
s o i t c o m m e f o n c t i o n m e m b r e a v e c u n a r g u m e n t d e m o i n s .
L a s y n t a x e e s t
o p e r a t e u r b i n a i r e a u n i v e a u g l o b a l :
t y p e o p e r a t o r o p ( t y p e , t y p e )
R a t o p e r a t o r + ( R a t , R a t )
L ' e x p r e s s i o n u + v e q u i v a u t a o p e r a t o r + ( u , v )
o p e r a t e u r b i n a i r e m e m b r e d e c l a s s e :
t y p e o p e r a t o r o p ( t y p e )
R a t & o p e r a t o r + = ( R a t )
L ' e x p r e s s i o n u + = v e q u i v a u t a u . o p e r a t o r + = ( v )
o p e r a t e u r u n a i r e a u n i v e a u g l o b a l :
t y p e o p e r a t o r o p ( t y p e )
R a t o p e r a t o r - ( R a t )
L ' e x p r e s s i o n - u e q u i v a u t a o p e r a t o r - ( u )
o p e r a t e u r u n a i r e m e m b r e d e c l a s s e :
t y p e o p e r a t o r o p ( )
R a t o p e r a t o r - ( )
L ' e x p r e s s i o n - u e q u i v a u t a u . o p e r a t o r - ( )
J e a n B e r s t e l 9 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C o n s e i l
C h o i s i r u n o p e r a t e u r g l o b a l e t a m i l o r s q u e l ' o p e r a t i o n e s t
s y m e t r i q u e : + - * / = =
C h o i s i r u n o p e r a t e u r m e m b r e l o r s q u e l ' o p e r a t i o n e s t
a s y m e t r i q u e : + =
c l a s s R a t {
i n t n u m , d e n
p u b l i c :
. . .
R a t o p e r a t o r - ( R a t ) / / m e m b r e : m a u v a i s c h o i x
R a t & o p e r a t o r + = ( c o n s t R a t & ) / / m e m b r e : b o n c h o i x
f r i e n d R a t o p e r a t o r / ( R a t , R a t ) / / a m i e : b o n c h o i
}
A v e c
R a t R a t : : o p e r a t o r - ( R a t b ) {
r e t u r n R a t ( n u m * b . d e n - d e n * b . n u m , d e n * b . d e n )
}
R a t & R a t : : o p e r a t o r + = ( c o n s t R a t & d ) {
n u m = n u m * d . d e n + d . n u m * d e n
d e n = d e n * d . d e n
r e t u r n * t h i s
}
R a t o p e r a t o r / ( R a t a , R a t b ) {
r e t u r n R a t ( a . n u m * b . d e n , a . d e n * b . n u m )
}
J e a n B e r s t e l 9 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
P o u r
c o u t < < a < < b < < a - b < < a . o p e r a t o r - ( b )
< < a - 1 < < a + = 2 < < a
R e s u l t a t
1 / 2 2 / 3 - 1 / 6 - 1 / 6 - 1 / 2 3 / 2 3 / 2
M a i s
c o u t < < 1 - a / / e r r e u r
c a r v a u t
1 . o p e r a t o r - ( b )
q u i n ' e s t p a s d e n i .
J e a n B e r s t e l 9 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
O p e r a t e u r d ' i n d e x a t i o n
L ' o p e r a t e u r d ' i n d e x a t i o n ] e s t s u r c h a r g e d a n s l e s v e c t e u r s e t m a -
t r i c e s .
c l a s s V e c {
p r o t e c t e d :
i n t * a
i n t n
p u b l i c :
i n t t a i l l e ( ) c o n s t { r e t u r n n }
V e c ( i n t t = 1 0 ) {
a = n e w i n t n = t ]
}
V e c ( i n t t , i n t v a l ) {
a = n e w i n t n = t ]
f o r ( i n t i = 0 i < n i + + ) a i ] = v a l
}
i n t & o p e r a t o r ] ( i n t i ) { r e t u r n a i ] } / / s u r c h a r g e
}
A i n s i
V e c x
c r e e u n v e c t e u r d e t a i l l e 1 0
S a n s s u r c h a r g e , o n a c c e d e a u x e l e m e n t s p a r x . a i ]
A v e c s u r c h a r g e , l ' e x p r e s s i o n x i ] e s t e q u i v a l e n t e a
x . o p e r a t o r ] ( i ) , d o n c a x . a i ]
J e a n B e r s t e l 9 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L a v a l e u r d e r e t o u r e s t u n e r e f e r e n c e p o u r p o u v o i r s e r v i r e n
\ l v a l u e " . O n p e u t a l o r s e c r i r e :
m a i n ( ) {
c o n s t i n t N = 4
V e c u ( N , 7 )
V e c v ( N , 5 )
f o r ( i n t i = 0 i < N i + + )
v i ] + = u i ]
}
O n e n p r o t e p o u r s u r c h a r g e r l e s e n t r e e s - s o r t i e s :
o s t r e a m & o p e r a t o r < < ( o s t r e a m & o , V e c & u ) {
o < < " ( "
f o r ( i n t i = 0 i < u . t a i l l e ( ) i + + ) o < < u i ] < < " "
r e t u r n o < < " ) " < < e n d l
}
i s t r e a m & o p e r a t o r > > ( i s t r e a m & I , V e c & u ) {
f o r ( i n t i = 0 i < u . t a i l l e ( ) i + + ) I > > u i ]
r e t u r n I
}
O n o b t i e n t a l o r s l e s s o r t i e s
( 7 7 7 7 )
( 5 5 5 5 )
( 1 2 1 2 1 2 1 2 )
J e a n B e r s t e l 9 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
O p e r a t e u r s l o g i q u e s
T e s t e r l ' e g a l i t e d e d e u x o b j e t s p a r s u r c h a r g e d e l ' o p e r a t e u r = =
i n t o p e r a t o r = = ( c o n s t R a t & a , c o n s t R a t & b ) {
r e t u r n ( a . n u m = = b . n u m ) & & ( a . d e n = = b . d e n )
}
C e t o p e r a t e u r s ' e c r i t b i e n e n t e n d u a u s s i p o u r l e s c h a ^ n e s d e c a r a c -
t e r e s , v e c t e u r s , e t c .
O n p e u t n i e r p a r
i n t o p e r a t o r ! = ( c o n s t R a t & a , c o n s t R a t & b ) {
r e t u r n ! ( a = = b )
}
J e a n B e r s t e l 9 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
O p e r a t e u r s d ' i n s e r t i o n e t d ' e x t r a c t i o n
L e s o p e r a t e u r s < < e t > > s o n t s o u v e n t s u r c h a r g e s p o u r l e s e n t r e e s
e t s o r t i e s .
U n e a u t r e s u r c h a r g e c o u r a n t e e s t p o u r l ' i n s e r t i o n o u l a s u p p r e s s i o n
d a n s u n c o n t e n e u r .
E x e m p l e : u n e p i l e i m p l e m e n t e e p a r u n t a b l e a u ( s a n s t e s t d ' e r r e u r )
# i n c l u d e < i o s t r e a m . h >
c l a s s P i l e {
p u b l i c :
P i l e ( ) : s p ( 0 ) { }
v o i d p u s h ( c h a r * x ) { K s p + + ] = x }
c h a r * t o p ( ) { r e t u r n K s p - 1 ] }
c h a r * p o p ( ) { r e t u r n K - - s p ] }
p r i v a t e :
i n t s p
c h a r * K 1 0 ]
}
J e a n B e r s t e l 9 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
O n s ' e n s e r t t r a d i t i o n n e l l e m e n t p a r :
v o i d m a i n ( ) {
P i l e P
c h a r * x , * y
P . p u s h ( " H e l l o w o r l d ! " )
P . p u s h ( " B o n j o u r , m o n d e ! " )
y = P . p o p ( ) x = P . p o p ( )
}
O n d e n i t l ' i n s e r t i o n e t l ' e x t r a c t i o n p a r :
P i l e & o p e r a t o r < < ( P i l e & P , c h a r * x ) {
P . p u s h ( x )
r e t u r n P
}
P i l e & o p e r a t o r > > ( P i l e & P , c h a r * & x ) {
x = P . p o p ( )
r e t u r n P
}
e t o n p e u t e c r i r e :
c o u t < < x < < ' ' < < y < < e n d l
P < < x < < y
P > > x > > y
c o u t < < x < < ' ' < < y < < e n d l
a v e c l e r e s u l t a t :
H e l l o w o r l d ! B o n j o u r , m o n d e !
B o n j o u r , m o n d e ! H e l l o w o r l d !
J e a n B e r s t e l 9 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
O p e r a t e u r s + + e t - -
I l y a d e u x f o r m e s , p r e x e e t s u x e . P o u r l ' o p e r a t e u r p r e x e , l e
p r o t o t y p e e s t a u n i v e a u g l o b a l :
t y p e o p e r a t o r + + ( t y p e )
e t c o m m e m e m b r e d e c l a s s e :
t y p e o p e r a t o r + + ( )
P o u r l ' o p e r a t e u r s u x e , l e p r o t o t y p e e s t a u n i v e a u g l o b a l :
t y p e o p e r a t o r + + ( t y p e , i n t )
e t c o m m e m e m b r e d e c l a s s e :
t y p e o p e r a t o r + + ( i n t )
L a v a l e u r d e l ' a r g u m e n t p a s s e e e s t 0 a i n s i , l ' e x p r e s s i o n x + + e q u i v -
a u t a o p e r a t o r + + ( x , 0 ) r e s p e c t i v e m e n t a x . o p e r a t o r ( 0 )
P a r e x e m p l e :
c l a s s R a t {
i n t n u m , d e n
p u b l i c :
. . .
R a t o p e r a t o r - ( R a t )
R a t o p e r a t o r + + ( ) { r e t u r n R a t ( + + n u m , + + d e n ) }
R a t o p e r a t o r + + ( i n t z ) { r e t u r n R a t ( n u m + + , d e n + + ) }
}
p e r m e t d ' e c r i r e :
c o u t < < " a e t + + a " < < a < < + + a < < e n d l
c o u t < < " a e t a + + " < < a < < a + + < < e n d l
J e a n B e r s t e l 9 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage
I t e r a t e u r s
L e p a r c o u r s d ' u n c o n t e n e u r s e f o r m a l i s e p a r l ' i n t r o d u c t i o n d e
c l a s s e s s p e c i q u e s , a p p e l e e s E n u m e r a t i o n e n J a v a e t I t e r a t e u r s
e n C + + .
N o u s a l l o n s i m p l e m e n t e r d ' a b o r d l e s E n u m e r a t i o n s .
U n e n u m e r a t e u r e s t a t t a c h e a u n e c l a s s e ( d a n s n o t r e c a s , d e s
v e c t e u r s d e o t t a n t s ) . I l a d e u x m e t h o d e s
i n t h a s M o r e E l e m e n t s ( ) q u i r e t o u r n e v r a i s ' i l r e s t e d e s e l e -
m e n t s a e n u m e r e r
f l o a t & n e x t E l e m e n t ( ) q u i f o u r n i t l ' e l e m e n t s u i v a n t
e t b i e n s ^ u r u n c o n s t r u c t e u r . V o i c i l a d e c l a r a t i o n :
c l a s s E n u m e r a t o r {
V e c * v / / o b j e t e ' n u m e ' r e '
i n t c o u r a n t / / i n d i c e i n t e r n e
p u b l i c :
i n t h a s M o r e E l e m e n t s ( )
f l o a t & n e x t E l e m e n t ( )
E n u m e r a t o r ( V e c * v v ) : v ( v v ) , c o u r a n t ( 0 ) { }
}
S i l ' o n d i s p o s e d ' u n e n u m e r a t e u r j , o n p e u t e c r i r e
w h i l e ( j . h a s M o r e E l e m e n t s ( ) )
c o u t < < j . n e x t E l e m e n t ( ) < < ' '
L a c l a s s e V e c
J e a n B e r s t e l 9 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
c l a s s V e c {
p r o t e c t e d :
f l o a t * a
i n t n
p u b l i c :
i n t t a i l l e ( ) c o n s t { r e t u r n n }
V e c ( i n t t = 1 0 ) / / c o n s t r u c t e u r
V e c ( i n t t , f l o a t v ) / / c o n s t r u c t e u r
f l o a t & o p e r a t o r ] ( i n t i ) { r e t u r n a i ] }
E n u m e r a t o r e l e m e n t s ( ) { r e t u r n E n u m e r a t o r ( t h i s ) }
}
L a m e t h o d e E n u m e r a t o r e l e m e n t s ( ) r e t o u r n e u n e n u m e r a t e u r
a s s o c i e ( c ' e s t l a t e r m i n o l o g i e J a v a . . . ) . O n s ' e n s e r t d a n s
v o i d m a i n ( )
{
V e c x ( 5 , 5 . 0 )
E n u m e r a t o r j = x . e l e m e n t s ( )
w h i l e ( j . h a s M o r e E l e m e n t s ( ) )
c o u t < < j . n e x t E l e m e n t ( ) + + < < ' '
c o u t < < e n d l
f o r ( E n u m e r a t o r i = x . e l e m e n t s ( ) i . h a s M o r e E l e m e n t s (
c o u t < < i . n e x t E l e m e n t ( ) < < ' '
c o u t < < e n d l
}
J e a n B e r s t e l 1 0 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
e t l e r e s u l t a t
5 5 5 5 5
6 6 6 6 6
L e s d e u x m e t h o d e s m a n q u a n t e s s ' e c r i v e n t
i n t E n u m e r a t o r : : h a s M o r e E l e m e n t s ( ) {
r e t u r n ( c o u r a n t ! = v - > t a i l l e ( ) )
}
i n t & E n u m e r a t o r : : n e x t E l e m e n t ( ) {
r e t u r n ( * v ) c o u r a n t + + ]
}
J e a n B e r s t e l 1 0 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L e s i t e r a t e u r s s o n t d ' u n e c o n s t r u c t i o n s e m b l a b l e , m a i s s o n t p l u s
e l a b o r e s .
L a c l a s s e s u r l a q u e l l e o n i t e r e f o u r n i t d e s i t e r a t e u r s p a r d e u x
m e t h o d e s :
{ I t e r a t o r b e g i n ( ) p o u r d e m a r r e r
{ I t e r a t o r e n d ( ) p o u r i n d i q u e r l e d e p a s s e m e n t .
L a c l a s s e d ' i t e r a t e u r s f o u r n i t
{ l a m e t h o d e d ' a v a n c e m e n t I t e r a t o r & n e x t ( )
{ l a m e t h o d e d ' a c c e s a l ' e l e m e n t c o u r a n t f l o a t & v a l e u r ( )
O n s ' e n s e r t p a r e x e m p l e d a n s :
I t e r a t o r i
f o r ( i = x . b e g i n ( ) i ! = x . e n d ( ) i = i . n e x t ( ) )
c o u t < < i . v a l e u r ( ) < < ' '
c o u t < < e n d l
C e t t e e c r i t u r e o b l i g e a s u r c h a r g e r l ' o p e r a t e u r ! = p o u r l e s i t e r a t e u r s .
D a n s n o t r e e x e m p l e , o n a
c l a s s V e c {
f l o a t * a
i n t n
I t e r a t o r d e b u t
I t e r a t o r f i n
p u b l i c :
i n t t a i l l e ( ) c o n s t { r e t u r n n }
. . .
I t e r a t o r & b e g i n ( ) { r e t u r n d e b u t }
I t e r a t o r & e n d ( ) { r e t u r n f i n }
}
J e a n B e r s t e l 1 0 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
e t l a c l a s s e d ' i t e r a t e u r
c l a s s I t e r a t o r {
V e c * v / / o b j e t e ' n u m e ' r e '
i n t c o u r a n t / / i n d i c e i n t e r n e
p u b l i c :
I t e r a t o r ( ) { }
I t e r a t o r ( i n t c , V e c * v v ) : c o u r a n t ( c ) , v ( v v ) { }
I t e r a t o r & n e x t ( ) { + + c o u r a n t r e t u r n * t h i s }
i n t o p e r a t o r = = ( c o n s t I t e r a t o r & j )
i n t o p e r a t o r ! = ( c o n s t I t e r a t o r & j )
f l o a t & v a l e u r ( )
}
a v e c l e s d e n i t i o n s q u e v o i c i
i n t I t e r a t o r : : o p e r a t o r = = ( c o n s t I t e r a t o r & j ) {
r e t u r n ( c o u r a n t = = j . c o u r a n t )
}
i n t I t e r a t o r : : o p e r a t o r ! = ( c o n s t I t e r a t o r & j ) {
r e t u r n ! ( * t h i s = = j )
}
f l o a t & I t e r a t o r : : v a l e u r ( ) {
r e t u r n ( * v ) c o u r a n t ]
}
J e a n B e r s t e l 1 0 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
I l e s t t r e s t e n t a n t
d e r e m p l a c e r n e x t ( ) p a r u n o p e r a t e u r d ' i n c r e m e n t a t i o n ,
d e r e m p l a c e r v a l e u r ( ) p a r u n o p e r a t e u r d e d e r e f e r e n c e m e n t .
I t e r a t o r & I t e r a t o r : : o p e r a t o r + + ( ) {
+ + c o u r a n t r e t u r n * t h i s
}
f l o a t & I t e r a t o r : : o p e r a t o r * ( ) {
r e t u r n v a l e u r ( )
}
O n s ' e n s e r t d a n s
f o r ( I t e r a t o r i = x . b e g i n ( ) i ! = x . e n d ( ) + + i )
c o u t < < * i < < ' '
c o u t < < e n d l
J e a n B e r s t e l 1 0 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L e s c o n s t r u c t e u r s d e l a c l a s s e V e c d o i v e n t i n i t i a l i s e r l e s i t e r a t e u r s
m e m b r e s d e b u t e t f i n
V e c : : V e c ( i n t t = 1 0 ) : d e b u t ( 0 , t h i s ) , f i n ( t , t h i s ) {
a = n e w f l o a t n = t ]
}
V e c : : V e c ( i n t t , f l o a t v ) : d e b u t ( 0 , t h i s ) , f i n ( t , t h i s ) {
a = n e w f l o a t n = t ]
f o r ( i n t i = 0 i < n i + + ) a i ] = v
}
U n e i m p l e m e n t a t i o n g e n e r i q u e ( i n d e p e n d a n t e d e s t y p e s a c t u e l s )
e s t d o n n e e d a n s l a S T L ( S t a n d a r d T e m p l a t e L i b r a r y ) .
J e a n B e r s t e l 1 0 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
8
S T R U C T U R E S D E D O N N E E S
1 . P i l e s
2 . E x c e p t i o n s
3 . F i l e s
J e a n B e r s t e l 1 0 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
P i l e s
L ' i m p l e m e n t a t i o n d ' u n e p i l e e s t c a c h e e . L e s o p e r a t i o n s s o n t
v o i d p u s h ( e l e m e n t ) p o u r e m p i l e r
e l e m e n t t o p ( ) p o u r r e c u p e r e r l ' e l e m e n t e n h a u t d e p i l e
v o i d p o p ( ) p o u r s u p p r i m e r l ' e l e m e n t e n h a u t d e p i l e
I c i , l e s p i l e s s o n t e x o g e n e s : s e u l u n p o i n t e u r e s t s t o c k e , e t i l n ' y a
p a s d e c o p i e .
c l a s s P i l e {
i n t s p
c h a r * K 1 0 ]
p u b l i c :
P i l e ( ) : s p ( 0 ) { }
v o i d p u s h ( c h a r * x ) { K s p + + ] = x }
c h a r * t o p ( ) { r e t u r n K s p - 1 ] }
c h a r * p o p ( ) { r e t u r n K - - s p ] }
}
L a v a l e u r d e s p e s t l ' i n d i c e d e l a p r e m i e r e p l a c e d i s p o n i b l e d a n s K
J e a n B e r s t e l 1 0 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
V o i c i u n e p e t i t e f o n c t i o n u t i l i s a n t u n e p i l e .
v o i d m a i n ( ) {
P i l e P
c h a r * x c h a r * y
P . p u s h ( " H e l l o w o r l d ! " )
P . p u s h ( " B o n j o u r , m o n d e ! " )
x = P . t o p ( )
c o u t < < x < < e n d l
y = P . p o p ( ) x = P . p o p ( )
c o u t < < x < < ' ' < < y < < e n d l
}
A v e c l e r e s u l t a t
B o n j o u r , m o n d e !
H e l l o w o r l d ! B o n j o u r , m o n d e !
J e a n B e r s t e l 1 0 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L ' a j o u t e t l e r e t r a i t d ' u n e l e m e n t s ' e c r i v e n t n a t u r e l l e m e n t e n s u r -
c h a r g e a n t l e s o p e r a t e u r s d e o t s < < e t > >
D ' a p r e s l e s r e c o m m a n d a t i o n s f a i t e s p o u r l a s u r c h a r g e , o n l e s s u r -
c h a r g e e n m e t h o d e s :
P i l e & P i l e : : o p e r a t o r < < ( c h a r * x ) {
p u s h ( x )
r e t u r n * t h i s
}
P i l e & P i l e : : o p e r a t o r > > ( c h a r * & x ) {
x = p o p ( )
r e t u r n * t h i s
}
O n e c r i t a l o r s :
v o i d m a i n ( ) {
P i l e P
c h a r * x c h a r * y
P < < " H e l l o w o r l d ! " < < " B o n j o u r , m o n d e ! "
P > > x > > y
c o u t < < x < < ' ' < < y < < e n d l
}
a v e c l e r e s u l t a t
B o n j o u r , m o n d e ! H e l l o w o r l d !
J e a n B e r s t e l 1 0 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
E x c e p t i o n s
Q u a n d l a p i l e e s t v i d e , o n n e p e u t f a i r e n i p o p ( ) n i t o p ( )
Q u a n d l a p i l e e s t p l e i n e , o n n e p e u t p a s f a i r e d e p u s h ( )
D a n s c e s c a s :
C e s o n t l e s m e t h o d e s d e l a c l a s s e q u i d o i v e n t d e t e c t e r c e s s i -
t u a t i o n s
m a i s c ' e s t l e p r o g r a m m e a p p e l a n t q u i d o n t e n t i r e r l e s c o n -
s e q u e n c e s .
L e s m e t h o d e s d o i v e n t s i g n a l e r l e s d e b o r d e m e n t s .
L e s e x c e p t i o n s c o n s t i t u e n t l e m o y e n p r i v i l e g i e d e g e s t i o n d ' e r r e u r s ,
m a i s s e r v e n t a u s s i c o m m e u n e s t r u c t u r e d e c o n t r ^ o l e g e n e r a l e .
L e s e x c e p t i o n s s o n t u n m e c a n i s m e d e d e r o u t e m e n t c o n d i t i o n n e l
U n e i n s t r u c t i o n t h r o w l e v e u n e e x c e p t i o n
U n b l o c t r y . . . c a t c h c a p t e l ' e x c e p t i o n .
J e a n B e r s t e l 1 1 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
v o i d f ( i n t i ) {
i f ( i )
t h r o w " H e l p ! "
c o u t < < " O k ! \ n "
}
v o i d m a i n ( ) {
t r y {
f ( 0 )
f ( 1 )
f ( 0 )
}
c a t c h ( c h a r * ) {
c o u t < < " A l ' a i d e ! \ n "
}
}
C o m p i l e p a r g + + - f h a n d l e - e x c e p t i o n s , l e r e s u l t a t e s t
O k !
A l ' a i d e !
J e a n B e r s t e l 1 1 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
T r o i s a c t e u r s i n t e r v i e n n e n t d a n s l e m e c a n i s m e d e s e x c e p t i o n s :
o n l a n c e o u l e v e u n e e x c e p t i o n p a r u n e i n s t r u c t i o n f o r m e e d e
t h r o w s u i v i d ' u n e e x p r e s s i o n
o n e e c t u e u n e e x e c u t i o n c o n d i t i o n n e e d ' u n e s u i t e
d ' i n s t r u c t i o n s d a n s u n b l o c c o m m e n c a n t p a r t r y
o n t r a i t e o u g e r e u n e e x c e p t i o n p a r u n e c l a u s e c a t c h d e c a p -
t u r e . L e s c l a u s e s d e c a p t u r e s u i v e n t p h y s i q u e m e n t l e g r o u p e
t r y
L e s e x c e p t i o n s s o n t l e v e e s , d i r e c t e m e n t o u i n d i r e c t e m e n t , d a n s l e
b l o c t r y
L e b l o c t r y e s t s u i v i d ' u n e o u p l u s i e u r s c l a u s e s c a t c h . C h a c u n e
e s t u n g e s t i o n n a i r e d ' e x c e p t i o n
U n g e s t i o n n a i r e e s t p a r a m e t r e p a r u n t y p e ( s u i v i e v e n t u e l l e m e n t
d ' u n a r g u m e n t ) .
L a s e q u e n c e d ' e x e c u t i o n e s t l a s u i v a n t e :
s i a u c u n e e x c e p t i o n n ' e s t l e v e e d a n s l e b l o c t r y , l e c o n t r ^ o l e
p a s s e a l ' i n s t r u c t i o n s u i v a n t l e s g e s t i o n n a i r e s d ' e x c e p t i o n
s i u n e e x c e p t i o n e s t l e v e e , l e b l o c t r y e s t q u i t t e , o n n ' y r e v i e n t
p a s , e t l e c o n t r ^ o l e p a s s e a u p r e m i e r g e s t i o n n a i r e r e n c o n t r e e t
d o n t l e t y p e s ' \ a c c o r d e " a l ' a r g u m e n t d u t h r o w
a p r e s e x e c u t i o n d u g e s t i o n n a i r e , l e c o n t r ^ o l e p a s s e a l ' i n s t r u c t i o n
s u i v a n t l e d e r n i e r g e s t i o n n a i r e .
s i a u c u n g e s t i o n n a i r e n e c o n v i e n t , u n e f o n c t i o n p r e d e n i e
t e r m i n a t e ( ) e s t a p p e l e e .
U n e e x c e p t i o n e s t i n t e r c e p t e e e n l t r a n t u n t y p e
A l a l e v e e , c ' e s t u n o b j e t q u i e s t p a s s e , e t n o n u n t y p e .
U n e f o n c t i o n p e u t ( e n J a v a d o i t ) s p e c i e r l e s e x c e p t i o n s q u ' e l l e e s t
s u s c e p t i b l e d e l e v e r e t q u ' e l l e n e t r a i t e p a s . P a r e x e m p l e
J e a n B e r s t e l 1 1 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
v o i d p u s h ( c h a r * ) t h r o w ( O v e r f l o w )
J e a n B e r s t e l 1 1 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
D e u x t y p e s d ' e x c e p t i o n s s o n t d e n i e s , c o m m e c l a s s e s :
c l a s s U n d e r f l o w { }
c l a s s O v e r f l o w { }
L a c l a s s e p i l e e s t r e d e c l a r e e :
c l a s s P i l e {
p r i v a t e :
i n t s p
c h a r * K 4 ]
p u b l i c :
P i l e ( ) : s p ( 0 ) { }
c h a r * t o p ( ) t h r o w ( U n d e r f l o w )
c h a r * p o p ( ) t h r o w ( U n d e r f l o w )
v o i d p u s h ( c h a r * x ) t h r o w ( O v e r f l o w )
}
L e s m e t h o d e s s o n t r e d e n i e s :
c h a r * P i l e : : t o p ( ) t h r o w ( U n d e r f l o w ) {
i f ( s p = = 0 ) t h r o w U n d e r f l o w ( ) / / o b j e t d e l a c l a s s
r e t u r n K s p - 1 ]
}
c h a r * P i l e : : p o p ( ) t h r o w ( U n d e r f l o w ) {
i f ( s p = = 0 ) t h r o w U n d e r f l o w ( )
r e t u r n K - - s p ]
}
v o i d P i l e : : p u s h ( c h a r * x ) t h r o w ( O v e r f l o w ) {
i f ( s p > 1 0 ) t h r o w O v e r f l o w ( )
K s p + + ] = x
}
J e a n B e r s t e l 1 1 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
C ' e s t l ' u t i l i s a t e u r d e l a c l a s s e q u i c a p t e l e s m e s s a g e s :
v o i d m a i n ( )
{
P i l e P
c h a r c
f o r ( ) {
c i n > > c
t r y {
s w i t c h ( c ) {
c a s e ' + ' :
P . p u s h ( " H e l l o w o r l d ! " ) / / p e u t l e v e r e x c e p t i
b r e a k
c a s e ' - ' :
c o u t < < P . p o p ( ) < < e n d l / / p e u t l e v e r e x c e p t i
}
}
c a t c h ( O v e r f l o w o ) { c o u t < < " P i l e d e b o r d e ! \ n " }
c a t c h ( U n d e r f l o w u ) { c o u t < < " P i l e v i d e ! \ n " }
}
}
J e a n B e r s t e l 1 1 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
I m p l e m e n t a t i o n d e s p i l e s p a r l i s t e c h a ^ n e e .
O n u t i l i s e u n e c l a s s e i n t e r n e C e l l u l e
# i n c l u d e < i o s t r e a m . h >
c l a s s P i l e {
p u b l i c :
P i l e ( ) { p = 0 }
v o i d p u s h ( c h a r * x ) { p = n e w C e l l u l e ( x , p ) }
c h a r * t o p ( ) { r e t u r n p - > c o n t }
c h a r * p o p ( )
p r i v a t e :
s t r u c t C e l l u l e {
C e l l u l e * s u i v
c h a r * c o n t
C e l l u l e ( c h a r * c , C e l l u l e * s ) :
c o n t ( c ) , s u i v ( s ) { }
}
C e l l u l e * p
}
c h a r * P i l e : : p o p ( ) {
C e l l u l e * q = p
c h a r * c = q - > c o n t
p = p - > s u i v
d e l e t e q
r e t u r n c
}
J e a n B e r s t e l 1 1 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
E X E R C I C E S
1 . P o l o n a i s e p o s t x e e : e c r i r e u n p r o g r a m m e q u i l i t u n e e x p r e s -
s i o n p o s t x e e s u r u n e l i g n e , e t e n a c h e l a v a l e u r .
J e a n B e r s t e l 1 1 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
P o l o n a i s e p o s t x e e
# i n c l u d e < c t y p e . h >
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < i o m a n i p . h >
c l a s s P i l e {
p u b l i c :
P i l e ( i n t n = 1 0 )
v o i d p u s h ( i n t x )
i n t t o p ( )
i n t p o p ( )
v o i d i m p r i m e r ( )
p r i v a t e :
i n t s p
i n t * p
}
P i l e : : P i l e ( i n t n ) {
s p = 0 p = n e w i n t n ]
}
v o i d P i l e : : p u s h ( i n t x ) {
p + + s p ] = x
}
i n t P i l e : : t o p ( ) {
r e t u r n p s p ]
}
i n t P i l e : : p o p ( ) {
r e t u r n p s p - - ]
}
v o i d P i l e : : i m p r i m e r ( ) {
f o r ( i n t i = s p i > 0 i - - )
c o u t < < p i ] < < " \ t "
c o u t < < " @ "
}
i n t g e t l e x ( c h a r & x , i n t & i ) {
w h i l e ( c i n . g e t ( x ) ) {
i f ( x = = ' \ n ' )
r e t u r n - 1
J e a n B e r s t e l 1 1 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
i f ( x ! = ' ' )
b r e a k
}
i f ( ( ' 0 ' < = x ) & & ( x < = ' 9 ' ) ) {
c i n . p u t b a c k ( x )
c i n > > i
c o u t < < " J e l i s u n e n t i e r " < < i < < e n d l
r e t u r n 0
}
c o u t < < " J e l i s u n c h a r " < < x < < e n d l
r e t u r n 1
}
i n t a p p l y ( c h a r x , i n t a , i n t b ) {
s w i t c h ( x ) {
c a s e ' + ' : r e t u r n a + b
c a s e ' - ' : r e t u r n a - b
c a s e ' * ' : r e t u r n a * b
c a s e ' / ' : r e t u r n a / b
}
r e t u r n 0
}
v o i d m a i n ( )
{
P i l e p
c h a r x
i n t i
f o r ( ) {
s w i t c h ( g e t l e x ( x , i ) ) {
c a s e - 1 :
r e t u r n
c a s e 0 :
p . p u s h ( i )
p . i m p r i m e r ( )
c o u t < < e n d l
b r e a k
c a s e 1 :
i n t a = p . p o p ( )
i n t b = p . p o p ( )
i n t c = a p p l y ( o p , b , a )
p . p u s h ( c )
p . i m p r i m e r ( )
c o u t < < e n d l
}
}
}
J e a n B e r s t e l 1 1 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
9
H E R I T A G E
1 . O b j e c t i f
2 . C l a s s e c o m p o s e e o u c l a s s e d e r i v e e
3 . S y n t a x e
4 . A c c e s a u x d o n n e e s e t m e t h o d e s
5 . C l a s s e s d e r i v e e s e t c o n s t r u c t e u r s
6 . H e r i t a g e m u l t i p l e
7 . M e t h o d e s v i r t u e l l e s
8 . U n e x e m p l e : l e s e x p r e s s i o n s
J e a n B e r s t e l 1 2 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
O b j e c t i f
L ' h e r i t a g e e s t l e d e u x i e m e d e s p a r a d i g m e s d e l a p r o g r a m m a t i o n
o b j e t . I l a p o u r b u t d e \ p l a c e r l e s p r o b l e m e s a l e u r j u s t e n i v e a u " .
L ' h e r i t a g e e s t m i s e n u v r e p a r l a c o n s t r u c t i o n d e c l a s s e s d e r i v e e s .
U n e c l a s s e d e r i v e e
c o n t i e n t l e s d o n n e e s m e m b r e s d e s a c l a s s e d e b a s e
p e u t e n a j o u t e r d e n o u v e l l e s
p o s s e d e a p r i o r i l e s m e t h o d e s d e s a c l a s s e d e b a s e
p e u t r e d e n i r ( m a s q u e r ) c e r t a i n e s m e t h o d e s
p e u t a j o u t e r d e n o u v e l l e s m e t h o d e s .
L ' h e r i t a g e p e u t ^ e t r e s i m p l e o u m u l t i p l e .
U n e c l a s s e d e r i v e e m o d e l i s e u n c a s p a r t i c u l i e r d e l a c l a s s e d e b a s e ,
e t e s t d o n c e n r i c h i e d ' i n f o r m a t i o n s s u p p l e m e n t a i r e s .
L ' e m p l o i d e l ' h e r i t a g e c o n d u i t a u n s t y l e d e p r o g r a m m a t i o n p a r
r a n e m e n t s s u c c e s s i f s e t p e r m e t u n e p r o g r a m m a t i o n i n c r e m e n t a l e
e e c t i v e .
D a n s l a c o n c e p t i o n , l a t ^ a c h e p r i n c i p a l e e s t l a r e i c a t i o n : o p e r a t i o n
q u i t r a n s f o r m e e n \ c h o s e " ( P e t i t R o b e r t ) , c ' e s t - a - d i r e l a d e n i t i o n
d e l a h i e r a r c h i e d e c l a s s e s .
L a d e l e g a t i o n f a i t u s a g e d u p o l y m o r p h i s m e r e a l i s e e n C + + p a r
l e s m e t h o d e s v i r t u e l l e s .
J e a n B e r s t e l 1 2 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
C l a s s e c o m p o s e e o u c l a s s e d e r i v e e
U n e c l a s s e e s t c o m p o s e e s i c e r t a i n s d e s e s m e m b r e s s o n t e u x - m ^ e m e s
d e s o b j e t s .
c l a s s H a b i t a n t {
p r o t e c t e d :
c h a r * n o m
c h a r * a d r e s s e / / d o m i c i l e
}
c l a s s e C a r t e {
H a b i t a n t h
i n t a g e
f l o a t a g e
}
U n h a b i t a n t e s t p a r t i e d ' u n e c a r t e d ' i d e n t i t e c o r r e c t c a r u n e c a r t e
d ' i d e n t i t e n ' e s t p a s u n c a s p a r t i c u l i e r d ' u n h a b i t a n t .
c l a s s R e s i d e n t : p u b l i c H a b i t a n t {
p r o t e c t e d :
c h a r * a d r e s s e / / r e s i d e n c e
}
U n r e s i d e n t e s t u n c a s p a r t i c u l i e r d ' u n h a b i t a n t , l ' i n f o r m a t i o n
s u p p l e m e n t a i r e e s t l ' a d r e s s e d e s a r e s i d e n c e ( q u i p e u t ^ e t r e d i e r e n t e
d e c e l l e d e s o n d o m i c i l e ) .
J e a n B e r s t e l 1 2 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
S y n t a x e
L a s y n t a x e p o u r l a d e n i t i o n d ' u n e c l a s s e d e r i v e e e s t
c l a s s c l a s s e - d e r i v e e : p r o t e c t i o n c l a s s e - d e - b a s e { . . . }
L e s t y p e s d e p r o t e c t i o n s o n t p u b l i c , p r o t e c t e d , p r i v a t e . E n
g e n e r a l , o n c h o i s i t p u b l i c
J e a n B e r s t e l 1 2 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
A u t r e s e x e m p l e s
U n e v o i t u r e c o m p o r t e q u a t r e ( o u c i n q ) r o u e s , d o n c
c l a s s A u t o m o b i l e {
R o u e r o u e s 5 ]
. . .
}
U n c e r c l e c o l o r e e s t u n c a s p a r t i c u l i e r d ' u n c e r c l e , d o t e e n p l u s
d ' u n e c o u l e u r , d o n c
c l a s s C e r c l e C o l : p u b l i c C e r c l e {
C o l o r c o u l e u r / / d e l a c l a s s e C o l o r
. . .
}
U n e f o r m e c o n t i e n t u n r e c t a n g l e e n g l o b a n t :
c l a s s S h a p e {
R e c t r
. . .
}
U n t r i a n g l e e s t u n e f o r m e p a r t i c u l i e r e :
c l a s s T r i a n g l e : p u b l i c S h a p e {
. . .
}
J e a n B e r s t e l 1 2 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
A c c e s a u x d o n n e e s e t m e t h o d e s
L e s c h a m p s d e l a c l a s s e d e b a s e p e u v e n t ^ e t r e d e s i g n e s d i r e c t e m e n t
o u p a r l e n o m d e l a c l a s s e d e b a s e , e n e m p l o y a n t l ' o p e r a t e u r d e
p o r t e e : :
c l a s s H a b i t a n t {
p r o t e c t e d :
c h a r * n o m
c h a r * a d r e s s e / / d o m i c i l e
}
c l a s s R e s i d e n t : p u b l i c H a b i t a n t {
p r o t e c t e d :
c h a r * a d r e s s e / / r e s i d e n c e
}
D a n s
m a i n ( ) {
R e s i d e n t r
. . .
c o u t < < r . a d r e s s e < < r . H a b i t a n t : : a d r e s s e
. . .
}
l e p r e m i e r d e s i g n e l ' a d r e s s e d e r e s i d e n c e , l e d e u x i e m e l ' a d r e s s e d u
d o m i c i l e . L e s m ^ e m e s r e g l e s s ' a p p l i q u e n t a u x m e t h o d e s .
J e a n B e r s t e l 1 2 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
D a n s
c l a s s B { . . .
p u b l i c : v o i d f ( c h a r * c ) . . .
}
c l a s s e D : p u b l i c B {
p u b l i c : v o i d f ( i n t i ) . . .
}
i l y a m a s q u a g e , e t n o n s u r c h a r g e , m ^ e m e s i l e s s i g n a t u r e s d e s m e t h -
o d e s s o n t d i e r e n t e s , c a r l e s f o n c t i o n s n e s o n t p a s d a n s l e m ^ e m e
e s p a c e d e \ p o r t e e "
P o u r u n o b j e t d d e l a c l a s s e D ,
i n t i . . .
d . f ( i )
d e s i g n e l a m e t h o d e d e D : : f ( i n t ) . L ' a p p e l
d . f ( " B e n " ) / / e r r e u r
e s t r e j e t e , c a r i l n ' y a p a s d e m e t h o d e D : : f ( c h a r * ) . O n p e u t
e c r i r e
d . B : : f ( " B e n " )
J e a n B e r s t e l 1 2 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
C l a s s e s d e r i v e e s e t c o n s t r u c t e u r s
L a c o n s t r u c t i o n d ' u n o b j e t d ' u n e c l a s s e d e r i v e e c o m p o r t e
l a r e s e r v a t i o n d e l a p l a c e p o u r l ' o b j e t
l ' a p p e l d ' u n c o n s t r u c t e u r a p p r o p r i e ( c o n s t r u c t e u r p a r d e f a u t )
d e l a c l a s s e d e b a s e
a p p e l d e s c o n s t r u c t e u r s p o u r l e s m e m b r e s o b j e t s
l ' e x e c u t i o n d u c o r p s d e l a f o n c t i o n c o n s t r u c t e u r .
U n c o n s t r u c t e u r a u t r e q u e c e l u i p a r d e f a u t e s t i n d i q u e d a n s l a l i s t e
d ' i n i t i a l i s a t i o n
c l a s s A n i m a l {
p r o t e c t e d :
c h a r n o m 2 0 ]
p u b l i c :
A n i m a l ( c h a r * n ) { s t r c p y ( n o m , n ) }
v o i d s h o w ( ) { c o u t < < n o m < < e n d l }
}
c l a s s O u r s : p u b l i c A n i m a l {
c h a r c o u l e u r 2 0 ]
p u b l i c :
O u r s ( c h a r * n , c h a r * c ) : A n i m a l ( n ) { s t r c p y ( c o u l e u r , c )
v o i d s h o w ( ) { c o u t < < n o m < < ' ' < < c o u l e u r < < e n d l }
}
J e a n B e r s t e l 1 2 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
v o i d m a i n ( )
{
A n i m a l a ( " E l e p h a n t " ) a . s h o w ( )
O u r s o ( " P a n d a " , " b l a n c " ) o . s h o w ( )
}
L a s o r t i e e s t
E l e p h a n t
P a n d a b l a n c
L a m e t h o d e s h o w ( ) d e l a c l a s s e d e r i v e e m a s q u e l a m e t h o d e
d e l a c l a s s e d e b a s e , m a i s
D a n s u n e f o n c t i o n , u n p a r a m e t r e f o r m e l o b j e t d e l a c l a s s e d e
b a s e p e u t ^ e t r e s u b s t i t u e p a r u n o b j e t d e l a c l a s s e d e r i v e e . I l y
a c o n v e r s i o n d e l ' o b j e t d e r i v e e n o b j e t d e l a c l a s s e d e b a s e .
A i n s i
o . A n i m a l : : s h o w ( )
a c h e s i m p l e m e n t P a n d a . D e n i s s o n s u n e f o n c t i o n g l o b a l e
v o i d a f f i c h e ( A n i m a l * a ) {
c o u t < < " N o m : " a - > s h o w ( )
}
L e r e s u l t a t e s t
N o m : P a n d a
c a r i l y a c o n v e r s i o n d e t y p e . ( S i , e n r e v a n c h e , l a m e t h o d e s h o w ( )
d e l a c l a s s e A n i m a l e s t d e n i e v i r t u a l , l a c o n v e r s i o n n ' a p a s l e
m ^ e m e e e t . )
J e a n B e r s t e l 1 2 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
H e r i t a g e m u l t i p l e
U n e c l a s s e p e u t h e r i t e r d e p l u s i e u r s c l a s s e s . L e s c l a s s e s d e b a s e s
s o n t a l o r s e n u m e r e e s d a n s l a d e n i t i o n .
c l a s s D : p u b l i c B 1 , p u b l i c B 2 { . . . }
C e q u i a e t e d i t p r e c e d e m m e n t s ' a p p l i q u e , a v e c q u e l q u e s n u a n c e s .
E x e m p l e : L i s t e s c h a ^ n e e s
U n e l i s t e c h a ^ n e e c o m p o r t e d e u x p a r t i e s d e n a t u r e d i e r e n t e , l e s
d o n n e e s e t l e c h a ^ n a g e .
U n e l i s t e \ p u r e ' ' e s t f o r m e e d e c e l l u l e s d o n t c h a c u n e n e c o n t i e n t
q u ' u n p o i n t e u r v e r s l a s u i v a n t e . L e c o n s t r u c t e u r i n s e r e u n e c e l l u l e .
t y p e d e f c l a s s C e l l u l e * L i s t e
c l a s s C e l l u l e {
p r o t e c t e d :
L i s t e s u i v
p u b l i c :
C e l l u l e ( L i s t e a ) : s u i v ( a ) { }
}
J e a n B e r s t e l 1 2 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
U n \ E n t i e r " a u n e d o n n e e m e m b r e u n i q u e .
c l a s s E n t i e r {
p r o t e c t e d :
i n t v a l
p u b l i c :
E n t i e r ( i n t i ) : v a l ( i ) { }
v o i d s h o w ( ) { c o u t < < v a l < < ' ' }
}
U n e c l a s s e d e l i s t e s d ' e n t i e r s d e r i v e d e s d e u x c l a s s e s :
c l a s s L i s t e E n t i e r s : p u b l i c C e l l u l e , p u b l i c E n t i e r
{
p u b l i c :
L i s t e E n t i e r s ( L i s t e a , i n t i ) : C e l l u l e ( a ) , E n t i e r ( i )
v o i d s h o w ( )
}
J e a n B e r s t e l 1 3 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L a f o n c t i o n d ' a c h a g e d e p e n d d e s d e u x c l a s s e s d e b a s e s :
d e E n t i e r p o u r l ' a c h a g e d e s e l e m e n t s
d e C e l l u l e p o u r l e c h a ^ n a g e .
E l l e s ' e c r i t
v o i d L i s t e E n t i e r s : : s h o w ( ) {
E n t i e r : : s h o w ( )
i f ( s u i v )
( ( L i s t e E n t i e r s * ) s u i v ) - > s h o w ( )
}
L a l i g n e
( ( L i s t e E n t i e r s * ) s u i v ) - > s h o w ( )
c o n v e r t i t l e t y p e " a d r e s s e d e l i s t e " e n " a d r e s s e d e l i s t e d ' e n t i e r s "
p o u r p o u v o i r a p p e l e r l a m e t h o d e .
v o i d m a i n ( ) {
L i s t e E n t i e r s * a = 0 i n t j
f o r ( i n t i = 0 i < 5 i + + ) {
c i n > > j
a = n e w L i s t e E n t i e r s ( a , j )
}
a - > s h o w ( )
}
J e a n B e r s t e l 1 3 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
M e t h o d e s v i r t u e l l e s
L e s m e t h o d e s v i r t u e l l e s s o n t d e s f o n c t i o n s m e m b r e s r e a l i s a n t l e
p o l y m o r p h i s m e , c ' e s t - a - d i r e l e c h o i x d e l a m e t h o d e e n f o n c t i o n d u
t y p e d e s a r g u m e n t s a l ' a p p e l : u n a r g u m e n t d ' u n e c l a s s e d e r i v e e
u t i l i s e l e s m e t h o d e s d e s a c l a s s e d e r i v e e , e t n o n d e l a c l a s s e d u
p a r a m e t r e f o r m e l . E n C + + ( e t e n J a v a ) , l e p o l y m o r p h i s m e n ' e s t
r e a l i s a b l e q u e s u r l e \ z e r o - i e m e " a r g u m e n t , c ' e s t - a - d i r e s u r l a m e t h -
o d e a p p e l a n t e .
D e p l u s , e n C + + d e u x c o n d i t i o n s d o i v e n t ^ e t r e r e u n i e s p o u r q u e l e
p o l y m o r p h i s m e p r e n n e e e t ( e n J a v a , c ' e s t l e c o m p o r t e m e n t p a r
d e f a u t )
L a m e t h o d e d o i t ^ e t r e d e c l a r e e v i r t u e l l e , p a r l e p r e x e v i r t u a l
L ' o b j e t e s t a p p e l e p a r p o i n t e u r o u p a r r e f e r e n c e , p o u r q u ' i l n ' y
a i t p a s d e c o n v e r s i o n i m p l i c i t e .
J e a n B e r s t e l 1 3 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
D e c l a r a t i o n d e t r o i s c l a s s e s
c l a s s X {
p u b l i c :
i n t i
v i r t u a l v o i d p r i n t ( )
v o i d s h o w ( )
X ( ) { i = 5 }
}
c l a s s X X : p u b l i c X {
p u b l i c :
i n t j
v i r t u a l v o i d p r i n t ( )
v o i d s h o w ( )
X X ( ) { j = 7 }
}
c l a s s X X X : p u b l i c X X {
p u b l i c :
i n t k
v o i d p r i n t ( )
v o i d s h o w ( )
X X X ( ) { k = 9 }
}
C h a c u n e ( s a u f X X X ) a u n e m e t h o d e p r i n t v i r t u e l l e , e t u n e m e t h -
o d e s h o w n o n v i r t u e l l e .
J e a n B e r s t e l 1 3 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
D e n i t i o n d e s d i v e r s e s m e t h o d e s . N o t e r : o n n e r e p e t e p a s l e m o t -
c l e v i r t u a l d a n s l a d e n i t i o n .
v o i d X : : p r i n t ( ) {
c o u t < < " L a c l a s s e e s t X " < < i < < e n d l }
v o i d X : : s h o w ( ) {
c o u t < < " L a C l a s s e e s t X " < < i < < e n d l }
v o i d X X : : p r i n t ( ) {
c o u t < < " L a c l a s s e e s t X X " < < i < < " " < < j < < e n d l }
v o i d X X : : s h o w ( ) {
c o u t < < " L a C l a s s e e s t X X " < < i < < " " < < j < < e n d l }
v o i d X X X : : p r i n t ( ) {
c o u t < < " L a c l a s s e e s t X X X " < < i < < " " < < j < < " " < < k < < e n d l
v o i d X X X : : s h o w ( ) {
c o u t < < " L a C l a s s e e s t X X X " < < i < < " " < < j < < " " < < k < < e n d l
}
J e a n B e r s t e l 1 3 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L a m e t h o d e u t i l i s e e d e p e n d d e l a c l a s s e d e l ' o b j e t , e t l a c l a s s e d e
l ' o b j e t e s t d e n i e a l a d e c l a r a t i o n .
F o r c e r l a c o n v e r s i o n e s t p o s s i b l e , m a i s r i s q u e .
v o i d m a i n ( ) {
X z
X X z z
X X X z z z
z . p r i n t ( ) z . s h o w ( )
z z . p r i n t ( ) z z . s h o w ( )
z z z . p r i n t ( ) z z z . s h o w ( )
z = z z z . p r i n t ( ) z . s h o w ( ) / / C o n v e r s i o n
z z = ( X X ) z z z . p r i n t ( ) z z . s h o w ( )
z z z = ( X X X ) z z z z z . p r i n t ( ) z z z . s h o w ( )
}
L a c l a s s e e s t X 5
L a C l a s s e e s t X 5
L a c l a s s e e s t X X 5 7
L a C l a s s e e s t X X 5 7
L a c l a s s e e s t X X X 5 7 9
L a C l a s s e e s t X X X 5 7 9
L a c l a s s e e s t X 5
L a C l a s s e e s t X 5
L a c l a s s e e s t X X 5 2 5 7 2 0 5 2 0
L a C l a s s e e s t X X 5 2 5 7 2 0 5 2 0
L a c l a s s e e s t X X X 5 2 5 7 2 0 5 2 0 2 5 7 2 0 5 2 4
L a C l a s s e e s t X X X 5 2 5 7 2 0 5 2 0 2 5 7 2 0 5 2 4
J e a n B e r s t e l 1 3 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
U t i l i s a t i o n d e p o i n t e u r s v e r s d e s o b j e t s .
v o i d m a i n ( ) {
X * a
X X * a a
X X X * a a a
a = n e w X a - > p r i n t ( ) a - > s h o w ( )
a a = n e w X X X a a - > p r i n t ( ) a a - > s h o w ( )
a a a = ( X X X * ) n e w X a a a - > p r i n t ( ) a a a - > s h o w ( )
}
L e s r e s u l t a t s s o n t :
L a c l a s s e e s t X 5
L a C l a s s e e s t X 5
L a c l a s s e e s t X X X 5 7 9
L a C l a s s e e s t X X 5 7
L a c l a s s e e s t X 5
L a C l a s s e e s t X X X 5 9 6 9 2 8 9 3 2 0 1 4
L a m e t h o d e v i r t u e l l e e s t c e l l e d e l a c l a s s e d e l ' o b j e t a s a c r e a -
t i o n
L a m e t h o d e n o n v i r t u e l l e e s t c e l l e d e l a c l a s s e d e l a v a r i a b l e .
P l u s f o r m e l l e m e n t :
S i u n e c l a s s e b a s e c o n t i e n t u n e f o n c t i o n f s p e c i e e v i r t u a l , e t
s i u n e c l a s s e d e r d e r i v e e c o n t i e n t u n e f o n c t i o n f d e m ^ e m e t y p e ,
l ' a p p e l d e f s u r u n o b j e t d e c l a s s e d e r i n v o q u e d e r : : f m ^ e m e s i
l ' a c c e s s e f a i t a t r a v e r s u n p o i n t e u r o u u n e r e f e r e n c e s u r b a s e
J e a n B e r s t e l 1 3 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
U n e x e m p l e : l e s e x p r e s s i o n s
E v a l u a t i o n d e s e x p r e s s i o n s a r i t h m e t i q u e s , s o u s l e d o u b l e a s p e c t :
C o n s t r u c t i o n d e l ' a r b r e d ' e x p r e s s i o n ,
E v a l u a t i o n d e c e t a r b r e .
L ' e x p r e s s i o n e s t l u e s o u s f o r m e p o s t x e e . L ' a n a l y s e u r c o n s t r u i t
p r o g r e s s i v e m e n t l a p i l e d e s s o u s - e x p r e s s i o n s r e c o n n u e s , e t a l a n
i m p r i m e l a v a l e u r d e l ' e x p r e s s i o n .
V o i c i l a f o n c t i o n p r i n c i p a l e
v o i d m a i n ( )
{
E x p r e s s i o n e
c o u t < < " D o n n e z u n e e x p r e s s i o n p o s t f i x e e \ n "
e = c o n s t r u c t i o n ( )
c o u t < < " E x p r e s s i o n : "
e - > P r i n t ( )
c o u t < < " \ n V a l e u r : " < < e - > e v a l ( ) < < e n d l
}
J e a n B e r s t e l 1 3 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
V o i c i u n e x e m p l e d ' e x e c u t i o n :
D o n n e z u n e e x p r e s s i o n p o s t f i x e e
3 4 + 2 - 2 / !
J e l i s u n e n t i e r 3
P i l e : 3 . = 3
J e l i s u n e n t i e r 4
P i l e : 4 3 . = 4
J e l i s u n c h a r +
P i l e : + 3 4 . = 7
J e l i s u n e n t i e r 2
P i l e : 2 + 3 4 . = 2
J e l i s u n c h a r -
P i l e : - + 3 4 2 . = 5
J e l i s u n e n t i e r 2
P i l e : 2 - + 3 4 2 . = 2
J e l i s u n c h a r /
P i l e : / - + 3 4 2 2 . = 2
J e l i s u n c h a r !
P i l e : ! / - + 3 4 2 2 . = 2
E x p r e s s i o n : ! / - + 3 4 2 2
V a l e u r : 2
J e a n B e r s t e l 1 3 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
V o i c i l a d e c l a r a t i o n d e l a c l a s s e d e s e x p r e s s i o n s .
c l a s s E x p r e s s i o n R {
p u b l i c :
v i r t u a l v o i d P r i n t ( ) = 0
v i r t u a l i n t e v a l ( ) = 0
}
t y p e d e f E x p r e s s i o n R * E x p r e s s i o n
C h a q u e o p e r a t i o n a r i t h m e t i q u e e s t r e p r e s e n t e e p a r u n e s o u s - c l a s s e .
I l y e n a 6 :
A d d i t i o n
S o u s t r a c t i o n
M u l t i p l i c a t i o n
D i v i s i o n
F a c t
S i m p l e
J e a n B e r s t e l 1 3 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
V o i c i l a d e c l a r a t i o n d e s s o u s - c l a s s e s ( U n e s e u l e d e s c l a s s e s
d ' o p e r a t e u r s b i n a i r e s e s t m o n t r e e ) .
c l a s s S o u s t r a c t i o n : p u b l i c E x p r e s s i o n R {
E x p r e s s i o n g a u c h e , d r o i t e
p u b l i c :
S o u s t r a c t i o n ( E x p r e s s i o n , E x p r e s s i o n )
i n t e v a l ( )
v o i d p r i n t ( )
}
c l a s s F a c t : p u b l i c E x p r e s s i o n R {
E x p r e s s i o n u n i q u e
p u b l i c :
F a c t ( E x p r e s s i o n )
i n t e v a l ( )
v o i d p r i n t ( )
}
c l a s s S i m p l e : p u b l i c E x p r e s s i o n R { / / Z e r o a i r e
i n t v a l e u r
p u b l i c :
S i m p l e ( i n t )
v o i d p r i n t ( )
i n t e v a l ( )
}
J e a n B e r s t e l 1 4 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
D e n i t i o n d e s m e t h o d e s d e s c l a s s e s .
S o u s t r a c t i o n : : S o u s t r a c t i o n ( E x p r e s s i o n a , E x p r e s s i o n b ) :
g a u c h e ( a ) , d r o i t e ( b ) { }
v o i d S o u s t r a c t i o n : : p r i n t ( ) {
c o u t < < " - " g a u c h e - > p r i n t ( ) d r o i t e - > p r i n t ( )
}
i n t S o u s t r a c t i o n : : e v a l ( ) {
r e t u r n g a u c h e - > e v a l ( ) - d r o i t e - > e v a l ( )
}
F a c t : : F a c t ( E x p r e s s i o n a ) : u n i q u e ( a ) { }
v o i d F a c t : : p r i n t ( ) {
c o u t < < " ! " u n i q u e - > p r i n t ( )
}
i n t F a c t : : e v a l ( ) {
i n t n , v = u n i q u e - > e v a l ( )
n = v
w h i l e ( - - v ) n * = v
r e t u r n n
}
S i m p l e : : S i m p l e ( i n t n ) : v a l e u r ( n ) { }
v o i d S i m p l e : : p r i n t ( ) { c o u t < < v a l e u r < < " " }
i n t S i m p l e : : e v a l ( ) { r e t u r n v a l e u r }
J e a n B e r s t e l 1 4 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L a f o n c t i o n a p p l y d e m a n d e l a c r e a t i o n d ' u n n u d a p p r o p r i e e n
f o n c t i o n d e l ' o p e r a t e u r .
E x p r e s s i o n a p p l y ( c h a r x , E x p r e s s i o n a , E x p r e s s i o n b = 0 )
{
s w i t c h ( x ) {
c a s e ' + ' :
r e t u r n n e w A d d i t i o n ( a , b )
c a s e ' - ' :
r e t u r n n e w S o u s t r a c t i o n ( a , b )
c a s e ' * ' :
r e t u r n n e w M u l t i p l i c a t i o n ( a , b )
c a s e ' / ' :
r e t u r n n e w D i v i s i o n ( a , b )
c a s e ' ! ' :
r e t u r n n e w F a c t ( a )
}
r e t u r n N U L L
}
L ' a n a l y s e s y n t a x i q u e d ' u n e e x p r e s s i o n u t i l i s e u n e f o n c t i o n g l o b a l e
b a r b a r e g e t l e x ( x , i ) q u i r e t o u r n e
- 1 a l a n d e l a l e c t u r e
0 s i l e l e x e m e l u e s t u n e n t i e r
1 s i l e l e x e m e e s t u n d e s c a r a c t e r e s d e s i g n a n t u n o p e r a t e u r
b i n a i r e o u l a f a c t o r i e l l e .
J e a n B e r s t e l 1 4 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L a p i l e e s t u n e p i l e d ' e x p r e s s i o n s
E x p r e s s i o n c o n s t r u c t i o n ( ) {
P i l e p c h a r x
E x p r e s s i o n g , d i n t i
f o r ( ) {
s w i t c h ( g e t l e x ( x , i ) ) {
c a s e - 1 :
r e t u r n p . t o p ( )
c a s e 0 :
p . p u s h ( n e w S i m p l e ( i ) )
b r e a k
c a s e 1 :
s w i t c h ( x ) {
c a s e ' ! ' :
p . p u s h ( a p p l y ( x , p . p o p ( ) ) )
b r e a k
d e f a u l t :
d = p . p o p ( )
g = p . p o p ( )
p . p u s h ( a p p l y ( x , g , d ) )
}
}
}
r e t u r n N U L L
}
J e a n B e r s t e l 1 4 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
N o t e : D ' a u t r e s p r o b l e m e s s e t r a i t e n t d e f a c o n s e m b l a b l e . I l y
a t o u t e l a f a m i l l e d e c o n s t r u c t i o n e t d ' e v a l u a t i o n d ' a r b r e s . D e u x
e x e m p l e s :
C a l c u l d ' u n a u t o m a t e n i a p a r t i r d ' u n e e x p r e s s i o n r a t i o n n e l l e :
d a n s c e c a s , c ' e s t l ' a r b r e d e l ' e x p r e s s i o n r a t i o n n e l l e q u i e s t c o n s -
t r u i t , l ' e v a l u a t i o n c o n s i s t a n t a c o n s t r u i r e l ' a u t o m a t e .
D e m a n i e r e p l u s g e n e r a l e , l a c o n s t r u c t i o n d ' u n a r b r e d e d e r i -
v a t i o n p a r a n a l y s e s y n t a x i q u e .
{ T o u t e v a r i a b l e c o r r e s p o n d a u n e c l a s s e
{ T o u t e r e g l e e s t u n c o n s t r u c t e u r .
J e a n B e r s t e l 1 4 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
E X E R C I C E S
1 . P o l o n a i s e p o s t x e e : e c r i r e u n p r o g r a m m e q u i l i t u n e e x p r e s -
s i o n p o s t x e e s u r u n e l i g n e , e t e n a c h e l a v a l e u r . O n d e n i r a
u n e c l a s s e d e l e x e m e s , a y a n t d e u x s o u s - c l a s s e s : e n t i e r s e t o p e r a -
t e u r s , p o u r u n e m e i l l e u r e l e c t u r e .
J e a n B e r s t e l 1 4 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
P o l o n a i s e p o s t x e e
/ / P o l o n a i s e a v e c l e c t u r e
/ / p l u s s o p h i s t i q u e e
/ /
# i n c l u d e < c t y p e . h >
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < i o m a n i p . h >
c l a s s P i l e
c l a s s L e x e m e
c l a s s E n t i e r
c l a s s O p e r a t e u r
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / M e t h o d e s g l o b a l e s
/ /
i n t a p p l y ( c h a r , i n t , i n t )
L e x e m e * g e t L e x ( )
v o i d e a t ( L e x e m e * , P i l e & )
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / C l a s s e P i l e
/ /
c l a s s P i l e {
p u b l i c :
P i l e ( i n t n = 1 0 )
v o i d p u s h ( i n t x )
i n t i s E m p t y ( )
i n t t o p ( )
i n t p o p ( )
v o i d i m p r i m e r ( )
p r i v a t e :
i n t s p
i n t * p
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / C l a s s e L e x e m e
/ /
c l a s s L e x e m e {
p u b l i c :
v i r t u a l v o i d e a t ( P i l e & ) = 0
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / C l a s s e E n t i e r : p u b l i c L e x e m e
/ /
c l a s s E n t i e r : p u b l i c L e x e m e {
J e a n B e r s t e l 1 4 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
i n t v a l
p u b l i c :
E n t i e r ( i n t & i ) { v a l = i }
v o i d e a t ( P i l e & p ) {
p . p u s h ( v a l )
p . i m p r i m e r ( ) c o u t < < e n d l
}
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
/ / C l a s s e O p e r a t e u r : p u b l i c L e x e m e
/ /
c l a s s O p e r a t e u r : p u b l i c L e x e m e {
c h a r o p
p u b l i c :
O p e r a t e u r ( c h a r & o p ) { t h i s - > o p = o p }
v o i d e a t ( P i l e & p ) {
i n t a = p . p o p ( )
i n t b = p . p o p ( )
i n t c = a p p l y ( o p , b , a )
p . p u s h ( c )
p . i m p r i m e r ( ) c o u t < < e n d l
}
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
P i l e : : P i l e ( i n t n ) {
s p = 0 p = n e w i n t n ]
}
v o i d P i l e : : p u s h ( i n t x ) {
p + + s p ] = x
}
i n t P i l e : : i s E m p t y ( ) {
r e t u r n ( s p = = 0 )
}
i n t P i l e : : t o p ( ) {
i f ( s p = = 0 )
t h r o w " P i l e V i d e "
r e t u r n p s p ]
}
i n t P i l e : : p o p ( ) {
i f ( s p = = 0 )
t h r o w " P i l e V i d e "
r e t u r n p s p - - ]
}
J e a n B e r s t e l 1 4 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
v o i d P i l e : : i m p r i m e r ( ) {
f o r ( i n t i = s p i > 0 i - - )
c o u t < < p i ] < < " \ t "
c o u t < < " @ "
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
L e x e m e * g e t L e x ( ) {
c h a r x
i n t i
w h i l e ( c i n . g e t ( x ) ) {
i f ( x = = ' \ n ' )
r e t u r n 0
i f ( x ! = ' ' )
b r e a k
}
i f ( ( ' 0 ' < = x ) & & ( x < = ' 9 ' ) ) {
c i n . p u t b a c k ( x )
c i n > > i
c o u t < < " J e l i s u n e n t i e r " < < i < < e n d l
r e t u r n n e w E n t i e r ( i )
}
c o u t < < " J e l i s u n c h a r " < < x < < e n d l
r e t u r n n e w O p e r a t e u r ( x )
}
i n t a p p l y ( c h a r x , i n t a , i n t b ) {
s w i t c h ( x ) {
c a s e ' + ' : r e t u r n a + b
c a s e ' - ' : r e t u r n a - b
c a s e ' * ' : r e t u r n a * b
c a s e ' / ' : r e t u r n a / b
}
r e t u r n 0
}
v o i d e a t ( L e x e m e * l e x , P i l e & p ) {
i f ( l e x )
l e x - > e a t ( p )
}
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
v o i d m a i n ( )
{
P i l e p
L e x e m e * l e x
f o r ( ) {
l e x = g e t L e x ( )
t r y {
i f ( l e x = = 0 ) {
J e a n B e r s t e l 1 4 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
i n t i = p . p o p ( )
i f ( ! p . i s E m p t y ( ) )
t h r o w " E x p r e s s i o n s u r d e f i n i e "
c o u t < < " V a l e u r = " < < i < < e n d l
e x i t ( 0 )
}
e a t ( l e x , p )
}
c a t c h ( c h a r * e )
{
c o u t < < e < < e n d l
e x i t ( 1 )
}
}
}
J e a n B e r s t e l 1 4 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
1 0
H E R I T A G E ( s u i t e )
1 . T a b l e d e f o n c t i o n s v i r t u e l l e s
2 . L i s t e s , d e u x i e m e v e r s i o n
3 . C o m p o s i t e s
4 . V i s i t e u r s
J e a n B e r s t e l 1 5 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
T a b l e d e f o n c t i o n s v i r t u e l l e s
c l a s s B a s e {
i n t x , y
i n t H ( v o i d )
}
B a s e b
y
x
b
L ' a p p e l b . H ( ) e s t r e m p l a c e p a r H ( b ) a l a c o m p i l a t i o n .
c l a s s B a s e {
i n t x , y
i n t H ( v o i d )
v i r t u a l i n t f ( v o i d )
v i r t u a l i n t g ( v o i d )
}
y
x
v t b l
t
b
B g
B f
L ' a p p e l b . g ( ) e s t r e m p l a c e p a r b . v t b l 1 ] = B g ( ) a l a c o m p i -
l a t i o n .
c l a s s D e r : B a s e {
i n t x , y
i n t f ( v o i d )
i n t g ( v o i d )
i n t z
}
z
y
x
v t b l
t
d
D g
D f
J e a n B e r s t e l 1 5 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L ' a p p e l d . g ( ) e s t r e m p l a c e p a r d . v t b l 1 ] = D g ( ) a l a c o m p i -
l a t i o n .
S o i t m a i n t e n a n t
B a s e * p = n e w D e r
L ' a e c t a t i o n a u p o i n t e u r p
r e s t r e i n t l ' a c c e s a u x c h a m p s d e B a s e , i . e . p - > z e s t u n e
e r r e u r
n e m o d i e p a s l e c o n t e n u d e s c h a m p s d e l ' o b j e t p o i n t e : p - >
g ( ) v a u t p - > v t b l 1 ] = D g ( )
U n e c o n v e r s i o n b = d r e m p l a c e l a t a b l e d e D e r p a r l a t a b l e d e
B a s e
O n a p p e l l e l i g a t u r e d y n a m i q u e o u r e s o l u t i o n o u t y p a g e d y -
n a m i q u e l e c a l c u l d e l ' a d r e s s e d e l a f o n c t i o n a p p e l e e e n f o n c t i o n
d u t y p e d e l ' o b j e t a p p e l a n t , c a l c u l f a i t a l ' e x e c u t i o n .
J e a n B e r s t e l 1 5 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L i s t e s , d e u x i e m e v e r s i o n
L i s t e s c o m m e o b j e t s
O n p e u t v o i r l e s l i s t e s
c o m m e m e c a n i s m e d e c h a ^ n a g e d ' o b j e t s
c o m m e u n e r e a l i s a t i o n d e s s u i t e s n i e s d ' o b j e t s .
D a n s l e p r e m i e r c a s , u n e l i s t e e s t u n p o i n t e u r v e r s s o n p r e m i e r
e l e m e n t , e t l e c h a ^ n a g e e s t r e a l i s e p a r u n e c l a s s e d e \ c e l l u l e s " .
D a n s l e d e u x i e m e c a s , o n a \ r e i e " l a l i s t e e n o b j e t . L e m e c a n i s m e
d e c h a ^ n a g e e s t s e c o n d a i r e . O n s ' i n t e r e s s e a
l ' i t e r a t i o n
l e t r a n s f e r t d e s o p e r a t i o n s d e s e l e m e n t s s u r l e s l i s t e s ( l e f a m e u x
m a p c a r )
e t c o m m e o n l e v e r r a , o n o b t i e n t g r a t i s d e s l i s t e s d e l i s t e s .
J e a n B e r s t e l 1 5 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L e s c o n s t i t u a n t s
L i s t e s ( e x o g e n e s ) d e p o i n t e u r s v e r s d e s \ o b j e t s " .
c l a s s O b j e t {
p r o t e c t e d :
i n t t
p u b l i c :
O b j e t ( i n t t = 0 ) { t h i s - > t = t }
v i r t u a l v o i d s h o w ( ) { c o u t < < ' ' < < t }
}
U n e l i s t e c o n t i e n t u n p o i n t e u r v e r s u n e p r e m i e r e c e l l u l e , u n p o i n -
t e u r v e r s l a d e r n i e r e , e t u n e n t i e r c o n t e n a n t l a t a i l l e .
c l a s s L i s t e {
p r o t e c t e d :
M a i l l o n * p r e m
M a i l l o n * d e r n
i n t t a i l l e
. . .
}
J e a n B e r s t e l 1 5 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L a c l a s s e d e s m a i l l o n s e s t l o c a l e a l a c l a s s e d e s l i s t e s .
c l a s s L i s t e {
p r o t e c t e d :
c l a s s M a i l l o n {
p u b l i c :
M a i l l o n * s u i v
M a i l l o n * p r e c
O b j e t * d
M a i l l o n ( M a i l l o n * p , M a i l l o n * s , O b j e t * d ) {
p r e c = p
s u i v = s
t h i s - > d = d
}
}
M a i l l o n * p r e m
M a i l l o n * d e r n
i n t t a i l l e
. . .
}
L e c o n s t r u c t e u r p a r d e f a u t s ' e c r i t :
L i s t e : : L i s t e ( ) {
p r e m = d e r n = N U L L
t a i l l e = 0
}
D e u x m e t h o d e s d ' i n t e r r o g a t i o n n a t u r e l l e s :
i n t g e t T a i l l e ( ) c o n s t { r e t u r n t a i l l e }
i n t i s E m p t y ( ) c o n s t { r e t u r n t a i l l e = = 0 }
J e a n B e r s t e l 1 5 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L a m a n i p u l a t i o n
O n m a n i p u l e p a r d e s m e t h o d e s u s u e l l e s :
v o i d a d d H e a d ( O b j e t * n )
v o i d a d d T a i l ( O b j e t * n )
O b j e t * g e t H e a d ( )
O b j e t * r e m o v e H e a d ( )
P a r e x e m p l e :
v o i d L i s t e : : a d d H e a d ( O b j e t * n ) {
M a i l l o n * n o u v = n e w M a i l l o n ( N U L L , p r e m , n )
i f ( p r e m ! = N U L L )
p r e m - > p r e c = n o u v
e l s e / / l i s t e v i d e
d e r n = n o u v
p r e m = n o u v
t a i l l e + +
}
N o t e r q u e r e m o v e H e a d ( ) s u p p r i m e l e m a i l l o n e t r e t o u r n e l ' a d r e s s e
d e l ' o b j e t .
J e a n B e r s t e l 1 5 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L ' i m p r e s s i o n
L ' i m p r e s s i o n s e f a i t e n a p p e l a n t l a m e t h o d e a d e q u a t e p o u r c h a q u e
o b j e t d e l a l i s t e :
v o i d L i s t e : : s h o w ( ) {
c o u t < < " ( "
f o r ( M a i l l o n * p = p r e m p p = p - > s u i v )
p - > d - > s h o w ( )
c o u t < < " ) "
}
E x e m p l e :
L i s t e a
a . a d d H e a d ( n e w O b j e t ( 2 ) )
a . a d d T a i l ( n e w O b j e t ( 5 ) )
a . a d d T a i l ( n e w O b j e t ( 6 ) )
c o u t < < " T a i l l e : " < < a . g e t T a i l l e ( ) < < e n d l
a . s h o w ( ) c o u t < < e n d l
d o n n e
T a i l l e : 3
( 2 5 6 )
J e a n B e r s t e l 1 5 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L i s t e s r e c u r s i v e s
U n e l i s t e r e c u r s i v e e s t u n e l i s t e d o n t l e s e l e m e n t s p e u v e n t ^ e t r e d e s
l i s t e s , c o m m e
( 4 ( 1 3 ) 2 5 6 )
C e c i e s t r e a l i s e e n d e c l a r a n t q u ' u n e l i s t e e s t u n c a s p a r t i c u l i e r
d ' u n o b j e t .
c l a s s L i s t e : p u b l i c O b j e t {
. . .
}
R i e n n e d o i t ^ e t r e m o d i e d a n s l e s f o n c t i o n s p r e c e d e n t e s .
E n f a i t , l e c o n s t r u c t e u r d e l a c l a s s e L i s t e f a i t a p p e l a u c o n s t r u c -
t e u r p a r d e f a u t d e l a c l a s s e O b j e t ( q u i d o i t ^ e t r e d e n i ) . A i n s i
L i s t e a
a . a d d H e a d ( n e w O b j e t ( 2 ) )
a . a d d T a i l ( n e w O b j e t ( 5 ) )
L i s t e b ( n e w O b j e t ( 7 ) )
b . a d d H e a d ( n e w O b j e t ( 8 ) )
L i s t e c ( n e w O b j e t ( 3 ) )
c . a d d H e a d ( & b )
c . a d d H e a d ( n e w O b j e t ( 1 ) )
a . a d d H e a d ( & c )
a . a d d H e a d ( n e w O b j e t ( 4 ) )
a . s h o w ( ) c o u t < < e n d l
d o n n e
( 4 ( 1 ( 8 7 ) 3 ) 2 5 )
J e a n B e r s t e l 1 5 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C o m p o s i t e s
L e s l i s t e s r e c u r s i v e s p r e c e d e n t e s s o n t u n c a s p a r t i c u l i e r d u
s c h e m a c o n c e p t u e l C o m p o s i t e
L e s s c h e m a s c o n c e p t u e l s , e n a n g l a i s \ d e s i g n p a t t e r n s " s o n t
d e s c r i p t i o n s o f c o m m u n i c a t i n g o b j e c t s a n d c l a s s e s t h a t a r e
c u s t o m i z e d t o s o l v e a g e n e r a l d e s i g n p r o b l e m i n a p a r t i c u l a r
c o n t e x t
L ' o b j e c t i f d e C o m p o s i t e e s t d e c o m p o s e r d e s o b j e t s e n u n e s t r u c -
t u r e a r b o r e s c e n t e , e n v u e d e p o u v o i r t r a i t e r d e m a n i e r e u n i f o r m e
u n o b j e t e t u n g r o u p e d ' o b j e t .
E x e m p l e : U n e l e m e n t g r a p h i q u e p e u t ^ e t r e
u n e l i g n e
u n r e c t a n g l e
u n t e x t e
o u u n e g u r e q u i g r o u p e d e s e l e m e n t s g r a p h i q u e s
S t r u c t u r a t i o n : L a h i e r a r c h i e d e s c l a s s e s c o m p o r t e
u n e c l a s s e ( a b s t r a i t e ) c o m p o s a n t ( e l e m e n t g r a p h i q u e )
d e s c l a s s e s d e r i v e e s f e u i l l e s ( l i g n e , r e c t a n g l e , t e x t e )
u n e c l a s s e d e r i v e e n o e u d ( o u \ c o m p o s i t e " , i c i g u r e )
A v a n t a g e : u n c l i e n t m a n i p u l e l e s o b j e t s e n t a n t q u e c o m p o s a n t s .
J e a n B e r s t e l 1 5 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
U n e a r b o r e s c e n c e d e c e r c l e s e t d e c a r r e s
E x e m p l e
L e s s o m m e t s f o r m e n t u n e c l a s s F o r m e
L e s f e u i l l e s s o n t s o i t d e l a c l a s s C a r r e , o u d e l a c l a s s
C e r c l e
L e s n u d s s o n t d e l a c l a s s G r o u p e
L a h i e r a r c h i e e s t f o r m e e d e
c l a s s F o r m e { . . . }
c l a s s C a r r e : p u b l i c F o r m e { . . . }
c l a s s C e r c l e : p u b l i c F o r m e { . . . }
c l a s s G r o u p e : p u b l i c F o r m e { . . . }
L e s o p e r a t i o n s s o n t e n g e n e r a l v i r t u e l l e s s u r l a c l a s s e F o r m e . I c i
l ' a c h a g e e t l e c a l c u l d e l ' a i r e :
c l a s s F o r m e {
p u b l i c :
v i r t u a l v o i d s h o w ( ) = 0
v i r t u a l f l o a t g e t A i r e ( ) = 0
}
L a c l a s s e G r o u p e a u n m e c a n i s m e d e p a r c o u r s . I c i u n s i m p l e
t a b l e a u .
J e a n B e r s t e l 1 6 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
c l a s s G r o u p e : p u b l i c F o r m e {
F o r m e * e l e m e n t 1 2 ]
i n t n b
p u b l i c :
G r o u p e ( ) : n b ( 0 ) { }
v o i d a d d ( F o r m e * f ) { e l e m e n t n b + + ] = f }
f l o a t g e t A i r e ( )
v o i d s h o w ( )
}
L e s o p e r a t i o n s s u r u n g r o u p e f o n t a p p e l a u x o p e r a t i o n s s u r l e s
e l e m e n t s :
f l o a t G r o u p e : : g e t A i r e ( ) {
f l o a t s = 0
f o r ( i n t i = 0 i < n b i + + )
s + = e l e m e n t i ] - > g e t A i r e ( )
r e t u r n s
}
v o i d s h o w ( ) {
c o u t < < " F o r m e ( \ n "
f o r ( i n t i = 0 i < n b i + + )
e l e m e n t i ] - > s h o w ( )
c o u t < < " ) \ n "
}
J e a n B e r s t e l 1 6 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
Q u e l q u e s e x e m p l e s d ' a p p e l s
m a i n ( ) {
C e r c l e * c C a r r e * r G r o u p e g
c = n e w C e r c l e ( 5 ) r = n e w C a r r e ( 3 )
c - > s h o w ( ) r - > s h o w ( )
g . a d d ( c ) g . a d d ( r ) g . s h o w ( )
G r o u p e * h = n e w G r o u p e
h - > a d d ( n e w C a r r e ( 6 ) )
g . a d d ( h ) g . s h o w ( )
c o u t < < " A i r e t o t a l e = " < < g . g e t A i r e ( ) < < e n d l
}
R e s u l t a t :
C e r c l e 5 7 8 . 5 3 9 7
C a r r e 3 9
F o r m e (
C e r c l e 5 7 8 . 5 3 9 7
C a r r e 3 9
)
F o r m e (
C e r c l e 5 7 8 . 5 3 9 7
C a r r e 3 9
F o r m e (
C a r r e 6 3 6
)
)
A i r e t o t a l e = 1 2 3 . 5 4
J e a n B e r s t e l 1 6 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
V i s i t e u r s
L e p o l y m o r p h i s m e e n C + + ( e t e n J a v a ) e s t l i m i t e . I l n e s ' a p p l i q u e
q u ' a l ' o b j e t a p p e l a n t ( l e 0 - i e m e a r g u m e n t ) . S u r l e s a u t r e s a r g u -
m e n t s s ' a p p l i q u e l a s u r c h a r g e . E n S m a l l t a l k , l e p o l y m o r p h i s m e e s t
t o t a l .
R e p r e n o n s l ' e v a l u a t i o n d e s e x p r e s s i o n s p o l o n a i s e s p r e x e e s .
L a c l a s s e L e x e m e a l e s d e u x c l a s s e s d e r i v e e s E n t i e r e t
O p e r a t e u r
L ' e v a l u a t e u r e s t l a p i l e , d a n s l a b o u c l e :
P i l e p
L e x e m e * l e x
f o r ( ) {
l e x = g e t L e x ( )
i f ( l e x = = 0 ) { . . . e x i t ( 0 ) }
e a t ( l e x , p )
}
L a f o n c t i o n g l o b a l e e a t ( l e x , p ) e s t r e e c r i t e e n l e x - >
e a t ( p )
L o g i q u e m e n t , o n a u r a i t d ^ u e c r i r e p . e a t ( l e x ) p o u r d e u x m e t h -
o d e s
e a t ( O p e r a t e u r * )
e a t ( E n t i e r * )
m a i s c e c i n e s e c o m p i l e p a s p a r c e q u e l e p o l y m o r p h i s m e n e
s ' a p p l i q u e p a s a l ' a r g u m e n t d e e a t ( )
J e a n B e r s t e l 1 6 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L e s c h e m a c o n c e p t u e l d e s V i s i t e u r s s e r t a r e m e d i e r a c e l a p a r
l ' i n v e r s i o n d e s a r g u m e n t s .
L a c l a s s e L e x e m e a u n e m e t h o d e ( v i r t u e l l e ) t r a d i t i o n n e l l e m e n t
a p p e l e e a c c e p t ( P i l e )
C h a q u e c l a s s e d e r i v e e i m p l e m e n t e c e t t e m e t h o d e , p a r i n v e r s i o n
d e s a r g u m e n t s :
v o i d O p e r a t e u r : : a c c e p t ( M P i l e & p ) {
p . e a t ( t h i s )
}
v o i d E n t i e r : : a c c e p t ( M P i l e & p ) {
p . e a t ( t h i s )
}
L ' e v a l u a t e u r e n v o i e l e \ m e s s a g e "
l e x - > a c c e p t ( p )
S i l e x e s t u n p o i n t e u r s u r u n O p e r a t e u r o p , c e c i d e v i e n t
o p - > a c c e p t ( p )
d ' o u
p . e a t ( o p )
e t l a m e t h o d e P i l e : : e a t ( O p e r a t e u r * ) s ' a p p l i q u e .
L e t o u r e s t j o u e !
J e a n B e r s t e l 1 6 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
A n n e x e : L i s t e d u p r o g r a m m e c o m p o s i t e
/ / / / / / / / / / / / / / / / / / / / / / / /
/ /
/ / C o m p o s i t e d e f o r m e s
/ /
# i n c l u d e < i o s t r e a m . h >
# d e f i n e d e c a l ( d ) f o r ( i n t i = 0 i < d i + + ) c o u t < < ' '
/ / / / / / / / / / / / / / / / / / / / / / / /
/ /
/ / F o r m e - - - C e r c l e
/ / | - - C a r r e
/ / | - - G r o u p e
/ /
/ / / / / / / / / / / / / / / / / / / / / / / /
/ / c l a s s F o r m e
/ /
c l a s s F o r m e {
p u b l i c :
v i r t u a l v o i d s h o w ( i n t = 0 ) = 0
v i r t u a l f l o a t g e t A i r e ( ) = 0
}
/ / / / / / / / / / / / / / / / / / / / / / / /
/ / c l a s s C a r r e
/ /
c l a s s C a r r e : p u b l i c F o r m e {
i n t c o t e
f l o a t a i r e
p u b l i c :
C a r r e ( i n t c o t e ) {
t h i s - > c o t e = c o t e
t h i s - > a i r e = c o t e * c o t e
}
f l o a t g e t A i r e ( ) { r e t u r n a i r e }
v o i d s h o w ( i n t d ) {
d e c a l ( d )
c o u t < < " C a r r e " < < c o t e < < " " < < a i r e < < e n d l
}
}
/ / / / / / / / / / / / / / / / / / / / / / / /
/ / c l a s s C e r c l e
/ /
c l a s s C e r c l e : p u b l i c F o r m e {
i n t r a y o n
f l o a t a i r e
p u b l i c :
C e r c l e ( i n t r a y o n ) {
t h i s - > r a y o n = r a y o n
t h i s - > a i r e = 3 . 1 4 1 5 9 * r a y o n * r a y o n
J e a n B e r s t e l 1 6 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
}
f l o a t g e t A i r e ( ) { r e t u r n a i r e }
v o i d s h o w ( i n t d ) {
d e c a l ( d )
c o u t < < " C e r c l e " < < r a y o n < < " " < < a i r e < < e n d l
}
}
/ / / / / / / / / / / / / / / / / / / / / / / /
/ / c l a s s G r o u p e
/ /
c l a s s G r o u p e : p u b l i c F o r m e {
F o r m e * e l e m e n t 1 2 ]
i n t n b
p u b l i c :
G r o u p e ( ) : n b ( 0 ) { }
v o i d a d d ( F o r m e * f ) { e l e m e n t n b + + ] = f }
f l o a t g e t A i r e ( ) {
f l o a t s = 0
f o r ( i n t i = 0 i < n b i + + )
s + = e l e m e n t i ] - > g e t A i r e ( )
r e t u r n s
}
v o i d s h o w ( i n t d ) {
d e c a l ( d ) c o u t < < " F o r m e ( \ n "
f o r ( i n t i = 0 i < n b i + + )
e l e m e n t i ] - > s h o w ( d + 3 )
d e c a l ( d ) c o u t < < " ) \ n "
}
}
/ / / / / / / / / / / / / / / / / / / / / / / /
/ / m a i n ( )
/ /
m a i n ( ) {
C e r c l e * c
C a r r e * r
G r o u p e g
c = n e w C e r c l e ( 5 )
r = n e w C a r r e ( 3 )
c - > s h o w ( )
r - > s h o w ( )
g . a d d ( c )
g . a d d ( r )
g . s h o w ( )
G r o u p e * h = n e w G r o u p e
h - > a d d ( n e w C a r r e ( 6 ) )
g . a d d ( h )
g . s h o w ( )
J e a n B e r s t e l 1 6 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
c o u t < < " A i r e t o t a l e = " < < g . g e t A i r e ( ) < < e n d l
}
J e a n B e r s t e l 1 6 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
1 1
D R O I T S D ' A C C E S
1 . O b j e c t i f
2 . L e s t r o i s c a t e g o r i e s
3 . F o n c t i o n s a m i e s
4 . A c c e s e t h e r i t a g e
J e a n B e r s t e l 1 6 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
O b j e c t i f
L e s d r o i t s d ' a c c e s p r o t e g e n t l e s d o n n e e s e t l e s m e t h o d e s , e t
r e a l i s e n t a i n s i l ' e n c a p s u l a t i o n .
E n g e n e r a l , l e s f o n c t i o n s d ' a c c e s a u x d o n n e e s s o n t p u b l i q u e s , e t
l ' i m p l a n t a t i o n d e s s t r u c t u r e s d e d o n n e e s e s t c a c h e e .
c l a s s P i l e {
p u b l i c :
P i l e ( i n t n = 1 0 )
v o i d p u s h ( i n t x )
i n t t o p ( )
i n t p o p ( )
v o i d i m p r i m e r ( )
p r i v a t e :
i n t s p
i n t * p
}
J e a n B e r s t e l 1 6 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
A u t r e e x e m p l e . S o i t u n e c l a s s e
c l a s s C h a i n e {
i n t l g
c h a r * c h
. . .
}
P r o b l e m e :
S i l g e s t p r i v e , o n n e p o u r r a c o n n a ^ t r e l a l o n g u e u r ,
m a i s s i l g e s t p u b l i c , t o u t l e m o n d e p e u t c h a n g e r s a v a l e u r .
S o l u t i o n :
l g e s t u n m e m b r e p r i v e
o n d e n i t u n e f o n c t i o n m e m b r e g e t L g ( ) p u b l i q u e q u i r e t o u r n e
l a v a l e u r d e l g
i n t C h a i n e : : g e t L g ( ) { r e t u r n l g }
J e a n B e r s t e l 1 7 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
L e s t r o i s c a t e g o r i e s
L e s d r o i t s d ' a c c e s s o n t a c c o r d e s a u x f o n c t i o n s m e m b r e s , o u a u x
f o n c t i o n s g l o b a l e s .
L ' u n i t e d e p r o t e c t i o n e s t l a c l a s s e : t o u s l e s o b j e t s d ' u n e c l a s s e
b e n e c i e n t d e l a m ^ e m e p r o t e c t i o n .
L e s a t t r i b u t s d e p r o t e c t i o n s u i v a n t s s o n t ^ e t r e u t i l i s e s p o u r l e s m e m -
b r e s d ' u n e c l a s s e :
u n m e m b r e p u b l i c e s t a c c e s s i b l e a t o u t f o n c t i o n
u n m e m b r e p r i v a t e n ' e s t a c c e s s i b l e q u ' a u x f o n c t i o n s m e m b r e
d e l a c l a s s e o u a u x f o n c t i o n s a m i e s
u n m e m b r e p r o t e c t e d n ' e s t a c c e s s i b l e q u ' a u x f o n c t i o n s m e m -
b r e d e l a c l a s s e o u d e s c l a s s e s d e r i v e e s o u a u x f o n c t i o n s a m i e s .
P a r d e f a u t , l e s m e m b r e s d ' u n e c l a s s e s o n t p r i v e s , l e s m e m b r e s d ' u n e
s t r u c t s o n t t o u s p u b l i c .
J e a n B e r s t e l 1 7 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
c l a s s X {
i n t p r i v / / p r i v e p a r d e f a u t
p r o t e c t e d :
i n t p r o t
p u b l i c :
i n t p u b l
v o i d m ( )
}
L a f o n c t i o n m e m b r e X : : m ( ) a u n a c c e s n o n r e s t r e i n t :
v o i d X : : m ( ) {
p r i v = 1 / / o k
p r o t = 1 / / o k
p u b l = 1 / / o k
}
U n e f o n c t i o n g l o b a l e n ' a c c e d e q u ' a u x m e m b r e s p u b l i c s :
p r i n t f ( " % d " , x . p r i v ) / / e r r e u r
p r i n t f ( " % d " , x . p r o t ) / / e r r e u r
p r i n t f ( " % d " , x . p u b l ) / / o k
J e a n B e r s t e l 1 7 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
F o n c t i o n s a m i e s
U n e \ d e c l a r a t i o n d ' a m i t i e " i n c o r p o r e , d a n s u n e c l a s s e X , l e s f o n c -
t i o n s a u t o r i s e e s a a c c e d e r a u x m e m b r e s p r i v e s . U n e f o n c t i o n a m i e
a l e m ^ e m e s t a t u t q u ' u n e f o n c t i o n m e m b r e d e X
F o n c t i o n g l o b a l e
c l a s s X {
. .
f r i e n d f ( X . . . )
}
f e s t a u t o r i s e e a a c c e d e r a u x m e m b r e s p r i v e s d e l a c l a s s e X
F o n c t i o n m e m b r e d e Y
c l a s s Y {
. .
v o i d f ( X & x )
}
c l a s s X {
. .
f r i e n d Y : : f ( X & x )
}
v o i d Y : : f ( X & x ) {
x . p r i v = 1 / / o k
x . p r o t = 1 / / o k
x . p u b l = 1 / / o k
}
J e a n B e r s t e l 1 7 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
C l a s s e a m i e
U n e c l a s s e e n t i e r e e s t a m i e p a r
c l a s s X {
. .
f r i e n d c l a s s Y
}
J e a n B e r s t e l 1 7 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
A c c e s e t h e r i t a g e
U n e c l a s s e d e r i v e e e s t e l l e - m ^ e m e d e c l a r e e p r i v a t e ( d e f a u t ) ,
p r o t e c t e d o u p u b l i c , p a r
c l a s s Y u : p u b l i c X { }
c l a s s Y o : p r o t e c t e d X { }
c l a s s Y i : p r i v a t e X { }
L a p r o t e c t i o n d e s m e m b r e s d e X s e t r a n s f o r m e p o u r l e s c l a s s e s
d e r i v e e s d e s c l a s s e s d e r i v e e s .
L ' a c c e s a u x m e m b r e s d e X , p a r u n e m e t h o d e d e l a c l a s s e d e r i v e e ,
e s t l a r e s t r i c t i o n c o m m u n e :
U n e d o n n e e p r i v a t e d e X e s t i n a c c e s s i b l e a u x c l a s s e s d e r i v e e s .
U n e d o n n e e p r o t e c t e d d e X a l a p r o t e c t i o n p r o t e c t e d d a n s
Y u e t Y o , e t p r i v a t e d a n s Y i
U n e d o n n e e p u b l i c d e X a l a p r o t e c t i o n p r o t e c t e d d a n s Y u
e t p r i v a t e d a n s Y i
J e a n B e r s t e l 1 7 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
A t t e n t i o n : l ' a c c e s s i b i l i t e c o n c e r n e u n i q u e m e n t l e s m e m b r e s d e
l ' o b j e t l u i - m ^ e m e ( t h i s ) , e t n o n p a s d e s p a r a m e t r e s :
u n e d o n n e e p r o t e g e e e s t a c c e s s i b l e e n t a n t q u e m e m b r e d e
l ' o b j e t
u n e d o n n e e d ' u n o b j e t d e l a c l a s s e d e b a s e n ' e s t p a s a c c e s s i b l e
a u n e f o n c t i o n m e m b r e d e l a c l a s s e d e r i v e e .
v o i d Y u : : h ( X & x ) {
x . p u b l = 1
t h i s - > p r o t = 2 / / o k
x . p r o t = 2 / / e r r e u r : m e m b r e x . p r o t i n a c c e s s i b l e
}
J e a n B e r s t e l 1 7 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
1 2
F l o t s
1 . H i e r a r c h i e d e c l a s s e s
2 . M a n i p u l a t e u r s
3 . F i c h i e r s
J e a n B e r s t e l 1 7 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
H i e r a r c h i e d e c l a s s e s
L e s e n t r e e s e t s o r t i e s s o n t g e r e e s d a n s C + + a t r a v e r s d e s o b j e t s
p a r t i c u l i e r s a p p e l e s s t r e a m s o u o t s
I l s n e f o n t p a s p a r t i e d e l a s p e c i c a t i o n d e b a s e d e C + + , e t l e u r
i m p l e m e n t a t i o n p e u t v a r i e r d ' u n c o m p i l a t e u r a u n a u t r e .
L a h i e r a r c h i e d e c l a s s e s c o m p r e n d :
c l a s s i o s
C ' e s t l a c l a s s e d e b a s e , c o n t e n a n t l e s f o n c t i o n n a l i t e s p r i n c i p a l e s .
c l a s s i s t r e a m : p u b l i c v i r t u a l i o s
c l a s s e g e r a n t l e s e n t r e e s
c l a s s o s t r e a m : p u b l i c v i r t u a l i o s
c l a s s e g e r a n t l e s s o r t i e s
c l a s s i o s t r e a m : p u b l i c i s t r e a m , p u b l i c o s t r e a m
u n e c l a s s e q u i p e r m e t l ' i n s e r t i o n e t l ' e x t r a c t i o n .
D e s c l a s s e s p a r t i c u l i e r e s e x i s t e n t p o u r l a g e s t i o n d e s c h i e r s :
c l a s s i f s t r e a m : p u b l i c i s t r e a m
c l a s s o f s t r e a m : p u b l i c o s t r e a m
c l a s s f s t r e a m : p u b l i c i o s t r e a m
e t d ' a u t r e s c l a s s e s p o u r l a g e s t i o n d e t a b l e a u x d e c a r a c t e r e s .
J e a n B e r s t e l 1 7 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
D e u x o p e r a t e u r s s o n t s u r c h a r g e e s d e m a n i e r e a p p r o p r i e e p o u r l e s
o t s :
l ' o p e r a t e u r d ' i n s e r t i o n < < ( e c r i t u r e )
l ' o p e r a t e u r d ' e x t r a c t i o n > > ( l e c t u r e )
L e s o t s p r e d e n i s s o n t
c o u t a t t a c h e a l a s o r t i e s t a n d a r d
c e r r a t t a c h e a l a s o r t i e e r r e u r s t a n d a r d
c i n a t t a c h e a l ' e n t r e e s t a n d a r d .
L e s o p e r a t e u r s d ' i n s e r t i o n e t d ' e x t r a c t i o n s o n t p r e d e n i s d a n s l e s
c l a s s e s i s t r e a m e t o s t r e a m p o u r l e s t y p e s d e b a s e , p a r e x e m p l e :
c l a s s i s t r e a m : p u b l i c v i r t u a l i o s {
. . .
p u b l i c :
i s t r e a m & o p e r a t o r > > ( c h a r * )
i s t r e a m & o p e r a t o r > > ( c h a r & )
i s t r e a m & o p e r a t o r > > ( s h o r t & )
i s t r e a m & o p e r a t o r > > ( i n t & )
. . .
}
L ' o p e r a t e u r r e t o u r n e u n e r e f e r e n c e d ' u n s t r e a m , e t o n p e u t d o n c
e n c h a ^ n e r l e s o r d r e s d e l e c t u r e r e s p . d ' e c r i t u r e .
P o u r u n e n o u v e l l e c l a s s e X , s u r d e n i t i o n e n f o n c t i o n s a m i e s s e l o n
l e c a n e v a s
i s t r e a m & o p e r a t o r > > ( i s t r e a m & i n , X & o b j e t ) {
/ / L e c t u r e o b j e t
r e t u r n i n
J e a n B e r s t e l 1 7 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
}
o s t r e a m & o p e r a t o r < < ( o s t r e a m & o u t , X & o b j e t ) {
/ / E c r i t u r e d e l ' o b j e t
r e t u r n o u t
}
J e a n B e r s t e l 1 8 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C h a q u e o t p o s s e d e u n e t a t d o n t l a v a l e u r r e e t e l a s i t u a t i o n d u
s t r e a m . L ' e t a t d u o t p e u t ^ e t r e e x a m i n e p a r :
c l a s s i o s {
. . .
p u b l i c :
i n t e o f ( ) c o n s t / / f i n d e f i c h i e r
i n t f a i l ( ) c o n s t / / l a p r o c h a i n e o p e r a t i o n e c h o u e r a
i n t b a d ( ) c o n s t / / l e f l o t e s t e n d o m m a g e
i n t g o o d ( ) c o n s t / / l e f l o t e s t e n b o n e t a t
}
L ' o p e r a t i o n p r e c e d e n t e a r e u s s i s i l ' e t a t e s t g o o d ( ) o u e o f ( )
D a n s l ' e t a t f a i l ( ) o n s a i t q u e l e o t n ' e s t p a s a l t e r e , a l o r s q u e
d a n s b a d ( ) o n n e p e u t f a i r e c e t t e h y p o t h e s e .
D a n s u n e e c r i t u r e c o m m e
w h i l e ( c i n > > i ) { . . }
l ' e t a t d u o t e s t t e s t e , e t l e t e s t e s t r e u s s i s s i l ' e t a t e s t g o o d ( )
D a n s l e s a u t r e s c a s , o n r e t o u r n e 0 . U n e c o n v e r s i o n d e l a c l a s s e
c i n r e t o u r n e u n e n t i e r . C e t e n t i e r e s t n o n n u l s i l ' e t a t e s t g o o d ( )
J e a n B e r s t e l 1 8 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
M a n i p u l a t e u r s
L e s m a n i p u l a t e u r s s o n t u n e f a c o n a g r e a b l e d e f o r m a t e r . I n c l u r e
# i n c l u d e < i o m a n i p . h >
U n m a n i p u l a t e u r s ' i n s e r e d a n s l e o t c o m m e u n e d o n n e e o u
u n e r e f e r e n c e
I l s ' a p p l i q u e a p a r t i r d e s o n i n s e r t i o n .
E x e m p l e
c o u t < < x < < f l u s h < < y < < f l u s h
L e s m a n i p u l a t e u r s p r e d e n i s s o n t :
o c t ( i o ) n o t a t i o n o c t a l e
h e x ( i o ) n o t a t i o n h e x a d e c i m a l e
d e c ( i o ) n o t a t i o n d e c i m a l e
e n d l ( o ) a j o u t e \ n
e n d s a j o u t e \ 0
w s ( i ) i g n o r e b l a n c s e n t e t e
f l u s h ( o ) v i d e t a m p o n
s e t p r e c i s i o n ( i n t ) ( o ) c h i r e s a p r e s ,
s e t w ( i n t ) ( o ) g a b a r i t
s e t f i l l ( c h a r ) ( o ) r e m p l i s s a g e
J e a n B e r s t e l 1 8 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
D e n i r s e s p r o p r e s m a n i p u l a t e u r s
O n p e u t e c r i r e
c o u t < < x < < f l u s h < < y < < f l u s h
p a r c e q u e l a m e t h o d e f l u s h ( ) e s t d e c l a r e e
o s t r e a m & f l u s h ( o s t r e a m & )
I l s u s a i t d o n c d e s u r c h a r g e r l ' o p e r a t e u r d ' i n s e r t i o n ( c o m m e m e t h -
o d e d e l a c l a s s e o s t r e a m ) a v e c
o s t r e a m & o p e r a t o r < < ( o s t r e a m & ( * m a n i p ) ( o s t r e a m & ) )
{ r e t u r n ( * m a n i p ) ( * t h i s ) }
c o m m e c ' e s t d e j a f a i t d a n s i o s t r e a m . h . O n t r a n s f o r m e a i n s i u n e
f o n c t i o n m e m b r e e n m a n i p u l a t e u r . N o t e r l ' a p p a r i t i o n d u s c h e m a
c o n c e p t u e l v i s i t e u r
U n e f o n c t i o n a v e c a r g u m e n t d a n s u n o t d e s o r t i e , c o m m e
c o u t < < s e t p r e c i s i o n ( 4 ) < < x
s ' e c r i t e n d e u x t e m p s :
l a f o n c t i o n s e t p r e c i s i o n ( ) r e t o u r n e u n o b j e t d ' u n e n o u v e l l e
c l a s s e , c o n t e n a n t l a f o n c t i o n e t l ' a r g u m e n t
l ' o p e r a t e u r d ' i n s e r t i o n d e l a n o u v e l l e c l a s s e e s t s u r c h a r g e p o u r
a p p l i q u e r l a f o n c t i o n a s o n a r g u m e n t .
J e a n B e r s t e l 1 8 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L e s f o n c t i o n s c o n s i d e r e e s s o n t d e t y p e
t y p e d e f o s t r e a m & ( * F ) ( o s t r e a m & , i n t )
L a n o u v e l l e c l a s s e e s t
c l a s s O m a n i p {
p r i v a t e :
F f
i n t i
p u b l i c :
O m a n i p ( F _ f , i n t _ i ) : f ( _ f ) , i ( _ i ) { }
f r i e n d o s t r e a m & o p e r a t o r < < ( o s t r e a m & o s , O m a n i p & m )
{ r e t u r n m . f ( o s , m . i ) }
}
L a f o n c t i o n s e t p r e c i s i o n ( ) e s t d e n i e p o u r r e t o u r n e r u n o b j e t
d e l a c l a s s e O m a n i p a p a r t i r d ' u n e f o n c t i o n d e t y p e F . O n s u p p o s e
d o n n e
o s t r e a m & p r e c i s i o n ( o s t r e a m & , i n t i )
e t o n d e n i t
O m a n i p s e t p r e c i s i o n ( i n t i ) {
r e t u r n O m a n i p ( & p r e c i s i o n , i )
}
D a n s n o t r e c a s , l a f o n c t i o n p r e c i s i o n ( ) e s t d e n i e p a r
o s t r e a m & p r e c i s i o n ( o s t r e a m & , i n t i ) {
o s . p r e c i s i o n ( i )
r e t u r n o s
}
J e a n B e r s t e l 1 8 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
U n e d e n i t i o n g e n e r i q u e e s t c o n t e n u e d a n s l e s c h i e r s u s u e l s :
t e m p l a t e < c l a s s T >
c l a s s O M A N I P {
p u b l i c :
O M A N I P ( o s t r e a m & ( * f ) ( o s t r e a m & , T ) , T v ) :
f u n c ( f ) , v a l ( v ) { }
f r i e n d o s t r e a m & o p e r a t o r < < ( o s t r e a m & s , O M A N I P < T > & m
{ r e t u r n m . f u n c ( s , m . v a l ) }
p r i v a t e :
o s t r e a m & ( * f u n c ) ( o s t r e a m & , T )
T v a l
}
e t d e m ^ e m e p o u r I M A N I P e t S M A N I P
J e a n B e r s t e l 1 8 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
F i c h i e r s
L e s c h i e r s s o n t a s s o c i e s a d e s o t s d e s c l a s s e s i f s t r e a m ,
o f s t r e a m e t f s t r e a m
i n t m a i n ( i n t a r g c , c h a r * a r g v ] ) {
i f ( a r g c ! = 3 ) e r r o r ( " a r g u m e n t s " )
i f s t r e a m d e p u i s ( a r g v 1 ] )
o f s t r e a m v e r s ( a r g v 2 ] )
c h a r c
w h i l e ( d e p u i s . g e t ( c ) ) v e r s . p u t ( c )
i f ( ! d e p u i s . e o f ( ) | | v e r s . b a d ( ) )
e r r o r ( " h m " )
}
J e a n B e r s t e l 1 8 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
L e s c o n s t r u c t e u r s p e u v e n t p r e n d r e u n d e u x i e m e a r g u m e n t o p t i o n -
n e l p o u r d e s m o d e s d e l e c t u r e o u e c r i t u r e q u e s o n t
c l a s s i o s { . . .
p u b l i c :
e n u m o p e n _ m o d e {
i n = 1
o u t = 2
a t e = 4 / / o u v r e a l a f i n
a p p = 0 1 0 / / a p p e n d
t r u n c = 0 2 0 / / t r o n q u e a l o n g u e u r 0
n o c r e a t e = 0 4 0 / / e c h o u e s i f i c h i e r n ' e x i s t e p a s
n o r e p l a c e = 0 1 0 0 / / e c h o u e s i f i c h i e r e x i s t e
} . . .
}
O n p e u t a l o r s e c r i r e :
o f s t r e a m f i c h i e r ( n o m , i o s : : o u t | i o s : : n o c r e a t e )
J e a n B e r s t e l 1 8 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
1 3
P A T R O N S
1 . F o n c t i o n s g e n e r i q u e s
2 . C l a s s e s g e n e r i q u e s
J e a n B e r s t e l 1 8 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
F o n c t i o n s g e n e r i q u e s
U n e f o n c t i o n g e n e r i q u e o u m o d e l e d e f o n c t i o n , e s t u n e f o n c t i o n
d a n s l a q u e l l e l e t y p e d e c e r t a i n s a r g u m e n t s e s t p a r a m e t r e .
L a s y n t a x e l a p l u s s i m p l e e s t
t e m p l a t e < c l a s s p a r a m e t r e > d e n i t i o n d e f o n c t i o n
E x e m p l e :
t e m p l a t e < c l a s s T >
T m a x ( T a , T b ) { r e t u r n ( a > b ) ? a : b }
O n p e u t a l o r s e c r i r e
i n t i = m a x ( 3 4 , 4 5 )
d o u b l e d = m a x ( 4 . 5 , 3 . 4 )
J e a n B e r s t e l 1 8 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
N o t e s :
1 . L e c o m p i l a t e u r n ' e n g e n d r e l e c o d e d ' u n e f o n c t i o n a v e c d e s a r -
g u m e n t s d e t y p e d o n n e q u e l o r s q u ' i l y a u n a p p e l d e c e t t e
f o n c t i o n . P o t e n t i e l l e m e n t , l e n o m b r e d e f o n c t i o n s d e n i e s p a r
u n p a t r o n e s t i l l i m i t e .
2 . D a n s l a d e n i t i o n d ' u n p a t r o n , l e m o t - c l e c l a s s n ' a p a s s a
s i g n i c a t i o n h a b i t u e l l e : i l i n d i q u e q u ' u n p a r a m e t r e d e t y p e v a
s u i v r e .
3 . L e c o m p i l a t e u r n e f a i t p a s l e s c o n v e r s i o n s s t a n d a r d . A i n s i , o n
n e p e u t p a s e c r i r e a v e c l e p a t r o n c i - d e s s u s :
c h a r c
i n t i , j
. . .
j = m a x ( i , c )
I l y a d e s p a t r o n s a p l u s i e u r s p a r a m e t r e s :
t e m p l a t e < c l a s s T , c l a s s U >
T m a x ( T a , U b ) { r e t u r n ( a > b ) ? a : b }
o u p i r e
t e m p l a t e < c l a s s T , c l a s s U , c l a s s R >
R m a x ( T a , U b ) { r e t u r n ( a > b ) ? a : b }
q u i e q u i v a u t p r e s q u e a u
# d e f i n e m a x ( a , b ) ( a > b ) ? a : b
J e a n B e r s t e l 1 9 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
C l a s s e s g e n e r i q u e s
L e s c l a s s e s g e n e r i q u e s o u p a t r o n s o u m o d e l e s d e c l a s s e s p e r m e t -
t e n t d e d e n i r d e s c l a s s e s p a r a m e t r e e s p a r u n t y p e o u p a r u n e a u t r e
c l a s s e . C e c i p e r m e t d ' o b t e n i r u n e c e r t a i n e g e n e r i c i t e e t e s t d o n c
t r e s u t i l e p o u r l e s s t r u c t u r e s d e d o n n e e s .
P a r e x e m p l e , u n e p i l e d ' e n t i e r s n e d i e r e d ' u n e p i l e d e c a r a c t e r e s
q u e p a r l e t y p e d e s e s e l e m e n t s . S i l ' o n d i s p o s e d ' u n e p i l e p a r a m e -
t r a b l e , o n p e u t e c r i r e :
m a i n ( )
{
. . .
P i l e < i n t > S
P i l e < c h a r > O p
. . .
c h a r o p = O p . p o p ( )
S . p u s h ( x * y )
. . .
}
V o i c i u n p r o g r a m m e r u d i m e n t a i r e d ' e v a l u a t i o n d ' e x p r e s s i o n s
a r i t h m e t i q u e s c o m p l e t e m e n t p a r e n t h e s e e s . I l u t i l i s e u n e p i l e
d ' o p e r a n d e s e t u n e p i l e d ' o p e r a t e u r s . ( O b s e r v e r q u e l e s p a r e n -
t h e s e s o u v r a n t e s s o n t i n u t i l e s . )
J e a n B e r s t e l 1 9 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
v o i d m a i n ( ) {
c h a r c
P i l e < i n t > S
P i l e < c h a r > O p
w h i l e ( c i n . g e t ( c ) ) {
i f ( c = = ' \ n ' ) b r e a k
s w i t c h ( c ) {
c a s e ' ( ' : b r e a k
c a s e ' + ' :
c a s e ' * ' :
O p . p u s h ( c )
b r e a k
c a s e ' ) ' :
i n t x = S . p o p ( )
i n t y = S . p o p ( )
s w i t c h ( c h a r o p = O p . p o p ( ) ) {
c a s e ' + ' : S . p u s h ( x + y ) b r e a k
c a s e ' * ' : S . p u s h ( x * y )
}
b r e a k
d e f a u l t :
i f ( ( ' 0 ' < = c ) & & ( c < = ' 9 ' ) )
S . p u s h ( c - ' 0 ' )
}
}
c o u t < < S . p o p ( )
}
J e a n B e r s t e l 1 9 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
D e n i t i o n
U n e c l a s s e g e n e r i q u e o u m o d e l e o u p a t r o n , e n a n g l a i s t e m p l a t e
e s t u n e c l a s s e p a r a m e t r e e p a r u n t y p e o u u n e c l a s s e . L a s y n t a x e
e s t i l l u s t r e e s u r l ' e x e m p l e
t e m p l a t e < c l a s s T > c l a s s P i l e {
p r i v a t e :
T p 1 0 ]
i n t s p
p u b l i c
P i l e ( ) { s p = 0 }
v o i d p u s h ( T x ) { p s p + + ] = x }
T p o p ( v o i d ) { r e t u r n p - - s p ] }
}
O n r e m a r q u e
U n n o u v e a u m o t - c l e t e m p l a t e
L e p a r a m e t r e e s t e n t r e c h e v r o n s
D e n i t i o n d e c l a s s e c o n c r e t e p a r s p e c i c a t i o n d ' u n t y p e .
P i l e < i n t > S
o u f r e q u e m m e n t
t y p e d e f P i l e < i n t > P i l e E n t i e r s
P i l e E n t i e r s S
J e a n B e r s t e l 1 9 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
D ' a u t r e s p a r a m e t r e s p e u v e n t i n t e r v e n i r :
t e m p l a t e < c l a s s T , i n t M a x >
c l a s s P i l e {
p r i v a t e :
T p 1 + M a x ]
i n t s p
i n t m a x i m u m
p u b l i c
P i l e ( ) : m a x i m u m ( M a x ) , s p ( 0 ) { }
v o i d p u s h ( T x ) { p s p + + ] = x }
T p o p ( v o i d ) { r e t u r n p - - s p ] }
i n t I s F u l l ( v o i d ) { r e t u r n s p = = m a x i m u m }
}
S i l ' o n s e p a r e l e s d e c l a r a t i o n s d e s d e n i t i o n s , i l c o n v i e n t d e r e p e t e r
l e m o t - c l e t e m p l a t e a c h a q u e d e n i t i o n .
J e a n B e r s t e l 1 9 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
I n s t a n c i a t i o n e t s p e c i a l i s a t i o n . S o i t
t e m p l a t e < c l a s s T , c l a s s U , i n t N >
c l a s s P a t r o n {
/ / . . .
}
L a d e n i t i o n d ' u n c o n s t r u c t e u r s ' e c r i t , e n d e h o r s d e l a d e c l a r a t i o n :
t e m p l a t e < c l a s s T , c l a s s U , i n t N >
P a t r o n < T , U , N > : : P a t r o n ( ) { . . . }
O n i n s t a n c i e l e p a t r o n e n d o n n a n t d e s t y p e s \ c o n c r e t s " :
c l a s s P a t r o n < i n t , f l o a t , 5 > C 1
c l a s s P a t r o n < P o i n t , i n t , 1 0 0 > C 2
s i P o i n t e s t u n e c l a s s e . O n p e u t s u b s t i t u e r a u n p a r a m e t r e u n
a u t r e p a t r o n .
O n s p e c i a l i s e e s t r e d e n i s s a n t u n e p a r t i e d e l a c l a s s e . P a r e x e m p l e ,
p o u r u n p a t r o n
t e m p l a t e < c l a s s T >
c l a s s P o i n t {
/ / . . .
}
o n p r e c i s e l a d e n i t i o n d a n s l e c a s d e s c a r a c t e r e s
c l a s s P o i n t < c h a r > {
/ / r e d e f i n i t i o n o u e x t e n s i o n
}
J e a n B e r s t e l 1 9 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
U n e p i l e g e n e r i q u e
V o i c i u n e p i l e g e n e r i q u e , i m p l e m e n t e e a l ' a i d e d ' u n e l i s t e c h a ^ n e e .
t e m p l a t e < c l a s s A r g >
c l a s s P i l e {
p u b l i c :
P i l e ( ) { p = N U L L }
v o i d p u s h ( A r g x ) { p = n e w C e l l u l e ( x , p ) }
A r g t o p ( ) { r e t u r n p - > c o n t }
A r g p o p ( )
p r i v a t e :
s t r u c t C e l l u l e {
C e l l u l e * s u i v
A r g c o n t
C e l l u l e ( A r g c , C e l l u l e * s ) : c o n t ( c ) , s u i v ( s ) { }
}
C e l l u l e * p
}
J e a n B e r s t e l 1 9 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
P o u r l a m e t h o d e p o p ( ) , o n d o i t r e p e t e r l ' e n - t ^ e t e c o m p l e t :
t e m p l a t e < c l a s s A r g >
A r g P i l e < A r g > : : p o p ( ) {
C e l l u l e * q = p
A r g c = q - > c o n t
p = p - > s u i v
d e l e t e q
r e t u r n c
}
C e t t e m e t h o d e r e a l i s e l a s u p p r e s s i o n e x p l i c i t e d e l a c e l l u l e , m a i s
b i e n e n t e n d u p a s d e l ' a r g u m e n t .
J e a n B e r s t e l 1 9 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
1 4
S t a n d a r d T e m p l a t e L i b r a r y
1 . O b j e c t i f s
2 . E x e m p l e s
3 . M e t h o d e s c o m m u n e s
J e a n B e r s t e l 1 9 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
O b j e c t i f s
L a b i b l i o t h e q u e g e n e r i q u e s t a n d a r d o u S T L f o u r n i t u n e n s e m b l e
d e s t r u c t u r e s d e d o n n e e s e t d ' a l g o r i t h m e s g e n e r i q u e s . L a s y n t a x e
l a p l u s s i m p l e e s t
A s p e c t s p r i n c i p a u x
S T L e s t u n e n o r m e A N S I ( j u i l l e t 1 9 9 4 ) .
S T L e s t e c a c e , e n e v i t a n t l ' h e r i t a g e e t l e s f o n c t i o n s v i r t u e l l e s .
S T L o r e 1 0 f a m i l l e s d e \ c o n t e n e u r s " : v e c t o r , d e q u e ,
l i s t , m u l t i s e t , s e t , m u l t i m a p , m a p , s t a c k , q u e u e ,
p r i o r i t y _ q u e u e
S T L u t i l i s e d e s i t e r a t e u r s q u i s o n t u n e e x t e n s i o n d e s p o i n -
t e u r s . U n p o i n t e u r p e u t a c c e d e r a u x d o n n e e s , e t p a r c o u r i r u n
c o n t e n e u r .
S T L f o u r n i t 7 0 a l g o r i t h m e s . U n a l g o r i t h m e n ' e s t p a s u n e f o n c -
t i o n m e m b r e . I l o p e r e s u r l e s c o n t e n e u r s p a r i t e r a t e u r s .
S T L c o n n a ^ t l e s o b j e t s f o n c t i o n s . C e s o b j e t s e n c a p s u l e n t d e s
f o n c t i o n s .
S T L i n t r o d u i t u n m e c a n i s m e s p e c i q u e d e g e s t i o n d e m e m o i r e
p a r a l l o c a t e u r s q u i s e s u p e r p o s e n t a n e w e t d e l e t e
J e a n B e r s t e l 1 9 9 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
E x e m p l e s
U t i l i s a t i o n d ' u n v e c t e u r
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < v e c t o r . h >
m a i n ( ) {
v e c t o r < i n t > v / / v e c t e u r d ' e n t i e r s v i d e
f o r ( i n t i = 0 i < 1 0 i + + )
v . p u s h _ b a c k ( i * i ) / / a l a f i n
i n t k
c o u t < < " U n e n t i e r : "
c i n > > k
c o u t < < " v " < < k < < " ] = " < < v k ] < < e n d l
c o u t < < " T a i l l e d e v " < < v . s i z e ( ) < < e n d l
}
R e s u l t a t :
U n e n t i e r : 7
v 7 ] = 4 9
T a i l l e d e v 1 0
J e a n B e r s t e l 2 0 0 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
U t i l i s a t i o n d ' u n i t e r a t e u r
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < v e c t o r . h >
m a i n ( ) {
v e c t o r < i n t > v / / v e c t e u r d ' e n t i e r s v i d e
f o r ( i n t i = 0 i < 1 0 i + + )
v . p u s h _ b a c k ( i * i )
v e c t o r < i n t > : : i t e r a t o r i
f o r ( i = v . b e g i n ( ) i ! = v . e n d ( ) i + + )
c o u t < < * i < < ' '
c o u t < < e n d l
}
R e s u l t a t :
0 1 4 9 1 6 2 5 3 6 4 9 6 4 8 1
L a l i g n e
v e c t o r < i n t > : : i t e r a t o r i
d e n i t u n i t e r a t e u r d a n s l a c l a s s e d e s v e c t e u r s d ' e n t i e r s .
L e s f o n c t i o n s v . b e g i n ( ) e t v . e n d ( ) r e t o u r n e n t r e s p e c t i v e m e n t
l a p r e m i e r e \ p o s i t i o n " e t l a p o s i t i o n a p r e s l a d e r n i e r e d a n s v
L ' e c r i t u r e * i a c c e d e a l ' e l e m e n t e n p o s i t i o n i
J e a n B e r s t e l 2 0 1 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
U t i l i s a t i o n d ' u n e n s e m b l e o r d o n n e
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < s e t . h >
m a i n ( ) {
t y p e d e f s e t < i n t , l e s s < i n t > > E n s O r d
E n s O r d s
f o r ( i n t j = 6 j > = 0 j - - )
s . i n s e r t ( j * j )
f o r ( i n t j = 6 j > = 0 j - - )
s . i n s e r t ( j * j * j )
E n s O r d : : i t e r a t o r i
f o r ( i = s . b e g i n ( ) i ! = s . e n d ( ) i + + )
c o u t < < * i < < ' '
c o u t < < e n d l
}
R e s u l t a t :
0 1 4 8 9 1 6 2 5 2 7 3 6 6 4 1 2 5 2 1 6
I l e s t u t i l e d ' i n t r o d u i r e d e s t y p e d e f
N o t e r q u e l e p a r c o u r s d ' u n e n s e m b l e o r d o n n e f o u r n i t l e s e l e m e n t s
d a n s l ' o r d r e e t s a n s r e p e t i t i o n .
l e s s < i n t > e s t u n e c l a s s e q u i f o u r n i t u n c o m p a r a t e u r d ' e n t i e r s .
J e a n B e r s t e l 2 0 2 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
U t i l i s a t i o n d ' u n a l g o r i t h m e
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < v e c t o r . h >
# i n c l u d e < a l g o r i t h m >
m a i n ( ) {
v e c t o r < i n t > v
f o r ( i n t j = 6 j > = 0 j - - )
v . p u s h _ b a c k ( j * j )
f o r ( i n t j = 6 j > = 0 j - - )
v . p u s h _ b a c k ( j * j * j )
f o r ( i n t j = 0 j < 1 4 j + + )
c o u t < < v j ] < < ' '
c o u t < < e n d l
s o r t ( v . b e g i n ( ) , v . e n d ( ) ) / / t r i
v e c t o r < i n t > : : i t e r a t o r i
f o r ( i = v . b e g i n ( ) i ! = v . e n d ( ) i + + )
c o u t < < * i < < ' '
c o u t < < e n d l
}
R e s u l t a t :
3 6 2 5 1 6 9 4 1 0 2 1 6 1 2 5 6 4 2 7 8 1 0
0 0 1 1 4 8 9 1 6 2 5 2 7 3 6 6 4 1 2 5 2 1 6
J e a n B e r s t e l 2 0 3 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
C o n t e n e u r s
T r o i s c a t e g o r i e s d e c o n t e n e u r s
s e q u e n t i e l s : a c c e s l i n e a i r e
a s s o c i a t i f s : a c c e s p a r c l e s
a d a p t a t e u r s : a c c e s r e g l e m e n t e
L ' e n s e m b l e d e s c o n t e n e u r s e s t p a r t a g e e n
F i r s t c l a s s c o l l e c t i o n
{ s e q u e n t i e l s
v e c t o r t a b l e a u x
d e q u e l e b i l a t e r e
l i s t l i s t e d o u b l e m e n t c h a ^ n e e
{ a s s o c i a t i f s
s e t e n s e m b l e s a n s r e p e t i t i o n
m u l t i s e t e n s e m b l e a v e c r e p e t i t i o n
m a p e n s e m b l e s a n s r e p e t i t i o n d e c o u p l e s ( c l e , v a l e u r )
m u l t i m a p e n s e m b l e a v e c r e p e t i t i o n d e c o u p l e s ( c l e ,
v a l e u r )
A d a p t a t e u r s
{ s t a c k p i l e
{ q u e u e l e
{ p r i o r i t y q u e u e l e d e p r i o r i t e
J e a n B e r s t e l 2 0 4 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
Q u e l q u e s e x i g e n c e s
U n e c l a s s e c o n c r e t e d o n t l e s i n s t a n c e s s o n t s t o c k e e s d a n s u n c o n -
t e n e u r S T L d o i t p o s s e d e r
u n c o n s t r u c t e u r p a r d e f a u t ,
u n c o n s t r u c t e u r d e c o p i e ,
u n o p e r a t e u r d ' a e c t a t i o n ( o p e r a t o r = ) .
S i l ' o n s e s e r t d e c o m p a r a i s o n , e l l e d o i t p o s s e d e r
u n o p e r a t e u r d e c o m p a r a i s o n ( o p e r a t o r < )
u n o p e r a t e u r d e t e s t d ' e g a l i t e , e t d e d i e r e n c e ( o p e r a t o r = = )
J e a n B e r s t e l 2 0 5 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
M e t h o d e s c o m m u n e s
T o u t e c o l l e c t i o n S T L p o s s e d e 1 0 m e t h o d e s , d e m ^ e m e n o m d a n s
c h a q u e c o l l e c t i o n , e t d u m ^ e m e e e t . C e s o n t
C o n s t r u c t e u r p a r d e f a u t c o m m e v e c t o r ( )
C o n s t r u c t e u r d e c o p i e c o m m e v e c t o r ( )
D e s t r u c t e u r c o m m e ~ v e c t o r ( )
e m p t y ( ) v r a i s i v i d e
s i z e ( ) t a i l l e a c t u e l l e
m a x s i z e t a i l l e m a x i m a l e
= o p e r a t o r = ( ) d ' a e c t a t i o n
= = t e s t d ' e g a l i t e
< c o m p a r a t e u r
s w a p e c h a n g e d e c o n t e n u
J e a n B e r s t e l 2 0 6 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-v
E x e m p l e :
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < v e c t o r . h >
m a i n ( ) {
v e c t o r < i n t > v / / v e c t e u r d ' e n t i e r s v i d e
c o u t < < " V i d e = " < < v . e m p t y ( ) < < e n d l
c o u t < < " T a i l l e d e v = " < < v . s i z e ( ) < < e n d l
c o u t < < " T a i l l e m a x i m a l e = " < < v . m a x _ s i z e ( ) < < e n
v . p u s h _ b a c k ( 4 2 )
c o u t < < " T a i l l e d e v = " < < v . s i z e ( ) < < e n d l
c o u t < < " v " < < 0 < < " ] = " < < v 0 ] < < e n d l
}
R e s u l t a t :
V i d e = 1
T a i l l e d e v = 0
T a i l l e m a x i m a l e = 1 0 7 3 7 4 1 8 2 3
T a i l l e d e v = 1
v 0 ] = 4 2
J e a n B e r s t e l 2 0 7 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E x e m p l e :
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < v e c t o r . h >
v o i d p r i n t ( c h a r * n o m , v e c t o r < d o u b l e > & w ) {
c o u t < < n o m < < " = "
f o r ( i n t i = 0 i < w . s i z e ( ) i + + )
c o u t < < w i ] < < ' '
c o u t < < e n d l
}
m a i n ( ) {
v e c t o r < d o u b l e > v , z
v . p u s h _ b a c k ( 3 2 . 1 ) v . p u s h _ b a c k ( 4 0 . 5 )
p r i n t ( " v " , v )
z . p u s h _ b a c k ( 9 8 . 7 ) p r i n t ( " z " , z )
z . s w a p ( v ) / / e c h a n g e d e c o n t e n u s
p r i n t ( " v " , v ) p r i n t ( " z " , z )
v = z / / t r a n s f e r t
p r i n t ( " v " , v )
}
R e s u l t a t :
v = 3 2 . 1 4 0 . 5
z = 9 8 . 7
v = 9 8 . 7
z = 3 2 . 1 4 0 . 5
v = 3 2 . 1 4 0 . 5
J e a n B e r s t e l 2 0 8 U n i v e r s i t e M a r n e - l a - V a l l e e
5/17/2018 Program Mat Ion Objet C-C++ [eBook, French, Computers, Programming Langage...
http://slidepdf.com/reader/full/program-mat-ion-objet-c-c-ebook-french-computers-programming-langage-
E x e m p l e :
# i n c l u d e < i o s t r e a m . h >
# i n c l u d e < v e c t o r . h >
t e m p l a t e < c l a s s T >
v o i d p r i n t ( c h a r * n o m , v e c t o r < T > & w ) {
c o u t < < n o m < < " = "
f o r ( i n t i = 0 i < w . s i z e ( ) i + + )
c o u t < < w i ] < < ' '
c o u t < < e n d l
}
m a i n ( ) {
v e c t o r < c h a r > v
v . p u s h _ b a c k ( ' h ' ) v . p u s h _ b a c k ( ' i ' )
p r i n t ( " v " , v )
v e c t o r < c h a r > z ( v ) / / c o p i e
z 1 ] = ' o '
p r i n t ( " z " , z )
c o u t < < " ( v = = z ) = " < < ( v = = z ) < < e n d l
c o u t < < " ( v < z ) = " < < ( v < z ) < < e n d l
}
R e s u l t a t :
v = h i
z = h o
( v = = z ) = 0
( v < z ) = 1