面向对象技术的软件设计

面向对象技术(Object-Oriented Technology)。面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。

对象模型化技术(OMT)

对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型,功能模型和动态模型

对象模型:最关键的模型,描述系统的静态结构,包括构成系统的类和对象,以及他们之间的关系

在对象模型化技术中,类与类之间的关系叫做关联

关联分为聚合,限定,角色

动态模型:着重于系统的控制逻辑,包括两个图,一个是状态图,一个是事件追踪图

状态图:是一个状态和事件的网络,侧重于描述每一类对象的动态行为

在状态图中,状态是对某一时刻中属性特征的概括。而状态迁移表示这一类对象在何时对系统内发生的哪些事件做出何种响应。

事件追踪图:侧重于说明发生于系统执行过程中的一个特定“场景”

功能模型:通过计算,从输入数据能得到什么样的输出数据,不考虑参加计算的数据按什么时序执行。功能模型由多个数据流图组成,它们指明从外部输入,通过操作和内部存储,指导外部输出,这整个的数据流情况。

基于三个模型的分析过程

功能模型定义“做什么”

动态模型定义“何时做”

对象模型定义“对谁做”

面向对象的分析(OOA)

构造OOA概念模型的5个层次

类与对象,属性,服务,结构与主题

类与对象层:如何建立基本块

属性层:对象的属性和实例连接组成

服务层:对象的服务,加上对象实例之间消息通信组成

结构层:描述了一般——特殊结构或泛化——特化结构,泛化——特化结构表明了类的继承性

主题层:将对象归类到各个主题中,将有关对象用一个主题边框框起来

构造OOA模型采用的原则:抽象,封装,继承,分类,聚合,关联,消息通讯

面向对象的设计(OOD)

1,  高层设计

构造应用软件的总体模型

标识在计算机环境中进行问题解决工作所需要的概念

在设计阶段中继续采用分析阶段中提到的5个层次,这5个层次用于建立系统的4个组成成分

问题论域部分:指执行基本应用功能的对象

人机交互部分:指定了用于系统的某个特定实现的界面技术

任务管理部分:指定了那些创建系统时必须建立的操作系统部分

数据管理部分:定义了那些与所用数据库技术接口的对象

2,  类设计

面向对象环境下的测试策略

1,  单元测试(类测试):面向对象环境下,最小的可测试的单元式封装了的类或对象,而不是程序模块

2,  组装测试

基于线索的测试:它把为响应某一系统数据或事件所需的一组类组装在一起。每一条线索将分别测试和组装

基于应用的测试:它着眼于系统结构,首先测试独立类,这些类只使用很少的服务器类。再测试那些使用了独立类的相关类。

3,  确认测试:着眼于用户的要求和用户能够认可的系统输出。

类测试的种类

基于定义的测试:把类当做一个黑盒对待,确认类的实现是否遵照它的定义

基于程序的测试:考虑类的实现,确定代码编写得是否正确

组装测试:

类组装:测试一个新类时,需要先测试在定义中所涉及的类,在考虑这些类的组装

总体组装:把所有组成完整软件的各个部分集合在一起。测试所选的测试用例应当瞄准待开发软件的目标。

时间: 2024-10-09 07:29:30

面向对象技术的软件设计的相关文章

面向对象编程的软件设计原则

在開始Android软件实际APP開始之前,我们须要对面向对象设计原则及设计模式做一个初步的了解.才干在以后的实战过程中,少走弯路.使我们的软件开发生涯感觉到快乐.轻松.好了,废话少说,咱们今天给大家一起探讨一下软OOP中的软件开发设计原则.这些东东都是OOP的设计精髓,他们蕴藏着前辈留下的产物.眼下.软件设计最基本原则有下面几种(总共同拥有11种):单一职责原则.开放封闭原则.依赖倒置原则.接口隔离原则和里氏替换(Liskov替换)原则 单一职责原则 就是一个类值做一件事情.引起它发生变化的仅

面向对象软件设计原则

