数据抽象是什么意思?请提供现实生活中的例子。

有帮助吗?

解决方案

抽象有两个部分:

  • 隐藏 从某个角度看不到的细节
  • 确定从某个角度角度重要的细节,并认为项目是 相同 上课,如果他们拥有这些细节。

例如,如果我正在设计一个处理库存的程序,我希望能够找出系统中有多少个某种类型的项目。从接口系统的角度来看,我不在乎我是否从数据库,CSV文件,通过SOAP接口或打孔卡中获取此信息。我只是在乎我能说的 widget.get_items_in_stock() 并知道它将返回整数。

如果我以后决定要以其他方式记录这个数字,那么设计界面的人就不需要知道,关心或担心它 widget 仍然有 get_items_in_stock() 方法。像Wise一样,接口不需要注意我是否子级别的小部件类并添加一个 get_square_root_of_items_in_stock() 方法。我也可以将新课程的实例传递给它。

因此,在此示例中,我们已经 如何获取数据的详细信息,并决定任何具有 get_items_in_stock() 方法是 相同 用于某些目的的类(或其子类)。

其他提示

数据抽象是任何允许您将数据视为人类遇到的设备,而不是将其存储在机器上。

在最低级别上,所有原始数据类型都是抽象的 - 作为程序员,我们通常不必在位级别处理数据(这是最终存储的方式),而是作为整数,浮点数,字符,等等。

然后,我们将图层添加到该抽象上 - 也许两个整数代表一个 Point, ,或者我们和枚举代表一年中的几个月,一周的天数等。

对于每个抽象层,我们远离机器,(希望)更接近人类对数据的理解。这可以提取绩效惩罚 - 可能并非总是如此,可以最有效地由两个整数代表点。使用抽象的时间较短的开发时间(和维护时间)来补偿这一点。

创建非常适合进行编程应用程序的新数据类型的技术称为数据抽象。

抽象意味着向外界提供基本信息并隐藏其背景细节。在您的计算机中,您只能看到监视器,键盘nd鼠标.. u对内部布线一无所知,这是抽象的。

数据抽象似乎被解释为将数据逐渐消失。食物将是苹果,橙色,比萨饼的抽象。动物将是猫,牛,猪的抽象。食物对象将是这样的伪代码:

class food{

 name;
 calories;
 weight;

 public eat(name);

 }

所有食物都有一个名称,卡路里量和重量。那很抽象。

然后,您可以制作继承的对象,这会少一些抽象。

class pizza inherits food{

  toppings;

  say_toppings();

}

披萨现在有浇头,但它继承了食物的名称,卡路里和重量。

基本上,抽象被解释为达到每个项目的最低水平,并制作从它们延伸的类。它也使您的代码更加重复使用...如果您已经足够好拜托基础食品,并且包括所有在食品行业工作的人都可以使用您的班级。

抽象正在隐藏人体的骨骼. 。皮肤有一个很好的方法 包含 它。 (请参阅我在那里的抽象?双关语。我离题...)

如果我有一个水瓶,那么我可以通过打开盖子,将其扭动直至弹出。

bool lid_open = false;
void open_water_bottle_by_twisting() { lid_open = true; }

但是水瓶是容器。容器持有液体,直到开放并能够从中喝醉(假设液体可饮用)。

class Container 
{ 
    bool lid_open = false;

protected: 
    Container() {}
    void open_by_twisting()
    {
        lid_open = true;
    }
public:
    virtual ~Container();
};

class WaterBottle : public Container
{
    WaterBottle() : Container() {}
public:
    ~WaterBottle();
};

但是,并非所有容器都以相同的方式打开。一些容器,例如水瓶,有可以扭转的盖子。其他人则没有盖子,例如锻炼瓶 - 那些含有弯曲的吸管,可以弯腰储存或饮用。

class Container 
{ 
    bool lid_open;
    bool straw_open;

protected:
    void TurnLid() { lid_open = true; }
    void BendStraw() { straw_open = true; }
    Container() : lid_open(false), straw_open(false){}

public:
    virtual void open() = 0;
    virtual ~Container();
};

class WaterBottle : public Container
{

public: 
    WaterBottle() : Container() {}
    void open()
    {
        TurnLid();
    }
    ~WaterBottle();
};

class ExerciseBottle : public Container
{
public:
    ExerciseBottle() : Container() {}
    void open()
    {
        BendStraw();
    }
    ~ExerciseBottle();
};

但是客户不知道什么 ExerciseBottle实施 ExerciseBottle' open() 是。它打电话 BendStraw(), ,然后设置 straw_open 真实。但 ExerciseBottle 简单地调用一个函数来完成所有这项工作。客户不必执行用于实施的几个操作 open(). 。案件类似 WaterBottle. 这就是抽象: 让客户知道后端将为它做所有工作. 。当使用“将实现与接口分开”一词时,这就是含义。

是使用易于与人类相互作用或遇到的数据详细信息的复杂系统,这与计算机系统存储(例如二进制数字系统)不同。由Neema,Rohan和Upendo(程序员)回答

根据给定的方案限制数据属性的技术,用于开发软件并删除所有无关紧要的属性。这使软件开发变得更加简单。

让我们以电视的一个真实生活示例,您可以打开和关闭,更改频道,调整音量并添加外部组件,例如扬声器,VCR和DVD播放器,但您不知道它的内部细节是,您不知道它是如何在空气上或通过电缆接收信号,如何翻译它们的,最后将它们显示在屏幕上。

它指的是表示基本功能的行为,而不包括背景细节或说明

很难找到数据抽象的日常生活示例。但是,编程语言,表格和视图中的任何数据类型都在DBMS,LinkedList,List,queue,stack等数据结构中都是数据摘要。这些抽象为您提供了以特定方式访问数据的方法。

本文 可以帮助您了解数据抽象并深入控制抽象。它还具有控制和数据抽象的一些现实示例。

抽象rrefers代表基本特征的行为,而不包括背景细节或解释。

简单的数据抽象不过是用户隐藏不必要的数据。示例:人只是想打个电话,他只是选择或拨号。然后单击呼叫按钮此信息。对他来说足够了。

我知道这个问题很久以前就问了。但是仍然喜欢分享一个现实生活中的例子,这可能会帮助他人理解 abstraction 非常简单地。

真实的抽象类比可能会这样起作用: 您(该物体)正在安排结束约会,并决定要告诉他们什么,以便他们可以在餐厅认出您。您决定包括有关所在位置的信息,高度,头发颜色和外套的颜色。这是所有可以帮助过程(您的日期找到您)工作的数据。您应该包括所有这些信息。另一方面,有很多关于您的信息与这种情况无关:您的社会保险号,您最喜欢的足球运动员都与这种特殊情况无关,因为它们不会帮助您的约会你。

数据抽象:它用于向用户提供必要的信息,并向用户隐藏不必要的信息。它称为数据抽象。它将隐藏您的业务逻辑。

技术示例: Console.WriteLine();

非技术示例:电视遥控器,汽车遥控器。

更多详情: 带有实时示例的数据抽象

数据隐藏率交易了OOPS的安全功能。根据此属性,类的私人数据成员是可以访问的,或者仅在同类外部的班级内才能访问或视觉。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top