【体系架构设计师】九、软件工程(面向对象方法|逆向工程) ...

打印 上一主题 下一主题

主题 520|帖子 520|积分 1560

目次
六、面向对象方法
6.1 基本概念
6.2 面向对象的分析
6.2.1 用例关系 
6.2.2 类之间的关系
6.3 面向对象的设计
 6.4 面向对象设计原则与设计模式
6.5 面向对象软件的测试
七、逆向工程
历年真题训练


六、面向对象方法

        面向对象的分析方法 (Object-Oriented Analysis,OOA), 是在一个体系的开发过程中进行了体系业务观察以后,按照面向对象的头脑来分析问题。 OOA 与结构化分析有较大的区别。OOA 所强调的是在体系观察资料的基础上,针对O O 方法所必要的素材进行的归类分析和整理,而不是对管理业务近况和方法的分析。
        OOA 模型由5个条理(主题层、对象类层、结构层、属性层和服务层)和5个运动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构;另一种称为组装结构。分类结构就是所谓的一样平常与特殊的关系。组装结构则反映了对象之间的团体与部分的关系。
6.1 基本概念

        对象:由数据及其操纵所构成的封装体,是体系中用来描述客观事务的一个实体,是构成体系的一个基本单位。一个对象通常可以由对象名、属性和方法3个部分组成。
        类:实际世界中实体的形式化描述,类将该实体的属性(数据)和操纵(函数)封装在一起。对象是类的实例,类是对象的模板。类可以分为三种:实体类、接口类(边界类)和控制类
                实体类的对象表示实际世界中真实的实体,如人、物等。
                接口类(边界类)的对象为用户提供一种与体系相助交互的方式,分为人和体系两大类,此中人的接口可以是表现屏窗口、Web 窗体、对话框、菜单、列表框、其他表现控制、条形码、二维码大概用户与体系交互的其他方法。体系接口涉及到把数据发送到其他体系,大概从其他体系吸收数据。
                控制类的对象用来控制运动流,充当协调者
        抽象:通过特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是实际世界中一个实体的抽象,一个类是一组对象的抽象,抽象是一种单一化的描述,它强调给出与应用相关的特性,扬弃不相关的特性。
        封装:是一种信息潜伏技能,将相关的概念组成一个单元模块,并通过一个名称来引用。面向对象封装是将数据和基于数据的操纵封装成一个团体对象对数据的访问或修改只能通过对象对外提供的接口进行。
        继续:表示类之间的条理关系(父类与子类),这种关系使得某类对象可以继续别的一类对象的特征,又可分为单继续和多继续。
        多态:不同的对象收到同一个消息时产生完全不同的结果。包括参数多态(不同类型参数多种结构类型)、包罗多态(父子类型关系)、过载多态(类多态似于重载,一个名字不同寄义)、强制多态(强制类型转换)四种类型。由继续机制支持,将通用消息放在抽象层,具体不同的功能实现放在低层。
        接口:描述对操纵规范的说明,其只说明操纵应该做什么,并没有定义操纵怎样做。
        消息:体现对象间的交互,通过它向目的对象发送操纵哀求。
        覆盖:子类在原有父类接口的基础上,用得当于本身要求的实现去置换父类中的相应实现。即在子类中重定义一个与父类同名同参的方法。
        函数重载:与覆盖要区分开,函数重载与子类父类无关,且函数是同名不同参数。
  1.     public int add(int x){
  2.         return x+10;
  3.     }
  4.     public int add(int x,int y){
  5.         return x+y;
  6.     }
复制代码
        绑定:是一个把过程调用和响应调用所必要执行的代码加以结合的过程。在一样平常的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
6.2 面向对象的分析

        面向对象的分析是为了确定问题域明白问题。包罗五个运动:认定对象构造对象、描述对象间的相互作用、确定对象的操纵、定义对象的内部信息。
        面向对象需求建模:

6.2.1 用例关系 


        泛化代表一样平常与特殊的关系。在用例泛化中,子用例表示父用例的特殊形式。子用例从父用例处继续行为和属性,还可以添加行为或覆盖、改变已继续的行为。当体系中具有一个或多个用例是较一样平常用例的特化时,就利用用例泛化。泛化用带空心箭头的实线表示,箭头的方向由子用例指向父用例
        包罗(include)关系是一种依赖联系,是指一个基本用例的行为包括了另一个用例。用一条从基本用例指向被包罗的用例的虚箭头线表示,并在箭头上标识<<include>>。包罗关系典型的应用就是复用,偶然当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包罗的用例;
        扩展关系(Extension)就是将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目的更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行本身。但是扩展用例对基用例不可见。
6.2.2 类之间的关系

        依赖:一个事物的语义依赖于另一个事物的语义的变革而变革。
        关联:是一种结构关系,描述了一组链,链是对象之间的毗连。分为组合和聚合,都是部分和团体的关系,此中组合事物之间关系更强。两个类之间的关联,实际上是两个类所饰演脚色的关联,因此,两个类之间可以有多个由不同脚色标识的关联。
                组合是一种团体与部分的关系。但部分不能脱离团体而单独存在,组合关系是关联关系的一种,是比聚合关系还要强的关系。例如鸟是团体,翅膀是部分->鸟死了,翅膀也就没用了。
                聚合是一种团体与部分的关系。且部分可以脱离团体而单独存在。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。例如茶具,杯子和茶壶可以聚合成一套茶具,杯子也可以单独拿出来喝水。
        泛化:一样平常/特殊的关系,子类和父类之间的关系。
        实现:一个类元指定了另一个类元保证执行的左券。

