当前位置:首页 » 编程软件 » 面向对象的c编程

面向对象的c编程

发布时间: 2022-05-22 07:49:07

‘壹’ c语言的面向过程和C++的面向对象分别是什么意思

C++和C的差别还是比较多的。
初学的话,可以认为C++是C的超集,除了支持C的面向过程,还支持面向对象编程
面向过程就是以过程为中心的编程思想。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。以公共汽车为例,在面向过程的思想里,汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们关心的是某一个事件,而不是汽车本身,所以要分别对启动和到站编写程序。
面向对象是一种以事物为中心的编程思想。以公共汽车为例,我们关心的是由汽车抽象成的对象,这个对象有自己的属性,像轮胎、颜色等;有自己的方法,像象启动、行驶等,方法是汽车的行为,而不是汽车的每个事件。面向对象需要建立一个汽车的实体,由实体引发事件,所以要分别针对汽车的属性和行为编写程序。

‘贰’ c语言是面向过程的还是面向对象的

c语言是面向过程的。面向过程是着重于其中程序设计的算法、语言的运用,如设计不同功能的函数。

C++是面向对象的。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

c语言的特点:

1、代码具有较好的可移植性

C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植,这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大的减少了程序移植的工作强度。

2、可生成高质量、目标代码执行效率高的程序

与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。

‘叁’ C语言能不能面向对象

C++,objective-c肯定可以。
标准c,普遍的说法是不行。我说我自己的想法,如果编写过面向对象的代码,类这个名词跟用户不陌生吧!类基本上是面向对象编程的精髓。类无非就是,成员数据与成员方法的集合,通过某个指针我们能访问到成员与方法。抽象、继承、多态、重载是类的基本特种。
一般而言,c语言是面向过程的,函数式编程。用标准c求解问题。无非就是,定义结构体、共用体、枚举、基本数据类型等,再定义一堆函数,来访问操作这些数据。如果吧这些东西,划分成在适当的文件,授予适当的权限。c语言的每个源文件就相当于类。
抽象、多态,利用c99的无类型指针很好实现。继承实现难度高,实现思想是利用指针可访问到父对象成员。重载,c实现更简单!此段别认为我是在瞎B吹牛。objective-c,swift这两门编程语言,如果你要懂一点。可以看到这个理论的影子。当然这两门语言有专用编译器。跟c实现的面向对象编程有区别。
总结下来,用c实现面向对象,编程,难度大,不是写应用程序开发人员该考虑的。建议别往这方向编写程序。如java,c++,swift等等这些语言,能面向对象编程:
1、编译器的难题别人解决了;
2、很多很多的基础功能,按系统类库已经提供,我们不用去编写。

‘肆’ C语言中的“面向对象的编程思想”是什么意思

面向对象的编程思想是这样的:万事万物皆对象,说白了就封装.
将程序所有用的所有东西都封装起来.
简单的说:你需要一辆车。
非面向对象的程序是这个样的:你需要定义一个车属性(即变量):颜色,时速,车的类型。
当然这是一辆车你可以这样定义:但是如果10辆车呢,你需要定义30个不同名的变量,复杂可维护性极差,有时候自己都搞不清哪个变量对应的那辆车。
但是面向对象的是容易多了,定义一个车的类:颜色,时速,车的类型。
要10辆车,定义10辆车的变量就可以,10两车就拥有颜色,时速,车的类型的属性了。你只需要操作者10个变量就等于操作10车。

‘伍’ 在C语言中,什么叫做面向对象,什么叫做面向过程

面向对象和面向过程都是编程思想,分别以对象和过程为主要目标进行编程。

1、面向对象:面向对象(ObjectOriented)是一种软件开发方法。ObjectOriented的概念和应用已经超越了编程和软件开发。面向对象是一种理解和抽象现实世界的方法。它是计算机编程技术发展的产物。

2、面向过程:面向过程(Procere Oriented)是一种以过程为中心的编程思想。面向过程都是以正在发生的过程为主要目标进行编程,与面向对象明显的不同就是封装、继承、类。

(5)面向对象的c编程扩展阅读:

面向对象和面向过程的区别:

1、分析问题方式的不同:

面向过程是分析解决问题所需的步骤,然后使用函数逐步实现这些步骤,使用时一个接一个。

面向对象是将问题事务分解为各种对象。对象的建立不是为了完成一个步骤,而是为了描述一个事物在解决问题的整个过程中的行为。

2、解决问题的方法的不同:

面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。可以说面向过程是一种基础的方法。它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。

对比面向过程,面向对象的方法主要是把事物给对象化,对象包括属性与行为。当程序规模不是很大时,面向过程的方法还会体现出一种优势。

参考资料来源:网络-面向对象

参考资料来源:网络-面向过程

‘陆’ C语言可以实现面向对象编程吗

c
语言是面向过程的,它不能面向对象,但c++能实现面向对象的程序设计,这涉及到了类和命名空间,只有学了才能具体了解。

‘柒’ 如何用C语言实现面向对象

