1. Basic
1.1. Visibility
The C++ class has three visibility.
- public, using “+”
- private, using “-“
- protected, using ‘#’
See the base class examole:
1.2. Class members
- static members, using underline, like static int member
- virtual functions, using Italic font, like virtual void functions()
2. Class Relationship
The C++ has these relationship:
- Assocation
- Dependency
- Aggregation
- Composition
- Inheritance
- Class template
2.1. Dependency
可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。1
2
3
4class B {
public:
void display(class A* A) {A->display();}
}
2.2. Assocation
他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的1
2
3
4
5
6
7
8
9class B
{
public:
B(){}
void setA(A *A) { ptrA_ = A;}
private/public:
A* ptrA_;
}
2.3. Aggregation
聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期。1
2
3
4
5class B {
public:
private:
vector<class A*> ptrclassA;
}
2.4. Composition
组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。
1 | class B { |
总的来说,上述关系所表现的强弱程度依次为:组合>聚合>关联>依赖
2.5. Inheritance
1 | class A { |
2.6. Class template
1 | template<class T> |