cppBoost01

C++59期提高部分

Day01

面向对象的基本概念、类与类之间的关系、面向对象的设计原则、设计模式;C++11的线程库、互斥锁、条件变量、pc、线程池;计算机网络的概念、socket网络编程、IO多路复用;Reactor、Reactor + 线程池。

一、面向对象的基本概念

面向对象的分析(OOA):分析出需求、要做什么。

面向对象的设计(OOD):需要根据需求设计出类,以及类中的数据成员以及成员,设计出类与类之间的关系,以及需要遵循的设计原则。

面向对象的编程(OOP):将上述的需求分析以及设计转换为代码。

UML语言:统一建模语言。

二、类与类之间的关系(重要)

1、继承

两个类之间一种很强的关系,基类部分会成为派生类的一部分。在语义层面上表现的是:A is B。在类图的画法上:从派生类指向基类的空心三角箭头。

继承:先有基类,然后派生出新的类,也就是派生类。先有基类然后才有派生类。

泛化(一般化):先有派生类,然后抽象出基类。先有派生类,然后抽象出基类。

2、关联
双向的关联关系

彼此知道对方的存在,但是彼此并不负责对方的生命周期。在语义层面上:A has B。在代码层面上:使用的是指针或者引用。在类图的画法上:直接使用实心直线。

单向的关联关系

A知道B的存在,但是B并不知道A的存在,彼此并不负责对方的生命周期。在语义层面上:A has B。在代码层面上:使用的是指针或者引用。在类图的画法上:从A指向B的直线箭头。

3、聚合

是一种稍微强一点的关联关系,表现为整体与局部的关系,整体并不负责局部对象的销毁。在语义层面:A has B。在代码层面上:使用指针或着引用。在类图的画法上:从局部指向整体的空心菱形箭头。

4、组合

是一种最强的关联关系,表现为整体与局部的关系,整体部分会负责局部的销毁。在语义层面上:A has B.在代码层面上:使用的是子对象。在类图的画法上:从局部指向整体的实心菱形箭头。

5、依赖

是两个类之间的一种不确定的关系,语义上是一种A use B的关系,这种关系是偶然的,临时的,并非固定的 。在类图的画法上:使用虚线的箭头,从A指向B,代码表现形式:

  • B作为A的成员函数参数;

  • B作为A的成员函数的局部变量(B作为A的成员函数的返回值);

  • A的成员函数调用B的静态方法。

总结:

1、继承关系是一个垂直关系,但是其他的四种是横向关系

2、在语义层面上:继承 is;关联、聚合、组合 has;依赖:use。

3、耦合程度:依赖 < 关联 < 聚合 < 组合 < 继承

4、关联、聚合、组合:三者强调的是数据成员之间的关系。依赖:体现在类之间的成员函数上。继承:不仅表现在数据成员上,还表现在成员函数上。

三、面向对象的设计原则(重要)

要求:低耦合与高内聚。

耦合:强调的是类与类之间、或者模块与模块之间的关系。聚合:强调的是类内部、或者模块内部的关系。

1、单一职责原则

核心思想:一个类,最好只做一件事,只有一个引起它变化的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值