基本概念
对象:对象是由数据及其操作所组成的封装体,是系统中用来描述客观事物的一个封装,是构成系统的基本单位,采用计算机语言描述,对象是由一组属性和这组属性进行操作的一组服务构成。<br>三个基本要素:对象标识、对象状态、对象行为。
类:类是现实世界中实体的形式化描述,类将该实体的数据和函数封装在一起。类的数据也叫属性、状态或特征,它表现类静态的一面。类的函数也叫功能、操作、服务,表现为类动态的一面。
类和对象的关系:对象是类的实际例子。如果将对象比作房子,那么类就是房子的设计图纸。<br>①每一个对象都是某一个类的实例。<br>②每一个类在某一时刻都有零或更多实例。<br>③类是静态,它们的存在、语义和关系在程序执行前就已经定义好了,对象是动态的。它们在程序执行时可以被创建和删除。<br>④类是生成对象的模板
抽象:抽象是通过特特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象。
封装:是将相关的概念组成一个单元,然后通过一个名词来引用它。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外的接口进行。
继承:表示类之间的层次关系,这种关系使得某类对象可以继承另外一类对象的特征(attributes)和能力(operations),继承可以分为单继承和多继承,单继承是子类从一个父类继承,多继承中的子类可以从多个父类继承。Java是单继承,而C++允许多继承。
多态:多态性是一种方法,这种方法使得在多类中可以定义同一个操作或属性名,并在每个类中可以有不同的实现。多态性使得一个属性或变量在不同的时期可以表示不同类的对象。
接口:所谓接口就是说对操作规范的说明。接口知识说明操作应该做什么(What),但是没有定义操作应该做什么(How)。接口可以理解成为类的一个特例,它只规定实现此接口的操作方法,而把真正的实现细节由实现该接口的类去实现。<br>接口在面向对象和设计过程起到了至关重要的桥梁作用,系统分析员通常先把有待实现的功能封装并定义成接口,而后期程序员依据此接口进行编码实现。
消息:是对象间交互的手段。
组件:组件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能)并提供了一组接口的实现方法。可以认为组件是一个封装的代码模块或者大粒度的运行模块,也可以将组件理解为具有一定功能、能够独立工作或同其他组件组合起来的协同工作的对象。<br>对组件的要求:应该按照可复用的要求进行设计、实现、打包、编写文档。组件应该是内聚的,并具有相当稳定的公开的接口。
模式:模式是一条由三部分组成的规则,它表示了以个特定的环境、一个问题和一个解决方案之间的关系。每个模式描述了一个不断重复发生的问题,以及该问题的解决方案。这样就能一次又一次的使用该方案而不必做重复劳动。
复用:软件复用是指将已有软件及其有效成分用于构建新的软件或系统。组件技术是软件实现复用的关件。
可视化建模与统一建模语言。
统一建模语言 UML
是一个通用的可视化建模语言,它是面向对象分析和设计的一种标准化表示,用于对软件的描述、可视化处理、构造和建立软件系统的文档。它记录了对所构造的系统的决定和理解,用于对系统的理解、设计、浏览、配置、维护和信息控制。
特征:①不是可视化的程序设计语言,而是可视化的建模语言。<br>②是一种建模语言规范说明,是面向对象分析与设计的一种标准表示。<br>③不是过程,也不是方法,但允许任何一种过程和方法使用它。<br>④简单并且可扩展,具有扩展和专有化机制,便于扩展,无需对核心概念进行修改。<br>⑤为面向对象的设计与开发中涌现出的高级概念(如协作、框架、模式和组件)提供支持,强调在软件开发中,对架构、框架、模式和组件的重用。<br>⑥与最好的软件工程实践经验集成。<br>
UML 中的各种组件和概念之间没有明显的划分界限,但为方便起见,用视图来划<br>分这些概念和组件。视图只是表达系统某一方面特征的UML,建模组件的子集。在每一<br>类视图中使用一种或多种特定的图来可视化地表示视图中的各种概念<br>视图被划分成三个视图域:结构、动态行为和模型管理<br>①结构描述了系统中的结构成员及其相互关系,模型元素包括类、用例、构件和节点。模型元素为研究系统动态行为奠定了基础。结构视图包括静态视图、用例视图和实现视图。<br>②动态行为描述了系统随时间变化的行为。行为用从静态视图中抽取的瞬间值的变化来描述。动态行为视图包括:状态机视图、活动视图、交互视图。<br>③模型管理说明了模型的分层组织结构。包是模型的基本组织单元,特殊的包还包括模型和子系统。
①用例图 Use Case Diagram<br>②类图 Class Diagram<br>③对象图 Object Diagram<br>④构件图 Component Diagram<br>⑤部署图 Deployment Diagram<br>⑥状态图 State Diagram<br>⑦序列图 Sequence Diagram<br>⑧协作图 Collaboration Diagram<br>⑨活动图 Activity Diagram
使用面向对象技术进行软件开发的最佳实践 ——RUP
RUP全程为统一软件开发过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算的前提下,确保满最终用户需求的高质量产品。
RUP提高了团队的生产力,对于所有关键开发活动,它为每个团队成员提供了使用准则、模板、工具指导来进行范文的知识基础。而通过对相同知识基础的理解,无论是进行需求分析、设计、测试项目或者配置管理,均能确保全体成员共享相同的知识、过程和开发软件的视图。<br>RUP 能对大部分开发过程提供自动化的工具支持。它们被用来创建和维护软件开发<br>过程(可视化建模、编程、测试等)的各种各样的产物——特别是模型。<br>
6个基本最佳实践经验:<br>①迭代式开发<br>②需求管理<br>③使用以组件为中心的软件架构<br>④可视化软件建模<br>⑤验证软件质量<br>⑥控制软件变更
RUP将周期划分为四个连续阶段:即初始连续阶段、细化阶段、构造阶段、交付阶段。<br>
面向对象系统分析
概念
面向对象的系统分析阶段将运用面向对象的方法分析问题域,建立基于对象、消息的业务规模,形成对客观世界和业务本身的正确认识。
面向对象的分析模型
由用例模型、类、对象模型、对象、关系模型和对象-行为模型组成
用例模型:一个用例模型由若干幅用例图组成,用例描述了用户与系统之间的交互,其重点是系统为用户做什么。用例模型描述全部的系统功能行为。
类对象模型:描述系统所涉及的全部类以及对象。每个类和对象都通过属性、操作和调研者来进一步描述
对象关系模型:描述对象之间的静态关系,同时定义了系统中所有重要的消息路径,它也可以具体化到对象属、操作者和协作者。对象关系模型包括类图、对象图。
对象行为模型
描述了系统的动态行为。对象-行为模型包括状态图、顺序图、协作图和活动图。
面向对象的分析方法
面向对象分析的主要目标:
①建立用户需求<br>②建立创建软件设计的基础<br>③定义软件完成后可被确认的一组需求。
面向对象分析的步骤
①发现角色/参与者<br>②发现用例<br>③建立用例模型 use case model<br>④进行领域分析<br>⑤建立对象关系模型<br>⑥建立对象行为模型<br>⑦建立功能模型
面向对象系统设计
概念
面向对象的系统设计阶段对分析阶段给出的问题域模型,用面向对象的方法设计出软件基础架构(概要设计)和完整的类结构(详细设计),以实现业务功能。
主要内容
设计阶段主要包括用例设计、类设计和子系统设计<br>
用例设计:<br>①利用交互改进用例实现<br>②调整对设计类的操作需求<br>③调整对于系统和它们的接口的操作需求<br>④调整对封装体的操作需求
类设计:<br>①确保类可为用例实现提供必须的行为<br>②确保提供充足的信息来明确无误的实施类<br>③处理和类有关的非功能性需求<br>④包含用于类的设计机制
子系统设计:<br>①用所包含类的协作来定义在于系统接口中指定的行为<br>②记录于系统的内部结构<br>③定义子系统接口和包含类之间的实现关系<br>④确定对其他子系统的依赖关系<br>