- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六讲-电子科技大学.ppt
电子科技大学精品资源共享课 电子科技大学精品资源共享课 第七讲 面向对象系统设计 主讲人:钟毅 讲师 第四单元? 面向对象设计原则 * 主要内容 1. 单一职责原则 2. 开放-封闭原则 3. Liskov替换原则 4. 依赖倒置原则 1. 单一职责原则 描述 对于一个类而言,应该仅有一个引起它变化的原因; 一个类的功能要单一,只做与它相关的事情。 * 示例 一个描述Modem的接口 interface Modem { public void dial(string pno); public void hangup(); public void send(char c); public void recv(); } 1. 单一职责原则 * interface DataChannel { public void send(char c); public void recv(); } interface Connection { public void dial(string pno); public void hangup(); } 2. 开放-封闭原则 描述 软件实体(类、模块、函数等)应该是可以扩展的,但是不可以修改的; 要在软件实体本身不变动的情况下,通过改变其周围的环境来达到修改的目的: 对于扩展是开放的 对于更改是封闭的 * 2. 开放-封闭原则 示例 一个对图形面积进行计算的类 * 2. 开放-封闭原则 * 将所有图形的共性抽取出来,将图形类设计成一个抽象类,定义一个抽象方法getArea 具体的圆、矩形等图形类继承于图形类,并分别实现getArea方法,从而实现计算各自面积 修改后的图形类设计 3. Liskov替换原则 描述 继承类型必须能够替换掉它们的基类型; 任何能用基类的地方都应该可以无差别的使用其继承类替换。 * 3. Liskov替换原则 示例 长方形类和正方形类的应用 * 3. Liskov替换原则 * 调整后的设计 void resize(Rectangle r) { While(r.getHeigth = r.getWidth) { r.setWidth(r.getWidth+1); } } 4. 依赖倒置原则 描述 高层模块不应该依赖于底层模块,二者都应该依赖于抽象; 抽象不应该依赖于细节,细节应该依赖于抽象。 * 4. 依赖倒置原则 示例 ToggleSwitch(开关)类与BulbLight类 * 4. 依赖倒置原则 * 修改后的设计 4. 依赖倒置原则 * 针对实现编程: Dog d = new Dog(); d.bark(); 针对接口/超类型编程: Animal animal = new Dog(); animal.makeSound(); 更进一步: Animal animal = getAnimal(); animal.makeSound(); 我们不知道实际的子类型是“什么”,我们只关心它知道如何正确地进行makeSound()的动作就够了。 针对接口编程示例 * * 电子科技大学精品资源共享课 电子科技大学精品资源共享课 * *
文档评论(0)