封装与抽象现实世界的例子

cro*_*wso 40 oop programming-languages

对于封装的示例,我可以想到用户和移动电话之间的交互.用户不需要知道移动电话的内部工作来操作,因此这称为抽象.但封装在哪里适合这个例子?有人可以对此有所了解吗?

dav*_*ooh 68

封装是实现"信息隐藏"的一种方式,因此,按照您的示例,您不需要"了解手机的内部工作情况".您有一个接口来使用设备行为,而无需了解实现细节.

另一方面的抽象可以解释为对不同对象使用相同接口的能力.可以存在相同接口的不同实现.封装隐藏了详细信息.


zes*_*ssx 61

抽象:你永远不会购买"设备",但总是买更具体的东西:iPhone,GSII,诺基亚3310 ......这里,iPhone,GSII和N3310都是具体的东西,设备是抽象的.

封装:你有几个设备,所有设备都有一个USB端口.你不知道那里有什么样的印刷电路,你必须知道你能够将USB电缆插入其中.

抽象是一个概念,封装允许.我的例子不是最好的(两个块之间没有真正的联系).

您可以在不使用抽象的情况下进行封装,但如果您想在项目中使用某种抽象,则需要封装.

  • 迄今为止最好的答案 (2认同)

Rah*_*jan 21

一般来说,抽象只是隐藏特定过程背后的复杂事物,使程序看起来很简单.
示例:监视器ON/OFF :: - 用户无需了解监视器打开或关闭时所发生的所有芯片功能.他需要知道的是On功能ON-Monitor是打开还是打开功能OFF-Monitor关闭...

或者更好寻找一辆车 - 每个人都知道有一个特殊的齿轮机器可以改变齿轮,没有人愿意知道齿轮有什么功能可以改变.那就是抽象(避免不必要的实施以防止复杂性).

因此,如果开发人员提供了良好的抽象,用户就不会试图窥视对象的内部机制.

通过使具有一个或多个方法抽象的类抽象来实现抽象.这不过是必须由扩展它的类实现的基本特征. e.g.当你发明/设计汽车时,你定义了一个特征,比如汽车应该有4个门,断裂,方向盘等......所以任何使用这种设计的人都应该包括这个特性.实现不是每个抽象的头.它只会定义应包含的特征.

封装限制用户遵循特定过程来访问特定过程的控制.它只是提供安全性并确保系统稳健性.

示例:我们可以将公司中的人力资源视为一个按照封装原则工作的人员,.i.e.我们无法直接与其他部门交谈,我们需要通过人力资源部门与他们进行沟通.这可以确保公司记录的安全性和更好的维护.

我们可以一起举例UNDER CONSTRUCTION BUILDING..说明我们可以说"不"的事情.在每个建筑施工中,管理者要求,材料类型,工人数量等都是抽象的.

但是,与此同时,将每个这样的领域纳入承包商,作为工人和建筑投资者之间的调解者,可以看作是封装.因为,它将所有上述属性隐藏到一个实体中.

因此,如果您理解到现在,您可以说抽象只是ENCAPSULATION.ie的一个子集.执行抽象的每个实体都在内部封装,但是每个显示封装的东西都不需要总是抽象.

例如.ToString(),几乎每个类中定义的方法都是实现的Abstraction因为我们没有功能内部,我们所关心的是它几乎将所有内容都改为字符串.当它组装成一个单元时,它也被封装了..但是,私有成员那个我们隐藏和访问Properties是一个封装的例子,因为它完成基本上保持数据安全性在脑海中.. !!

希望这回答你的问题.. !!


Sam*_*azi 14

封装是为了隐藏类中的变量或某些东西,防止未经授权的方使用.所以像getter和setter这样的公共方法访问它,其他类调用这些方法进行访问

抽象涉及设施来定义表示抽象"演员"的对象,这些对象可以执行工作,报告和更改其状态,并与系统中的其他对象"通信".

考虑以下实时示例:

封装: 作为驾驶员,您可以通过按下开始按钮来了解如何启动汽车,并且隐藏了启动操作的内部细节.因此,整个启动过程对您是隐藏的,否则我们可以告诉您启动操作是封装的.

要么

驱动轮封装了从您身上旋转车轮的过程.

抽象:

