【问题标题】:What is the real definition of Abstraction?抽象的真正定义是什么?
【发布时间】:2013-02-17 08:43:17
【问题描述】:

我在几个网站上看到了抽象的不同含义。

有些网站这样说

选择相关数据并忽略无关紧要的数据

有些网站这样说

从同一种对象中获取公共类

作为一个例子,Vehicle 类在与公共汽车、货车和汽车相比时可以被视为抽象。

我对这些定义感到困惑。正确的定义是什么?

【问题讨论】:

  • 您能否就(特定)计算机科学/编程问题提出这个问题?否则这似乎不是你问这个的正确地方......
  • 这是第二个。第一个可以称为例如。特征选择。

标签: abstraction


【解决方案1】:

抽象的最简单定义是“从规范中隐藏实现细节”。 最佳实时示例是:假设您是一名驾驶员,那么您需要知道“如何驾驶汽车(其规范)”,而不是汽车的实现细节(例如发动机的构建方式等)。

最简单的编程示例是 System.out.println() 函数。作为程序员,您需要知道如何使用 System.out.println(),而不是它的实现细节。 希望它能消除你的疑虑。

【讨论】:

    【解决方案2】:

    抽象是处理高级概念而忽略低级细节的能力。

    我喜欢我在 McConnell 的《代码完成》一书中看到的例子:

    如果您将一个对象称为“房子”而不是 木头、玻璃和钉子,你用的是抽象。

    【讨论】:

      【解决方案3】:

      抽象是“代表本质特征而不代表背景细节。”

      抽象让您专注于对象的作用,而不是它的作用。

      抽象通过提供相关信息为您提供类或对象的一般视图。

      抽象是隐藏对象的工作方式,并以可理解的方式显示对象信息的过程。

      真实世界的抽象示例:-

      假设你有一个对象 Mobile Phone。

      假设你有 3 部手机如下:-

      • 诺基亚 2700(功能:- 通话、短信、FM 收音机、MP3、相机)
      • Black Berry(功能:-通话、短信、FM 收音机、MP3、相机、视频录制、阅读电子邮件)
      • Black Berry(功能:-通话、短信、FM 收音机、MP3、相机、视频录制、阅读电子邮件)

      对象“手机”的抽象信息(必要信息和通用信息)是拨打任意号码,可以发送短信。”

      因此,对于手机对象,您将拥有如下抽象类:-

      abstract class MobilePhone
      {
          public void Calling();
          public void SendSMS();
      }
      
      public class Nokia1400 : MobilePhone
      {
      
      }
      
      public class Nokia2700 : MobilePhone
      {
          public void FMRadio();
          public void MP3();
          public void Camera();
      }
      
      public class BlackBerry : MobilePhone
      {
          public void FMRadio();
          public void MP3();
          public void Camera();
          public void Recording();
          public void ReadAndSendEmails();
      
      }
      

      抽象意味着将所有必要的变量和方法放在一个类中。

      例如:- 抽象类和抽象方法。

      抽象是常见的东西:

      示例:

      如果您的大学有人告诉您填写申请表,您将填写您的详细信息,例如姓名、地址、出生数据、哪个学期、您获得的百分比等。 如果某个医生给你申请填写详细信息,你会填写姓名、地址、出生日期、血型、身高和体重等详细信息。

      看看上面的例子有什么共同点?年龄、姓名、地址 - 因此您可以创建由称为抽象类的常见事物组成的类。该类不完整,可以被其他类继承。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-15
        • 2016-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-06
        • 2012-03-30
        • 2011-10-10
        相关资源
        最近更新 更多