代码之家  ›  专栏  ›  技术社区  ›  Naruto

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

  •  12
  • Naruto  · 技术社区  · 14 年前

    数据抽象是指什么?

    16 回复  |  直到 11 年前
        1
  •  19
  •   aaronasterling    14 年前

    抽象有两部分:

    • 隐藏 从某个角度看无关紧要的细节
    • 从某个角度确定重要的细节,并考虑重要的项目 如果他们掌握了这些细节。

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

    widget 仍然有 get_items_in_stock() 方法。像wise一样,接口不需要关心我是否对widget类进行子类化并添加 get_square_root_of_items_in_stock()

    隐藏 获取库存物品() 相同的 类(或其子类)。

        2
  •  10
  •   JohnMcG    14 年前

    然后我们在抽象上添加层——也许两个整数代表一个 Point ,或者我们使用和枚举来表示一年中的月份、一周中的几天等。

    在每一个抽象层中,我们都离机器更远,更接近人类对数据的理解。这可能会导致性能下降——可能并不总是用两个整数来最有效地表示点。这可以通过使用抽象时更短的开发(和维护)时间来补偿。

        3
  •  6
  •   Andrew Barber Eric Lafortune    12 年前

        4
  •  1
  •   Nutan Kaushik    10 年前

    抽象意味着只向外界提供必要的信息并隐藏其背景细节。在你的电脑里,你只能看到显示器、键盘和鼠标,你对内部接线一无所知,这是抽象的。

        5
  •  1
  •   user2296112    10 年前

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

    class food{
    
     name;
     calories;
     weight;
    
     public eat(name);
    
     }
    

    所有的食物都有名字,热量和重量。这很抽象。

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

    class pizza inherits food{
    
      toppings;
    
      say_toppings();
    
    }
    

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

        6
  •  1
  •   Jossie Calderon    8 年前

    抽象是对人体隐藏骨骼 . 皮肤有很好的保护作用 包含

    如果我有一个水瓶,那么我就可以打开盖子,扭动它直到它掉下来。

    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 运动瓶 open() BendStraw() straw_open 是真的。但是 只需调用一个函数即可完成所有这些工作。客户机不必执行在实现中使用的多个操作 打开() . 这种情况也适用于 WaterBottle . 这就是抽象 : . 当使用术语“从接口分离实现”时,这就是它的含义。

        7
  •  0
  •   UPENDO JOSEPHAT    11 年前

    由Neema,Rohan和Upendo(程序员)回答

        8
  •  0
  •   Muhammad Naveed    11 年前

    在软件开发过程中,根据给定的场景限制数据属性并删除所有不相关数据的技术属性。这个使软件开发更简单。

        9
  •  0
  •   Karan Singh Saini    11 年前

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

        10
  •  0
  •   Basil Abdussalam    11 年前

        11
  •  0
  •   Vishal Shukla    11 年前

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

        12
  •  0
  •   Ripal shah    10 年前

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

        13
  •  0
  •   Shadab pirjad3    10 年前

    例子:人很简单只想打个电话,他只需选择或拨号码,然后按一下呼叫按钮就可以得到这个信息。够了吗他。他不想知道如何建立连接,以及打电话背后的流程或语音传输方式。

        14
  •  0
  •   Bacteria Ishan Fernando    9 年前

    我知道这个问题很久以前就被问过了。但还是喜欢分享一个现实生活中的例子,也许能帮助别人理解这个概念 abstraction 非常容易。

    你(对象)正在安排与一个相亲对象见面,并决定告诉他们什么,以便他们能在餐厅认出你。你决定包括你的位置,你的身高,头发的颜色,以及你的夹克的颜色。这是所有的数据,将有助于程序(你的日期找到你)顺利工作。你应该包括所有这些信息。另一方面,有很多关于你的信息与这种情况无关:你的社会保险号码,你最喜欢的足球运动员都与这种特殊情况无关,因为他们不会帮助你的约会对象找到你。

        15
  •  0
  •   Rajat Jain    6 年前

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

    技术示例: Console.WriteLine();

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

    更多细节: Data Abstraction with real-time example

        16
  •  -2
  •   aarchi sharma    9 年前

    推荐文章