软件工程概述及设计模式ppt课件.ppt
《软件工程概述及设计模式ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程概述及设计模式ppt课件.ppt(112页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用目录1OO概述概述4常用设计模式常用设计模式3OO六大原则六大原则2面向接口编程面向接口编程经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述面向对象分析面向对象分析(OOA)做什么?做什么?从问题域中获取需要的类和对象,以及它们之间的关系。从问题域中获取需要的类和对象,以及它们之间的关系。面向对象设计面向对象设计(OOD)怎么做?怎么做?面向对象编程面向对象编程(OOP
2、)Do it经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述老张开车去东北。老张开车去东北。请用请用OO思想进行分析思想进行分析(OOA)和设计和设计(OOD),体现体现OO三大特性三大特性封装类封装类(名词名词):经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述老张开车去东北。老张开车去东北。请用请用OO思想进行分析思想进行分析(OOA)和设计和设计(OOD)。封装类封装类(名词名词):经营者提供商
3、品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述老张开车去东北。老张开车去东北。封装封装创建成员方法。创建成员方法。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述老张开车去东北。老张开车去东北。获取属性,完善成员方法。获取属性,完善成员方法。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述老张开车去东北。老张开车去
4、东北。封装:作用?隐藏信息,降低类间耦合性。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述老张开车去东北。老张开车去东北。初始设计初始设计经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述publicclassDriverprivateStringdriverName;publicStringgetName()returndriverName;publicvoiddrive(Carcar)car.go
5、(newAddress(东北);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述publicclassCarpublicvoidgo(Addressdest)System.out.println(一路哼着歌,冒着烟,去了+dest.getName();经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述publicclassAddressprivateStringaddressName;publicStr
6、inggetName()returnaddressName;publicvoidsetName(Stringname)addressName=name;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述老张开车去东北。老张开车去东北。设计优化:继承和多态设计优化:继承和多态在某个粒度视图层面上对同类事物不加区别的对待而统一处理经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述publicclassDriv
7、erprivateStringdriverName;publicStringgetName()returndriverName;publicvoidsetName(Stringname)driverName=name;/Viheclevihecle=newCar();publicvoiddrive(Viheclevihecle)vihecle.go(newAddress(东北);经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述publicabstractclassViheclepublicabst
8、ractvoidgo(Addressdest);publicclassCarextendsViheclepublicvoidgo(Addressdest)System.out.println(一路哼着歌,冒着烟,去了+dest.getName();publicclassPlaneextendsViheclepublicvoidgo(Addressdest)System.out.println(“一路驾着云彩去了+dest.getName();经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述publ
9、icclassAddressprivateStringaddressName;publicAddress(Stringname)addressName=name;publicStringgetName()returnaddressName;publicvoidsetName(Stringname)addressName=name;经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述publicclassClientpublicstaticvoidmain(Stringargs)Driverd=newD
10、river();d.setName(老张);/d.drive(newPlane();d.drive(newCar();有什么缺陷?经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用1 OO概述概述持续优化:添加而不修改,系统扩展性强!持续优化:添加而不修改,系统扩展性强!重载重载经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2 面向接口编程面向接口编程面试题面试题:1.抽象类可以有构造方法抽象类可以有构造方法,接口不可以接口不可以.
11、2.抽象类中可以有普通成员变量抽象类中可以有普通成员变量,普通方法普通方法.接口不可以接口不可以.3.抽象类中的抽象方法的访问类型不能是抽象类中的抽象方法的访问类型不能是private访问类型访问类型,但接但接口的抽象方法只能是口的抽象方法只能是public.4.抽象类可以包含静态方法抽象类可以包含静态方法,但接口不可以但接口不可以.5.抽象类中静态成员变量的访问类型可以任意抽象类中静态成员变量的访问类型可以任意.但接口只能是但接口只能是Public(static)final类型类型.6.一个类可以实现多个接口一个类可以实现多个接口,但只能继承一个抽象类但只能继承一个抽象类.1 abstrac
12、t class和和interface有什么区别有什么区别?经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2 面向接口编程面向接口编程设计层面:设计层面:抽象类是某种抽象事物抽象类是某种抽象事物(is a)。接口是一组行为规范接口是一组行为规范(like a)。接口体现了接口体现了“如果你是如果你是则必须能则必须能”的理念的理念语法层面:语法层面:抽象类体现单继承关系;抽象类体现单继承关系;接口可实现多继承。接口可实现多继承。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的
13、金额为消费者购买商品的价款或接受服务的费用2 面向接口编程面向接口编程经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2 面向接口编程面向接口编程面试题(扩展题)面试题(扩展题):2.1接口是否可以继承接口接口是否可以继承接口?2.2接口是否可以继承抽象类?接口是否可以继承抽象类?2.3抽象类是否可以实现接口抽象类是否可以实现接口?2.4抽象类是否可以继承具体类抽象类是否可以继承具体类?2.5抽象类中是否可以有静态的抽象类中是否可以有静态的main方法方法?抽象类与普通类的唯一区别就是不能创建实例对象和允许有抽象
14、类与普通类的唯一区别就是不能创建实例对象和允许有abstrct方法方法!经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2 面向接口编程面向接口编程面向接口编程:面向接口编程:在系统分析和架构中,分清层次和依赖关系,下层不是直接向在系统分析和架构中,分清层次和依赖关系,下层不是直接向其上层提供服务:即不是直接实例化在上层中,而是通过定义其上层提供服务:即不是直接实例化在上层中,而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具
15、体类。口依赖,而不依赖具体类。系统层次间协作关系是系统设计的关键,小到不同类之间的通信,大到各模块之间的交互。本质:面向抽象编程,定义与实现的分离面向抽象编程,定义与实现的分离。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用2.1.1 设计模式四人帮设计模式四人帮GoF(“四人帮四人帮”,又称,又称GangofFour,即,即ErichGamma,RichardHelm,RalphJohnson&JohnVlissides四人)的四人)的设计模式设计模式,原名,原名DesignPatterns:Elements
16、ofReusableObject-OrientedSoftware,第一次将设计模式提升到理论,第一次将设计模式提升到理论高度,并将之规范化。该书提出了高度,并将之规范化。该书提出了23种基本设计模式。种基本设计模式。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.8 六大原则总览六大原则总览经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.1 单一职责原则单一职责原则(SRP)单一职责原则(SingleResponsibil
17、ityPrinciple)定义:应该有且仅有一个原因引起类的变更。通俗言之:一个类只负责一个职责一个类只负责一个职责。单一职责原则:实现高内聚、低耦合的指导方针。问题由来:问题由来:类T负责两个不同的职责:职责P1,职责P2。则职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。总结:总结:接口一定要做到单一职责,类的设计尽量做到一个原因引起变化就行。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.2 接口隔离原则接口隔离原则(ISP)接口隔离原则(InterfaceSegr
18、egationPrinciple)定义:1、客户端不应该依赖它不需要的接口。、客户端不应该依赖它不需要的接口。2、类间的依赖关系应该建立在最小的接口上。、类间的依赖关系应该建立在最小的接口上。通俗言之:不要建立臃肿庞大的接口不要建立臃肿庞大的接口。与单一原则的区别与单一原则的区别单一职责要求的是类和接口单一,注重的是职责,这是业务逻单一职责要求的是类和接口单一,注重的是职责,这是业务逻辑上的划分。而接口隔离原则要求接口的方法尽量少。辑上的划分。而接口隔离原则要求接口的方法尽量少。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或
19、接受服务的费用3.2 接口隔离原则接口隔离原则(ISP)Eg:设计门的类设计门的类abstract Doorabstract void Open();abstract void Close();经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.2 接口隔离原则接口隔离原则(ISP)新需求:新需求:需要门具有报警功能。需要门具有报警功能。解决方案一:在抽象类解决方案一:在抽象类(或接口或接口)Door添加添加alarm方法。方法。abstract Doorabstract void Open();abstract
20、 void Close();abstract void Alarm();经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.2 接口隔离原则接口隔离原则(ISP)问题?问题?违背违背ISP(接口隔离原则接口隔离原则),Alarm方法对于依赖方法对于依赖Door的模块是的模块是多余的。多余的。修改方案:修改方案:1)abstact Door保留保留Open()、Close(),Alarm由子类扩展。由子类扩展。2)拆分成拆分成interface Door和和interface Alarm接口。接口。3)拆分成拆分成
21、abstact Door和和interface Alarm。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.2 接口隔离原则接口隔离原则(ISP)abstract Doorabstract void Open();abstract void Close();Interface Alarmablevoid Alarm();class AlarmDoor extends Door implents Alarmable经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费
22、者购买商品的价款或接受服务的费用3.3 里氏替换原则里氏替换原则(LSP)里氏替换原则(LiskovSubstitutionPrinciple)定义:所有引用基类的地方必须能透明地使用其子类的对象。通俗言之:任何父类出现的地方,子类一定可以出现。任何父类出现的地方,子类一定可以出现。在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。总结:子类可以扩展父类的功能,但不能改变父类原有的功能子类可以扩展父类的功能,但不能改变父类原有的功能经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接
23、受服务的费用3.4 依赖倒置原则依赖倒置原则(DIP)依赖倒置原则(DependenceInversionPrinciple)定义:1、高层模块不应该依赖低层模块,两者都应该依赖于抽象(抽、高层模块不应该依赖低层模块,两者都应该依赖于抽象(抽象类或接口)。象类或接口)。2、抽象(抽象类或接口)不应该依赖于细节(具体实现类)。、抽象(抽象类或接口)不应该依赖于细节(具体实现类)。3、细节(具体实现类)应该依赖抽象。、细节(具体实现类)应该依赖抽象。通俗言之:依赖抽象,不依赖实现。依赖抽象,不依赖实现。总结:面向接口编程面向接口编程经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其
24、受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.5 开闭原则开闭原则(OCP)开闭原则(OpenClosePrinciple)定义:一个软件实体如类、模块和函数,应该对扩展开放,对修改关一个软件实体如类、模块和函数,应该对扩展开放,对修改关闭。闭。通俗言之:一个好的系统是在不修改已有源代码的情况下,可以扩展功能。实现开闭原则的关键就是抽象化是抽象化。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.5 开闭原则开闭原则(OCP)在开-闭原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体
25、的实现类,抽象类和接口在开-闭原则中扮演着极其重要的角色。模板方法模式和观察者模式都是开闭原则的极好体现。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用3.6 合成复用原则合成复用原则(CRP)合成复用原则合成复用原则(CompositeReusePrinciple,CARP):要:要优先优先使用对使用对象组合象组合(聚合)(聚合)通俗言之:要尽量使用合成/聚合,尽量不要使用继承。继承复用:从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性;破坏封装性,把父类实现细节直接暴露给子类(白箱复用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 概述 设计 模式 ppt 课件
限制150内