1.基本属性概述
类图基本框架
class_name |
---|
[data]variate_name : type |
[method]method_name() : return_type |
基础属性
以Student类为例
+ 表示public可以省略
- 表示private
# 表示protected
_ 下划线表示static
斜体表示抽象
代码体现
class Student{
public:
string name;
static string school;
void running();
bool ownPC();
virtual void study() =0;//抽象方法
protected:
double height;
private:
int age;
};
2.类与类之间的关系用类图表示
类与类的关系有: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
泛化
类与类的继承, 接口与接口的继承
1,继承
继承使用空心三角形+实线表示。
class animal{
public:
};
class bird:public animal{
};
实现
矩形表示法
使用空心三角形+虚线
棒棒糖表示法
使用实线表示
依赖
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
依赖关系用虚线箭头表示。
依赖关系的代码体现有三种
class Person{
public:
Person();
};
class Computer{
public:
Computer();
};
1,Computer类是public的, Person类可以调用它
2,Computer类是Person类中某个方法的局部变量
class Person{
public:
Person();
void Programing(){
Computer computer = new Computer();
}
};
3,Computer类作为Person类中的某个方法的参数或者返回值
class Person{
public:
Person();
Computer Programing(Computer computer){
...
}
};
关联
两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系
关联关系用实线箭头表示。
class penguin{
weather *cold;//特定的实例
};
class weather{
};
聚合
表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期。
聚合关系用空心的菱形+实线箭头表示。
class GooseGroup{
public:
Goose *goose;
GooseGroup(Goose *goose){
this->goose = goose;
}
};
class Goose{
};
GooseGroup类构造时,传递的参数是已经构造好的Goose类的指针,
所以两者的生命周期并不同步,它们是聚合关系。
组合
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。
组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
class bird{
Wings wing[2];
};
class Wings{
};