可以通过以下方法实现面向对象:

1、封装

封装就是把数据和方法打包到一个类里面。其实C语言编程者应该都已经接触过了,C 标准库 中的 fopen(), fclose(), fread(), fwrite()等函数的操作对象就是 FILE。

数据内容就是 FILE,数据的读写操作就是 fread()、fwrite(),fopen() 类比于构造函数,fclose() 就是析构函数。

2、继承

继承就是基于现有的一个类去定义一个新类,这样有助于重用代码,更好的组织代码。在 C 语言里面,去实现单继承也非常简单,只要把基类放到继承类的第一个数据成员的位置就行了。

例如,我们现在要创建一个 Rectangle 类,我们只要继承 Shape 类已经存在的属性和操作,再添加不同于 Shape 的属性和操作到 Rectangle 中。

3、多态 C++

语言实现多态就是使用虚函数。在 C 语言里面,也可以实现多态。 现在,我们又要增加一个圆形,并且在 Shape 要扩展功能,我们要增加 area() 和 draw() 函数。

但是 Shape 相当于抽象类,不知道怎么去计算自己的面积,更不知道怎么去画出来自己。而且,矩形和圆形的面积计算方式和几何图像也是不一样的。

4、虚表和虚指针

虚表(Virtual Table)是这个类所有虚函数的函数指针的集合。

虚指针(Virtual Pointer)是一个指向虚表的指针。这个虚指针必须存在于每个对象实例中,会被所有子类继承。

5、在构造函数中设置vptr

在每一个对象实例中,vptr 必须被初始化指向其 vtbl。最好的初始化位置就是在类的构造函数中。

事实上,在构造函数中,C++ 编译器隐式的创建了一个初始化的vptr。在 C 语言里面, 我们必须显示的初始化vptr。下面就展示一下,在 Shape 的构造函数里面,如何去初始化这个 vptr。

‘捌’ 如何用c语言进行面向对象编程

面向对象本身是一种思想,而用哪种语言实现只是一种技术手段。事实上思想和技术的关系本身就是class和object的关系。
class oo {
//这是面向对象的思想类
};
oo java; //java是oo的一个具体的技术实现
oo cxx; //c++是oo的一个具体的技术实现
拿Windows系统来讲,它是有C语言编写的,但是使用的却是面向对象的思想,这方面可以参考reactos(一个免费开源的用于大学教授操作系统原理的windows系统)。

举一个例子也许更实际一些,比如,操作系统有两种操作界面,一种是GUI界面,一种是控制台界面,在windows平台上编写一个程序,在cmd中运行时,执行控制台界面的代码,在GUI中运行的时候,执行图形界面的代码。这实际上也算是一种面向对象编程中的多态实例。以下示例代码在vc6.0编译通过。
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <TLHELP32.H>
char what_shell_run()
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap==0){
return _T('E');
}
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof pe32;
DWORD dwSelfPid = GetCurrentProcessId();
DWORD dwParentPid = ~0;
for (BOOL bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32))
{
if (dwSelfPid==pe32.th32ProcessID){
dwParentPid = pe32.th32ParentProcessID;
break;
}
}
if (dwParentPid==~0) return _T('U');
for (bLoop=Process32First(hSnap, &pe32); bLoop!=FALSE; bLoop=Process32Next(hSnap, &pe32))
{
if (dwParentPid==pe32.th32ProcessID){
if (lstrcmpi(pe32.szExeFile, _T("cmd.exe"))==0)
{
CloseHandle(hSnap);
return _T('C');
}else if (lstrcmpi(pe32.szExeFile, _T("explorer.exe"))==0){
CloseHandle(hSnap);
return _T('G');
}
}
}
CloseHandle(hSnap);
return _T('U');
}
void console(void) {
printf("这是一控制台程序\n");
}
void gui (void) {
MessageBox(0, _T("这是一个GUI程序"), _T("GUI"), MB_OK);
}
int main()
{
char ch = what_shell_run();
switch (ch)
{
case 'C':
console();break;
case 'G':
gui(); break;
}
return 0;
}

‘玖’ 如何用C语言实现面向对象编程

相对于PASCAL、C一类的语言都是面向过程的语言。它的运行顺序是固定的(按顺序执行)。但C++面向对象,也就是说它的运行随着你的触发。假如你现在按了一个按钮,那么程序就会运行触发按钮的相应函数,所以它并不是按顺序执行的。

‘拾’ 如何用C语言编写面向对象的程序

面向对象本身是一种思想,而用哪种语言实现只是一种技术手段。事实上思想和技术的关系本身就是class和object的关系。
class oo {//这是面向对象的思想类}; oo java; //java是oo的一个具体的技术实现oo cxx; //c++是oo的一个具体的技术实现

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:705
制作脚本网站 发布:2025-10-20 08:17:34 浏览:968
python中的init方法 发布:2025-10-20 08:17:33 浏览:676
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:828
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:737
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1076
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:308
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:188
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:875
python股票数据获取 发布:2025-10-20 07:39:44 浏览:829