从C到C++之面向对象

本文详细介绍了面向过程和面向对象编程的区别。面向过程注重步骤,适合简单问题,但数据和行为分离可能导致维护困难。面向对象编程则将数据和行为封装在一起,通过类和对象实现模块化,具有封装性、继承和多态性,提高代码的可维护性和扩展性。类是用户自定义的数据类型,对象是类的实例,通过访问属性(public, protected, private)控制成员的访问权限。示例代码展示了如何定义和使用类及对象。
摘要由CSDN通过智能技术生成

面向对象

  1. 面向过程
  2. 面向对象

面向过程

c语言编程就是一个面向过程的编程。它遵循一个“从上往下”的程序设计。

用面向过程的方式解决问题的思路:

提出问题,分析问题的处理流程,将大问题分解成小问题,如果小问题比较复杂,那么就继续的分解为更小的问题,然后解决这些一个一个的小问题来解决大问题(调用函数),最后解决所有的问题。这个从问题出发,从上往下的解决过程,一步一步的解决问题,这种开发思路我们称之为面向过程的设计思想,因为他主要是解决问题中的一个个的过程,而且它比较符合我们解决问题的方法(做好这一步,做下一步,直到做完所有)。

面向过程的优缺点

优点

1、程序结构简单,仅由三种基本结构组成,即顺序,选择,循环这个三种基本结构,我们就可以解决任何问题,所以对于面向过程要专注于逻辑的
2、把大问题分成小问题,然后逐个解决小问题,这样大问题就解决了。面向过程的思路就是把项目分成很多个小项目,完成这些小项目之后,按照业务流程把他们组合起来,这样就整个问题解决,这个符合人们一般解决问题的思路,这里也容易掌握,通过分解问题,降低了问题的难度,是程序变得简单和维护,另外那些个单独的小项目(函数)可以重复的使用,可以避免重复写代码。时间,不需要学习、记忆更多的语法,结构。
3、自上往下,一步一步的完善,也就是先从整体的角度看代问题,然后列出解决问题需要做那些步骤,然后逐步的去完善,这样会让我们全面的考虑问题,是逻辑关系清楚明了。考虑问题我们是先“这个问题要怎么解决”,这里就变成了“先做什么,然后再做什么”,这样我们的过程就更清楚了。

缺点

1、在面向过程的时候,数据和操作往往是分离的,这样如果是数据的结构有改变,那么操作数据的函数就不得不重新写,这个代价就比较大。
2、并且数据一般都是不具有封装性的,很多变量都会暴露出来,这里又可能会被篡改。

面向对象

面向对象的程序设计是面向过程的继承和发展,程序对现实世界的抽象和描述。现实中的基本单元的物体在程序中对应的基本单元就是对象。

万物皆对象

对象在程序中抽象为两个部分:
  1. 描述对象状态或者属性的数据(变量)
  2. 描述对象行为或者功能的方法(函数)

面向对象的特点

1、面向对象将数据和行为结合在一起,共同来表达一个数据。
2、在面向过程中,数据和行为是分开的,当问题比较复杂或涉及多开发,那么会导致拓展和维护很困难。而面向对象能解决这个问题,问题会被分解为一个个的对象,每一个对象有独立的数据和行为,修改或拓展某一个对象时并不会影响到其他对象。
3、面向对象的封装性、继承及多态。

1)、封装:封装就是将属性(数据)私有化,提供公有的方法(行为)访问私
有属性。通过封装可以对对象属性进行存取限制,提高了程序的维护性。
2)、继承可以在原来的对象基础上很快的产生新的对象,新的对象是一个全新
的个体,但又有原来对象的特性。如同现实生活中的父子继承,儿子是一个新的个
体,但又继承了父亲这个个体的特点,比如:外貌,性格。
3)、多态是面向对象思想的核心。做到同一个接口,使用不同的实例就能去执
行不同的操作。方便了程序的设计。
4、面向对象编程可以使代码维护方便、可扩展性好、支持代码重用技术。

一、类和对象

1.类是什么?

类是一种用户自定义数据类型,可以看做是c语言中结构体的升级版。类中有类成员,类成员可以是变量,还可以是函数。

2. 对象是什么?

通过类这种类型定义出来的变量称之为对象。

二、类的定义

    class CStudent
    {
    private:
	int id;
	char name[20];
    public:
	void fun()
	{
		cout<<”这个是类中的函数”<<endl;
	}
    };
    //定义一个类:class 类名{成员};

三、对象的定义

CStudent stu;
//对象和变量类似,是一个数据。不同之处,对象中可以包含多个类成员数据

四、对象成员的访问

  1. 通过 “.” 运算符访问
    stu.fun();
  2. 通过 “->”运算符访问
    CStudent *pStu = new CStudent;
    pStu->fun();

不论是类成员数据还是类成员行为都可以用以上两种方式访问

五、类成员的访问属性

访问属性修饰关键字

	public		//公有属性
	protected	//保护属性
	private		//私有属性

属性解释

公有属性:类外和类中都可以被直接访问
保护属性:类中及派生类中可以被直接访问
私有属性:只有在类中才能被访问

类中如果有成员没有被访问属性修饰,默认是私有属性

访问属性的修饰范围:

从当前访问属性关键字开始到下一个访问属性关键字这一个区间

类成员的访问属性
  1. 类中如果有成员没有被访问属性修饰,默认是私有属性
    访问属性的修饰范围:
  2. 从当前访问属性关键字开始到下一个访问属性关键字或者类的结束这一个区间,都属
    于当前访问属性的修饰范围
  3. 类中访问属性关键字可以在类中的任意位置出现任意次数。
  4. 如果在类外想访问类中的私有或保护成员,需要在类中提供公有属性的接口,把私
    有或保护成员通过接口来进行操作。

练习代码

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Studen
{

private:    //私有声明,为了数据安全性, 建议数据都写在私有成员下
    int id;
    string name;
    
public:     //共有声明
    void set(int id, string name)
    {
        this->id = id;
        this->name = name;
    }
    void show()
    {
        cout << "name: " << name << endl << "id: " << id << endl;
    }
};
int main()
{

    Studen stu;
    stu.set(1, "Yesir");
    stu.show();
    system("pause");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值