Java定义一个抽象类科学家_编程中抽象是什么意思?

抽象是所有计算机科学中的核心概念。 没有抽象,我们仍将使用机器代码进行编程,或者更糟糕的是首先没有计算机。 所以恕我直言,这是一个非常好的问题。

什么是抽象

抽象事物意味着给事物命名,以便该名称抓住函数或整个程序的核心作用。

您参考的书中给出了一个示例,其中说

假设我们正在使用海龟,而我们需要执行的一项常见操作是 画正方形。 “画一个正方形”是一种抽象或思想上的块, 一些较小的步骤。 因此,让我们编写一个函数来捕获 这种“基本要素”的模式:

暂时忘掉海龟,只想画一个正方形即可。 如果我告诉您在纸上画一个正方形,您会立即知道该怎么做:

绘制一个正方形=>绘制一个所有边长均相同的矩形。

您可以执行此操作而无需其他问题,因为您完全知道正方形是什么,而无需我逐步告诉您。 在这里,“正方形”一词是“绘制所有边长均相同的矩形”的抽象。

抽象深入

但是等等,你怎么知道什么是矩形? 好吧,这是以下内容的另一种抽象:

矩形=>绘制两条长度相同的彼此平行的线,然后添加两条垂直于其他两条直线的平行线,它们的长度也相同,但长度可能与前两条长度不同。

当然,它不断进行-线,平行,垂直,连接都是众所周知概念的抽象。

现在,想象一下,每次要绘制矩形或正方形时,都必须给出矩形的完整定义,或者说明直线,平行线,垂直线和连接线-这样做花费的时间太长。

抽象的真正力量

那是抽象的第一个力量:它们使交谈和完成事情变得容易得多。

抽象的第二种力量来自于可组合性的出色特性:定义了抽象之后,就可以组成两个或更多个抽象以形成一个新的更大的抽象:说您已经厌倦了绘制正方形,但是您确实想绘制一所房子 。 假设我们已经定义了三角形,那么我们可以定义:

房子=>画一个正方形,上面有一个三角形

接下来,您要一个村庄:

村庄=>挨着画多栋房子

哦,等等,我们想要一个城市-我们有一条新的概念街:

city =>吸引许多彼此靠近的村庄,用更多的房屋填充空白空间,但为街道留出空间

街道=>(街道的某些定义)

等等...

这一切如何适用于编程?

如果在计划程序(称为分析和设计的过程)的过程中,您找到了要解决的问题的良好抽象,那么程序就会变得更短,因此更容易编写,而且也许更重要的是,它更易于阅读。 这样做的方法是尝试掌握定义问题的主要概念,例如在绘制房屋的(简化)示例中,这是正方形和三角形,在绘制乡村的过程中是房屋。

在编程中,我们将抽象定义为函数(以及其他一些构造,如类和模块,但现在让我们集中讨论函数)。 函数本质上是命名一组单条语句,因此函数本质上是一种抽象-有关详细信息,请参见本书中的示例。

这一切的美丽

在编程中,抽象会影响生产力。 这就是为什么通常将常用功能收集到库中以供其他人重用的原因。 这意味着您不必担心细节,只需要了解如何使用现成的抽象即可。 显然,这应该会使您更轻松,因此您可以更快地工作,从而提高工作效率:

例:

想象有一个名为“ nicepic”的图形库,其中包含上述所有抽象的预定义功能:矩形,正方形,三角形,房屋,村庄。

假设您要基于上述抽象来创建一个程序,该程序可以绘制一幅漂亮的房子图,那么您所要做的就是:

import nicepic

draw_house()

因此,仅需两行代码即可进行更详细的说明。 那不只是美好的吗?

希望这可以帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值