怎样rom开发kaal826rom

面向对象思想_百度百科
收藏 查看&面向对象思想本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
的必须有描述对象及其相互之间关系的语言成分这些可以归纳为以下几类系统中一切皆为对象对象是属性及其操作的体对象可按其性质划分为类对象成为类的实例实例关系和继承关系是对象之间的静态关系消息传递是对象之间动态联系的唯一形式也是计算的唯一形式方法是消息的序列
从现实世界中客观存在的事物即对象出发来构造软件系统并在系统构造中尽可能运用人类的自然思维方式强调直接以问题域现实世界中的事物为中心来思考问题认识问题并根据这些事物的本质特点把它们抽象地表示为系统中的对象作为系统的基本构成单位而不是用一些与现实世界中的事物相关比较远并且没有对应关系的其它概念来这可以使系统直接地映射问题域保持问题域中事物及其相互关系的本来面貌它可以有不同层次的理解
从世界观的角度可以认为的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的不同对象之间的相互作用和通讯构成了完整的现实世界因此人们应当按照现实世界这个本来面貌来理解世界直接通过对象及其相互关系来反映世界这样建立起来的系统才能符合现实世界的本来面目
从方法学的角度可以认为的方法是的世界观在开发方法中的直接运用它强调系统的结构应该直接与现实世界的结构相对应应该围绕现实世界中的对象来而不是围绕功能来构造系统(Object Oriented,OO)是当前计算机界关心的重点它是90年代的主流的概念和应用已超越了程序设计和软件开发扩展到很宽的范围如系统交互式界面应用结构应用平台网络管理结构CAD人工智能等领域
谈到这方面的文章非常多但是明确地给出对象的定义或说明对象的定义的非常少至少我还没有发现起初是专指在程序设计中采用和等设计方法可是这个定义显然不能再适合情况的思想已经涉及到软件开发的各个方面如的分析OOAObject Oriented Analysis面向对象的设计OODObject Oriented Design以及我们经常说的面向对象的编程实现OOPObject Oriented Programming许多有关的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法看这些文章只有真正懂得什么是对象什么是才能最大程度地对自己有所裨益这一点恐怕对初学者甚至是从事相关多年的人员也会对它们的概念模糊不清1.软件重用性差
重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质软件重用性是追求的目标之一
2.软件可维护性差
强调软件的可维护性强调文档资料的重要性规定最终的软件产品应该由完整一致的配置成分组成在软件开发过程中始终强调软件的可读性可修改性和可测试性是软件的重要的质量指标实践证明用传统方法开发出来的软件维护时其费用和成本仍然很高其原因是可修改性差维护困难导致可维护性差
3.不能满足用户需要
用传统的结构化方法开发大型软件系统涉及各种不同领域的知识在开发需求模糊或需求动态变化的系统时所开发出的软件系统往往不能真正满足用户的需要
用结构化方法开发的软件其稳定性可修改性和可重用性都比较差这是因为结构化方法的本质是功能分解从代表目标系统整体功能的单个处理着手自顶向下不断把复杂的处理分解为子处理这样一层一层的分解下去直到仅剩下若干个容易实现的子处理功能为止然后用相应的工具来描述各个最低层的处理因此结构化方法是围绕实现处理功能的过程来的然而用户需求的变化大部分是针对功能的因此这种变化对于基于过程的设计来说是灾难性的用这种方法设计出来的系统结构常常是不稳定的 用户需求的变化往往造成系统结构的较大变化从而需要花费很大代价才能实现这种变化一的基本概念
对象是人们要进行研究的任何事物从最简单的整数到复杂的飞机等均可看作对象它不仅能表示具体的事物还能表示抽象的规则计划或事件
(2)对象的状态和行为
对象具有状态一个对象用数据值来描述它的状态
对象还有操作用于改变对象的状态操作就是对象的行为
对象实现了数据和操作的结合使数据和操作于对象的统一体中
具有相同或相似性质的对象的抽象就是类因此对象的抽象是类类的具体化就是对象也可以说类的实例是对象
类具有属性它是对象的状态的抽象用来描述类的属性
类具有操作它是对象的行为的抽象用操作名和实现该操作的方法来描述
(4)类的结构
在客观世界中有若干类这些类之间有一定的结构关系通常有两种主要的结构关系即一般--具体结构关系整体--部分结构关系
①一般具体结构称为分类结构也可以说是或关系或者是is a关系
②整体部分结构称为组装结构它们之间的关系是一种与关系或者是has a关系
(5)消息和方法
对象之间进行通信的结构叫做消息在对象的操作中当一个消息发送给某个对象时消息包含接收对象去执行某种操作的信息发送一条消息至少要包括说明接受消息的对象名发送给该对象的消息名即对象名方法名一般还要对参数加以说明参数可以是认识该消息的对象所知道的变量名或者是所有对象都知道的全局变量名
类中操作的实现过程叫做方法一个方法有方法名参数方法体消息传递如图10-1所示
(1)对象唯一性
每个对象都有自身唯一的标识通过这种标识可找到相应的对象在对象的整个生命期中它的标识都不改变不同的对象不能有相同的标识
分类性是指将具有一致的()和行为(操作)的对象抽象成类一个类就是这样一种抽象它反映了与应用有关的重要性质而忽略一些无关内容任何类的划分都是主观的但必须与具体的应用有关
继承性是子类自动共享父类和方法的机制这是类之间的一种关系在定义和实现一个类的时候可以在一个已经存在的类的基础之上来进行把这个已经存在的类所定义的内容作为自己的内容并加入若干新的内容
继承性是语言不同于其它语言的最重要的特点是语言所没有的
在类层次中子类只继承一个父类的和方法则称为单重继承
在类层次中子类继承了多个父类的和方法则称为多重继承
在软件开发中类的继承性使所建立的软件具有可扩充性这是信息组织与分类的行之有效的方法它简化了对象类的创建量增加了的可重性
采用继承性提供了类的规范的等级结构通过类的继承关系使公共的特性能够共享提高了软件的重用性
多态性是指相同的操作或函数过程可作用于多种类型的对象上并获得不同的结果不同的对象收到同一消息可以产生不同的结果这种现象称为
多态性允许每个对象以适合自身的方式去响应共同的消息
多态性增强了软件的灵活性和重用性(1)抽象
抽象是指强调实体的本质内在的属性在系统开发中抽象指的是在决定如何实现对象之前的对象的意义和行为使用抽象可以尽可能避免过早考虑一些细节
类实现了对象的数据即状态和行为的抽象
(2)性信息隐藏
性是保证软件部件具有优良的模块性的基础
的类是良好的模块类定义将其说明用户可见的外部接口与实现用户不可见的内部实现显式地分开其内部实现按其具体定义的作用域提供保护
对象是的最基本单位防止了程序相互依赖性而带来的变动影响的比传统语言的封装更为清晰更为有力
面向对象在不同级别上促进了共享
同一类中的共享同一类中的对象有着相同这些对象之间是结构行为特征的共享关系
在同一应用中共享在同一应用的中存在继承关系的各相似子类中存在和行为的继承使各相似子类共享共同的结构和行为使用继承来实现的共享这也是的主要优点之一
在不同应用中共享不仅允许在同一应用中共享信息而且为未来目标的可重用设计准备了条件通过类库这种机制和结构来实现不同应用中的信息共享
4.强调对象结构而不是程序结构
四的开发方法
开发方法的研究已日趋成熟国际上已有不少面向对象产品出现面向对象开发方法有Coad方法Booch方法和OMT方法等
1.Booch方法
Booch最先描述了的的基础问题指出面向对象开发是一种根本不同于传统的功能分解的设计方法的软件分解更接近人对客观事务的理解而功能分解只通过问题空间的转换来获得
2.Coad方法
Coad方法是1989年Coad和Yourdon提出的开发方法该方法的主要优点是通过多年来大系统开发的经验与概念的有机结合在对象结构属性和操作的认定方面提出了一套系统的原则该方法完成了从需求角度进一步进行类和的认定尽管Coad方法没有引入类和的术语但事实上已经在分类结构操作消息关联等概念中体现了类和类层次结构的特征
OMT方法是1991年由James Rumbaugh等5人提出来的其经典著作为的建模与设计
该方法是一种新兴的的开发方法开发的基础是对真实世界的对象建模然后围绕这些对象使用来进行独立于语言的设计面向对象的建模和设计促进了对需求的理解有利于开发得更清晰更容易维护的软件系统该方法为大多数应用领域的软件开发提供了一种实际的高效的保证努力寻求一种的实际方法
4.UML(Unified Modeling Language)语言
领域在1995年~1997年取得了前所未有的进展其成果超过软件工程领域过去15年的成就总和其中最重要的成果之一就是统一UML)的出现UML将是领域内占主导地位的
UML不仅统一了Booch方法OMT方法OOSE方法的表示方法而且对其作了进一步的发展最终统一为大众接受的UML是一种定义良好易于表达功能强大且普遍适用的它融入了领域的新思想新方法和新它的作用域不限于支持的分析与设计还支持从需求分析开始的软件开发全过程
·对象模型
对象模型表示了静态的结构化的系统数据性质描述了系统的静态结构它是从客观世界实体的对象关系角度来描述表现了对象的相互关系该模型主要关心系统中对象的结构属性和操作它是分析阶段三个模型的核心是两个模型的
1.对象和类
对象建模的目的就是描述对象
通过将对象抽象成类我们可以使问题抽象化抽象增强了模型的归纳能力
属性指的是类中对象所具有的性质数据值
(4) 操作和方法
操作是类中对象所使用的一种功能或变换类中的各对象可以共享操作每个操作都有一个目标对象作为其隐含参数
方法是类的操作的实现步骤
2.关联和链
关联是建立类之间关系的一种手段而链则是建立对象之间关系的一种手段
(1) 关联和链的含义
链表示对象间的物理与概念联结关联表示类之间的一种关系链是关联的实例关联是链的抽象
角色说明类在关联中的作用它位于关联的端点
(3) 受限关联
受限关联由两个类及一个限定词组成限定词是一种特定的属性用来有效的减少关联的限定词在关联的终端对象集中说明
限定提高了语义的增强了查询能力在现实世界中常常出现限定词
(4) 关联的多重性
关联的多重性是指类中有多少个对象与关联的类的一个对象相关常描述为一或多
图10-8表示了各种关联的小实心圆表示多个从零到多小空心圆表示零或一没有符号表示的是一对一关联
3.类的层次结构
(1) 聚集关系
聚集是一种整体-部分关系在这种关系中有整体类和部分类之分聚集最重要的性质是传递性也具有逆对称性
聚集可以有不同层次可以把不同分类聚集起来得到一颗简单的聚集树聚集树是一种简单表示比画很多线来将部分类联系起来简单得多对象模型应该容易地反映各级层次图10-10表示一个关于微机的多极聚集
(2)一般化关系
一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式它是一般---具体的关系一般化类称为你类具体类又能称为子类各子类继承了交类的性质而各子类的一些共同性质和操作又归纳到你类中因此一般化关系和继承是同时存在的一般化关系的符号表示是在类关联的连线上加一个小三角形如图10-11
4.对象模型
(1)模板模板是类关联一般化结构的逻辑组成
(2)对象模型
对象模型是由一个或若干个模板组成模板将模型分为若干个便于管理的子块在整个对象模型和类及关联的构造块之间模板提供了一种集成的中间单元模板中的类名及关联名是唯一的
·动态模型
动态模型是与时间和变化有关的系统性质该模型描述了系统的控制结构它表示了瞬间的行为化的系统控制
性质它关心的是系统的控制操作的执行顺序它表示从对象的事件和状态的角度出发表现了对象的相互行为
该模型描述的系统属性是触发事件事件序列状态事件与状态的组织使用状态图作为描述工具它涉及到事件状态操作等重要概念
事件是指定时刻发生的某件事
状态是对象的抽象对象的按照影响对象显著行为的性质将其归并到一个状态中去状态指明了对象
对输入事件的响应
状态图是一个标准的计算机概念他是有限自动机的图形表示这里把状态图作为建立动态模型的图形工具
状态图反映了状态与事件的关系当接收一事件时下一状态就取决于当前状态和所接收的该事件由该事件引起的状态变化称为转换
状态图是一种图用结点表示状态结点用圆圈表示圆圈内有状态名用箭头连线表示状态的转换上面标记事件名箭头方向表示转换的方向
·功能模型
功能模型描述了系统的所有计算功能模型指出发生了什么动态模型确定什么时候发生而对象模型确定发生的客体功能模型表明一个计算如何从输入值得到输出值它不考虑计算的次序功能模型由多张数据流图组成数据流图用来表示从源对象到目标对象的数据值的流向它不包含控制信息控制信息在动态模型中表示同时数据流图也不表示对象中值的组织值的组织在对象模型中表示图10-15给出了一个窗口系统的图标显示的数据流图
数据流图中包含有处理数据流动作对象和数据存储对象
数据流图中的处理用来改变数据值最低层处理是纯粹的函数一张完整的数据流图是一个高层处理
数据流图中的数据流将对象的输出与处理处理与对象的输入处理与处理联系起来在一个计算机中用数据流来表示一中间数据值数据流不能改变数据值
3.动作对象
动作对象是一种主动对象它通过生成或者使用数据值来驱动数据流图
4.数据存储对象
数据流图中的数据存储是被动对象它用来存储数据它与动作对象不一样数据存储本身不产生任何操作它只响应存储和访问的要求
分析的目的是对客观世界的系统进行建模本节以上面介绍的模型概念为基础结合银行网络系统的具体实例来构造客观世界问题的准确严密的
有三种用途用来明确问题需求为用户和开发人员提供明确需求为用户和开发人员提供一个协商的基础作为后继的设计和实现的
系统分析的第一步是陈述需求分析者必须同用户一块来提炼需求因为这样才表示了用户的真实意图其中涉及对需求的分析及查找丢失的信息下面以银行网络系统为例用进行开发
银行网络系统问题陈述设计支持银行网络的软件银行网络包括人工出纳站和分行共享的自动出纳机每个分理处用分理处计算机来保存各自的帐户处理各自的事务各自分理处的出纳站与分理处计算机通信出纳站录入帐户和事务数据自动出纳机与分行计算机通信分行计算机与拨款分理处结帐自动出纳机与用户接口接受现金卡与分行计算机通信完成事务发放现金打印收据系统需要记录保管和安全措施系统必须正确处理同一帐户的并发访问每个分处理为自己的计算机准备软件银行网络费用根据顾客和现金卡的数目分摊给各分理处
图10-18给出银行网络系统的示意图
二建立对象模型
首先标识和关联因为它们影响了整体结构和解决问题的方法其次是增加属性进一步描述类和关联的基本网络使用继承合并和组织类最后操作增加到类中去作为构造动态模型和功能模型的副产品
构造对象模型的第一步是标出来自问题域的相关的对象类对象包括物理实体和概念所有类在应用中都必须有意义在问题陈述中并非所有类都是明显给出的有些是隐含在问题域或一般知识中的
按图10-19所示的过程确定类
查找问题陈述中的所有名词产生如下的暂定类
软件 银行网络 出纳员 自动出纳机 分行
分处理 分处理计算机 帐户 事务 出纳站
事务数据 分行计算机 现金卡 用户 现金
收据 系统 顾客 费用 帐户数据
访问 安全措施 记录保管
根据下列标准去掉不必要的类和不正确的类
1 冗余类若两个类表述了同一个信息 保留最富有描述能力的类如&用户&和&顾客&就是重复的描述因为&顾客&最富有描述性因此保留它
2 不相干的类除掉与问题没有关系或根本无关的类例如摊派费用超出了银行网络的范围
3 模糊类类必须是确定的有些暂定类边界定义模糊或范围太广如&记录保管&就模糊类它是&事务&中的一部分
4某些名词描述的是对象的属性则从暂定类中删除如果某一性质的独立性很重要就应该把他归属到类而不把它作为属性
5 操作如果问题陈述中的名词有动作含义则描述的操作就不是类但是具有自身性质而且需要独立存在的操作应该描述成类如我们只构造电话模型&拨号&就是动态模型的一部分而不是类但在电话拨号系统中&拨号&是一个重要的类它日期时间受话地点等属性
在银行网络系统中模糊类是&系统&&安全措施&&记录保管&&银行网络&等属于属性的有&帐户数据&&收据&&现金&&事务数据&属于实现的如&访问&&软件&等这些均应除去
2.准备数据字典
为所有建模实体准备一个数据字典准确描述各个类的精确含义描述当前问题中的类的范围包括对类的成员用法方面的假设或限制
3.确定关联
两个或多个类之间的相互依赖就是关联一种依赖表示一种关联可用各种方式来实现关联但在中应删除实现的考虑以便设计时更为灵活关联常用描述性动词或动词词组来表示其中有物理位置的表示传导的动作通信所有者关系条件的满足等从问题陈述中抽取所有可能的关联表述把它们记下来但不要过早去细化这些表述
下面是银行网络系统中所有可能的关联大多数是直接抽取问题中的动词词组而得到的在陈述中有些动词词组表述的关联是不明显的最后还有一些关联与客观世界或人的假设有关必须同用户一起核实这种关联因为这种关联在问题陈述中找不到
银行网络问题陈述中的关联
·银行网络包括出纳站和自动出纳机
·分行共享自动出纳机
·分理处提供分理处计算机
·分理处计算机保存帐户
·分理处计算机处理帐户支付事务
·分理处拥有出纳站
·出纳站与分理处计算机通信
·出纳员为帐户录入事务
·自动出纳机接受现金卡
·自动出纳机与用户接口
·自动出纳机发放现金
·自动出纳机打印收据
·系统处理并发访问
·分理处提供软件
·费用分摊给分理处
隐含的动词词组
·分行由分理处组成
·分理处拥有帐户
·分行拥有分行计算机
·系统提供记录保管
·系统提供安全
·顾客有现金卡
基于问题域知识的关联
·分理处雇佣出纳员
·现金卡访问帐户
使用下列标准去掉不必要和不正确的关联
1 若某个类已被删除那么与它有关的关联也必须删除或者用其它类来重新表述在例中我们删除了&银行网络&相关的关联也要删除
2 不相干的关联或实现阶段的关联删除所有问题域之外的关联或涉及实现结构中的关联如&系统处理并发访问&就是一种实现的概念
3关联应该描述应用域的结构性质而不是瞬时事件因此应删除&自动出纳机接受现金卡&&自动出纳机与用户接口&等
4 派生关联省略那些可以用关联来定义的关联因为这种关联是冗余的银行网络系统的初步如图10-20所示其中含有关联
4.确定属性
属性是个体对象的性质,属性通常用修饰性的名词词组来表示.形容词常常表示具体的可枚举的,属性不可能在问题陈述中完全表述出来,必须借助于应用域的知识及对客观世界的知识才可以找到它们只考虑与具体应用直接相关的属性不要考虑那些超出问题范围的属性首先找出重要属性避免那些只用于实现的属性要为各个属性取有意义的名字按下列标准删除不必要的和不正确的属性
1 对象若实体的独立存在比它的值重要那么这个实体不是属性而是对象如在邮政目录中&城市&是一个属性然而在人口普查中&城市&则被看作是对象在具体应用中具有自身性质的实体一定是对象
2 定词若取决于某种具体上下文则可考虑把该属性重新表述为一个限定词
3 名称名称常常作为限定词而不是对象的属性当名称不依赖于上下文关系时名称即为一个对象属性尤其是它不惟一时
4在考虑对象时引入对象标识符表示在对象模型中不列出这些对象标识符它是隐含在对象模型中只列出存在于应用域的属性
5 内部值若属性描述了对外不透明的对象的内部状态则应从对象模型中删除该属性
6 细化忽略那些不可能对大多数操作有影响的属性
5.使用继承来细化类
使用继承来共享公共机构以次来组织类可以用两种方式来进行
1自底向上通过把现有类的共同性质一般化为父类寻找具有相似的属性关系或操作的类来发现继承例如&远程事务&和&出纳事务&是类似的可以一般化为& 事务&有些一般化结构常常是基于客观世界边界的现有分类只要可能尽量使用现有概念对称性常有助于发现某些丢失的类
2自顶向下将现有的类细化为更具体的子类具体化常常可以从应用域中明显看出来应用域中各枚举字情况是最常见的具体化的来源例如菜单可以有固定菜单顶部菜单弹出菜单下拉菜单等这就可以把菜单类具体细化为各种具体菜单的子类当同一关联名出现多次且意义也相同时应尽量具体化为相关联的类例如&事务&从&出纳站&和&自动出纳机&进入则&录入站&就是&出纳站&和&自动出纳站&的一般化在类层次中可以为具体的类分配属性和关联各属性和都应分配给最一般的适合的类有时也加上一些修正
应用域中各枚举情况是最常见的具体化的来源
6.完善对象模型
对象建模不可能一次就能保证模型是完全正确的软件开发的整个过程就是一个不断完善的过程模型的不同组成部分多半是在不同的阶段完成的如果发现模型的缺陷就必须返回到前期阶段去修改有些细化是在动态模型和功能模型完成之后才开始进行的
1 几种可能丢失对象的情况及解决办法
·同一类中存在毫无关系的属性和操作则分解这个类使各部分相互关联
·一般化体系不清楚则可能分离扮演两种角色的类
·存在无目标类的操作则找出并加上失去目标的类
·存在名称及目的相同的冗余关联则通过一般化创建丢失的父类把关联组织在一起
2 查找多余的类
类中缺少属性操作和关联则可删除这个类
3查找丢失的关联
丢失了操作的访问路径则加入新的关联以回答查询
4 网络系统的具体情况作如下的修改
①现金卡有多个独立的特性把它分解为两个对象卡片权限和现金卡
a.卡片权限它是银行用来鉴别用户访问权限的卡片表示一个或多个用户帐户的访问权限各个卡片权限对象中可能具有好几个现金卡每张都带有安全码卡片码它们附在现金卡上表现银行的卡片权限
b.现金卡它是自动出纳机得到表示码的数据卡片它也是银行和现金卡代码的数据载体
②&事务&不能体现对帐户之间的传输描述的一般性因它只涉及一个帐户一般来说在每个帐户中一个&事务&包括一个或多个&更新&一个&更新&是对帐户的一个动作它们是取款存款查询之一一个&更新&中所有&更新&应该是一个原子操作
③&分理处&和&分离处理机&之间&分行&和&分行处理机&之间的区别似乎并不影响分析计算机的通信处理实际上是实现的概念将&分理处计算机&并入到&分理处&将&分行计算机&并入到&分行&
三建立动态模型
动态分析从寻找事件开始然后确定各对象的可能事件顺序在分析阶段不考虑算法的执行算法是实现模型的一部分
2.确定事件
确定所有外部事件事件包括所有来自或发往用户的信息外部设备的信号输入转换和动作可以发现正常事件但不能遗漏条件和异常事件
3.准备事件跟踪表
把表示成一个事件跟踪表即不同对象之间的表对象为表中的列给每个对象分配一个独立的列
4.构造状态图
对各对象类建立状态图反映对象接收和发送的事件每个事件跟踪都对应于状态图中一条路径
功能模型用来说明值是如何计算的表明值之间的依赖关系及相关的功能数据流图有助于表示功能依赖关系其中的处理应于状态图的和动作其中的数据流对应于中的对象或属性
1.确定输入值输出值
先列出输入输出值输入输出值是系统与外界之间的事件的参数
2.建立数据流图
数据流图说明输出值是怎样从输入值得来的数据流图通常按层次组织
五确定操作
在建立对象模型时确定了类关联结构和属性还没有确定操作只有建立了动态模型和功能模型之后才可能最后确定类的操作
是把分析阶段得到的需求转变成符合成本和质量要求的抽象的系统实现方案的过程从分析到是一个逐渐扩充模型的过程
瀑布模型把设计进一步划分成概要设计和详细设计两个阶段类似地也可以把再细分为系统设计和对象设计系统设计确定实现系统的策略和目标系统的高层结构对象设计确定解空间中的类关联接口形式及实现操作的
面向对象开发方法很自然地支持了把系统分解成模块的设计原则对象就是模块它是把和操作这些数据的方法紧密地结合在一起所构成的模块
不仅支持过程抽象而且支持数据抽象
3.信息隐藏
在中信息隐藏通过对象的性来实现
在中对象是最基本的模块因此耦合主要指不同对象之间相互关联的紧密程度低耦合是设计的一个重要标准因为这有助于使得系统中某一部分的变化对其它部分的影响降到最低程度
(1)操作内聚
(3)一般具体内聚
二的启发规则
1.设计结果应该清晰易懂
使设计结果清晰易懂易读是提高软件可维护性和可重用性的重要措施显然人们不会重用那些他们不理解的设计
(1)用词一致
(2)使用已有的协议
(3)减少消息模式的数量
(4)避免模糊的定义
2.一般具体结构的深度应适当
3.设计简单类
应该尽量设计小而简单的类这样便以开发和管理为了保持简单应注意以下几点
(1)避免包含过多的属性
(2)有明确的定义
(3)尽量简化对象之间的合作关系
(4)不要提供太多的操作
4.使用简单的协议
一般来说消息中参数不要超过3个
5.使用简单的操作
出来的类中的操作通常都很小一般只有3至5行源程序语句可以用仅含一个动词和一个宾语的简单句子描述它的功能
6.把设计变动减至最小
通常设计的质量越高设计结果保持不变的时间也越长即使出现必须修改设计的情况也应该使修改的范围尽可能小
三系统设计
系统设计是及建立解答的高级策略必须制定解决问题的基本方法系统的高层结构形式包括子系统的分解它的固有并发性子系统分配给硬软件数据存储管理资源协调软件控制实现人机交互接口
1.系统设计概述
设计阶段先从高层入手然后细化系统设计要决定整个结构及风格这种结构为后面设计阶段的更详细策略的设计提供了基础
(1)系统分解
系统中主要的组成部分称为子系统子系统既不是一个对象也不是一个功能而是类关联操作事件和约束的集合
(2)确定并发性
现实世界及硬件中不少对象均是并发的
(3)处理器及任务分配
各并发子系统必须分配给单个硬件单元要么是一个一般的处理器要么是一个具体的功能单元
(4)数据存储管理
系统中的内部数据和外部数据的存储管理是一项重要的任务通常各数据存储可以将文件组合在一起不同数据存储要在费用访问时间容量及可靠性之间做出折衷考虑
(5)全局资源的处理
必须确定全局资源并且制定访问全局资源的策略
(6)选择软件控制机制
中所有交互行为都表示为对象之间的事件系统设计必须从多种方法中选择某种方法来实现软件的控制
(7)人机交互接口设计
设计中的大部分都与稳定的状态行为有关但必须考虑用户使用系统的交互接口
2.系统结构的一般
3.系统分解建立系统的体系结构
可用的软件库以及程序员的编程经验
通过分析得到的问题域精确模型为设计体系结构奠定了良好的基础建立了完整的
4.选择软件控制机制
软件系统中存在两种控制流流和内部控制流
5.数据存储管理
数据存储管理是系统存储或检索对象的基本设施它建立在某种数据存储管理系统之上并且隔离了数据存储管理模式的影响
6.设计人机交互接口
在分析过程中已经对用户界面需求作了初步分析在过程中则应该对系统的人机交互接口进行详细设计以确定人机交互的细节其中包括指定窗口和报表的形式设计命令层次等项内容
四对象设计
1.对象设计概述
2.三种模型的结合
(1)获得操作
(2)确定操作的目标对象
3.算法设计
4.优化设计
5.控制的实现
6.调整继承
7.关联的设计
采用开发软件的基本目的和主要优点是通过重用提高软件的生产率因此应该优先选用能够最完善最准确地表达问题域语义的
在选择编程语言时应该考虑的因素还有对用户分析设计和编码所能提供的培训操作在使用这个期间能提供的技术支持能提供给开发人员使用的开发工具开发平台对机器性能和内存的需求集成已有软件的容易程度
2.程序设计风格
(1)提高重用性
(2)提高可扩充性
(3)提高健壮性
二类的实现
在开发过程中类的实现是核心问题在用风格所写的系统中所有的数据都被在类的实例中而整个程序则被在一个更高级的类中在使用既存部件的系统中可以只花费少量时间和量来实现软件只要增加类的实例开发少量的新类和实现各个对象之间互相通信的操作就能建立需要的软件
一种方案是先开发一个比较小比较简单的来作为开发比较大比较复杂的类的基础
(1)原封不动重用
(2)进化性重用
一个能够完全符合要求特性的类可能并不存在
(3)废弃性开发
不用任何重用来开发一个新类
(4)错误处理
一个类应是自主的有责任定位和报告错误
三应用系统的实现
应用系统的实现是在所有的类都被实现之后的事实现一个系统是一个比用过程性方法更简单更简短的过程有些实例将在类的初始化过程中使用而其余的则必须用某种主过程显式地加以说明或者当作系统最高层的类的表示的一部分
在C++和C中有一个main( )函数可以使用这个过程来说明构成系统主要对象的那些类的实例
测试在同一个类中的所有方法和属性之间的相互作用
测试一组协同的类之间的相互作用
把各个子系统组装成完整的软件系统在组装过程中同时进行测试
九和基于对象的区别
很多人没有区分和基于对象两个不同的概念的三大特点继承缺一不可通常基于对象是使用对象但是无法利用现有的对象模板产生新的继而产生新的对象也就是说基于对象没有继承的特点而表示为父类类型的子类对象实例没有了继承的概念也就无从谈论多态很多流行都是基于对象的它们使用一些好的对象调用对象的方法设置对象的属性但是它们无法让程序员派生新他们只能使用现有对象的方法和属性所以当你判断一个新的是否是的时候通常可以使用后两个特性来加以判断面向对象和基于对象 都实现了的概念但是面向对象实现了继承和而基于对象没有实现这些的确很饶口
从事的人按照分工来说可以分为类库的创建者和类库的使用者使用类库的人并不都是具备了思想的人通常知道如何继承和派生新对象就可以使用类库了然而我们的思维并没有真正的转过来使用类库只是在形式上是面向对象而实质上只是库函数的一种扩展
是一种思想是我们考虑事情的方法通常表现为我们是将问题的解决按照过程方式来解决呢还是将问题抽象为一个对象来解决它很多情况下我们会不知不觉的按照过程方式来解决它而不是考虑将要解决问题抽象为对象去解决它有些人打着的幌子干着过程编程的勾当
新手上路我有疑问投诉建议参考资料 查看}

我要回帖

更多关于 android rom开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信