我认为面向对象编程被高估了,但我想学习这种范式。我一直在尝试使用PHP 5和带有QT 4的C++进行学习。不幸的是,我倾向于以结构化的方式编程,我很少使用继承或多个实例。我认为我必须学习一种纯面向对象的语言,迫使我使用以上特性。
我认为最好的选择可能是学习Ruby。您能否确认或提供更好的替代方案?
我主要在x86-64 Linux上工作。
我认为面向对象编程被高估了,但我想学习这种范式。我一直在尝试使用PHP 5和带有QT 4的C++进行学习。不幸的是,我倾向于以结构化的方式编程,我很少使用继承或多个实例。我认为我必须学习一种纯面向对象的语言,迫使我使用以上特性。
我认为最好的选择可能是学习Ruby。您能否确认或提供更好的替代方案?
我主要在x86-64 Linux上工作。
面向对象编程并不只是语法问题,它是一种编程范式。
一种编程语言可能会强制你使用对象(例如如果所有内容都是对象),但使用这些语言并不会“迫使”你学习面向对象编程。
我不太使用继承或多个实例
你必须学习何时以及为什么使用这些技术(数据抽象、封装、多态和继承)来从对象的角度思考问题。找一份良好的面向对象编程参考资料,并使用你最熟悉的支持面向对象编程的语言来应用这些技术。
self
(在其他语言中相当于 this
)和指向“静态”类成员的某些东西之外,没有运算符和命令。其他所有东西都是对象,真的是所有东西。这甚至包括代码块也是对象,你可以对其应用 If
和 ElseIf
方法/消息。在进行算术运算时,您必须重新考虑,因为没有运算符优先级规则,例如 +
和 *
是应用于数字对象的方法,因此按出现顺序进行评估。 - herzmeister在Mono上尝试Java或C#。
原因:
我尊重Smalltalk,并且人们应该了解其概念以更好地理解OOP,但是我认为学习这种语言本身是不切实际的。
虽然Java和C#在OOP方面可能不是“绝对纯粹”的(例如它们已经吸收了一些函数式编程方法),但它们本质上是基于OOP的,它们是主流语言(因此具有更大的社区)并且比Smalltalk更容易学习。
阅读Daniel H. H. Ingalls编写并实现Smalltalk的《Smalltalk设计原则》一文,它阐述了面向对象编程的真正本质。