




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、什么是面向对象(Object-Oriented)面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。面向对象方法的基本思想是:从现实世界中客观存在的事物(对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。面向对象方法有如下一些主要特点: 从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。 事物的静态特征(即可用一些数据来表达特征)用对象的属性表示;事物的动态特征(即事物的行为)用对象的服务(操作)表示。 对象的属
2、性与操作结合为一体,成为一个独立的实体,对外屏蔽内部细节(称作封装) 对事物进行分类。把具体有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。 通过不同程度上运用抽象的原则(较多或较少的忽略事物之间的差异)可以得到一般的类和较特殊的类。特殊类继承一般类的属性和操作,面向对象方法支持这种继承关系的描述和实现,从而简化系统的构造过程及其文档。 复杂的对象可以用简单的对象作为其构成部分(称作聚合) 对象之间通过消息进行通信,以实现对象之间的动态联系。 通过关联表达对象之间的静态关系面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系
3、统的软件开发方法。1对象(1)从概念层面讲,对象是某种拥有责任的抽象。(2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。(3)从语言实现层面讲,对象封装了代码和数据。2软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。3设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特原则、接口隔离原则、单一职责原则。4面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限编程)。开发方法:Booch、Coad、OMT、UML、OOSE、WirfsBrock5OOA运用面向对象方法进行需求分析。OOD运用面向对象方法进行系统设
4、计。OOP运用面向对象方法进行程序设计。6OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。优点:(1)加强了对问题域和系统责任的理解。(2)改进与分析有关的各类人员之间的交流。(3)对需求的变化具有较强的适应性。(4)支持软件复用。OOA的三大策略是:属性策略、方法策略、对象策略。7(1)封装:是指对象在其操作中隐藏属性。
5、它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里面是否有足够的钱。而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。以表示圆的一个对象作为封装的例子。圆的操作应能计算出半径、直径、周长和面积。假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。如果在软件的后续版本中要存储的是半径,就必须找出系统中直接访问直径的所有代码,并更正它们,有了封装,就不会有问题。(2)继承:可以
6、指定类从父类中获取一些特性,再添加它自己的独特特性。继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类的属性和操作,也可以对父类中的操作重新定义其实现方法。例如:在面向对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的子类,也可以说家用电器类是这些类的超类。家用电器类具有的属性OnOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用电器,那么就会立即知道它具有家用电器类的属性和操作,这种关系就是继承。
7、每个家用电器类的子类都继承了家用电器类的特征。同时,每个子类都增加了自己的属性和操作。(3)多态:是指同一操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如:“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形;作用在“圆”对象上, 则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同对象时,每个对象将根据自己所属类中定义的这个操作方法去执行,从而产生不同的结果。RUP螺旋式、迭代式和递增式方法称为Rational Unified ProcessRUP核心工作流RUP中有9个核心工作流,分为6个核心过程工作流和3个核心支持工作流1.商业建模2.需求3.分析与设计4.实现5.
8、测试6.部署7.配置和变更管理8.项目管理9.环境重载函数重载是指在同一个作用域内的若干个参数特征不同的函数可以使用相同的函数名字。运算符重载是指同一个运算符可以施加于不同类型的操作数上面。抽象方法和虚方法的区别:1(abstract)抽象方法和(virtual)虚方法的区别在于:虚方法有一个实现部分可以为子类实现有共同的方法,并为派生提供了覆盖该方法的选项,相反,抽象方法没有提供实现部分,强制派生覆盖方法(否则派生类不能成具体类).2.(abstract)抽象方法只能在抽象类中声明,(virtual)虚方法不是。3.(abstract)抽象方法不能声明方法实体,虚方法可以。4.包含抽象方法(
9、只有抽象类才可以包含抽象方法)的类不能实例化(也就是说只可以使用predected和private修饰符),虚方法可以Java中抽象类和接口的区别:1.一个类只能继承一个抽象类。但是,一个类却可以实现多个接口interface2.在abstract class 中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。3.abstract class和interface所反映出的设计理念不同。其实abs
10、tract class表示的是"is-a"关系,interface表示的是"like-a"关系。4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。但是,接口中必须都是抽象方法(默认都是 public abstract 类型的)。5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。6.抽象类中的变量,其值可以在子类中重新定义,也可以重新赋值。原则之间的相互关系:开闭原则是构造可维护性复用性软件的基石,其他原则是达成开闭原则的手段和工具。为什么需要使用单例模式
11、属性是系统的一种"资源",应当避免有多余一个的对象读取特别是存储属性。此外,属性的读取可能会在很多地方发生,创建属性对象的地方应当在哪里不是很清楚。换言之,属性管理器应当自己创建自己的实例,并且自己向系统全程提供这一事例。因此,属性文件管理器应当是一个单例模式负责。q 作为对象的创建模式GOF95, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。q 单例模式的要点单例模式的要点有三个;q 一是某各类只能有一个实例;q 二是它必须自行创建这个实例;q 三是它必须自行向整个系统提供这个实例。 1 使用简单工厂模式设计计算器程序/Co
12、mputer.javapublic class Computer public static void main(String args) throws IOException String strA ;String strB ;String strO ; try BufferedReader br = new BufferedReader(new InputStreamReader (System.in);System.out.print("请输入数据A:") ;strA = br.readLine( ) ;System.out.print("请选择运算符号(+
13、、-、*、/):" ) ;strO= br.readLine( );System.out.print("请输入数据B:") ;strB = br.readLine( ) ;String strResult = "" ;Operation oper = null ;IFactory operFactory = null ;if(strO.equals("+") ) operFactory= new AddFactory( ) ;if(strO.equals("-") ) operFactory = new
14、SubFactory( );oper = operFactory.createOperation( );oper.SetNumberA(Double.valueOf(strA).doubleValue( ) ) ;oper.SetNumberB(Double.valueOf(strB).doubleValue( ) ) ; strResult = Double.toString(oper.GetResult( ) ) ;System.out.print(strResult) ;catch(Exception e ) /Operation.Javapublic abstract class Op
15、eration private double numberA;private double numberB;public double GetNumberA()return numberA;public void SetNumberA(double a)numberA = a;public double GetNumberB()return numberB;public void SetNumberB(double b)numberB = b;public abstract double GetResult(); /IFactory.Javapublic interface IFactory
16、public abstract Operation createOperation();/AddFactory.Javapublic class AddFactory implements IFactory public Operation createOperation() return new OperationAdd();public class SubFactory implements IFactory public Operation createOperation() return new OperationSub();class OperationAdd extends Ope
17、ration public double GetResult()double result = 0;result = super.GetNumberA() + super.GetNumberB();return result;class OperationSub extends Operation public double GetResult()double result= 0;result = super.GetNumberA() - super.GetNumberB();return result;简单工厂优点:简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。通过它
18、,外界可以从直接创建具体产品对 象的尴尬局面中摆脱出来。 外界与具体类隔离开来,偶合性低。 明确区分了各自的职责和权力,有利于整个软件体系结构的优化。缺点:工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则 虽然简单工厂模式能够适应一定的变化,但是它所能解决的问题是远远有限的。它所能创建的类只能是事先教考虑到的,如果需要添加新的类,则就需要改变工厂类了。(这个问题在工厂方法模式将得到很好的解决)2 策略模式:商场促销public class Context public Strategy strategy ; public Context(char name) thro
19、ws Exception switch(name) case A : strategy = new ConcreteStrategyA() ; break ; case B : strategy = new ConcreteStrategyB() ; break ; case C : strategy = new ConcreteStrategyC() ; break ; default : throw new Exception(“没有此类输入”);public void contextInterface() strategy.algorithInterface();public abstr
20、act class Strategy public abstract void algorithInterface() ;public class ConcreteStrategyA extends Strategy public abstract void algorithInterface() system.out.println(“打折算法”) ; public class ConcreteStrategyB extends Strategy public abstract void algorithInterface() system.out.println(“满100送60算法”)
21、; public class ConcreteStrategyC extends Strategy public abstract void algorithInterface() system.out.println(“正常收费,不参加活动!”) ; public class Client public static void main(String args) throws Exception Context context ; context = new Context(A) ; context.contextInterface() ;策略模式优点: 1. 策略模式提供了管理相关的算法族
22、的办法。2. 策略模式提供了可以替换继承关系的办法。3. 使用策略模式可以避免使用多重条件转移语句。缺点: 1. 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。2. 策略模式造成很多的策略类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,可以使用享元模式来减少对象的数量。特点:(1)Strategy属于设计模式中的对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类,使它
23、们可相互替换。本模式使得算法可独立于使用它的客户而变化。(2)它提供了一种用多个行为中的一个行为来配置一个类的方法。 (3)它需要使用一个算法的不同变体。(4)它以避免暴露复杂的、与算法相关的数据结构。 (5)一个类定义了多种行为, 并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的Strategy 类中以代替这些条件语句。3 装饰模式/Person.Javapublic class Person private String name;public Person()public Person(String name) = name;publ
24、ic void show()System.out.println("装扮的"+name);/Client.Javapublic class Clientpublic static void main(String args)Person person = new Person("流浪");System.out.println("第一种装扮");Clothing dtx = new Tshirt();Clothing ckk = new CrossPants();dtx.Decorator(person);ckk.Decorator(d
25、tx);ckk.show();System.out.println("第二种装扮");Clothing xz = new Suit();Clothing ld = new Tie();xz.Decorator(person);ld.Decorator(xz);ld.show();/Clothing.Javapublic class Clothing extends Personprotected Person component;public void Decorator(Person component)ponent = component;public void sho
26、w()if(component != null)component.show();/CrossPants.Javapublic class CrossPants extends Clothingpublic void show()System.out.println("穿跨裤");super.show();/suit.Javapublic class Suit extends Clothing public void show()System.out.println("穿西装");super.show();/Tie.Javapublic class Ti
27、e extends Clothing public void show()System.out.println("打领带");super.show();/Tshirt.Javapublic class Tshirt extends Clothing public void show()System.out.println("Tshirt");super.show();特点:动态地给一个对象添加一些额外的职责。就增加功能来说,使用装饰模式相比用生成子类方式达到功能的扩充显得更为灵活。我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。使用Decorator时这些功能需要由用户动态决定加入的方式和时机.装饰模式提供了“即插即用”的方法,在运行期间决定何时增加何种功能。装饰模式的优点和缺点 使用装饰模式主要有以下的优点:1. 装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承更多的灵活性。 2. 通过使用不同的具
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年牡丹江绥芬河市博物馆公开招聘讲解员招聘4人模拟试卷及答案详解(网校专用)
- 2025福建漳州市医院临时聘用人员(第二批)考前自测高频考点模拟试题及参考答案详解1套
- 2025国家能源集团煤炭经营分公司高校毕业生招聘(第二批)人员(已结束)考前自测高频考点模拟试题及答案详解(有一套)
- 2025第五师医院招聘劳务派遣人员(2人)模拟试卷及答案详解(夺冠系列)
- 2025年河北唐山滦南县专项选聘教师11名考前自测高频考点模拟试题有完整答案详解
- 2025辽宁工程技术大学招聘高层次人才216人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025年南平邵武市医疗单位医疗类储备人才引进8人考前自测高频考点模拟试题含答案详解
- 2025北京中医药大学东方医院秦皇岛医院选聘19人(河北)模拟试卷及答案详解参考
- 2025贵州毕节市大方县人民医院专项引进高层次急需紧缺人才40人模拟试卷及答案详解(必刷)
- 2025福建海峡银行总行计划财务部诚聘考试模拟试题及答案解析
- 2025年深圳市规划和自然资源局光明管理局招聘考试笔试试题(含答案)
- 天水市万荣商贸有限公司甘肃省西和县乱石山金矿矿产资源开发与恢复治理方案专家组审查意见
- 电厂施工定置管理制度
- 各类施工材料采购及配送服务方案 第五章 施工材料供货服务方案
- 中医经络瑜伽
- 痛风和高尿酸血症患者的运动和生活方式指南(2022版)解读课件
- 国企职业道德课件
- GB/T 9104-2022工业硬脂酸试验方法
- 心血管-肾脏-代谢综合征(CKM)综合管理中国专家共识2025解读课件
- 《混凝土裂缝控制》课件
- 行政事业单位内部控制范本-行政事业单位内控手册
评论
0/150
提交评论