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

面向C程序员的OO学习
EN

Software Engineering用户
提问于 2012-09-09 19:40:15
回答 8查看 2.1K关注 0票数 6

我用C语言进行专业编程,只有C语言,在不同的角色中,我已经用了大约10年的时间。

正如我们通常所期望的那样,我很好地理解了语言的习语,除此之外,还有一些设计上的细微差别--这些API可以公开,谁管它叫什么,谁做什么,什么应该是重入的,等等。我从小就读过“写实心代码”,这是早期的C版,不是基于C++的版本。

然而,我从来没有用OO语言编程过。现在,我想迁移到为iPhone (也许是安卓)编写应用程序,所以我想学习使用Objective,并在一定程度上适合专业程序员。

我怎么才能把头绕在OO上呢?你对我的最小阅读建议是什么?

是否有一本书包含了一些相对真实的例子-- OO设计目标-C?

另外,你推荐我读什么源代码。

如何使用Objective学习OO范式?

EN

回答 8

Software Engineering用户

回答已采纳

发布于 2012-09-09 21:16:21

我还从过程编程(Pascal和C)中学习了面向对象的编程,这样我就能理解转换的困难:你必须开始以不同的方式思考,而且你已经在另一种范式中有了很多经验(BTW,我仍然喜欢以过程的方式不时地进行编程)。

除了阅读特定于语言的书籍外,我认为阅读面向对象和面向对象设计的概论也是有益的。

例如,我发现面向对象的建模与设计非常有用。这本书并不是最近才出版的,但是面向对象的基本概念并没有发生那么大的变化。另外,我喜欢这本书,因为它专注于设计概念,只在后面的章节中解释如何将这些概念映射到编程语言结构。此外,它还表明,如果需要的话,面向对象的设计也可以用非面向对象的语言(例如C)实现。

因此,除了特定于目标C的书籍之外,我建议阅读这样一种语言不可知论的读物,以获得不受特定面向对象语言偏见的一般想法。

票数 4
EN

Software Engineering用户

发布于 2012-09-09 23:10:21

步骤1:类是带有函数的结构。混合数据和函数是有用的。

步骤2:在类中,限制函数和变量的可见性。通常,您将有一些公共函数,它们是类的“接口”。隐藏事物的好处是您可以在不需要更改类的用户的情况下更改它们。只要您保留了公共接口,就可以继续使用。它还使人们更容易使用您的类,因为他们不会感到困惑,试图理解私有的细节,并可以专注于公共接口。

步骤3:您可以从父类继承字段和函数。这有助于防止不同子类型之间的某些重复。如果选择,还可以重写继承函数的功能。继承是OOP最不有用的特性之一,但它确实存在。

步骤4:多态允许您创建“可插拔”软件。要添加功能,您可以创建一个新的类来满足其函数的接口。你创建了这个类,它就像插入的插件。您不会对工作流代码进行任何更改。没有OOP,你的工作流程中就会有很多“如果使用OOP,这些if语句会消失,因为您调用了对象的方法。您的对象的函数在多形性上完成了它需要做的事情。

例如,您有一个类"Engine“。它有孩子"DirectXEngine","OpenGLEngine“。你的游戏多年来运作良好。五年后,有人推出了一个新的引擎,你想在游戏中支持它。您创建一个类"SomeNewEngine“,它插入到您的视频游戏。您完全支持新引擎,而不更改工作流代码。你所要做的就是上一堂新课。您只需测试(理论上)新类的函数是否满足接口。(但在现实中,将事物整合到同一个接口并不总是可行的.)

步骤5:理解多态性并不局限于OOP。您可以从泛型编程中获得多态行为。考虑一个“添加”函数

代码语言:javascript
复制
T add(T val1, T val2) {
    return val1 + val2;
}

不管您传递的是浮点数、It、双打、字符串等等,它都是有效的。尽管添加这些类型的实现是非常不同的。这是源代码级别上的多态性。如果您认为"+“操作符是所有类型所支持的行为,那么它们都符合"+”接口。

您可以将所有行为概念化为函数。无论它是一个实际的函数,还是像+、-、%等语言的语法。

更进一步,您可以从语言中删除所有语法。现在,您所创建的每个函数都是语言。在用您的语言编程时,您可以创建自己的语言。您支持所有编程范例,但不是范例。OOP成为一些自然世界的一部分技术的不相干的定义。

票数 5
EN

Software Engineering用户

发布于 2012-09-09 20:17:34

在学习新的编程范例时,有C(或任何其他过程编程语言)背景的人本质上没有什么特别之处。除了无论出于什么原因都很容易坚持旧的方式之外,不管是对新概念的误解,还是觉得它们令人厌烦地坚持下去等等。

唯一真正有价值的方法就是练习。当然,首先你需要对该练习的内容有一些了解。至于一本书,我只能建议你看看亚马逊提供的内容(至少要阅读目录和一些评论)。任何像样的目标-C书都应该解释有关面向对象编程的基本概念,以便让你更好地开始。

然而,一本书往往是不够的。有专门用于面向对象编程和设计模式的书籍,如设计模式:可重用的面向对象软件的元素(四人帮书)。还有很多其他的,所以选择你最熟悉的目录。

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

https://softwareengineering.stackexchange.com/questions/164283

复制
相关文章

相似问题

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