Lab0回顾:encapsulation的概念

发布时间:2024年01月16日

数据结构第一周的课程是回顾基本的c++的概念,在lab1里的体现为这么几点

Encapsulation(封装)

封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏

数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。

C++ 通过创建来支持封装和数据隐藏(public、protected、private)。我们已经知道,类包含私有成员(private)、保护成员(protected)和公有成员(public)成员。默认情况下,在类中定义的所有项目都是私有的。

然后菜鸟教程给的例子是“private”“protected”“public”域的运用,不过上课讲的跟这个有些区别,是通过.h文件和.cpp文件的分离实现的:

Encapsulation is the separation of interface from implementation.

.h is for interface

.cpp is for implementation

结合写lab的经历来看,我现在的理解是在.h文件里你可以看到有什么类,类里有什么函数和方法,但是你没办法知道函数和方法是如何写的。如下所示:

这个是.h文件。

这个是.cpp文件。

优点当然是避免受到外界的干扰和误用,但就是要include咯,而且我现在还有点糊涂,什么时候该include,什么时候不用include。

Namespace(命名空间)

写代码的时候要小心的一点就是写#ifndef了不要忘记在最后写#endif,之前一直报错,编译了才发现是这个问题,,,

不过为什么要写#ifndef暂时还没有弄懂。

晚点学习下C++ 命名空间 | 菜鸟教程 (runoob.com),然后再听下教授是怎么说的,然后回头完善下这里。

Pointer&Memory(指针与内存)

Pointer is the address of the memory.

有一说一,lab0里实际c++代码的部分还蛮简单的,虽然也是用pointer,但感觉非常直接,所以没什么想要强调的。倒是上课讲的stackframe我还是没有完全弄懂,唉,继续插眼。

总而言之,lab0只要搞懂了encapsulation,其它的就不是什么问题。。。

文章来源:https://blog.csdn.net/feiyu66666/article/details/135630022
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。