- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2016/11/13 五大原则之里氏替换原则 (LSP) - pj h123 - 博客园
五大原则之里氏替换原则 (LSP )
阐述:子类型 (subtype)必须能够替换掉它们的基类型 (basetype)
先提出一个问题:正方形是不是一种特殊的长方形 (IS - A关系)?
先不要回答这个问题,看下面的分析。
理解:LSP原则的一个例子,假如有个people的基类,两个字类man类和woman类,都继承于people类。那么针对
people类的任何操作,比如fun吃饭、fun睡觉、fun走路,对于man类和woman类都成立。这个很好理解,不管是man
还是woman ,归根结底,还都是一个people。
(一)正常思维
如下例子:
class CShape
{
public :
CShape(void);
~CShape(void);
public :
virtual void Draw ();
};
class CCircle:public CShape
{
public :
CCircle(void);
~CCircle(void);
public :
virtual void Draw ();
};
class CSquare:public CShape
{
public :
CSquare(void);
~CSquare(void);
public :
virtual void Draw ();
};
在使用CShape对象的任何地方,都可以使用CCircle对象或者CSquare对象。
(二)、特殊情况呢?
回到最初的问题,正方形是不是矩形的问题。
/peij ihui/archive/2012/04/07/2436133.html 1/3
2016/11/13 五大原则之里氏替换原则 (LSP) - pj h123 - 博客园
class CRectangle
{
public :
CRectangle(void);
~CRectangle(void);
protected :
int width ;
int height;
};
class CSquare:public CRectangel
{
public :
CSquare(void);
~CSquare(void);
};
假如有个函数
void g(CRectangle * r)
r.width 4;
r.height 5;
if( r.Area() ! 20)
break;
请问,对于函数g来说,能用一个CSquare对象,代替CRectangle对象吗?很明显,不能!
很明显,违反了LSP原则。
那么,正方形到底是不似乎矩形呢?也就是说CSquare和CRectangle之间,是否存在(IS - A)关系呢?
1、从属性方面讲,正方形是矩形,是一种特殊矩形,即width height ;
2、从行为方式将,正方形可能不是矩形。
比如,对于函数g来说,描述了矩形的一种行为方式,很明显,正方形不符合这种行为方式。
OOD中的IS-A关系,是就行为方式而言的,行为方式是可以进行合理假设的。而行为方式,才是我们进行面向对象
软件设计真正所关注的问题。
因此,可以讲,正方形不是一个矩形。
(三)、怎么处理此类问题呢?
1、基于契约进行设计。
每个类设计时,都会有一些假设,每个方法,都有前置条件,后置条件,这些条件都是契约。对这些方法,要注明契
约。
要想从基类派生子类,就必须满足这些契约。如果不满足这些契约,就不能继承出子类。 (即使他们看起来很像,比
/peij ihui/archive/2012/04/07/2436133.html 2/3
您可能关注的文档
最近下载
- 国开电大专科《人文英语1》一平台机考真题(第七套).pdf VIP
- 2025年外研版高中英语选择性必修第二册Unit 6综合检测试卷及答案.pdf VIP
- 合理使用质子泵抑制剂.ppt VIP
- OPC通讯DCOM配置介绍材料.docx VIP
- 组态王通过网络OPC通讯时DCOM配置.doc VIP
- 2025镁伽科技有限公司招股说明书.PDF VIP
- 组态王通过网络OPC通讯时DCOM配置.pdf VIP
- 英语会话三月通.doc VIP
- 部编版小学三年级下册语文教学工作总结.docx VIP
- 2024-2025学年贵州省遵义市新蒲新区人教版六年级上学期期末教学质量检测数学试卷(无答案).docx
原创力文档


文档评论(0)