OOAD与UML

学习目标:

理解与掌握面向对象的概念与方法

  • 使用UML
  • 完成面向对象的分析与设计工作
  • 了解OO的设计原则及一些典型的设计模式

什么是面向对象?

面向对象(Object-Orientation,简称OO)是一种系统建模技术

面向对象编程是(Object-Orientation Programming,简称OOP)是按照OO的方法学来开发程序的过程

通过分析系统内对象的交互来描述或建模一个系统

交互的对象最终以类的形式组织

OO的方法由三部分组成

  1. 过程
  2. 标识
  3. 规则

在软件工程早期,主流是结构化编程。编程时首先开发标准代码块,然后将代码复制粘贴到编写的每个应用程序中,尽管这样做可以在一定程度上减少新应用程序的开发时间,但如果代码需要改变,则开发人员需要在复制代码的每个地方进行修改。

随着软件复杂度的不断提高及对软件开发周期越来越短的要求,传统的结构化编程方式已不能适应现在的环境,面向对象编程方式应运而生。通过面向对象的方法,应用程序被分成许多小块(对象),这些对象彼此独立,然后可以通过组合这些对象,建立应用程序,如同建造一座房屋(应用程序),我们可以先把基本的砖块(对象)准备好,那么建造过程中我们只需要按要求把这些砖块搭建起来就可以了。

对象:

一个客观存在的、唯一的实体

是面向对象编程过程中分析与解决问题的出发点与基础

拥有自己的标识、数据与行为

可以简单或复杂

可以抽象或具体

在OOP中的一个类的动态实例

如Student----------id,name,age(attributes)

               ----------setName,getName,countScore(methods)

               ----------new Student()

类:

类是对象的模板

对象通过类实例化产生

一个类可以创建多个对象

OOAD是根据OO的方法学,对软件进行分析和设计的过程

---- OOA 分析阶段

---- OOD 设计阶段

面向对象的分析与设计主要分为两个阶段,其中第一个阶段称之面向对象分析(OOA)阶段,其任务在于弄清用户需要软件解决什么具体问题,是一个研究问题域的过程;第二个阶段称之为面向对象设计(OOD)阶段,用以决定软件的总体结构(例如整个系统包括多少个子系统,每个子系统又包括多少模块等等),以及每个模块的内部逻辑,包括模块的控制结构与数据结构等,是一个解决系统实现所需细节的过程。

定义OOA阶段

分析阶段主要以下问题

      ---- 建立针对业务问题域的清晰视图

      ---- 列出系统必须要完成的核心任务

      ---- 针对问题域建立公共词汇表

      ---- 列出针对此问题域的最佳解决方案

此阶段要解决的核心问题是“What to do”

设计阶段主要解决以下问题

      ---- 如何解决具体的业务问题

      ---- 引入系统工作所需的支持元素

      ---- 定义系统的实现策略

此阶段要解决的核心问题是“How to do”

OOP的主要特征

抽象(Abstract)

封装(Encapsulation)

继承(Inheritance)

多态(Polymorphism)

聚合(Aggression)

内聚与耦合(Cohesion & Coupling)

面向对象的编程语言很多,如Java、C++、C#等,虽然第一种语言都有其自己的语法,但所有的面向对象的编程语言都有一些共同的特点,如最基本的封装、继承、多态,除此还有抽象、关联、内聚、耦合等特征。以下将逐一讨论。

抽象:

忽略掉一个对象或实体的细节而只关注其本质特征的过程

简化功能与格式

帮助用户与对象交互

抽象指忽略掉一个对象或实体的细节而只关注其本质特征的过程,如从一级对象中抽象出其类模板,或者从一组类中抽象出公共特征得到父类或父接口,通过抽象可以简化用户与对象交互的过程与格式,并且使系统保留一定的灵活性,为将来系统的扩展留有余地。

封装

隐藏数据和实现

提供公共方法供用户调用功能。

对象的两种视图

     --- 外部视图:对象能做的工作

     --- 内部视图:对象如何完成工作

电视机:调节音量

相关推荐