0

我一直在阅读有关面向对象的概念,但我真的迷路了。从概念上讲,我所理解的只是一个方法“做”某事,而一个类是一个“蓝图”。我已经阅读了所有的类比,但到目前为止对我来说真正有意义的是:循环、if then、变量赋值、原始数据类型和基本语法。

对我来说,程序就是程序,程序就是程序。你输入指令,计算机就会执行。我想我并没有真正看到大局。

4

2 回答 2

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.
于 2013-02-05T17:53:02.137 回答
0

除非您想了解OO 语言的编程,否则我会说您不需要了解“OO 概念”。对于运行程序、提供输入并查看输出等的人来说,完全没有必要理解它们。几年前,美国汽车从主要是化油器变成了燃油喷射。一般来说,汽车的司机不需要了解其中任何一个,也不需要了解他们的新车有一个而不是另一个。这是相似的。现在,如果您想了解如何用这种语言进行编程,那就不同了,但在这种情况下,您应该问我们一个更具体的问题。

--

根据您确实想了解编程的评论,我将对此进行扩展。

我所看到的不同之处在于,诸如 Java 之类的 OO 语言通过使用编程结构来表示问题中的事物(或“项目”或“对象”),从而促进了程序的组织。尽管您可以用旧语言表示事物,但您必须自己创建结构(这就是 C++ 的开始方式)。

因此,如果我正在创建交通控制系统,我可以为“车辆”创建一个类,并为具有不同特征和/或行为的不同类型车辆创建子类。内置的类定义和继承使这变得容易。

我可以定义一个 Vehicle 类并将其扩展用于PassengerCar、PanelTruck、SemiRig 和其他在我的问题域中有意义的东西。所有车辆的特征和代码都符合超类的逻辑;每种特定类型的特征和代码与其子类一起使用。

我可以在 C、FORTRAN 或汇编程序中做类似的事情,方法是创建数据结构并将代码与它们相关联,将它们组织成组以表示不同类型的车辆,但是这些语言没有内置的结构来制作这很容易做到。

另一个相关的基本区别是语言在一个单元中对数据和代码的定义。同样,我可以用其他语言来做,但是 OO 语言将关联作为语言的一部分,这样我就不必创建命名约定或自己做任何事情。

于 2013-02-05T18:26:10.797 回答