根据您的观点,使面向对象编程如此成功的特性是什么?
或者您可能想要介绍的其他特性。
另外,我想知道抽象数据类型和面向对象编程之间的联系是什么?
发布于 2010-11-02 06:38:37
我认为面向对象编程最重要的特点是复杂性管理。
人类的大脑一次只能容纳这么多的概念--记忆7+/-2项的引用限制出现在脑海中。
当我在工作中使用600 head系统的时候,我不能马上把所有的事情都记在脑子里。如果我必须这样做,我将被限制在小得多的系统上工作。
幸运的是我没必要这么做。我们在该项目中使用的各种设计模式和其他结构意味着,我不需要立即处理整个系统--我可以拿起各个部件,并对它们进行处理,知道它们以定义明确的方式适合更广泛的应用。
所有重要的面向对象概念都提供了管理复杂性的方法。
封装-让我来处理一个为我提供各种服务的外部API,而不必担心这些服务是如何实现的。
抽象--让我把注意力集中在本质特征上,忽略不相关的内容。
组合-让我重用已经在新的组合中构建的组件。
多态--让我请求一个服务,而不必担心不同的对象如何以不同的方式提供服务。
继承--让我重用一个接口或一个实现,只提供与以前不同的部分。
单一责任原则--让每个对象的目的保持清晰和简洁,这样就很容易对
Liskov替换王子-让我们不要通过引入奇怪的依赖关系来为彼此设置陷阱
开放/封闭原则-让我们允许扩展和修改的方式不需要我们冒险破坏现有的代码
依赖注入-让我们将组合提升到下一个级别,并在很久之后将组件组装在一起。
面向接口的开发--让我们把抽象带到下一个层次,只依赖抽象,而不是具体的实现。
发布于 2010-11-02 21:20:40
图形用户界面。20世纪80年代末90年代初,当Mac、Amigas、Atari STs、Windows和GEM开始取代基于字符的用户界面时,像C这样的语言显然不适合编写GUI程序。虽然传统的数据处理被认为是“输入数据->处理->输出数据”模式(同样也可以用过程语言完成),但OOs特性很容易处理GUI的固有复杂性。
发布于 2010-11-02 06:10:53
封装提供的数据隐藏。
https://softwareengineering.stackexchange.com/questions/16189
复制相似问题