【c++随笔11】面向对象和封装

这篇具有很好参考价值的文章主要介绍了【c++随笔11】面向对象和封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


原创作者:郑同学的笔记
原创地址:https://zhengjunxue.blog.csdn.net/article/details/131794661
qq技术交流群:921273910
  • C++ 是基于面向对象的程序,面向对象有三大特性 —— 封装、继承、多态。

当谈到C++编程时,面向对象编程(OOP:Object-Oriented Programming)和封装是两个重要的概念。通过面向对象编程,我们可以更好地组织和管理代码,并且提高代码的可维护性和可重用性。而封装允许我们隐藏数据的内部实现细节,并通过公共接口来访问和操作数据。本教程将深入介绍C++中的面向对象编程和封装的概念、语法和实际应用。

一、什么是面向对象编程?

1、面向对象以对象作为程序的基本单元

面向对象编程是一种编程范式,它以对象作为程序的基本单元,将数据和操作捆绑在一起。每个对象都是一个独立的实体,具有自己的特征(数据成员)和行为(成员函数)。

面向对象编程的核心思想是通过定义类来创建对象,从而模拟现实世界中的事物和关系。

2、类和对象

在C++中,我们使用class关键字定义一个类,描述了对象的特征和行为。类包含数据成员和成员函数,用于存储和操作对象的数据。例如,下面是一个简单的类定义:

class MyClass {
private:
    int myData;  // 私有数据成员

public:
    void setMyData(int value) {
        myData = value;
    }

    int getMyData() const {
        return myData;
    }
};

通过类定义,我们可以创建一个或多个对象。对象是类的实例,它具有类中定义的数据成员和成员函数。以下是如何创建和使用对象的示例:

MyClass obj1;  // 创建一个对象

obj1.setMyData(10);  // 调用对象的成员函数
int data = obj1.getMyData();  // 调用对象的成员函数

3、特性继承和多态性

面向对象编程还包括特性继承和多态性的概念。

  • 特性继承:
    通过继承,一个类可以获得另一个类的特性(数据成员和成员函数),从而实现代码的重用。派生类继承了基类的特征,并可以添加自己的特征。例如:
class BaseClass {
public:
    void baseFunction() {
        // 基类函数实现
    }
};

class DerivedClass : public BaseClass {
public:
    void derivedFunction() {
        // 派生类函数实现
    }
};
  • 多态性:
    多态性允许以不同的方式处理具有相同基类的对象。通过使用虚函数和指针/引用,我们可以在运行时确定调用的是哪个类的函数。例如:
class BaseClass {
public:
    virtual void print() {
        cout << "Base Class" << endl;
    }
};

class DerivedClass : public BaseClass {
public:
    void print() override {
        cout << "Derived Class" << endl;
    }
};

int main() {
    BaseClass* ptr = new DerivedClass();  // 使用基类指针指向派生类对象
    ptr->print();  // 输出 "Derived Class"
}

二、什么是封装?

封装是面向对象编程的一个重要概念,它将数据和对数据的操作封装在一个类中。通过将数据成员声明为私有,封装确保数据只能通过类提供的公共接口进行访问和操作。封装提供了一种机制,用于隐藏数据的内部细节,从而增加代码的安全性、可维护性和可重用性。

1、类的定义和访问修饰符

在C++中,我们使用class关键字来定义一个类。类包含了数据成员和成员函数,用于描述对象的特征和行为。下面是一个示例:

class MyClass {
private:
    // 私有数据成员

public:
    // 公共成员函数
};

在类定义中,我们可以使用访问修饰符来控制成员的可访问性:

public:公共成员可以在类外部访问,也可以在类内部访问。
private:私有成员只能在类内部访问,对外部是不可见的。
protected:受保护成员类似于私有成员,但可以被派生类访问。

2、封装数据和公共接口

封装的核心是将数据成员声明为私有,并通过公共成员函数提供对数据的访问和操作。例如,在类中,我们可以这样定义数据成员和成员函数:

class MyClass {
private:
    int data;  // 私有数据成员

public:
    void setData(int value) {
        // 对数据进行验证和处理
        // ...

        data = value;
    }

    int getData() const {
        return data;
    }
};

在上面的示例中,data被声明为私有数据成员。然后,我们通过setData和getData两个公共成员函数来提供对数据的设置和获取。这样,外部代码只能通过公共接口来访问数据,无法直接访问私有数据。

3、数据验证和处理

封装还允许我们在公共接口内部对数据进行验证和处理。例如,在setData函数中,我们可以添加一些逻辑来确保数据的有效性。这可以包括范围检查、类型检查、数据转换等。以下是一个简单的示例:

void setData(int value) {
    if (value > 0) {
        data = value;
    } else {
        // 数据不合法,进行错误处理
        // ...
    }
}

通过在公共接口内部进行数据验证和处理,我们可以确保数据的有效性和一致性,增强代码的健壮性。

4、封装的优点

封装在C++编程中具有许多优点:

安全性:封装隐藏了数据的具体细节,防止外部代码直接访问和修改数据,提高了数据的安全性。
可维护性:封装将相关的数据和操作组织在一起,代码更易于理解、修改和维护。
可重用性:封装创建了独立的模块,使其可以在不同的程序中多次使用,提高了代码的可重用性。
抽象性:封装通过公共接口提供了抽象层级,外部代码只需关注接口而不必了解内部实现细节,提供了更高层次的抽象。

5、实际应用示例

假设我们正在开发一个学生管理系统。我们可以使用封装来定义Student类,包含学生的姓名、年龄等个人信息。以下是一个简化的示例:

