对OOP和过程编程做出这样的肯定是正确的吗

Is it correct to make this affirmations about OOP and Procedural Programming?

本文关键字:OOP 过程 编程      更新时间:2023-10-16

我不得不在这里做一个正确或错误的家庭作业,我对我一直在读的这三件事有疑问,但我读得越多,我就越困惑。以下是我的结论,希望你能帮助我更好地理解。

1( "面向对象的设计很难,因为面向对象的技术与人们的心理模型紧密相连"。我发现这是真的,因为OOP是人类看待问题及其解决方案的一种方式。

2( "在面向对象编程中,复杂的系统被分解为协作对象的层次结构"。我说过这是真的,但我有疑问,因为我不确定说协作"对象"是否正确。我觉得它应该是组件或不同的东西,但同时我理解在OOP中,一个类的对象与另一个类中的对象协作。

3( 最后,"过程程序比面向对象程序更容易设计"我说这是真的,但我不确定为什么我读到的是,在过程程序中,程序员像写历史一样写,他只是继续编程解决方案,而没有建立完整的模型,他使用了一种叫做"自上而下"的东西,是的,这就是我发现的过程更容易设计,但更难做出改变,而OOP更难设计,但也更容易做出改变。

1(面向对象的设计并不难。只是,你应该先学习过程编程,因为它的局限性是显而易见的。除非学生学习过程编程,否则OOP对学生来说似乎没有多大用处。

2( 在OOP中,类的设计有一个特定的目标。用户必须清楚其目的。如果需要一个以上的类实例,则解决问题的实体被归类为类。此外,将责任委托给对象也是非常重要的。简单呈现行为,例如读取数据和在类中显示数据是一个糟糕的类设计。要执行复杂的任务,一个类必须与其他类联合执行任务。这种方法被称为类之间的协作。这个类的设计必须具有基本的属性和行为,以反映现实世界中的想法。

3( 最后,是的,从某种意义上说,过程编程是一种自上而下的方法,OOP是一种从解决方案开始的自下而上的方法。如果存在现有的解决方案,则首先研究该解决方案,并以适当的方式确定和组织必要的细节。对于没有解决方案的问题,领域专家(即能够提供有用信息和未来的专家要求(与传统解决方案进行协商。由于该软件是通过首先分析解决方案来开发的,因此这种方法被称为自下而上的方法

1(我认为你的理由就是说OOP并不难。

2(对我来说,"组件"是软件的一部分(这个术语的定义非常具体(
每个组件定义一个或多个(甚至可能为零(对象类。对象是类的实例。实际协作的是对象,它们的行为由它们的类定义,这些类在组件中编码。

3(如果你的编程思维是"我想实现这一点",那么设计过程程序可能比OOP程序更容易(与1(形成鲜明对比(。如果你能够将人类思维模型放入设计中,然后再放入代码中,OOP就更容易了
很难说,但我会冷嘲热讽地回答"不",因为任何教OOP并为此进行考试的人可能都会花一年的时间告诉你OOP在各个方面都更好。(原谅老师有多极端的夸张。他们越好,当然教学就越平衡。(