最近,我用几乎所有的练习和例子读完了K&R.我打算转到"加速C++",我遇到了Axel Schreiner用ANSI-C 编写的 OOP 书.
我很好奇,想要学习它.但是在投入时间之前,我想知道在C中实施OOP的价值.这样我就可以决定花多少时间在它上面.
我认为我在这里提到我的背景是合适的,这样你们就可以更好地指导我了.我大约一年前完成了C,C++,Java和OOP理论,也找到了工作.但是后来Joel的博客和SO让我意识到我缺少很多东西.所以我再次拿起书,开始正确研究它们.
K&R,Accelerated C++,C++算法和其他一些书籍是我努力提高自己的技能.我不是OOP的新手.
那么你会建议什么?
谢谢你的时间.
Mat*_*ner 14
根据需要经常在C中使用OO.一般来说,我不同意一个人不能在C中做OOP的意见,只要你提供了一组在你有OOP的给定类型上运行的函数.例如,您决定创建数据结构.如果您提供创建,添加,删除和查找数据结构元素的函数,那么它就是OO.通常,其他语言通过自动暗示实例变量并自动在该实例的各种属性中提供范围来提供语法糖.
在C中实现OOP,是否真的使用过?还是只是为了心理锻炼?
是的,它确实被使用了,但不出所料,它不像OOP那样为它设计的语言.
他们的任何现有C项目是否使用OOP?
我记得用过一对夫妇:
什么时候在C中使用OOP是个好主意?
OOP很好地模拟了一些问题.例如,GUI通常设计为在窗口类型之间继承,使用多态来覆盖和专门化行为.
每当问题有一个漂亮的OOP解决方案时,你应该使用OOP.使用脚注,您不应该在15000行项目中粘贴100行OOP代码,因为它是"kewl"!:)
我应该把时间花在它上面吗?
这实际上取决于你打算用它做什么.我从不主张不学习任何东西 - 了解如何,为何以及何时使用它是很好的.很高兴看到一种不是为OOP支持OOP而设计的语言.你读过这本书,所以我认为你对C有一些亲和力,对OOP很感兴趣.试一试,也许把GTK +中的一些GUI应用程序放在一起.另一方面,如果您希望成为下一个设计模式的主Web开发人员,它可能不是最好的方法,您可以考虑更专注于该领域的其他语言.
那么你会建议什么?
我建议您使用最适合您正在尝试解决的问题的工具.决定你要解决的问题.GUI桌面应用程序,Web服务器,游戏,cmd行实用程序......一旦您确定了问题,您将能够更好地确定哪种技术适合开发解决方案.我发现你不能用"玩具"来掌握任何东西,所以你需要做一些真实的事情.