首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向对象程序员的C语言

面向对象程序员的C语言
EN

Stack Overflow用户
提问于 2009-09-20 20:01:21
回答 8查看 836关注 0票数 9

学习了Java和C++之后,我学到了面向对象的方法。我想开始一个相当雄心勃勃的项目,但我想用C语言来做。我知道如何将问题分解为类,以及如何将它们转换为类层次结构。我知道如何将功能抽象为抽象的类和接口。我甚至在某种程度上精通以有效的方式使用多态性。

问题是,当我遇到一个问题时,我知道如何做的唯一方法是以面向对象的方式。我已经变得过于依赖面向对象的设计理念和方法论。

我想学习如何以严格的程序化方式思考。在一个缺少类、接口、多态性、函数重载、构造函数等的世界里,我该怎么做呢?

如何仅使用非面向对象的struct来表示复杂的概念?如何解决函数重载不足的问题?以程序化方式思考的一些技巧和技巧是什么?

EN

回答 8

Stack Overflow用户

发布于 2009-09-20 20:15:23

程序化的方法是,一方面拥有数据结构,另一方面拥有算法。然后把你的数据结构传递给你的算法。在没有封装的情况下,要做到这一点需要更多的规范,如果你增加了抽象层以使其更容易做到这一点,你就用C语言完成了相当一部分面向对象的工作。

票数 4
EN

Stack Overflow用户

发布于 2009-09-20 20:12:17

我想你有个好计划。在C中使用完全面向对象的方式做事情,虽然很有可能,但这已经够痛苦的了,你很快就会放弃它。(不要与语言作斗争。)

如果你想要一个关于将面向对象方法映射到C方法的哲学声明,在某种程度上,这是通过将对象创建推上一个级别来实现的。模块仍然可以将它的对象实现为黑盒,你仍然可以使用合理的编程风格,但基本上它太痛苦了,无法真正隐藏对象,所以调用者分配它并向下传递它,而不是模块分配它并返回它。您通常使用getter和setter,或者将它们实现为宏。

还要考虑到,您提到的所有这些抽象都是普通structs之上相对较薄的一层,因此您离想要做的事情并不是很远。它只是包装得不太好而已。

票数 1
EN

Stack Overflow用户

发布于 2009-09-20 20:13:32

C工具包由函数、函数指针和宏组成。函数指针可用于模拟多态性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1451874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档