1. 程式人生 > >C/C++ 面向物件和麵向過程區別

C/C++ 面向物件和麵向過程區別



C語言實現程序管理&add

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<windows.h>

//面向過程的模式
//程式碼重用主要靠函式
//許可權:C語言函式在任何檔案都可以呼叫無法實現C++類的訪問許可權


void open(const char *path,const int mode)
{
	ShellExecuteA(0, "open", path, 0, 0, mode);
}

void all()
{
	system("tasklist");
}

void closebyname(const char *name)
{
	char cmdstr[100] = { 0 };
	sprintf(cmdstr, "taskkill /f /im %s", name);
	system(cmdstr);
}

void closebypid(const int num)
{
	char cmdstr[100] = { 0 };
	sprintf(cmdstr, "taskkill /pid %d", num);
	system(cmdstr);
}


void main1()
{
	all();
	open("notepad", 1);
	all();
	Sleep(2000);
	int  num;
	scanf("%d", &num);
	closebypid(num);
	//closebyname("notepad.exe");
	system("pause");

}


struct fu
{
	int a;
	int b;

};

//a+ bi,
struct fu  add(struct fu  fu1, struct fu  fu2)
{
	struct fu  fu3;
	fu3.a = fu1.a + fu2.a;
	fu3.b = fu1.b + fu2.b;
	return fu3;
}

void   main3()
{
	//資料可以隨便被別人,可以隨便被修改
	struct fu  fu1 = { 3, 4 };
	struct fu  fu2 = { 13, 4 };
	fu1.a += 3;
	struct fu  fu3 = add(fu1, fu2);
	printf("%d+%di", fu3.a, fu3.b);
	getchar();
}




C++實現程序管理&add

#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include <windows.h>

//C++類的繼承實現程式碼重用, C重用   函式

//類的封裝實現許可權,封裝,資料與程式碼合為一體。C封裝主要是函式

//封裝可以鎖定程式碼的許可權,鎖定的資料的許可權,避免被隨意修改

//類的多型,一個介面根據實際需求完成很多不同的功能

class cmduse
{
private:
	char cmduser[100];//使用者名稱
	char cmd[100];//儲存指令
public:
	void setuser(const char * name)
	{
		strcpy(cmduser, name);
	}
	char * getuser()
	{
		return this->cmduser;//返回使用者名稱
	}
	void open(const char *path, const int mode)
	{
		ShellExecuteA(0, "open", path, 0, 0, mode);
	}

	void all()
	{
		system("tasklist");
	}

	void closebyname(const char *name)
	{
		memset(this->cmd, 0, 100);//清空字串
		sprintf(this->cmd, "taskkill /f /im %s", name);
		system(this->cmd);
	}

	void closebypid(const int num)
	{
		memset(this->cmd, 0, 100);//清空字串
		sprintf(this->cmd, "taskkill /pid %d", num);
		system(this->cmd);
	}


};


void main2()
{
	cmduse cmduse1;
	cmduse1.setuser("yincheng");
	std::cout << cmduse1.getuser() << std::endl;
	cmduse1.open("calc",1);
	cmduse1.open("notepad",0);
	Sleep(2000);
	cmduse1.all();
	cmduse1.closebyname("calc");
	int pid;
	std::cin >> pid;
	cmduse1.closebypid(pid);//根據編號關閉

	std::cin.get();
	std::cin.get();
	//closebypid(100);

}

//封裝可以實現程式碼許可權,不可以隨便呼叫




class 
{
public:
	void seta(int a)
	{
		//介面
		this->a = a;
	}
	int geta()
	{
		return this->a;
	}
	void setb(int b)
	{
		//介面
		this->b = b;
	}
	int getb()
	{
		return this->b;
	}

protected:

private:
	int a;
	int b;
	char password[100];
}myab;//匿名的類,物件唯一不能new。例如公司董事長只有一個

void main()
{

//	myab.geta = 3;
	myab.seta(10);
	//封裝解決的問題
	//類的,程式碼與資料,一體化
    //程式碼的封裝,限定程式碼誰可以執行誰不可以執行的許可權
	//資料的封裝,防止資料被意外修改


}


總結:
C語言: 首先思想是面向過程,資料和函式介面是獨立分開的。它以每個函式的實現為核心。
C++:它是面向物件的思想,資料和函式以類的形式一體化,且有了許可權。以類為核心,先設計類,再實現程式碼!
C語言沒有底線一處實現四處呼叫。


C++   
1) 繼承:實現程式碼複用,富二代有個牛逼的爸爸,可以繼承老爸的所有 
2) 封裝:類既是封裝的體現,實現了函式和變數的一體化。給函式和變數賦予了許可權
3)多型:一個函式介面根據實際需求完成不同功能,比如:打這個動作,可以打羽毛球,打電話,打乒乓球。。。。。。