今天我讨论了OO编程,通过浏览internet,我发现了许多面向对象语言的不同规范。
有关于这方面的好网站/文章吗?请不要链接维基百科,因为我已经去过那里了。
发布于 2012-03-19 18:09:50
OO通常是根据四项基本要求“定义”的:
例如,如果支持这四大需求,我会考虑面向语言的对象。然而,支持有点超出了“允许”或“容忍”。
例如,C提供了足够的灵活性,您可以相当好地模拟其中的每一个。然而,C只为抽象或模块化提供了一点支持,而对封装或层次结构则完全没有提供任何支持--如果您非常想做这些事情,您可以这样做,但是语言并没有真正为它们提供任何直接支持。
显然比较而言,C++为每个需求提供了直接支持。例如,通过使类成员私有和/或保护来直接支持封装,并且通过类继承支持层次结构。
然而,这仍然不是通常所说的“纯”面向对象语言。在纯OO语言(例如Smalltalk)中,您不仅得到了对层次结构的支持,而且还得到了一个预定义的类型层次结构,并且您必须定义任何新类型与该层次结构中的某些现有类型的关系(也就是说,您的所有代码都在类中,每个类必须从某个现有的类派生)。
尽管类和继承在许多面向对象的实现中都是常见的,但它们都不是真正必要的。例如,Self和JavaScript都使用基于范例的层次结构。这些对象不是类的层次结构,每个对象都是类的实例,它们只是使用对象的层次结构,每个对象都基于其他对象,但是修改到了任意的程度。
发布于 2012-03-19 18:13:22
根据Rumbaugh等人的“面向对象的建模和设计”,对象具有以下特征:
根据这个定义,面向对象语言应该支持这些概念。在C中,您可以定义结构的共享结构,但不能定义行为(没有行为分类的结构分类)。您可以通过数据对象的句柄(指针)来定义标识。多态和继承完全缺失,必须通过即席技术实现。
因此,根据这些标准,C不是一种面向对象的语言.使用一些特殊的技术,您可以在C中实现和面向对象的设计,但是C没有足够的概念直接支持它。
发布于 2012-03-19 17:41:51
一种语言成为面向对象语言的唯一现实要求是,它有可能至少花费大量的时间来处理OOP,而不是针对它的缺陷进行黑客攻击。像C这样的东西不是很好,但它是可用的。如果你绝望的话。
哪种编程语言是最纯粹的OOP?哪些教派是最纯正的基督徒?对于这个问题,你不可能得到正确或客观的答案--对“纯”甚至没有任何有用的定义。其次,即使你可以选择没有其他非面向对象特性的语言,并且在科学定义上是“纯的”,也就是说,只有一件事,那么它将是一种糟糕的语言。OOP并不是什么神奇的孩子,它对每件事都不太好,而且只有OOP提供了一种语言,就像一堆可怕的东西一样。
https://softwareengineering.stackexchange.com/questions/140516
复制相似问题