编程语言应用

首页 » 常识 » 问答 » C语言实现面向对象编程,模拟C编程,
TUhjnbcbe - 2022/10/20 11:24:00
北京治皮肤病好的医院 http://pf.39.net/bdfyy/bdfjc/180416/6171978.html

结构体实现面向对象编程

结构体是一个非常重要的知识点,必须掌握和深入理解使用。现在网络上还经常讨论函数式编程和面向对象编程。很多人认为,C语言编程,就是函数式编程,C++,JAVA等高级语言,才是面向对象编程。

其实,这是错误的认识!面向对象编程是一种思想,是一种编程思路,实现这种编程思路,不局限于是使用C语言还是使用C++语言。

使用C语言也可以实现面向对象编程。例如linux的内核,这么复杂的一个操作系统,是使用C语言来设计完成,很多地方是使用了面向对象的编程思想。

那么,使用C语言来实现“面向对象编程”的思路,就是使用结构体来完成。C++中使用类来定义成员变量和方法,相应的,C语言也可以使用结构体来完成这项操作。C语言的结构体可以定义成员变量,同时,可以定义函数指针,实现C++类的方法。

下面我们通过程序测试例子来讲解“使用结构体实现面向对象编程”的知识。首先,给出程序测试例子代码:

程序运行结果如下:

在这个例子中,讲解一个图书管理系统中的借书和还书功能。对于读者来说,有普通读者和VIP读者。读者有借书和还书的操作。

此时,我们使用面向对象编程的思想来设计程序。首先,分析设计程序要实现什么功能,它有什么对象进行活动,对象之间是什么关系,对象有什么操作。那么,我们可以归纳如下:

(1)程序有一个图书馆的借书和还书功能模块;

(2)程序涉及到的活动对象是读者和图书;

(3)对象之间的活动关系是:读者借书、读者还书;

(4)读者有普通用户和VIP用户类型的区别;

(5)普通用户和VIP用户的借书和还书有普通的操作;

所以,归纳出了这些问题,我们就可以有如下的设计思路:

(1)需要定义读者和图书这样的两个结构体类型;所以,我们定义了structreader,structbook这样的结构体类型;

(2)读者结构体类型中,需要定义普通用户和VIP用户的区分属性;所以,在structreader结构体类型中,定义了is_vip属性,用于定义当前读者的身份类型;

(3)普通读者和VIP读者的借书和还书操作不一样,所以,定义普通读者操作是:

voidmy_borrow_book(structreader*preader,structbook*pbook)

voidmy_payback_book(structreader*preader,structbook*pbook)

VIP读者的操作是:

voidmy_vip_borrow_book(structreader*preader,structbook*pbook)

voidmy_vip_payback_book(structreader*preader,structbook*pbook)

这些函数操作是读者的一个属性,所以,需要给读者定义函数指针成员,指向具体的操作函数。如下:

//定义函数指针,是pfunc_borrow_book类型的函数;

pfunc_borrow_bookborrow_book;

//定义函数指针,是pfunc_payback_book类型的函数;

pfunc_payback_bookpayback_book;

最终,在init_reader_function()函数中,根据读者是否为VIP类型,给对象的函数指针成员指向不同的函数。如下:

if(preader-is_vip)

{

//给函数指针赋值,让它指向具体的函数;

preader-borrow_book=my_vip_borrow_book;

preader-payback_book=my_vip_payback_book;

}

else

{

preader-borrow_book=my_borrow_book;

preader-payback_book=my_payback_book;

}

那么,不同的读者类型,调用相同的函数指针,就调用指向不同的函数。例如:

r1.borrow_book(r1,b1);//读者r1借书

r2.borrow_book(r2,b2);//读者r2借书

此时,读者都是调用borrow_book函数指针指向的函数,那么,由于r1是普通用户,它的函数指针指向my_borrow_book()函数,所以,r1.borrow_book()调用的就是my_borrow_book()函数。

同理,r2是VIP用户,它的borrow_book函数指针指向my_vip_borrow_book()函数,所以,r2.borrow_book()调用的就是my_vip_borrow_book()函数。

通过这个例子,我们更深入地学习了结构体的应用,并提出了面向对象的编程思想。使用C语言的结构体知识可以实现面向对象编程。

总结

本章节我们学习了C语言的结构体知识,这是一个非常重要的知识点,需要读者重点掌握。读者可以参考文档的练习例子,自己手动敲写代码,多加运行测试,总结出对结构体类型的使用方式。

在文章的末尾,我们给出了C语言进行面向对象编程的例子。穿插讲解了面向对象编程的知识。这个知识点有些难度,初学者可以调过,后续学习了C++的知识点之后,可以再回来看看这个知识点,就比较容易掌握。

读者要仔细分析,掌握好每一个知识点,然后,自己总结出对该知识点的理解。自己总结出来的知识,理解才深刻,才是自己掌握的知识。

1
查看完整版本: C语言实现面向对象编程,模拟C编程,