软件系统分析与设计 第十五节 面向对象软件设计

三阶段:软件定义、软件开发、软件使用和维护
软件开发的五步骤:概要设计、详细设计、实现、组装测试、确认测试
模块:函数、类
组装测试:集成测试、测试多个模块之间的接口
确认测试:验收测试、测试整个系统

1、结构化设计方法:面向过程的编程思想
源文件的基本单元:函数——模块
2、
3、面向对象设计方法:面向对象的编程思想
基本单元:类含有两种成员——成员变量、成员函数(方法)
类的属性(数据)——成员变量
类的操作——成员函数

面向对象的三个特征:
封装:把数据和操作结合起来的过程。封装的结果是定义了一个类。
继承:类与类之间的最典型的一种关系。
概念A是一个/是一种概念B——“类A继承类B”
例如: Person类、Animal类、Tiger类、Teacher类
Tiger继承Animal
Teacher继承Person
Person继承Animal
A is-a B 或 A is-a-kind-of B A inherits B

在UML图中,
(1)具名对象:
i、对象名
ii、对象名:类名
(2)匿名对象:
iii、 :类名

继承:被继承的类——一般类——父类、基类
主动去继承其他类的类——特殊类——子类、派生类

面向对象软件开发阶段:
需求分析、系统分析、系统设计、系统实现测试和维护

类图:
1、详细画法:矩形框分为三行
(1)类名
(2)成员变量名:成员变量类型
(3)成员函数——方法

2、简单画法:矩形框内部放置类名

//C++
class Person{
    private:
      int number;  //     number:int
    ...
    public:
      void buy(Car* ptrCar){
        ...
    }
};
class Car{
    ...
};
double getAverage(int num1, int num2)
{
    ...
}
int main(){
    double average=getAverage(3, 4);
    Person zhangSan, liSi;
    //zhangSan.number=12; //【错误】
//
//在UML图中,具名对象zhangSan:Person, 具名对象zhangSan
    Car bmw, mini;

    Person* ptrPerson=new Person;
//在UML图中,   匿名对象:Person        (*ptrPerson):Person
// ptrPerson指向了一个匿名的Person类型对象
// *ptrPerson就是这个匿名对象

    int value=12;
// 在UML图中,   value:int

    zhangSan.buy(&bmw);  //发送消息
// 消息:一次方法的调用
// 消息的发送者:调用表达式所处的位置——main函数
// 消息的接收者:方法的调用者——zhangSan
// 消息名:方法名——buy
// main函数在向一个Person类型对象发送“购买”的消息
    return 0;
}


多态:
int main()
{
 Polygon* ptr; //指向Polygon类型对象的指针
 Triangle tri; //Triangle类型对象
 Rectangle rect;
 Hexagon hexa;
 ptr=&tri; //ptr指向了tri
 cout<<ptr->getArea()<<endl; //等价于tri.getArea()
 ptr=//ptr指向了rect
 cout<<ptr->getArea()<<endl; //等价于rect.getArea()
 ptr=&hexa; //ptr指向了hexa
 cout<<ptr->getArea()<<endl; //等价于hexa.getArea()
 //同样形式的语句,在执行时呈现出多种不同的形态  
 return 0;
}

第1章习题
一、选择题
1、封装是指把对象的()结合在一起,组成一个独立的对象。
A、属性和操作 B、信息流 C、消息和事件 D、数据的集合
2、封装是一种()技术,目的是使对象的生产者和使用者分离,使对象的定义和实现分开。
A、工程化 B、系统维护 C、信息隐藏 D、产生对象
3、面向对象方法中的()机制使子类可以自动地拥有(复制)父类全部属性和操作。
A、约束 B、对象映射 C、信息隐藏 D、继承
4、使得在多个类中能够定义同一个操作或属性名,并在每一个类中有不同的实现的一种方法是()。
A、继承 B、多态性 C、约束 D、接口
二、填空题
5、软件按照其工作方式可划分为()、()、()和()。
6、软件生存周期是由()、()和()三部分组成。
7、软件开发模型有()、()、()、()和()等5种主要模型。
8、面向对象技术采用以类为中心的()、()、()等不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造。
9、UML的优点是:()、()、()、()和()。

参考答案:
1A 2C 3D 4B
5实时处理软件、分时软件、交互式软件、批处理软件
6软件定义、软件开发、软件使用与维护
7瀑布模型、渐增模型、演化模型、螺旋模型、智能模型
8封装、继承、多态性
9唯一性、连续性、维护性、复用性、逐步完善

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值