提起面向对象,大家也许觉得自己已经非常“精通”了,起码也到了“灵活运用”的境界.面向对象设计不就是OOD吗?不就是用C++.Java.Smalltalk等面向对象语言写程序吗?不就是封装+继承+多态吗? 很好!大家已经掌握了不少对面向对象设计的基本要素:开发语言.基本概念.机制.Java是一种纯面向对象语言,是不是用Java写程序就等于面向对象了呢?我先列举一下面向对象设计的11个原则,测试一下大家对面向对象设计的理解程度-^_^- 单一职责原则(The Single Responsibilit

软件设计

软件设计 一定是创建订单的时候填充market字段,我曾经一度打算在回调的时候再根据回调方来填充Market,但是如果没有回调呢?Market这样的标志性字段一定要依赖于靠谱的操作: 对于重载方法要注意,尤其套调用的重载方法,对于某些核心校验必须要放置在里层方法调用,否则因为重载都是public出去的,都可以被外界调用,如果在外层方法实现校验,里层重载方法被外界直接调用,校验会被跳过:考虑CheckMarket是放在CreateOrder(String encryptedString)还是Cre

软件设计的复杂度

http://blog.csdn.net/horkychen/article/details/45381743 什么是软件设计的复杂度 软件技术发展的使命之一就是控制复杂度(Complexity).从高级语言的产生,到结构化编程,再到面向对象编程.组件化编程等等.关于复杂度的定义并不一致,想要详细了解的可以读读The Many Faces of Complexity in Software Design. 英文中Complex和Complicated有着微妙的不同.但总结起来,软件复杂度偏负面意

面向对象技术概论

面向对象理论很早就被提出了,但它真正地渗透到软件开发的各个领域,并且在软件开发实践中大规模应用,却要等到上世纪九十年代.到目前为止,面向对象技术已是软件开发的主流,全面取代了结构化编程技术曾经具有的地位. 面向对象技术与结构化编程技术有着不同的风格,但同时也有着密切的联系.从具体编程角度来看,面向对象技术与结构化编程技术很难截然分开,两者的根本差别在于思维 方式. 要了解面向对象技术,得从结构化编程技术入手. 1.1结构化编程引例 结构化编程在上世纪七十年代兴起,由于它具有很多的优点,出现之后没

面向对象技术

c#是面向对象的编程技术,所以要了解面向对象的知识十分重要.要编写出结构合理的c#代码语句,必须掌握面向对象编程技术的基本知识. 什么是OOP? 面向对象程序设计即OOP,是Object-OrientedProgramming的缩写.与函数式程序设计和逻辑是程序设计所代表的接近于机器的实际计算模型所不同的是,OPP几乎没有引入精确的数学描述,而是倾向于建立一个对象模型,它能够反映实体之间的联系. 对象的产生基于两种方式:原型,类. 面向对象技术具体分为面向对象分析(OOA)和面向对象设计(OOD

漫谈软件设计与分工协作

本节导读: 阐述“分工/协作”是世界万事万物进化发展的必然选择,也是软件设计首要指导思想,也是软件分层.分模块的理论依据. 对于从事软件行业的人来说,大部分人会经历软件架构设计,想尽可能的将软件设计的灵活.简单.好用,谈到软件设计我们经常会听到一些术语,比如:面向对象设计.设计模式,设计原则.分层思想等.但这些模式.原则起什么作用,为什么需要这些模式.原则,我们可能说是为了软件可阅读性,可维护性,可扩展性,为了程序解耦,为了模块化,为了插件化.但这是理由吗,这个理由能站得住脚吗?隐藏在这些需求背

一、面向对象技术概论(上)

面向对象理论很早就被提出了,但它真正地渗透到软件开发的各个领域,并且在软件开发实践中大规模应用,却要等到上世纪九十年代.到目前为止,面向对象技术已是软件开发的主流,全面取代了结构化编程技术曾经具有的地位. 面向对象技术与结构化编程技术有着不同的风格,但同时也有着密切的联系.从具体编程角度来看,面向对象技术与结构化编程技术很难截然分开,两者的根本差别在于思维方式. 要了解面向对象技术,得从结构化编程技术入手. 1.1.结构化编程引例  结构化编程在上世纪七十年代兴起,由于它具有很多的优点,出现之后

UML和模式应用:面向对象的分析与设计

1.1.什么是分析和设计 分析(analysis):强调的是对问题和需求的调查研究,而不是解决方案,即应该如何使用系统,系统应该具有哪些功能. 设计(design):强调的是满足需求的概念上的解决方案(在软件和硬件方面),而不是其实现.最终,分析可以实现,而实现则表达了真实和完整的设计. 分析和设计一词最好加以限制,如面向对象的设计.数据库设计. 有益的分析和设计可以概括为:做正确的事(分析)和正确地做事(设计). 1.2.什么是面向对象的分析和设计 在面向对象分析(OOA)过程中,强调的是在问