贵阳市建设厅官方网站,公司产品展厅设计,北京外贸网站开发,潭州学院网站建设报名【c随笔11】面向对象和封装 一、什么是面向对象编程#xff1f;1、面向对象以对象作为程序的基本单元2、类和对象3、特性继承和多态性 二、什么是封装#xff1f;1、类的定义和访问修饰符2、封装数据和公共接口3、数据验证和处理4、封装的优点5、实际应用示例 三、再次理解1、… 【c随笔11】面向对象和封装 一、什么是面向对象编程1、面向对象以对象作为程序的基本单元2、类和对象3、特性继承和多态性 二、什么是封装1、类的定义和访问修饰符2、封装数据和公共接口3、数据验证和处理4、封装的优点5、实际应用示例 三、再次理解1、再次理解封装1.1、封装的意义和本质 2、再次理解面向对象 C 是基于面向对象的程序面向对象有三大特性 —— 封装、继承、多态。
当谈到C编程时面向对象编程OOPObject-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、再次理解面向对象
实际上我们写的东西就是对现实进行映射我们定义类就是对一类事情的描述。
类就是对现实世界中一类事物的抽象类别的描述类可以实例化出很多对象