三阶段:软件定义、软件开发、软件使用和维护
软件开发的五步骤:概要设计、详细设计、实现、组装测试、确认测试
模块:函数、类
组装测试:集成测试、测试多个模块之间的接口
确认测试:验收测试、测试整个系统
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唯一性、连续性、维护性、复用性、逐步完善