概念
数据抽象结构:对现实世界的一种抽象从实际的人、物、事和概念中抽取所关心的共同特性,忽略非本质的细节,把这些特性用各种概念精确地加以描述这些概念组成了某种模型。
三种常用抽象
分类(Classification)
定义某一类概念作为现实世界中一组对象的类型,这些对象具有某些共同的特性和行为,它抽象了对象值和型之间的“is member of”的语义,在E-R模型中,实体型就是这种抽象。
聚集(Aggregation)
定义某一类型的组成成分,它抽象了对象内部类型和成分之间“is part of”的语义,在E-R模型中若干属性的聚集组成了实体型,就是这种抽象。
概括(Generalization)
定义类型之间的一种子集联系,它抽象了类型之间的“is subset of”的语义,概括有一个很重要的性质:继承性。子类继承超类上定义的所有抽象。
注:原E-R模型不具有概括,本书对E-R模型作了扩充,允许定义超类实体型和子类实体型。用双竖边的矩形框表示子类,用直线加小圆圈表示超类-子类的联系
数据抽象的用途
对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体
实体的属性,标识实体的码
确定实体之间的联系类型(1:1,1:n,m:n)
类背后蕴含的基本思想是数据抽象和封装
数据抽象是一种依赖于接口和实现分离的编程和设计技术。类的设计者必须关心类是如何实现的,但是使用该类的程序员不必了解这些细节,仅需抽象地考虑该类型能做什么。
封装是一项将低层次的元素组合起来形成新的、高层次实体的技术。函数和类都是封装的形式。被封装的元素隐藏了他们的实现细节,其主要优点在于:避免类内部出现无意的、可能破坏对象状态的用户级错误;使得修改类的实现时只要保持接口不变,就无需改变用户级代码。