第十一章 OOD(面向对象设计)
- 格式:ppt
- 大小:72.00 KB
- 文档页数:34
OOD模型设计目录1 面向对象设计(OOD)的定义? (3)2 面向对象设计(OOD)与面向对象分析(OOA)的关系? (3)3 面向对象设计(OOD)的特点? (3)4 面向对象设计(OOD)过程以及过程模型? (4)4.1 问题域部分的设计 (6)4.2 人机交互部分的设计 (7)4.3 控制驱动部分的设计 (8)4.4 数据管理部分的设计 (9)4.5 构件及部署部分的设计 (10)1 面向对象设计(OOD)的定义?在面向对象分析阶段,已经针对用户需求建立起用面向对象概念描述的系统分析模型。
在设计阶段,要考虑为实现系统而采用的计算机设备、操作系统、网络、数据库管理系统以及所采用的编程语言等有关因素,进一步运用面向对象的方法对系统进行设计,最后形成一个可以实现的设计模型,即面向对象设计模型。
2 面向对象设计(OOD)与面向对象分析(OOA)的关系?在面向对象分析阶段,针对的是现实世界,把需求转化为面向对象概念所建立的模型,以易于理解问题域和系统责任,最终建立一个映射问题域,满足用户需求,独立于实现的OOA模型,面向对象的设计就是在面向对象分析的基础上运用面向对象方法主要解决与实现有关的问题,目标是产生一个符合具体实现条件的OOD模型。
由于OOD以OOA为基础,且OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只需做必要的修改与调整。
OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,二者能够紧密衔接。
OOA与OOD之间不强调阶段划分,但是OOA与OOD有着不同的侧重点和不同的分工,并因此具有不同的开发过程及具体策略。
“分析”只针对问题域和系统责任,不考虑实现有关的因素,建立一个独立于实现的OOA模型;”设计“则考虑与实现有关的问题,如选用的编程语言、数据库系统和图形用户界面等,建立一个针对具体实现的OOD模型。
3 面向对象设计(OOD)的特点?•以面向对象的分析为基础,一般不依赖结构化分析•与相应的OOA方法共同构成OOA&D方法体系,OOA和OOD采用一致的概念与原则,但属于软件生命周期的不同阶段,有不同的目标和策略•较全面地体现了面向对象方法的概念与原则•大多数OOD方法独立于编程语言,但是具体应用OOD时,则要考虑特定编程语言,因为它通过面向对象的设计所得到的系统模型,要由确定的编程语言实现4 面向对象设计(OOD)过程以及过程模型?在OOA 阶段只考虑问题域和系统责任,在OOD阶段则要考虑与具体实现有关的问题,这样做的目的是•使反映问题域本质的总体框架和组织结构长期稳定,而细节可变•把稳定部分(问题域部分)与可变部分(与实现有关的部分)分开,使得系统能从容地适应变化•有利于同一个分析模型用于不同的设计和实现•支持系统族和相似系统的分析与设计•使一个成功的系统具有超出其生存期的可扩展性为达到上述目的,设计如下的面向对象设计模型从一个侧面观察OOD模型,它包括一个核心部分,即问题域部分;还包括四个外围部分,即人机交互部分、控制驱动部分、数据管理部分以及构件及部署部分。
面向对象设计---在线视频分享(YLSN)--OOD
1、语言和框架选择
基本先前所学知识,本系统采用面向对象的java语言进行开发,并基于SSH框架的MVC设计模式,很大程序增强了系统的开发效率与后期的维护成本。
2、类图
3、包图
actionforms:指任务提交表单类所在的包,如用户注册表单
actions:指任务的处理和控制类所在的包,如用户登陆LoginAction
dao:系统所有接口所在的包,如数据库管理类DatabaseManager
mananger:数据库操作类所在的管理包,如数据库管理类的实现类DatabaseManagerImp
pojos:所有实体类所映射对象的集合,实体类的映射MyVideo
utils:系统工具类所在的包,包括property属性的读取等
4、顺序图
、协作图
5
6、数据库设计
本系统共7张表,包括管理员表、公共图片表、友情图片表、初始参数表、伴图图片表
用户表、视频表,各表结构如下:。
OOD、OOP、AOP区别
OOD:⾯向对象设计(Object-Oriented Design,OOD)⽅法是OO⽅法中⼀个中间过渡环节。
其主要作⽤是对OOA分析的结果作进⼀步的规范化整理,以便能够被OOP直接接受。
OOP:⾯向对象编程(Object Oriented Programming,OOP,⾯向对象程序设计)是⼀种计算机编程架构。
OOP 的⼀条基本原则是计算机程序是由单个能够起到⼦程序作⽤的单元或对象组合⽽成。
AOP:AOP为Aspect OrientedProgramming的缩写,意为⾯向切⾯编程。
所谓的⾯向切⾯编程其实是对业务逻辑⼜进⾏了进⼀步的抽取,将多种业务逻辑中的公⽤部分抽取出来做成⼀种服务(⽐如⽇志记录,性能统计,安全验证等),从⽽实现代码复⽤。
另外这种服务通过配置可以动态的给程序添加统⼀控制,利⽤AOP可以对业务逻辑的各个部分进⾏分离,从⽽使得业务逻辑各部分之间的耦合度降低。
简述面向对象设计的原则。
面向对象设计(简称OOD)是一种软件设计方法论,它基于建模和模块化方法,将一个复杂的系统分解成一系列用于交互的简单的对象。
它的目的是使设计过程变得更加容易,从而使维护和更新更容易。
面向对象设计遵循一些基本原则,包括:一、(单一职责原则)每个对象应只负责一项功能,以及它应该完成指定任务的所有职责,而不会担负任何其他任务。
例如,在一个购物系统中,顾客对象只应负责处理客户订单,而不应该负责订单处理系统的管理。
这样做的目的是减少代码重复,降低系统整体耦合度,并降低系统的复杂性,从而使系统变得更加可维护和可扩展。
二、(开放-封闭原则)软件实体(如类、模块、函数)应该是可以扩展的,但是不可修改。
也就是说,软件实体对拓展应该是开放的,对修改是封闭的。
这样做可以使得新功能更容易添加,而不需要更改已有的功能。
三、(里氏替换原则)子类必须能替换他们的父类。
也就是说,子类的行为要与父类的行为保持一致,以便它能够替换父类而不会破坏原有的系统结构。
这种关系称为“is-a”关系,因为它表明子类和父类有一定的关系,而且子类是其父类的一个实例。
这样做的好处是,当要拓展功能时,只需要创建新的子类,而不需要修改父类,从而减少了系统的复杂性。
四、(接口隔离原则)客户端不应该依赖于它不需要的接口。
也就是说,对接口的依赖应该尽可能的小,客户端只应该依赖于它需要的接口。
这样做的好处在于,当有要求变更或拓展新功能时,只需要改变相关接口,而不需要改变客户端,从而可以减少系统的维护和更新成本。
五、(依赖倒置原则)抽象(通用)不应该依赖于具体(特殊),具体(特殊)应该依赖于抽象(通用)。
也就是说,程序应该依赖于通用的抽象接口,而不应该依赖于非标准的具体实现。
这样做的目的是让代码更容易维护和更新,从而减少系统的复杂性。
六、(协作原则)一个类应该尽可能多的协作,而不是尽可能多的执行。
也就是说,类之间的交互应尽可能少,类的实现应尽可能多。
面向对象设计知识点面向对象设计(Object-Oriented Design,简称OOD)是软件工程领域中的重要概念,它是一种以对象为基本构建单元的设计方法。
对象是由数据属性(属性)和操作方法(方法)组成的封装体,通过类的定义来创建对象。
面向对象设计具有灵活、模块化、易维护等优点,被广泛应用于各种软件系统开发场景。
本文将介绍面向对象设计中的一些重要知识点,包括封装、继承、多态和抽象等。
一、封装封装是面向对象设计的核心概念之一,它将数据和行为封装在一个对象内部,对象对外部隐藏了具体的实现细节,只暴露出一组接口供其他对象使用。
封装可以有效地保护对象的数据,提高了代码的可维护性和可重用性。
在封装中,我们需要关注以下几点:1. 数据隐藏:将对象的数据设置为私有(private)属性,通过公有(public)方法来获取和修改数据,确保对象数据的访问受到限制。
2. 隐藏实现细节:对象应该将内部的实现细节隐藏起来,只提供有限的接口给外部使用,这样可以避免外部对对象的依赖,同时也方便后续对实现进行修改和优化。
二、继承继承是面向对象设计中实现代码重用的一种方式。
通过继承,一个类可以继承另一个类的属性和方法,并在此基础上进行扩展或修改。
被继承的类称为父类或基类,继承的类称为子类或派生类。
继承有以下特点:1. 单继承和多继承:单继承表示一个子类只能继承自一个父类,而多继承允许一个子类同时继承自多个父类。
2. 继承关系:子类继承了父类的属性和方法,并可以添加新的属性和方法或覆盖父类的方法。
3. 代码复用:继承可以避免重复编写相同的代码,提高代码的可维护性和可读性。
三、多态多态是面向对象设计的重要特性,它允许子类对象对父类的方法进行不同的实现。
多态性使得我们可以通过父类引用指向不同子类的对象,并根据实际的子类类型来调用相应的方法。
多态性的特点包括:1. 重写(覆盖):子类可以重写父类的方法,实现自己的特定逻辑。
2. 动态绑定:运行时根据对象的实际类型来动态地调用方法,而不是根据引用类型来确定调用哪个方法。
简述面向对象设计过程面向对象设计(Object-Oriented Design,OOD)是一种软件设计方法,它将现实世界的实体抽象为对象,通过对象的属性、方法和相互作用来表达需求和解决问题。
面向对象设计过程通常包括以下几个步骤:1. 需求分析:在项目开始之初,需要与客户、项目经理等进行沟通,收集需求,了解系统需求,明确项目目标和功能。
2. 定义类和对象:根据需求分析的结果,从问题域中识别出关键的实体和概念,为每个实体定义一个类,并确定类的属性和方法。
属性表示对象的状态,方法表示对象的行为。
同时,确定对象之间的关系,例如聚合、继承和关联等。
3. 设计类的层次结构:根据类之间的关系,设计类的继承和接口实现结构。
子类可以继承父类的属性和方法,同时根据需要重写或扩展某些方法。
接口则定义了一组方法的规范,实现接口的类需要实现这些方法。
4. 划分模块和包:为了提高系统的可维护性和可重用性,将相关的类划分为模块或包。
模块和包应该尽量保持内聚性,即同一个模块或包中的类具有相似的功能和职责。
5. 设计类的交互和通信:确定类之间的交互方式,包括消息传递、事件触发以及共享数据等。
设计类的通信接口,包括公开的属性和方法,以及需要实现的回调函数等。
6. 代码实现:根据设计文档,编写代码实现类的属性、方法和交互。
在编写代码过程中,可能会发现设计上的问题,需要在设计和实现过程中进行调整和优化。
7. 测试与调优:对系统进行功能性和非功能性测试,保证系统满足需求。
同时,根据测试结果对系统进行优化和调整,提高系统的性能、可维护性和可扩展性。
8. 维护与升级:在系统投入使用后,需要对系统进行维护,修复bug,根据用户需求调整功能。
在系统升级过程中,面向对象设计的优势可以让开发人员更容易地对系统进行扩展和修改。
OOD面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节。
其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。
面向对象设计(OOD)是一种软件设计方法,是一种工程化规范。
这是毫无疑问的。
按照Bjarne Stroustrup的说法,面向对象的编程范式(paradigm)是[Stroustrup, 97]:l 决定你要的类;l 给每个类提供完整的一组操作;l 明确地使用继承来表现共同点。
由这个定义,我们可以看出:OOD就是“根据需求决定所需的类、类的操作以及类之间关联的过程”。
OOD的目标是管理程序内部各部分的相互依赖。
为了达到这个目标,OOD 要求将程序分成块,每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,让它们只通过接口相互交流。
比如说,如果用OOD的方法来设计一个服务器-客户端(client-server)应用,那么服务器和客户端之间不应该有直接的依赖,而是应该让服务器的接口和客户端的接口相互依赖。
这种依赖关系的转换使得系统的各部分具有了可复用性。
还是拿上面那个例子来说,客户端就不必依赖于特定的服务器,所以就可以复用到其他的环境下。
如果要复用某一个程序块,只要实现必须的接口就行了。
OOD是一种解决软件问题的设计范式(paradigm),一种抽象的范式。
使用OOD这种设计范式,我们可以用对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为。
我们刚才说到:OOD是一种抽象的范式。
抽象可以分成很多层次,从非常概括的到非常特殊的都有,而对象可能处于任何一个抽象层次上。
另外,彼此不同但又互有关联的对象可以共同构成抽象:只要这些对象之间有相似性,就可以把它们当成同一类的对象来处理。
一、OOD背景知识计算机硬件技术却在飞速发展。
从几十年前神秘的庞然大物,到现在随身携带的移动芯片;从每秒数千次运算到每秒上百亿次运算。
面向对象设计(OOD)思想(C#)面向对象分析(道法自然)面向对象的思维方式:面向对象是围绕对象和类来分析、设计软件系统的。
面向对象分析:面向对象分析的主要任务是根基用户的需求,建立一个准确的、完整的、一致的系统模型。
在面向对象的分析过程里,项目组通过分析软件的功能性需求,得到一个理想化的系统模型,该模型更多的侧重于描述我们需求解决的问题是什么---我们称这种模型为分析模型。
面向对象分析与面向对象设计的区别:1、在侧重点上,面向对象分析侧重于理解问题,描述软件做什么,而面向对象设计侧重于理解解决方案,描述软件如何做。
2、面向对象分析一般只考虑理想的设计,不关心技术和实现的细节,而面向对象设计更具体、更详细、更接近真实的代码的设计方案。
3、在设计结果的描述方式上,分析阶段侧重描述对象的行为,设计阶段侧重于描述对象的属性和方法。
4、面向对象分析只关注功能性需求,而面向对象设计既关注功能性需求,也关注非功能性需求。
5、面向对象分析的产生的系统模型通常规模较小,而面向对象的设计产生的系统模型规模较大,内容也比较完整、详尽。
用例驱动的面向对象分析:面向对象分析的过程包括:1、从用例中提取实体对象和实体类。
提取实体对象的方法,依据用例描述中出现的名词和名词短语来提取实体对象,必须对原始的名词和名词短语进行筛选。
得到实体对象后,对实体对象进行归纳、抽象出实体类。
2、提取属性3、提取关系4、添加边界类5、添加控制类6、绘制类图7、绘制顺序图8、编制术语表有了思想才能飞翔,缺乏灵活就象少了轮子的汽车,难以飞奔。
为了更好的理解设计思想,结合一个尽可能简洁的实例来说明OOD、设计模式及重构。
通过下面的代码,详细地阐述面向对象设计思想。
一、传统过程化设计思想假定我们要设计一个媒体播放器(只从软件设计的角度,不涉及硬件)。
该媒体播放器目前只支持音频文件mp3和wav。
按照结构化设计思想,设计出来的播放器的代码如下:面向对象设计(OOD)思想(C#)有了思想才能飞翔,缺乏灵活就象少了轮子的汽车,难以飞奔。
⾯向对象设计(Object-OrientedDesign,OOD)前⾔OOD简介Shubho:亲爱的,让我们开始学习OOD吧。
你了解⾯向对象原则吗?Farhana:你是说封装,继承,多态对吗?我知道的。
Shubho:好,我希望你已了解如何使⽤类和对象。
今天我们学习OOD。
Farhana:等⼀下。
⾯向对象原则对⾯向对象编程(OOP)来说不够吗?我的意思是我会定义类,并封装属性和⽅法。
我也能根据类的关系定义它们之间的层次。
如果是,那么还有什么?Shubho:问得好。
⾯向对象原则和OOD实际上是两个不同的⽅⾯。
让我给你举个实际⽣活中的例⼦帮你弄明⽩。
再你⼩时候你⾸先学会字母表,对吗?Farhana:嗯Shubho:好。
你也学了单词,并学会如何根据字母表造词。
后来你学会了⼀些造句的语法。
例如时态,介词,连词和其他⼀些让你能造出语法正确的句⼦。
例如: "I" (代词) "want" (动词) "to" (介词) "learn" (动词) "OOD"(名词)。
看,你按照某些规则组合了单词,并且你选择了有某些意义的正确的单词结束了句⼦。
Farhana:OK,这意味着什么呢?Shubho:⾯向对象原则与这类似。
OOP指的是⾯向对象编程的基本原则和核⼼思路。
在这⾥,OOP可以⽐作英语基础语法,这些语法教你如何⽤单词构造有意义且正确的句⼦,OOP教你在代码中构造类,并在类⾥封装属性和⽅法,同时构造他们之间的层次关系。
Farhana:嗯..我有点感觉了,这⾥有OOD吗?Shubho:马上就有答案。
现在假定你需要就某些主题写⼏篇⽂章或随笔。
你也希望就⼏个你擅长主体写基本书。
对写好⽂章/随笔或书来说,知道如何造句是不够的,对吗?为了使读者能更轻松的明⽩你讲的内容,你需要写更多的内容,学习以更好的⽅式解释它。
Farhana:看起来有点意思...继续。
ood概念OOD(Object-Oriented Design,面向对象设计)是一种软件工程方法,旨在通过将系统划分为多个相互作用的对象来设计和构建复杂的软件系统。
该方法强调将问题领域的实体和行为模块化,并在系统中使用封装、继承和多态等特性来提高代码的可重用性、可扩展性和可维护性。
面向对象设计的核心概念包括类、对象、继承、封装、多态和关联关系。
首先,类是对象的模板,描述了对象的行为和属性。
对象是类的实例,具有特定的状态和行为。
继承是一种构建层次结构的机制,子类可以继承父类的行为和属性。
封装是将数据和方法包装在对象内部的机制,只有对象自身可以直接访问其内部状态。
多态允许不同的对象对相同的消息产生不同的行为。
最后,关联关系描述了对象之间的联系,如关联、聚合和组合等。
在OOD中,首先需要进行需求分析和问题建模。
通过分析问题领域中的实体和行为,可以识别出需要在系统中建模的类和对象。
然后,通过定义类的属性和方法来描述类的行为,使用关联关系将类连接在一起。
在这个过程中,需要考虑类之间的耦合和职责分配,确保系统的结构合理。
在实际的面向对象设计中,有几个重要的原则需要遵循。
其中之一是单一职责原则,即一个类只应该有一个责任。
这样可以提高类的内聚性,并使其更易于理解、扩展和维护。
另一个原则是开闭原则,即对扩展开放、对修改关闭。
通过使用接口和抽象类来实现,可以使系统易于扩展,并且对现有的代码进行最小干预。
此外,还有里氏替换原则,接口隔离原则和依赖倒置原则等,它们一起确保系统的可重用性、可扩展性和灵活性。
在进行面向对象设计时,还可以使用一些设计模式来解决通用的设计问题。
例如,工厂模式可以用于创建对象的过程抽象,单例模式可以确保一个类只有一个实例,观察者模式可以在对象之间建立松散的耦合关系等。
这些设计模式是根据已有经验总结出来的,可以帮助开发人员更好地解决一些常见的设计问题,并提高系统的设计质量。
总之,OOD是一种用于构建复杂软件系统的方法,通过将系统划分为多个对象、封装、继承和多态等特性来提高代码的可重用性、可扩展性和可维护性。
面向对象设计ood 例题【实用版】目录一、面向对象设计的概念和任务1.面向对象设计的定义2.面向对象设计的主要任务二、面向对象设计的原则1.模块化2.抽象3.信息隐藏4.低耦合三、面向对象设计的例子1.客户端和服务器的依赖关系2.面向对象设计的复用性正文一、面向对象设计的概念和任务面向对象设计(Object-Oriented Design,简称 OOD)是一种软件设计方法,它是一种项目化规范。
面向对象设计的主要任务包括:确定需要的类、为每一个类提供一组完整的操作以及明确地使用继承来表现共同点。
概括地说,面向对象设计就是根据需求决定所需的类、类的操作,以及类之间的关联的过程。
二、面向对象设计的原则1.模块化:面向对象开发方法非常自然地支持了把系统分解成模块的设计原则。
对象就是模块,它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。
2.抽象:面向对象方法不仅支持过程抽象,还支持数据抽象。
抽象能够帮助我们更好地理解问题领域,并从中提炼出共性,以便于我们更好地设计和解决问题。
3.信息隐藏:在面向对象方法中,信息隐藏通过对象的封装性来实现。
封装性是指将对象的内部实现细节隐藏在对象的外部界面背后,只暴露必要的接口给外部使用。
这样可以有效地防止外部误操作和数据泄露。
4.低耦合:在面向对象方法中,低耦合是指各个对象之间的依赖关系尽量降低。
为了实现低耦合,我们可以通过接口来实现对象之间的通信,让对象之间只依赖于接口,而不是直接依赖于具体的实现。
三、面向对象设计的例子1.客户端和服务器的依赖关系:在面向对象设计中,客户端和服务器之间的依赖关系可以通过抽象接口来实现。
客户端不需要直接依赖于特定的服务器,而是依赖于服务器提供的接口。
这样,当服务器发生变化时,客户端不需要做出相应的修改,从而提高了系统的稳定性和可维护性。
2.面向对象设计的复用性:面向对象设计具有很好的复用性。
当需要复用某个功能时,只需要实现相应的接口,而无需关心具体的实现细节。
ood概念
OOD(Object-Oriented Design,面向对象设计)是指根据面向对象编程(Object-Oriented Programming,OOP)的原则和方法,对软件系统进行设计和实现的过程。
OOD强调将系统划分为不同的对象,每个对象具有特定的属性和方法,对象之间通过消息传递进行通信和交互。
OOD的目标是创建一个模块化、可重用、可扩展、易于维护和理解的系统。
通过将系统划分为对象,可以将复杂系统的设计变得更加简单和可控。
同时,OOD也提供了一些重要的概念和原则来指导系统设计,包括封装、继承、多态和抽象。
封装(Encapsulation)通过将数据和操作封装在对象内部,隐藏了对象的实现细节,只暴露出有限的接口,实现了信息隐蔽和模块化的目标。
继承(Inheritance)允许一个对象继承另一个对象的属性和方法,从而在不改变原有代码的情况下扩展或修改系统的功能。
多态(Polymorphism)通过一个统一的接口来处理不同类型的对象,使得程序在运行时可以根据具体的对象类型自动选择合适的方法进行调用。
抽象(Abstraction)将对象的共同特征提取出来,形成一个抽象的类或接口,从而简化系统设计和理解。
除了以上概念和原则,OOD还提供了一些设计模式(Design
Pattern)来解决常见的设计问题,如单例模式、工厂模式、观察者模式等。
这些设计模式可以提供一套通用的解决方案,帮助设计人员更好地完成系统设计工作。