class Student {
private:
    string name;
    int age;

public:
    void setName(const string& newName) {
        name = newName;
    }

    string getName() const {
        return name;
    }

    void setAge(int newAge) {
        if (newAge > 0 && newAge <= 100) {
            age = newAge;
        } else {
            // 年龄不合法,进行错误处理
            // ...
        }
    }

    int getAge() const {
        return age;
    }
};

通过封装,我们可以确保学生的姓名和年龄数据被安全地存储在类的私有成员中。然后,我们提供公共成员函数来设置和获取这些数据,以便外部代码可以通过这些接口与学生对象进行交互。

这是一个简单示例,但它展示了封装在实际应用中的价值。通过封装,我们可以实现更安全、可维护和可扩展的代码,提高软件开发的效率和质量。

三、再次理解

1、再次理解封装

C++ 是基于面向对象的程序,面向对象有三大特性 —— 封装、继承、多态。

C++ 通过类,将一个对象的属性与行为结合在一起,使其更符合人们对于一件事物的认知,将属于该对象的所有东西都打包在一起。通过访问限定符选择性地将其部分功能开放出来与其他对象进行交互,而对于对象内部的一些实现细节,外部用户不需要知道,也没必要知道,就算知道了有些情况下也没用,反而增加了使用或维护的难度,导致整个事情变得复杂化。

封装是为了更好的管理,我想让你访问的我定义成公有,不想给你访问的我定义成私有或者保护。

1.1、封装的意义和本质

封装是一种更好的严格管理,不封装是一种自由管理。
封装的本质是一种管理。

2、再次理解面向对象

实际上,我们写的东西就是对现实进行映射,我们定义类就是对一类事情的描述。

类就是对现实世界中一类事物的抽象类别的描述,类可以实例化出很多对象,文章来源地址https://www.toymoban.com/news/detail-744912.html

到了这里,关于【c++随笔11】面向对象和封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++初阶】三、类和对象(面向过程、class类、类的访问限定符和封装、类的实例化、类对象模型、this指针)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】二、入门知识讲解 (引用、内联函数、auto、基于范围的for循环、指针空值

    2024年02月04日
    浏览(40)
  • 【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)

    🔥 个人主页 : Forcible Bug Maker 🔥 专栏 : C++ 目录 前言 什么是面向对象? 类的定义 类的访问限定符及封装 访问限定符 封装 类的作用域 类的实例化 类对象的存储方式 this指针 结语 最早的C++版本(C with classes)中,最先加上的就是类的机制,它构成了面向对象编程(OOP)的

    2024年04月14日
    浏览(55)
  • 面向对象详解,面向对象的三大特征:封装、继承、多态

    一、面向对象与面向过程 面向对象编程 (Object-Oriented Programming,简称OOP)和 面向过程编程 (Procedural Programming,简称PP)是两种不同的 编程范式 。 面向对象编程强调把问题分解成对象,通过封装、继承和多态等机制,来处理对象之间的关系 。每个对象都可以独立地处理自

    2024年02月21日
    浏览(53)
  • 面向对象——封装

    C++面向对象的三大特性为: 封装、继承、多态 C++认为 万事万物都皆为对象 ,对象上有其属性和行为 例如: ​ 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… ​ 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐

    2024年02月14日
    浏览(35)
  • Java面向对象封装

    目录 封装的概念 封装具体实现步骤 示例代码如下 封装具体语法 Java封装是一种面向对象的编程方法,它的主要思想是将类的内部细节(包括数据和方法)隐藏起来,对外只提供公共的访问接口,从而保证了程序的安全性和稳定性。 1、声明类的成员变量时,使用private

    2024年02月03日
    浏览(46)
  • 面向对象的特征之一:封装

    1.面向对象这个编程思想,有三个基本特征: ① 封装 ② 继承 ③ 多态 2.什么是封装性? 生活中,快递包裹,通常需要用袋子或箱子装起来。 目的:① 包含的内部商品,不会被损坏            ② 可以包含隐私            ③ 运输更方便 所以,代码也要考虑这些因素: ①

    2024年02月05日
    浏览(44)
  • 面向对象(类/继承/封装/多态)详解

    面向对象编程(Object-Oriented Programming,OOP)是一种广泛应用于软件开发的编程范式。它基于一系列核心概念,包括类、继承、封装和多态。在这篇详细的解释中,我们将探讨这些概念,并说明它们如何在PHP等编程语言中实现。 类是OOP的基础。它是一种用于创建对象的蓝图或模

    2024年02月08日
    浏览(63)
  • go语言(十)---- 面向对象封装

    面向对象的封装 可以看出修改后,li4,数据并没有变化 如果加入指针,进行li4的修改后,数据会发生变化 如果首字母大写,表示其他包也能够访问 如果类的属性首字母大写,表示该属性对外是能够访问的,否则的话,只能类的内部访问。

    2024年01月20日
    浏览(42)
  • Java面向对象 - 封装、继承和多态

    目录 第1关:什么是封装,如何使用封装 第2关:什么是继承,怎样使用继承 第3关:super的使用 第4关:方法的重写与重载 第5关:抽象类 第6关:final的理解与使用 第7关:接口 第8关:什么是多态,怎么使用多态 Java_Educoder

    2024年02月07日
    浏览(80)
  • 【Java基础篇 | 面向对象】—— 封装详解

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习Java的一点学习心得,欢迎大家在评论区讨论💌 封装概念 : 将数据和对数据的操作封装在一个类中,对外部的访问只通过类提供的

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包