《2022年面向对象程序设计复习资料 .docx》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计复习资料 .docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品_精品资料_1. 对象(1) 从概念层面讲,对象是某种拥有责任的抽象.(2) 从规格层面讲,对象是一系列可以被其他对象使用的公共接口.(3) 从语言实现层面讲,对象封装了代码和数据.2. 软件开发中的经典 阶段 :需求、分析、设计、规范、实现、测试、部署、保护.3. 设计 7 原就 :开闭原就、里氏代换原就、依靠倒转原就、合成/聚合复用原就、迪 M 特原就、接口隔离原就、单一职责原就.4. 面对对象的方法学 : UML (统一建模语言)、RUP (统一软件开发过程)、XP (极限编程).开发方法 : Booch 、Coad、OMT 、UML 、 OOSE、Wirfs Brock5. OOA
2、 运用面对对象方法进行 需求分析 .OOD 运用面对对象方法进行 系统设计 .OOP 运用面对对象方法进行 程序设计 .6. OOA 的基本任务 :是运用面对对象的方法,对问题域和系统责任进行分析和懂得,对其中的事物和它们之间的关系产生正确的熟悉,找出描述问题域及系统责任所需的类及 对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系.最终目的 :是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其具体说明.优点 :( 1)加强了对问题域和系统责任的懂得.(2)改进与分析有关的各类人员之间的沟通.( 3)对需求的变化具有较强的适应性.(4)支持软件
3、复用.OOA 的三大策略 是:属性策略、方法策略、对象策略.7( 1) 封装 :是指对象在其操作中隐匿属性.它是一种信息隐匿技术,用户只能观察对象封装界面上的信息,对象的内部实现对用户是隐匿的.封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开.例如 :要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里面是否有足够的钱.而应当询问他们是否可以借你一些钱,他们就会自己翻钱包.以表示圆的一个对象作为封装的例子.圆的操作应能运算出半径、直径、周长和面积.假定挑选储备直径,要拜访直径的程序员都会挑选储备直径属性,而不是通过“猎取直径” 的操作来拜访.假如在软件的后续版
4、本中要储备的是半径,就必需找出系统中直接拜访直径的全部代码,并更正它们,有了封装,就不会有问题.(2) 继承 :可以指定类从父类中猎取一些特性,再添加它自己的特殊特性.继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制.父类中定义了其所 有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类 的属性和操作,也可以对父类中的操作重新定义其实现方法.例如 :在面对对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的子类,也可以说家用电器类是这些类的超类.家用电器类具有的属性OnOffSwitch和electricWire ,具有 turnOn
5、 ()和 turnOff ()操作.因此,假如你知道某物是家用电器, 那么就会立刻知道它具有家用电器类的属性和操作,这种关系就是继承.每个家用电器类的子类都继承了家用电器类的特点.同时,每个子类都增加了自己的属性和操作.( 3) 多态 :是指同一操作作用于不同的对象上可以有不同的说明,并产生不同的执行结果. 例如 :“画”操作,作用在“矩形”对象上,就在屏幕上画一个矩形.作用在“圆” 对象上,就在屏幕上画一个圆.也就是说,相同操作的消息发送给不同对象时,每个对象将依据自可编辑资料 - - - 欢迎下载精品_精品资料_己所属类中定义的这个操作方法去执行,从而产生不同的结果.6. RUP (统一软
6、件开发过程:是一个面对对象且基于网络的程序开发方法论.RUP 似乎一个在线的指导者,它可以为全部方面和层次的程序开发供应指导方针,模版以及事例支持. RUP 是懂得性的软件工程工具,它把开发中面对过程的方面和其他开发的组件整合在一个统一的框架内.RUP 的本质 :(1) RUP 是风险驱动的、基于Use Case 技术的、以架构为中心的、迭代的、可配置的软件开发流程.(2) 我们可以针对RUP 所规定出的流程,进行客户化定制,定制出适合自己组织的有用的软件流程.因此 RUP 是一个流程定义平台,是一个流程框架.7. RUP 中有 9 个核心工作流,分为6 个核心过程工作流 (商业建模、需求、分
7、析和设计、实现、测试、部署工作流)以及3 个核心支持工作流 ( 配置和变更治理 、 工程治理 、环境工作流).尽管6 个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应留意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被拜访.9 个核心工作流在工程中轮番被使用,在每一次迭代中以不同的重点和强度重复.8. RUP 是一个基于 6 个正确开发实践的流程定义产品: ( 1)迭代式开发( 2)需求治理(3) 基于组建的体系架构(4)可视化建模( 5)连续的质量治理( 6)配置治理 .9. 设计模式 : 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计体会的总结. 使
8、用设计模式是为了可重用代码、让代码更简洁被他人懂得、保证代码牢靠性.毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,犹如大厦的一块块砖石一样.分类 :创建型模式、行为型模式、结构型模式、Singleton 模式.可编辑资料 - - - 欢迎下载精品_精品资料_1. 使用简洁工厂模式设计运算器程序/Computer.java public class Computerpublic static void mainString args throws IOExceptionString strA.String strB.String strO.
9、tryBufferedReaderbr=newBufferedReadernew InputStreamReaderSystem.in.System.out.print请输入数据 A: .strA = br.readLine .System.out.print请挑选运算符号 + 、- 、* 、/:.strO= br.readLine.System.out.print请输入数据 B: .strB = br.readLine .String strResult = .Operation oper = null.IFactory operFactory = null.ifstrO.equals+ o
10、perFactory= new AddFactory.ifstrO.equals- operFactory = new SubFactory.oper = operFactory.createOperation.oper.SetNumberADouble.valueOfstrA.doubleValue.oper.SetNumberBDouble.valueOfstrB.doubleValue.strResult = Double.toStringoper.GetResult.System.out.printstrResult.catchException e 优点:简洁工厂模式就是由一个工厂类
11、依据参数来打算创立出哪一种产品类的实例.特的负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模可编辑资料 - - - 欢迎下载精品_精品资料_式.2. 策略模式:商场促销public class Context public Strategy strategy.public Contextchar name throws Exception switchnamecaseA:strategy = new ConcreteStrategyA.break.可编辑资料 - - - 欢迎下载精品_精品资料_caseB:strategy = new ConcreteStrategy
12、B.break.caseC:strategy = new ConcreteStrategyC.break.default :throw new Exception“没有此类输入 ” .public void contextInterface strategy.algorithInterface.public abstract class Strategy public abstract void algorithInterface.public class ConcreteStrategyA extends Strategy public abstract void algorithInter
13、face system.out.println“打折算法 ”.public class ConcreteStrategyB extends Strategy public abstract void algorithInterface system.out.println“满 100 送 60 算法 ”.public class ConcreteStrategyC extends Strategy public abstract void algorithInterface system.out.println“正常收费,不参与活动;”.public class Client public s
14、tatic void mainString args throws Exception Context context.context = new ContextA.context.contextInterface.可编辑资料 - - - 欢迎下载精品_精品资料_ContextStrategy+contextInterface:void+algorithInterface:voidconcreteStrategyAconcreteStrategyBconcreteStrategyC+algorithInterface :void+algorithInterface :void+algorith
15、Interface :void特点 :(1) Strategy 属于设计模式中的对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类,使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.(2) 它供应了一种用多个行为中的一个行为来配置一个类的方法.(3) 它需要使用一个算法的不同变体.(4) 它以防止暴露复杂的、与算法相关的数据结构.( 5)一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式显现.将相关的条件分支移入它们各自的Strategy 类中以代替这些条件语句.3. 装饰模式举 Adapter 中的打桩示例,在Adapter 中有两种类:方形
16、桩、圆形桩,Adapter 模式展现如何综合使用这两个类,在Decorator 模式中,我们是要在打桩时增加一些额外功能,比如:挖坑,在桩上钉木板等,不关怀如何使用两个不相关的类.可编辑资料 - - - 欢迎下载精品_精品资料_public interface Workpublic void insert.public class SquarePeg implements Work public void insertSystem.out.println方形桩插入 .public class Decorator implements WorkprivateWorkwork./额外增加的功能被打
17、包在这个List中private ArrayList others = new ArrayList./在构造器中使用组合new 方式,public DecoratorWork work引入Work对象.this.work=work.others.add挖坑 .others.add钉木板.public void insert newMethod.public void newMethodotherMethod.work.insert.public void otherMethodListIteratorlistIterator=others.listIterator.whilelistItera
18、tor.hasNextSystem.out.printlnStringlistIterator.next + 正在进行 .特点 :动态的给一个对象添加一些额外的职责.就增加功能来说,使用装饰模式相比用生成子类方式达到功能的扩充显得更为敏捷.我们通常可以使用继承来实现功能的拓展,假如这些需要拓展的功能种类很繁多,那么可编辑资料 - - - 欢迎下载精品_精品资料_势必生成许多子类,增加系统的复杂性,同时,使用继承实现功能拓展 , 我们必需可预见这些拓展功能,这些功能是编译时就确定了,是静态的.使用 Decorator 时这些功能需要由用户动态打算加入的方式和时机 . 装饰模式供应了“即插即用”的
19、方法,在运行期间打算何时增加何种功能.Component+Operation:void可编辑资料 - - - 欢迎下载精品_精品资料_ConcreteComponent+Operation: voidDecorator+Operation: void可编辑资料 - - - 欢迎下载精品_精品资料_可编辑资料 - - - 欢迎下载精品_精品资料_ConcreteDecoratorA-addState : String+Operation: voidConcreteDecoratorB+Operation: void-AddBehavior: void可编辑资料 - - - 欢迎下载精品_精品资料
20、_4. 使用 工厂方法 设计模式设计 工资打印程序import java.io.BufferedReader.import java.io.InputStreamReader.public class ClientPrint 可编辑资料 - - - 欢迎下载精品_精品资料_public static void mainString args tryString stremp.System.out.print请输入员工: .BufferedReader br = new BufferedReadernew InputStreamReaderSystem.in.stremp = br.readLine.Employee emp.emp = EmployeeFactory.createEmployeestremp.emp.getSalary.catchException e可编辑资料 - - - 欢迎下载