介绍
在创建软件的世界中,强大的基础是关键。甚至在编写一行代码之前,还有一个至关重要的步骤,称为面向对象的分析和设计(OOAD)。该步骤提供的方法提供了帮助软件开发人员巧妙地计划解决方案,从而确保了平稳的开发。它允许软件创建者构建不仅功能功能的应用程序,还可以适应性,易于维护并为将来的增长做好准备。现在,以对象为导向的编程语言是从网络开发到运行桌面应用程序的所有内容的标准,掌握和理解面向对象的分析和设计已成为必不可少的。
在本文中,我将指导您完成该过程的基本概念和原则,使您可以将应用程序的想法带入正确的部分,以便您直接知道要编写哪个代码(即面向对象的设计)讲故事的经历的形式。
面向对象的设计:一个相关的类比
当今许多广泛采用的编程语言都遵循面向对象的范式。但是,重要的是要注意,这不是唯一可用的编程方法。为了理解面向对象的语言的优势,我将与替代方法(即程序编程语言(例如普通C语言))进行比较。在过程编码中,程序由要执行的一系列操作组成。虽然某些部分可能会构成模块化的命名函数,但主要目的是从点x移动到要完成任务的点。
。允许我通过与熟悉的类比进行平行来比较这些方法。想想传统的讲故事与互动剧院。在传统的讲故事中,这几乎就像一本经典的书,作者指导您通过情节,以线性序列描述每个事件和角色的动作。叙事逐步流动,遵循预定义的路径。这种线性方法可以比喻为软件开发中的程序编程,因为程序被设计为一系列说明,就像一本书的章节一样。虽然某些部分可能会分组以进行更好的组织,但整体结构是顺序的,类似于作者通过安排事件来制作连贯的故事。
- 一个分裂的屏幕图像,显示一侧的传统讲故事场景,另一侧表演的演员,代表了程序编程和面向对象的编程之间的比较。
一个分裂的屏幕图像,一侧显示了传统的讲故事场景,另一侧显示了在互动剧院表演的演员,代表了程序编程和面向对象的编程之间的比较。
现在,将您的思想转移到互动剧院。在这种动态的环境中,不同的演员们不是指导故事的单个叙述者,而是用他们的动机和行动描绘了不同的角色。这可以比喻为以对象为导向的编程,其中程序被分为对象。就像交互式剧院中的角色一样,每个对象都封装了其数据和行为,这些对象相互交互,类似于舞台上的演员。角色的交换塑造了不断发展的故事,就像对象之间的相互作用会影响软件的行为一样。
在传统的讲故事和互动剧院中,我们已经听到了一些引人入胜且令人着迷的叙事。同样,在多年来,在程序和面向对象的编程中,我说的几个功能软件或敢于改变生活的软件。但是,这些叙述或程序的结构和经历的方式有所不同。正如互动剧院在讲故事的经验中增加了复杂性和参与度一样,面向对象的编程通过促进可重复性,适应性和模块化设计来增强软件开发。两个范式都有其优点,他们的选择取决于项目的性质。但是,了解传统讲故事和互动剧院之间的类比将帮助您欣赏何时以及如何应用面向对象的编程,从而导致软件不仅功能功能,而且还可以灵活,可维护,并且能够适应不断变化的需求,就像互动性一样根据观众互动而演变的剧院体验。
可重复性:另一个工作类比
现在,让我们将其与代码可重复使用性联系起来。想象一下,如果故事中的特定角色或情节元素只能使用一次,并且再也不会出现。当然,这将限制创建具有相同字符或元素的新故事的可能性。同样,在程序编程中,代码段通常是针对特定任务量身定制的,并且不容易适应在不同的情况下重复使用。每个代码都是为特定目的而设计的,在应用于不同方案时它的灵活性降低了。
另一方面,在互动剧院中,演员扮演着独特的角色,每个人都有自己的行为和角色,一个互动剧院制作的角色可以无缝地融入另一种作品中,从而带来了他们独特的个性和行动。现实生活中的实例包括当美国政治惊悚片电视连续剧的奥利维亚·波普(Olivia Pope)时,丑闻出现了关于如何摆脱谋杀案的情节,或者当美国警察程序性喜剧电视连续剧中的杰克·佩拉尔塔(Jake Peralta)新女孩的客串露面。在面向对象的编程中,这转化为创建可以在不同项目中重复使用的类或对象的能力,同时封装特定功能。这促进了有效的发展,就像拥有一个准备好的发达的角色库一样,准备在不同的故事中表演。总而言之,由于其模块化和封装的性质,以对象为导向的编程在代码可重复使用性中出色。
合作:另一个可行的比较
想象一下,必须重写一本书的整章,以结合新的情节扭曲。这将是具有挑战性的,可能会破坏整个故事的连贯性。从类似的意义上讲,叙事的叙述遵循了预定的线性路径 - 一旦故事编写和发表,进行重大改变将需要改变整个文本,这可能是一个复杂且耗时的过程。这种刚性类似于程序编程。
另一方面,让我们考虑互动剧院。在这种情况下,要结合一个新的情节扭曲 - 说小人的起源故事,只有小人的属性才需要改变,并且它无缝地适合叙事。这种适应性反映了面向对象的编程的灵活性,从而鼓励协作。
协作在软件开发中至关重要,因为它将多个人聚集在一起以共同创建高质量的软件产品。例如,另一个人的观点可以为您的代码提供新的启示,并可能识别您可能错过的缺点,优化或替代解决方案。鉴于使用面向对象的编程,将代码库分为离散对象,每个封装特定的行为和数据,因此更容易编辑和协作。与交互式剧院的角度,这与脚本如何更轻松地更改相同。
APIE:使用类比
APIE代表面向对象的编程的四个核心原理 - 抽象,多态性,继承和封装。现在,就互动剧院的早期类比而言,这就是它们所暗示的:
抽象
抽象涉及专注于对象的工作而不是它的作用。换句话说,抽象会在隐藏不必要的细节的同时提炼物体的基本特征。在我们的类比的背景下,它表明在制作引人入胜的故事时,您会在省略不必要的细节的同时使用基本要素。
- 一个说明抽象的图表,详细层被抽象出来,仅留下基本特征。
正如熟练的讲故事的人专注于核心叙事,角色和关键事件一样,面向对象的编程中的抽象涉及隐藏所有有关对象的相关数据,以降低复杂性并提高效率。
多态性
多态性是面向对象的编程中的基本概念,可以将不同类别的对象视为普通基类的对象。它使您能够通过抽象每个类的特定实现详细信息来编写更灵活和通用的代码。
在我们的类比的背景下,想象一下您是超级英雄互动剧院特许经营的导演,您有两个标志性的角色:超人和神奇女侠。这些角色中的每一个都具有独特的能力,背景故事和特征,使它们与众不同。作为导演,您有一个至关重要的场景,超人和神奇女侠都需要挽救这一天。但是,您希望保持脚本和场景尽可能灵活,以便将来包括不同的超级英雄。这是多态性发挥作用的地方:您决定创建一个称为“超级英雄”的共同基本概念,该概念捕获了所有超级英雄的核心特征:它们保存一天并有所作为的能力。这个基本概念包括诸如穿着签名服装,具有秘密身份以及使用独特的力量来对抗邪恶等元素。
现在,在您的电影场景中,只要有片刻需要超级英雄才能介入并使用其能力时,您只需为“超级英雄”奠定舞台。您不需要事先知道是《神力女超人》还是超人或以后出现的任何其他超级英雄。您相信,扮演“超级英雄”角色的人都会体现这些基本特征和特征。
在此类比中,“超级英雄”基础概念代表了多态性方面。它允许您(导演)创建对不同特定超级英雄的解释开放的场景和场景,每个人都具有其独特的能力和故事。观众将这些角色视为超级英雄,无论他们是否具有像Wonderwom的超级力量,还是依靠蝙蝠侠等小工具。
这种灵活的方法不仅使您的电影更适合将来在超级英雄演员中添加,而且还强化了超级英雄原型更多地是关于核心价值和动作的想法,而不是戴着斗篷和口罩的特定个人。这类似于以对象为导向的编程中的多态性如何通过通用界面与不同类别的对象进行交互,无论其特定实现如何。
遗产
继承是一种机制,它允许新类(子类或派生类)从现有类(超级类或基类)继承属性和行为。这促进了代码重用和层次结构。这模仿了角色的特征在戏剧系列中继承的方式。
- 具有人类层次结构的继承的视觉表示,展示了属性和行为是如何从基类继承的。
就像节目中的一个新角色保留了其前身的某些特征一样,子类继承并扩展了其父级的功能,促进代码再利用并维护结构化的层次结构。作为一个测试,您能说塔里克·圣帕特里克(Tariq St. Patrick)从衍生产品和续集到流行的犯罪戏剧电视连续剧《力量》,《幽灵》是原始节目中的詹姆斯·圣帕特里克(James St. Patrick)的子类?我认为是的。
封装
封装涉及将数据上运行的数据和方法捆绑到单个单元中,称为类。该范式是防止外部代码直接访问或修改对象内部状态的保护屏障。这屏蔽了对象的内部复杂性,并确保对象的实现更改不会破坏代码库的其他部分。
封装类似于互动剧院制作的后台管理。在幕后,仔细组织并设法仔细组织了各个方面,例如服装,道具和脚本,以确保表现平稳而凝聚力。就像剧院的受众成员只与舞台演员和道具互动一样,封装限制了对象内部状态的外部访问,从而通过定义明确的接口进行交互。该保护对象的完整性并保持代码库的整体稳定性。
总的来说,这些原则有助于结构良好,可维护和适应性的软件系统,就像它们增强了讲故事和戏剧表演的动态和有效性一样。最后,我承认在某些情况下,类比可能存在缺陷。毕竟,我们很少有两个具有相同特点的情况。但是,我希望我能够为您提供更多面向对象的设计的概念。