在提到有关抽象的任何内容之前,我们可以在这里考虑三个不同的用户(我将它们称为实体)

1)你2)当地机械师3)专家

您实体:因为您只知道通过按下按钮来启动汽车,并且场景背后的所有其他操作都是从您身上抽象出来的.

当地机械师实体:我们当地的机械师知道启动汽车的一些实施,即他可以打开汽车的发动机罩并检查电池电缆或轴承座等.因此,简而言之,Local Mechanic Entity了解汽车的一些实施方案.

专家实体:由于我们的专家(汽车设计师)机械师知道我们汽车的所有操作,他可以​​很快修复它.所以简而言之,Expert Entity知道汽车的所有实现.

汽车的操作完全从您身上抽象出来,部分实施到Local Mechanic Entity并完全实施到Expert Entity.所以你是一个只有抽象方法的抽象类,Local Mechanic Entity扩展了你(因为他也是普通用户),他实现了一些方法,并且我们的专家实体扩展了Local Mechanic并实现了所有方法.

我认为这是一个很好的 例子.


San*_*mar 11

一切都有很多属性和行为,所以你需要任何你想要的对象,如电视,手机,汽车,人或任何东西.

抽象:

  1. 挑选你真正需要的对象的本质的过程
  2. 换句话说,从对象示例中选择所需的属性:
    a.电视 - 声音,视觉,电源输入,通道输入.
    移动 - 按钮/触摸屏,电源按钮,音量按钮,SIM端口.
    C.汽车 - 转向,休息,离合器,加速器,关键孔.
    d.人类 - 声音,身体,视力,听力,情绪.

封装:

  1. 隐藏您不需要的对象的细节的过程
  2. 换句话说,隐藏对象中不需要的属性和操作,但对象才能正常工作示例:
    a.电视 - 扬声器,显示器,配电黑白组件,通道机制的内部和连接.
    移动 - 如何解析和处理输入,如何按开/关闭按钮或更改卷,SIM将如何连接到服务提供商.
    C.汽车 - 如何转弯转向汽车,如何打破缓慢或停止汽车,离合器如何工作,加速器如何提高速度,如何关键孔打开/汽车.
    d.人类 - 如何产生声音,身体内部是什么,视力如何运作,听觉如何运作,情绪如何产生和影响我们.

摘要你需要的一切,并包装你不需要的一切;)

  • 它的最佳定义,直到我读到抽象 Vs 封装......很好...... (2认同)
  • `抽象你需要的一切,封装你不需要的一切` - 简单而有效 (2认同)

mso*_*son 7

你问题的措辞很奇怪 - 抽象与封装?它应该是 - 有人解释抽象和封装......

抽象是理解事物的本质.

一个现实世界的例子是抽象艺术.这种风格的艺术家试图捕捉/描绘仍然允许它成为事物的东西的本质.这种4行棕色涂片捕捉了公牛的本质.

封装是黑拳.

手机就是一个很好的例子.我不知道手机是如何连接到卫星,塔台或其他手机的.我不知道这该死的东西是怎么理解我的按键或它如何拍摄并将照片发送到电子邮件地址或其他电话号码.我不知道大多数现代智能手机如何工作的复杂细节.但是,我可以使用它!手机具有标准接口(是的 - 文字和软件设计),允许了解一个人的基本知识的人几乎使用所有这些接口.

这两者有什么关系?

抽象和封装都是面向对象思想和设计的基础.所以,在我们的手机示例中.智能手机的概念是一种抽象,其中封装了某些功能和服务.iPhone和Galaxy是更高层次抽象的进一步抽象.您的物理iPhone或Galaxy是多层抽象的具体示例,其中包含封装的功能和服务.


小智 5

抽象 手段我们专注于某些事物的基本品质而不是一个具体的例子,我们会自动丢弃不重要或不相关的事物.

示例 我们正在写一个银行账户类,银行账户的基本素质是开业日期,账户名称,账号,余额等...

封装 意味着封装或围绕某些事情的想法不仅仅是为了保持内容在一起而且还要保护和限制表单访问的一面.同时保密它是关于减少应用程序不同部分之间的依赖关系.

示例 在我们的银行帐户类中访问Balance属性并尝试更改它的人,如果没有封装,则尝试可以成功.