具体来说,没有继承的编程显然不是面向对象的;我们称之为抽象数据类型编程。
我从Grady Booch的“面向对象的分析与应用设计”的书中找到了这句很棒的台词。因此,为了使程序成为OO程序,继承、抽象、封装和多态(?)必须要做的事?
有人能解释一下吗?
发布于 2012-01-10 19:42:41
抽象和封装实际上是面向对象的东西所必需的。
继承和多态性是利用不“重新发明车轮”的策略,这对使用OO设计是有利的。
OO设计的基本思想是让大量程序员在项目X上协同工作,而不会产生大量的通信开销,而将项目分解为具有定义的对象的对象是一种优雅的解决方案。
发布于 2012-01-10 17:52:35
答案是,这是非常主观的软件分析员或软件模型。
有几个概念与面向对象范式相关或部分相关。你已经提到了其中的大部分。
例如,您没有提到的一个概念是消息传递,这在大多数当前的O.O.编程语言中是缺失的,并且是可用的,以及早期O.O.编程语言("Simula")中的封装和继承。
我有时会使用几个具有这些特性的面向对象Pascal的变体或“习惯用法”,并且有一个变体允许使用"messages“作为编程语言(关键字"message")的一部分,类似于”尝试捕捉“异常,但不会中断执行。
同时,其他变体和其他编程语言作为可选库(函数而不是关键字)提供。
您可能会发现,有时编程语言可能会跳过其中的一些,仍然会被一些人认为是O.O.,而其他人则不然。非常主观。
你要求的是普通的智力好奇心吗?
你想知道你正在使用的编程语言是否完全是O.O.?
你在使用大学/大学作业,定制O.O.编程语言吗?
您是在使用业余爱好、宠物项目、定制O.O.编程语言吗?
这些问题,是我自己的好奇心,也是为了知道如何让我的答案更清楚;)
有一些编程语言和编程范式比较课程在高校,涉及这一主题。
干杯。
发布于 2012-01-10 18:44:39
您可以在没有继承的情况下对任何域进行建模。继承有时有助于更清楚地了解类,但它在面向对象方面并不是强制性的事情,尽管Booch引用了它。
https://softwareengineering.stackexchange.com/questions/129424
复制相似问题