这么多年以后,我又开始学习了,最后我终于拿到了三年制学位的重要论文。
作为一名系统工程师,我已经工作了20年,从我还是个年轻的学生开始,我就没有学习过编程。幸运的是,我被分配了一篇关于面向对象编程的概要论文.
现在我写了一本关于面向对象编程的简编,但是老师要求我增加一章,试图强调它在特定领域的重要性和可能的应用。在这里,我遇到了严重的问题,因为我在开发方面的经验很少。
现在,我并不是说我必须编写一个应用程序,我认为它只是突出了一个领域,可以将它应用于这个范例及其好处。问题是我不知道从哪里开始。
您有什么链接可以获得一些想法吗?因为目前我还没有任何想法,而且没有经验,所以我很难突出一个面向对象编程的示例领域。
发布于 2021-02-06 22:20:45
历史上,面向对象编程的开发与图形用户界面的开发密切相关。Smalltalk-80是这两个概念发展的热点。如今,许多GUI框架都是基于面向对象的技术,尽管它们可能使用过程语言或功能语言。
发布于 2021-02-06 21:45:18
在你谈论利益之前,你必须先解释一下这个行业是从哪里来的。利益不是绝对的,它与一些不太有益的东西有关。
在面向对象( OO )成为规范之前,结构化编程()风靡一时。结构化编程从未消失过,但随着软件变得越来越大和更复杂,它已经不足以应付下去了。
结构化编程帮助您实现工作流程,这是一个有开始并得出结论的任务,它会产生一个结果。这对于简单的程序来说是很好的,可以对算法建模。
大多数现代软件系统不只是由一个或多个工作流组成,它们必须处理许多相互关联、相互依赖、相互交互的工作流。这就是仅仅是结构化编程开始不足的地方。它的应用仅限于流量控制逻辑。
OO通过提供一个模型来解决这个问题,该模型允许您创建构建块来打包子问题的解决方案。它通过将数据和逻辑合并到这样的块中来做到这一点。您可以让块相互交互,并与它们构建大型系统。
因此,它的主要优点是控制复杂性。它使一个复杂的系统在开发阶段和维护阶段都易于管理。
从OO中获益最大的领域将是那些既不单纯以逻辑为焦点,也不单纯以数据为焦点的字段。例如,电梯控制系统主要是流量控制逻辑。无论涉及什么数据,都不会造成严重的问题。另一方面,一个地址簿访问系统具有相当枯燥的逻辑,它都是关于数据的。同时需要这两个方面的系统将从OO中获益最多。我不认为我们能够确定一个特定的领域或行业将特别适合于面向对象,它更多的是关于要创建的系统的类型。
发布于 2021-02-07 12:26:53
关于面向对象编程( OOP )的好处,我可以提到的最好的一点是,与其他编程方法相比,从不同的“角度”管理复杂性的方法。让我给你一个“非常大胆和清晰”的例子,在游戏行业中使用OOP。
想想游戏中的对象、人物、敌人和所有你能看到的东西。他们都有一些共同的和一些具体的特点。例如,所有的朋友、敌人和对象都将生命值作为属性。他们可以攻击某物或受到其他物体/敌人的伤害。所以我们有很多属性和方法。其中一些具有相同的实现,而另一些则覆盖它。与其他敌人相比,一个特定等级的敌人具有更大的攻击伤害。我们可以在这里提到大量的功能。通过拥有诸如继承、抽象、接口、多态性等面向对象的方法,所有这些概念都变得很容易处理。我已经准备了一个例子,说明了我在以下几个方面的解释:
interface Pawn {
int x, y,z;
int health;
int mana;
public void attack(Pawn dest);
public void receiveDmg(int dmg);
public void moveTo(int x, int y, int z);
}
class IronMan implements Pawn{
health = 1500;
int mana = 2000000;
int attackDmg = 50;
int armor = 0.2;
public void attack(Pawn dest){
dest.receiveDmg(this.attackDmg);
};
public void receiveDmg(int dmg){
this.health = this.health - ( dmg * (1 - this.armor) );
}
public void moveTo(int x, int y, int z){
// .....
}
}OOP提供了解决复杂问题的“不同视图”。但是,您应该注意到,OOP并不是所有问题的最佳解决方案--这就是为什么我们谈论不同的体系结构和原则,比如函数式编程、无服务器架构和微服务模式,以确保我们已经将我们的大问题划分为较小的问题,并且我们将尝试以最好的方式解决每个问题。
https://softwareengineering.stackexchange.com/questions/421947
复制相似问题