学习了Java和C++之后,我学到了面向对象的方法。我想开始一个相当雄心勃勃的项目,但我想用C语言来做。我知道如何将问题分解为类,以及如何将它们转换为类层次结构。我知道如何将功能抽象为抽象的类和接口。我甚至在某种程度上精通以有效的方式使用多态性。
问题是,当我遇到一个问题时,我知道如何做的唯一方法是以面向对象的方式。我已经变得过于依赖面向对象的设计理念和方法论。
我想学习如何以严格的程序化方式思考。在一个缺少类、接口、多态性、函数重载、构造函数等的世界里,我该怎么做呢?
如何仅使用非面向对象的struct来表示复杂的概念?如何解决函数重载不足的问题?以程序化方式思考的一些技巧和技巧是什么?
发布于 2009-09-20 20:15:23
程序化的方法是,一方面拥有数据结构,另一方面拥有算法。然后把你的数据结构传递给你的算法。在没有封装的情况下,要做到这一点需要更多的规范,如果你增加了抽象层以使其更容易做到这一点,你就用C语言完成了相当一部分面向对象的工作。
发布于 2009-09-20 20:12:17
我想你有个好计划。在C中使用完全面向对象的方式做事情,虽然很有可能,但这已经够痛苦的了,你很快就会放弃它。(不要与语言作斗争。)
如果你想要一个关于将面向对象方法映射到C方法的哲学声明,在某种程度上,这是通过将对象创建推上一个级别来实现的。模块仍然可以将它的对象实现为黑盒,你仍然可以使用合理的编程风格,但基本上它太痛苦了,无法真正隐藏对象,所以调用者分配它并向下传递它,而不是模块分配它并返回它。您通常使用getter和setter,或者将它们实现为宏。
还要考虑到,您提到的所有这些抽象都是普通structs之上相对较薄的一层,因此您离想要做的事情并不是很远。它只是包装得不太好而已。
发布于 2009-09-20 20:13:32
C工具包由函数、函数指针和宏组成。函数指针可用于模拟多态性。
https://stackoverflow.com/questions/1451874
复制相似问题