cpp封装的意义

01-1 封装的意义

封装是c++面向对象的三大特性之一。(复习一下,c++面向对象的三大特性:封装、继承、多态)

封装的意义:

  • 将属性和行为作为一个整体用于表示生活中的事物。
  • 将属性和行为使用权限进行管控。

提示:对象必须要有属性和行为,缺一不可。

当然,这篇笔记记录的时候封装的意义,对于其的权限管控我们后续研究。

在设计类的时候,一般把属性和行为写在一起,表现事物。

语法:class 类的名称 {访问权限: 属性 / 行为};

试例 1:设计一个圆类,求圆的周长。

#include <iostream>
using namespace std;
//设置圆周率
double Pi = 3.14;
//设计一个圆类,求圆的周长
//周长公式:2*Pi*R
class yuan
{
    //访问权限
public:  //public:公共权限,属性行为不管在类内或外都可以访问
    //属性
    //获取圆的半径
    int R;
    //行为:
    //计算园的周长
    double zc()
    {
        double zc = 2 * Pi * R;
        return zc;
    }
};
int main()
{
    //通过圆类 创建具体的圆(对象)
  //实例化:通过一个类,创建一个对象的过程。
    yuan C1;
  //给 C1 赋值
    C1.R = 10;
    cout << "圆的周长 " << C1.zc() << endl;
    return 0;
}

我们来分析一下:

  1. 首先我们要创建一个类。创建类的语法是:class 类的名称 {访问权限: 属性 / 行为};,在上面的例子里面是这样的(去掉注释了)

    class yuan
    {
    public: 
    int R;
    double zc()
    {
        double zc = 2 * Pi * R;
        return zc;
    }
    };
    1. 访问权限:这里面我们用的是public,简单来说就是公共权限,属性行为不管在类内或外都可以访问。当然访问权限我们日后再说。
    2. 属性:这边属性只有一个 R(半径),因为对于这个需求来说不需要诸如圆心、直径等数据。
    3. 行为:行为一般使用的是函数来表示。这里使用了一个函数来计算圆的周长。
  2. 其次我们要在这个圆的类里面创建出一个具体的圆。

    int main()
    {
    yuan C1;
    C1.R = 10;
    cout << "圆的周长 " << C1.zc() << endl;
    return 0;
    }
    1. 创建类的语法:类的名称 对象名称; 比如在上面就是yuan C1;
    2. 给类里面的属性赋值:我们创建完成了类中的对象,那么需要给它赋值。这里的赋值比较像结构体,使用.来操作对象内的属性。比如我们给对象C1的属性R赋值,那么就是C1.R来操作这个属性。
    3. 实例化:通过一个类,创建一个对象的过程。我们称其为:实例化。在上面的例子中,yuan C1;就是实例化的具体使用。

试例 2:设计一个学生类,属性有学号和姓名。可以给学号和姓名赋值,可以显示学生的学号和姓名。

我们分析一下:属性有:学号、姓名;行为有:显示学生的学号和姓名。

#include <iostream>
#include <string>
using namespace std;
class studentlist
{
public:
    string name;
    int id;
    void printstudent()
    {
        cout << "学生姓名:" << name << "\t学号:" << id << endl;
        return ;
    }
};
int main()
{
    studentlist s1;
    s1.name = "张三";
    s1.id = 1;
    s1.printstudent();
    return 0;
}

运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

学生姓名:张三  学号:1

当然,我们可以以使用行为来给属性赋值。

我们把试例 2的创建类相关的代码找出来:

class studentlist
{
public:
    string name;
    int id;
    void printstudent()
    {
        cout << "学生姓名:" << name << "\t学号:" << id << endl;
        return ;
    }
};

我们试试创建新的行为,让行为可以给属性赋值。

class studentlist
{
public:
    string name;
    int id;
    void setname(string nameset)
    {
        name = nameset;
    }
    void setid(int idset)
    {
        id = idset;
    }
    void printstudent()
    {
        cout << "学生姓名:" << name << "\t学号:" << id << endl;
        return;
    }
};

那么我们看一下如何使用:

#include <iostream>
#include <string>
using namespace std;
class studentlist
{
public:
    string name;
    int id;
    void setname(string nameset)
    {
        name = nameset;
    }
    void setid(int idset)
    {
        id = idset;
    }
    void printstudent()
    {
        cout << "学生姓名:" << name << "\t学号:" << id << endl;
        return;
    }
};
int main()
{
    studentlist s1;
    s1.setname("张三");
    s1.setid(1);
    s1.printstudent();
    return 0;
}

运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

学生姓名:张三  学号:1

通过行为给属性赋值。

术语:最后讲一点术语,方便理解他人的代码:

  1. 成员:类中的属性和行为统一称为成员。
  2. 成员属性成员对象:类中的属性。
  3. 成员函数成员方法:类中的行为。
  • 总结:创建类的语法:class 类的名称 {访问权限: 属性 / 行为};。其中,行为一般使用函数表示。
文章「cpp封装的意义」,由本站用户「Admin」发布。文章仅代表Admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/846」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
无评论:-)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