Programmation Orient´ee Objet
Bertrand Estellon
epartement d’Informatique de Luminy
Aix-Marseille Universit´e
26 avril 2012
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 1 / 379
Java Cours 7
Liskov Substitution Principle (LSP)
Violation de LSP :
p u b l i c v oi d t e s t ( R e c t a n g l e r ) {
r . setWidth ( 2 ) ;
r . s e t H e i g h t ( 3 ) ;
i f ( r . g e t A re a ( ) ! = 3 2 )
System . o ut . p r i n t l n ( b i z a r r e ! ) ;
}
La mauvaise question :
Un carr´e est-il un rectangle ?
La bonne question :
Pour les utilisateurs,
votre carr´e a-t-il le mˆeme comportement que votre rectangle ?
La r´eponse :
Dans ce cas, NON
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 239 / 379
Java Cours 7
Liskov Substitution Principle (LSP)
Une solution :
p u b l i c a b s t r a c t c l a s s RectangularShape {
p u b l i c a b s t r a c t doubl e get Wid th ( ) ;
p u b l i c a b s t r a c t doubl e g e t H e i g h t ( ) ;
p u b l i c d ouble g et A re a ( ) {return g etWi dth ( ) g e t H e i g h t ( ) ; }
}
p u b l i c c l a s s Rectangle exten ds RectangularShape {
p r i v a t e doub le w;
p r i v a t e doub le h ;
p u b l i c v oi d s et W idt h ( d ouble w) {t h i s . w = w ; }
p u b l i c v oi d setHeight(double h ) {t h i s . h = h ; }
p u b l i c d ouble get Width ( ) {return w ; }
p u b l i c d ouble g e t H e i g h t ( ) {return h ; }
}
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 240 / 379
Java Cours 7
Liskov Substitution Principle (LSP)
Suite de la solution :
class Square ext ends RectangularShape {
p r i v a t e doub le s ;
p u b l i c v oi d setSideLength(double s ) {t h i s . s = s ; }
p u b l i c d ouble get Widt h ( ) {return s ; }
p u b l i c d ouble g e t H e i g h t ( ) {return s ; }
}
Utilisation :
p u b l i c v oi d t e s t R e c t a n g l e ( R ec t an g le r ) {
r . s et Wi dt h ( 2 ) ; r . s e t H e i g h t ( 3 ) ;
i f ( r . g et A r e a ( )! = 32 ) System . ou t . p r i n t l n ( j a m a i s ! ” ) ;
}
p u b l i c v oi d t e s t S q u a r e ( S quar e s ) {
s . s e t S i d e L e n g t h ( 2 ) ;
i f ( s . g e t Are a () ! =22 ) System . ou t . p r i n t l n ( j a m a i s ! ” ) ;
}
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 241 / 379
Java Cours 8
Plan du cours
IDiagrammes de classes UML
IPrincipes SOLID :
ISingle Responsibility Principle (SRP)
IOpen/Closed Principle (OCP)
ILiskov Substitution Principle (LSP)
IInterface Segregation Principle (ISP)
IDependency Inversion Principle (DIP)
IPatrons de conception
Bertrand Estellon (DIL – Aix-Marseille) Programmation Orient´ee Objet 26 avril 2012 242 / 379
1 / 42 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

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