6.3 面向对象的设计

        面向对象的设计是设计分析模型和实现相应源代码,设计问题域的解决方案,与技能相关。OOD同样应依照抽象、信息潜伏、功能独立、模块化等设计准则。
        面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成设计模型则包罗以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处置惩罚过程的运动图

 6.4 面向对象设计原则与设计模式

设计模式之设计原则_设计模式 四大原则是什么-CSDN博客文章浏览阅读361次。开放-封闭原则(开闭原则)、单一职责原则、里氏更换原则、依赖倒置原则、接口隔离原则、迪米特法则(最少知道原则)、合成复用原则!_设计模式 四大原则是什么
https://shuaici.blog.csdn.net/article/details/116494494设计模式之创建型模式_创建型模式主要有哪些?主要应用场景是什么?-CSDN博客文章浏览阅读1.8k次,点赞3次,收藏4次。抽象工厂模式、构建器模式、工厂方法模式、原型模式、单例模式!_创建型模式主要有哪些?主要应用场景是什么?
https://shuaici.blog.csdn.net/article/details/116521002设计模式之结构型模式_设计模式结构型模式-CSDN博客文章浏览阅读412次。代理模式、适配器模式、桥接模式、装饰模式、表面模式、享元模式、组合模式!_设计模式结构型模式
https://shuaici.blog.csdn.net/article/details/116799072设计模式之行为型模式_类行为模式 对象行为模式-CSDN博客文章浏览阅读883次。模板模式、战略模式、责任链模式、迭代器模式、命令模式、状态模式、备忘录模式、中介者模式、解释器模式、观察者模式、访问者模式、委派模式!_类行为模式 对象行为模式
https://shuaici.blog.csdn.net/article/details/117027040        
6.5 面向对象软件的测试

        一样平常来说,对面向对象软件的测试可分为下列4个条理进行
        (1)算法层。测试类中定义的每个方法,基本上相称于传统软件测试中的单元测试。
        (2)类层。测试封装在同一个类中的所有方法与属性之间的相互作用。在向面对象软件中类是基本模块,因此可以认为这是面向对象测试中所特有的模块测试。
        (3)模板层。测试一组协同工作的类之间的相互作用,大体上相称于传统软件测试中的集成测试,但是也有面向对象软件的特点(例如,对象之间通过发送消息相互作用)。
        (4)体系层。把各个子体系组装成完整的面向对象软件体系,在组装过程中同时进行测试。
七、逆向工程

        软件复用是将已有软件的各种有关知识用于创建新的软件,以缩减软件开发和维护的花费。软件复用是进步软件生产力和质量的一种重要技能。早期的软件复用主要是代码级复用,被复用的知识专指程序,厥后扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
        逆向工程:软件的逆向工程是分析程序,力图在比源代码更高抽象条理上创建程序的表示过程,逆向工程是设计的规复过程。逆向工程的四个级别:
        实现级:包括程序的抽象语法树、符号表、过程的设计表示。
        结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。
        功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。
        领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如E-R模型。
   此中,实现级抽象级别最低,完备性最高领域级抽象级别最高,完备性最低。
          与逆向工程相关的概念有重构、设计规复、再工程和正向工程
                (1)重构是指在同一抽象级别上转换体系描述形式。
                (2)设计规复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
                (3)再工程是指在逆向工程所获得信息的基础上,修改或重构已有的体系,产生体系的一个新版本。再工程是对现有体系的重新开发过程,包括逆向工程、新需求的思量过程和正向工程三个步调。它不仅能从已存在的程序中重新获得设计信息,而且还能利用这些信息来重构现有体系,以改进它的综合质量。在利用再工程重构现有体系的同时,一样平常会增加新的需求,包括增加新的功能和改善体系的性能。
                (4)正向工程是指不仅从现有体系中规复设计信息,而且利用该信息去改变或重构现有体系,以改善其团体质量。

历年真题训练

        1.一个类中可以拥有多个名称相同而参数表(参数类型或参数个数或参数类型顺序)不同的方法称为()。
                A.方法标记
                B.方法调用
                C.方法重载
                D.方法覆盖
        2.在某销售体系中,客户接纳扫描二维码进行付出。若接纳面向对象方法开发该销售体系,则客户类属于(1)类,工维码类属于(2)类。
                (1)A.接口B.实体C.控制D.状态
                (2)A.接口B.实体C.控制D.状态
        3.面向对象的分析模型主要由顶层架构图、用例与用例图和(1)构成;设计模型则包罗以(2)表示 的软件体系机构图、以交互图表示的用例实现图、完整精确的类图、描述复杂对象的(3)和用以描述流程化处置惩罚过程的运动图等。
                (1)A.数据流模型                B.领域概念模型
                    C.功能分解图                D.功能需求模型
                (2)A.模型视图控制器         B.组件图
                    C.包图                           D.2层、3层或N层
                (3)A.序列图                        B.协作图
                    C.流程图                        D.状态图
        4.在面向对象设计的原则中、()原则是指抽象不应该依赖予细节,细节应该依赖于抽象,即应针对接口编程,而不是针对实现编程。
                A.开闭         B.里氏更换
                C.最少知识  D.依赖倒置
人工分割线-答案
        1. C
        2. B、A
        3. B、C、D
        4. D

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表