面向对象和面向过程_面向过程到面向对象

7f6ee5a363e4069b07518f7b1106521b.png
面向过程 是一种 以过程为中心 的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是 封装、继承、多态面向对象 的思想对软件开发相当重要,它的概念和应用甚至已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术、人工智能等领域。面向对象是一种 对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。<引用自力扣官方的回答内容>

C++的学习就从和C语言的区别:封装、继承、多态三个方面进行。

C语言是面向过程的语言,C语言中面向过程的直观表现就是一个程序由函数组成

C++语言是面向对象编程,等会,我好像没对象。

a78a163cfadba127ea805345641222fb.png

编个毛,不写了


啊~原来此对象非彼对象。C++中面向对象的直观表现就是,一个Project(项目)由很多class(类)组成。(class本质上就是C语言中的struct,只不过这个class里面除了变量还有函数。)

从问题出发,了解区别:

输入矩形的长和宽,输出矩形的面积和周长。

C语言版:

#include<stdio.h>
float perimeter(float length,float width){
	return 2*(length+width);
}
float area(float length,float width){
	return width*length;
}
int main(){
	float length,width; 
	scanf("%f%f",&length,&width);
	printf("周长:%.1ft面积:%.1f",perimeter(length,width),area(length,width));
        return 0;
} 

ead9d1cf869056422d711b1826cab1f4.png
输入4.1和5

C++版的:

#include<bits/stdc++.h>
class Rectangle{//Rectangle是类的名字 (想想结构体) 
	public : //下文有解释
		float l,w;  //成员变量 
		void Init(int il=0,int iw=0){//成员函数 -初始化长宽 
			l=il;
			w=iw;
		}
		float getPerimeter(){//成员函数 
			return 2*(l+w);
		}
		float getArea(){//成员函数 
			return l*w;
		}
		
};
using namespace std;
int main(){
	Rectangle r;//r叫做Rectangle的一个对象 
	float l,w;
	cin>>l>>w;
	r.Init(l,w);//初始化对象里面的l和w,若不初始化,这两个变量里面是随机值。
	cout<<"周长:"<<r.getPerimeter()<<"t面积:"<<r.getArea()<<endl;
	return 0; 
}

0e22a2707112a1a3ab3ffd2e91e05e8e.png

C语言写出来的比较散,这代码不是很多所以看不出来,当代码很多时各种函数就会显得很杂乱。而C++写出来的程序有一种封装的效果,也更加符合实际生活中的逻辑。

一个类里面有变量和函数,变量叫做这个类的成员变量,函数叫做这个类的成员函数。成员变量和成员函数统称为类成员

把Rectangle看成一个数据类型,那由它定义的r就是这个数据类型的一个变量,在C++里面把这个变量称为对象

成员变量就是这个对象的属性,成员函数就是对象所具有的行为。Rectangle这个类有长宽属性,有计算自己周长和大小的行为。

调用成员函数的几种等效方法(以上面的getPerimeter()函数为例):

  • 对象.成员函数 :
r.getPerimeter()
  • 指针访问:
Rectangle *p=&r; //先定义一个Rectangle类型的指针指向r p->Init(l,w);
  • 引用:
Rectangle &rr=r; rr.Init(l,w);

public 表示类成员的可访问范围:公有的,哪都可以访问。

-private:私有成员,只能在成员函数内访问
-public :公有成员,可以在任何地方访问
-protected:保护成员,涉及继承,碰到了再说

在类的成员函数内,能够访问当前对象的全部属性、函数、同类其它对象的全部属性、函数。缺省这些关键字时默认为private

函数的缺省参数

C++中定义函数时可以让 最右边的连续若干个参数 有缺损值,那么调用的时候,若相应的位置不写参数,参数就是缺省值。
void Init(int il=0,int iw=0);

当调用Init()函数时若不给参数,那么l w 两个变量都会初始化为0。

最右边的连续若干个参数 ”的理解:

r.Init();//可
r.Init(10, );//可
r.Init( ,10);//不行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值