2020-11-08

第四章类与对象 (下)

四、类的组合
1.类的组合描述的就是一个类内嵌其他类的对象作为成员的情况。他们之间的关系是包含与被包含
a.当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建。在创建对象时既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化。
b.组合类构造函数一般形式为:
类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表),… {类的初始化}<其中加粗部分称做初始化列表,其作用是对内嵌对象进行初始化>
d.在创建一个组合类的对象时,不仅它自身的构造函数的函数体将被执行,而且还将调用其内嵌对象的构造函数
构造函数的调用顺序:调用内嵌对象的构造函数,调用顺序按照内嵌对象在组合类的定义中出现的次序,然后再执行本类构造函数的函数体。
e.析构函数的调用执行顺序与构造函数刚好相反。
2.前向引用声明:再引用未定义的类之前,将该类的名字告诉编译器,是编译器知道那是一个类名。(循环依赖:两个类相互引用)
class B; //前向引用声明
class A{ //A类的定义
public: //外部接口
void f(B,b); //以B类对象b为形参的成员函数
};
class B{ //B类定义
public: //外部接口
void g(A a); //以A类对象a为形参的成员函数
};
注意:在提供一个完整的类定义之前,不能定义该类的对象,也不能在内敛成员函数中使用该类的对象。
五、UML图形标识
1.UML语言是一种典型的
面向对象建模语言
,而不是一种编程语言,在UML中用符号来描述概念,概念间的关系为连接符号的线。
2.标准建模语言UML的重要内容是各种类型的图形,分别描述软件模型的静态结构、动态行为及模块组织和管理。简单介绍类和对象以及它们的静态关系。
3.UML类图
a.一个类图是由类和与之相关的各种静态关系共同组成的图形。类图展示的是软件模型的静态结构、类的内部结构以及和其他类的关系。
b.类图可以包含对象,一个包含了对象而没有包含类的类图就是对象图,可以认为对象图就是类图的一个特例。
c.在UML语言中,用一个由上到下分为3段的矩形来表示一个类类名写在顶部区域,数据成员(属性)在中间区域,函数成员(操作)在底部区域。
除了名称外,其他两个部分都是可选的,可以不表示出来。
d.数据成员表示语法:
[访问控制属性] 名称 [重数][:类型] [=默认值] [{约束特征}]

<必须至少指定数据成员的名称,其他都是可选的>
访问控制属性:+(public);-(private);#(protected)
eg:-hour:int ;+size:area=(100,100)
e.依赖关系:一个事物的变化可能会影响到使用它的另一个事物。
类A------------------------------>类B (类A源,类B是目标,表示类A使用了类B,或称类A依赖类B)
f.作用关系——关联
在UML中,用实线表示两个类之间的关系,在线段两段通常包含多重性(或称重数)
类A(重数A)————————>类B(重数B)
重数A决定了类B的每个对象与类A的多少个对象发生作用,同样重数B决定了类A的每个对象与类B的多少个对象发生作用。
g.包含关系——聚集和组
聚集表示类之间的关系是整体与部分的关系。<空心菱形>
另一种是整体拥有各部分,部分与整体共存,如果整体不存在了,部分也会随之消失,这叫做组合。<实心菱形>
六、结构体和联合
1.结构体是一种特殊形态的类,它和类一样,唯一的区别就是:具有不同的默认访问控制权限,在类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型,在结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有型。结构体是为了保持和C程序的兼容性。
2**.联合体**也是一种特殊形态的类,它的默认访问控制属性也是公共类型的。联合体的全部数据成员共享同一组内存单元
a.联合体的各个对象成员,不能有自定义的构造函数、自定义的析构函数和重载的复制赋值运算符。
b.联合体不能继承,因而也不支持包含多态。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值