我一直在阅读有关面向对象的概念,我真的迷失了。 从概念上讲,我所理解的是一种方法“做”某事,一类是“蓝图”。我已经阅读了所有类比,但到目前为止我唯一真正有意义的是: 如果是,则循环,变量赋值,原始数据类型和基本语法。
对我来说,一个程序是一个程序就是一个程序。您键入说明,然后计算机执行。我想我真的没看到大局。答案 0 :(得分:1)
天空视图中OOP的最大部分是组织和代码重用。您希望组织执行特定操作的“对象”,并且您希望能够将其重用于其他应用程序。这个想法使得更容易维护您正在做的事情以及信息的位置以及它们如何协同工作。这是非常广泛的,所以让我知道你真正不理解的是什么。
将代码捆绑到单个软件对象中可带来许多好处,包括:
Modularity: The source code for an object can be written and maintained independently of the source code for other objects. Once created, an object can be easily passed around inside the system.
Information-hiding: By interacting only with an object's methods, the details of its internal implementation remain hidden from the outside world.
Code re-use: If an object already exists (perhaps written by another software developer), you can use that object in your program. This allows specialists to implement/test/debug complex, task-specific objects, which you can then trust to run in your own code.
Pluggability and debugging ease: If a particular object turns out to be problematic, you can simply remove it from your application and plug in a different object as its replacement. This is analogous to fixing mechanical problems in the real world. If a bolt breaks, you replace it, not the entire machine.
答案 1 :(得分:0)
除非你想用OO语言理解编程,否则我说你不需要理解“OO概念”。对于运行程序,提供输入和查看输出等的人来说,理解它们并不是必需的。几年前,美国汽车从大多数化油器变为燃油喷射;一般来说,汽车司机不需要了解任何一辆汽车,也不需要了解他们的新车有一辆而不是另一辆。这是类似的。现在,如果您想了解如何使用这种语言进行编程,那就不同了,但在这种情况下,您应该向我们提出更具体的问题。
-
根据您的评论,您确实想了解编程,我将对此进行扩展。
我认为差别在于,像Java这样的OO语言通过编程构造来表示问题中的事物(或“项目”或“对象”),从而促进了程序的组织。虽然您可以用较旧的语言表示事物,但您必须自己创建构造(这就是C ++的入门方式)。
因此,如果我正在创建一个交通控制系统,我可以为不同类型的车辆创建一个“车辆”类和子类,具有不同的特征和/或行为。内置的类定义和继承使这很容易。
我可以定义一个Vehicle类,并为PassengerCar,PanelTruck,SemiRig以及其他在我的问题域中有意义的东西进行扩展。所有车辆的特征和代码与超类在逻辑上相符合;特定于每种特定类型的特征和代码与其子类一起使用。
我可以在C,FORTRAN或汇编程序中做类似的事情,通过创建数据结构并将代码与它们相关联,将它们组织成组来表示不同类型的车辆,但语言没有内置构造使其易于实现。
另一个相关的基本区别是语言在一个单元中定义数据和代码。同样,我可以用其他语言来完成它,但是OO语言将关联作为语言的一部分,并且我不得不创建命名约定或者自己做任何事情。