转行解惑1--什么是数据抽象化

我在开始学习二叉树(binary tree)的时候,问了朋友一个很好玩的问题:如何给程序输入一个二叉树?因为我所理解的二叉树是长这个样子的:


我就想让我朋友教我如何输入一个这个的二叉树。我朋友很不知所措的,就给我严肃的画了一个这样的二叉树图。因为我那时不能理解,为啥计算机知道74的左边是62呢?

哈哈,事实上,这是一个让我开始理解数据抽象的问题。如何把一个具体事物,通过类的思想,来进行抽象化,或者说是数据化。

相信很多读者都已经知道Node

Class Node {

int val;

Node left;

Node right;

public Node(int x) {

this.val = x; // will talk about the Constructor later

}

}

那么这个Node是啥样的呢?


当我们需要建造一个二叉树,那每一个数的节点(Node)需要存储自己的值(比如一个int,也可以是任何其他的数据类型,比如char),然后需要存储自己的左节点(Node)和右节点(Node)。然后我们只需要一个Node Root指向顶点,就能够知道整棵树的信息。那么由此可见,一个类的建造,就是从数据抽象开始来完成实现。而类里面的变量(这里是实例变量)就反应了这个类所被定义的属性。

那么,我们在来看一个例子。需要建立一个朋友圈,来存储每个人的信息,比如id,姓名,年龄,性别和朋友。那么这个数据抽象就自然而然得到了:

Class Person {

long id;

String name;

int age;

boolean isMale;

List<Person> friends;

}

然后可以理解成如下图所示,一个Person类所包含了哪些数据类型。


这样,一个“人”的数据抽象就完成了。那么可以通过程序,知道一个“人”的信息,并能实现创建,更改和删除的操作。

数据抽象,实现了一个具体的实例或者具体的类,从现实到计算机世界的转变。而这个是面向对象编程的一个重要概念。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值