C++ 什么是;“数据抽象”;到底是什么意思?

C++ 什么是;“数据抽象”;到底是什么意思?,c++,abstraction,database-abstraction,C++,Abstraction,Database Abstraction,数据抽象指的是什么? 请提供现实生活中的例子。抽象有两部分: 隐藏从某个角度看无关紧要的细节 从某个角度来识别细节,并考虑如果它们拥有这些细节,则它们是相同的类。 例如,如果我正在设计一个处理库存的程序,我希望能够找出系统中有多少特定类型的项目在库存中。从接口系统的角度来看,我不在乎是否通过SOAP接口或穿孔卡从数据库、csv文件、远程存储库获取这些信息。我只关心我可以说widget.get\u items\u in\u stock(),并知道它将返回一个整数 如果我后来决定以其他方式记录该

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

抽象有两部分:

  • 隐藏从某个角度看无关紧要的细节
  • 从某个角度来识别细节,并考虑如果它们拥有这些细节,则它们是<强>相同的<强>类。
例如,如果我正在设计一个处理库存的程序,我希望能够找出系统中有多少特定类型的项目在库存中。从接口系统的角度来看,我不在乎是否通过SOAP接口或穿孔卡从数据库、csv文件、远程存储库获取这些信息。我只关心我可以说
widget.get\u items\u in\u stock()
,并知道它将返回一个整数

如果我后来决定以其他方式记录该数字,那么只要
widget
仍然具有
get\u items\u in_stock()
方法,界面设计人员就不需要知道、关心或担心它。与wise一样,如果我将widget类划分为子类并在\u stock()中添加一个
get\u square\u root\u of \u items\u方法,则接口不需要关心。我也可以将新类的实例传递给它


因此,在本例中,我们隐藏了数据获取的详细信息,并确定使用
get\u items\u in\u stock()
方法的任何内容都是同一类(或其子类)的实例出于某些目的。

数据抽象是指任何允许您在人类遇到数据时而不是在机器上存储数据时处理数据的设备

在最底层,所有的原始数据类型都是抽象的——作为程序员,我们通常不必在位级别(它最终是如何存储的)处理数据,而是作为整数、浮点数、字符等处理数据

然后我们在这个抽象上添加层——可能两个整数代表一个
,或者我们和枚举代表一年中的月份、一周中的几天,等等


在每个抽象层中,我们都离机器更远,并且(希望)更接近人类对数据的理解。这可能会导致性能损失——可能并不总是两个整数可以最有效地表示点。当使用抽象时,开发(和维护)时间更短,这就弥补了这一不足。

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

是一个复杂的系统,它使用易于与人交互或接触的数据细节,不同于计算机系统存储的方式,如二进制。
Neema、Rohan和Upendo(程序员)回答说,根据给定的软件开发场景限制数据属性并删除所有不相关属性的技术。这使得软件开发更简单

让我们举一个电视的真实例子,你可以打开和关闭电视,改变频道,调整音量,并添加外部组件,如扬声器、VCR和DVD播放机,但你不知道它的内部细节,也就是说,你不知道它如何通过空中或电缆接收信号,如何转换信号,最后将它们显示在屏幕上。

它指的是在不包括背景细节或解释的情况下表示基本特征的行为。

很难找到日常生活中数据抽象的例子。然而,编程语言中的任何数据类型、DBMS中的表和视图、LinkedList、List、Queue和Stack等数据结构都是数据抽象。这些抽象为您提供了以特定方式访问数据的方法


可以帮助您深入理解数据抽象和控制抽象。它也有一些控制和数据抽象的实际例子

抽象是指在不包含背景细节或解释的情况下表示基本特征的行为。抽象意味着只向外界提供基本信息并隐藏其背景细节。在你的电脑里,你只能看到显示器、键盘和鼠标。你对内部接线一无所知。这是抽象。

简单的数据抽象就是向用户隐藏不必要的数据。
示例:此人只是想打个电话,他只需选择或拨打号码,然后单击“呼叫”按钮即可获得此信息。这对他来说已经足够了。他不想知道如何建立连接,以及打电话背后的任何过程,或者语音是如何传输的

数据抽象似乎被解释为尽可能地分解数据。食物将是苹果、橘子、比萨饼的抽象。动物将是猫、牛、猪的抽象。食物对象类似于以下伪代码:

class food{

 name;
 calories;
 weight;

 public eat(name);

 }
所有食物都有名称、卡路里含量和重量。这很抽象

class pizza inherits food{

  toppings;

  say_toppings();

}
然后,您可以创建继承的对象,这样就不那么抽象了

class pizza inherits food{

  toppings;

  say_toppings();

}
比萨饼现在有配料,但它继承了食物的名称、热量和重量


基本上,抽象被解释为到达每个项目的最低级别,并从中扩展类。它也使您的代码更易于重用。。。如果你对食物的基类做得足够好,并且包含了所有关于它的抽象内容,那么在食品行业工作的任何人都可以使用你的类。

数据隐藏处理oops的安全特性。根据该属性,类的私有数据成员只能在类内部访问或可见,而不能在类外部访问。

我知道这个问题很久以前就被提出了。但我还是想分享一个现实生活中的例子,它可能会帮助其他人非常容易地理解
抽象的概念

一个真实的世界
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();
};