program mat ion objet c-c++ [ebook, french, computers, programming langage, verified by ghost]

209

Upload: adil-el-kimya

Post on 20-Jul-2015

23 views

Category:

Documents


1 download

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

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  

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  

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

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-

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-

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 

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  

k  = 0 

a v e c   B 

= 1 ,  B 

=  ;  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  

n  ;  1 

=  ; 

1

n  ;  2 

k  = 0 

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-

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

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

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

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  

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 )  

}  

v t b l  

 t 

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  

}  

v t b l  

 t 

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