精华内容
下载资源
问答
  • 抽象数据结构

    千次阅读 2020-01-23 09:49:40
    1.抽象数据类型定义 抽象数据类型( Abstract Data Type,ADT)是带有一组操作的一些对象的集合。它通常是对数据的某种抽象,定义了数据的取值范围及其结构形式,以及对数据操作的集合。 2.抽象数据类型表示...

    1.抽象数据类型定义

           抽象数据类型( Abstract Data Type,ADT)是带有一组操作的一些对象的集合。它通常是对数据的某种抽象,定义了数据的取值范围及其结构形式,以及对数据操作的集合。

    2.抽象数据类型表示方法

           抽象数据类型是一个数学模型以及定义在其上的一组操作组成,因此,抽象数据类型一般通过数据对象、数据关系以及基本操作来定义,即抽象数据类型三要素是(D,S,P)

           ADT抽象数据类型名{

           数据对象:<数据对象的定义>

           数据关系:<数据关系的定义>

           基本操作:<基本操作的定义>

           } ADT抽象数据类型名

    3.数据结构定义

      数据结构(Data Structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。

    4.数据结构和抽象数据类型之间的联系和区别

           数据结构定义为一个二元组(D,S),即两个集合,D是数据元素的集合,S是数据元素之间一个或多个关系的集合。

           抽象数据类型本质是“数据类型”,与计算机相关,涉及数据的存储及如何用存储来反应数据元素之间的关系。它定义为一个三元组(D,S,P),加上的P是定义的一组针对存储的数据操作(如插入,删除,排序等)。


      

    展开全文
  • 数据抽象过程和数据模型

    千次阅读 2018-04-23 23:23:57
    - 数据抽象过程 【1】:概念模型设计阶段,分析用户需求,设计概念模型。 【2】:逻辑模型设计阶段,将概念模型转换为逻辑模型 【3】:物理模型设计阶段,数据库/数据仓库实现时,根据逻辑模型设计物理模型 - ...

    - 数据抽象过程

     【1】:概念模型设计阶段,分析用户需求,设计概念模型。
     【2】:逻辑模型设计阶段,将概念模型转换为逻辑模型
     【3】:物理模型设计阶段,数据库/数据仓库实现时,根据逻辑模型设计物理模型
    

    - 概念模型:数据的整体逻辑结构

     关系模型:关系型数据库、数据仓库一般采用实体建模法
    

    - 逻辑模型

     层次模型:
     网状模型:
     关系模型:关系型数据库采用关系模型,使用范式建模法
     多维模型:数据仓库采用多维模型和关系模型,使用维度建模法或者范式建模法
    

    - 物理模型

     关系模型表现形式:表结构设计、主键、属性设计等
     多维模型:事实表,维度表设计
    

    - 什么是实体建模法 ?

     任何业务需求可以看成 3 个部分:
     【1】:实体,主要指业务需求中特定的概念主体,指发生业务关系的对象。
     【2】:事件,主要指概念主体之间完成一次业务流程的过程,特指特定的业务过程。
     【3】:说明,主要是针对实体和事件的特殊说明。
    

    - 什么是多维模型 ?

     支持者,Ralph Kimball
     【1】:星形连接,事实表(中间),多张维度表
     【2】:雪花结构,多张事实表
    

    - 关系模型好坏的衡量标准 ?

     第一范式(1NF),关系模型中的每个属性都不可再拆分,其具有原子性。
     第二范式(2NF),1NF基础之上,添加实体的属性完全依赖于主关键字(带有主键)
     第三范式(3NF),2NF基础之上,实体的非主属性不依赖于其他非主属性
     BCNF,主属性(主关键字)不依赖于非主属性
     第四范式(4NF)
    

    - 事实表、维表区别 ?

    事实表:记录要分析的对象
    维表:记录度量要分析的对象
    

    参考资料:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0803zhousb/index.html

    注:有关数据仓库等问题,有兴趣的同学可以联系我。TEL:18310801089

    展开全文
  • 1.3数据抽象级别

    千次阅读 2018-01-18 13:55:10
    一、数据抽象的级别1、概念数据模型2、逻辑数据模型3、外部数据模型4、内部数据模型表达用户需求观点的数据全局逻辑结构的模型,称之为概念模型;表达计算机实现观点的DB全局逻辑结构的模型,称之为逻辑模型;表达...

    一、数据抽象的级别

    1、概念数据模型

    2、逻辑数据模型

    3、外部数据模型

    4、内部数据模型

    表达用户需求观点的数据全局逻辑结构的模型,称之为概念模型;

    表达计算机实现观点的DB全局逻辑结构的模型,称之为逻辑模型;

    表达用户使用观点的DB局部逻辑结构的模型,称之为外部数据模型;

    表达DB物理结构的模型,称之为内部模型;

    二、数据库设计的过程

    数据库抽象的过程也就是数据库设计的过程

    1、根据用户需求设计概念模型,这是一个“综合”的过程。

    2、根据转换规则,把概念模型转换成数据库的逻辑模型,这是一个“转换”的过程。

    3、根据用户的业务特点,设计不同的外部模型,外部模型与逻辑模型之间的对应性称为映像。

    4、数据库实现时,要根据逻辑模型设计其内部模型,内部模型跟逻辑模型之间的对应性称为映像。

    三、概念模型特点

    1、概念模型表达了数据的整体逻辑结构,它是系统用户对整个应用项目涉及的数据的全面描述。

    2、概念模型是从用户需求的观点出发,对数据建模。

    3、概念模型独立于硬件和软件。

    4、概念模型是数据库设计人员与用户之间进行交流的工具。

    目前采用的概念模型主要是实体联系(ER)模型

    四、逻辑模型特点

    1、逻辑模型表达了DB的整体逻辑结构,它是设计人员对整个应用的全面描述。

    2、逻辑模型从数据库实现的观点出发,对数据建模。

    3、逻辑模型独立于硬件,但依赖于软件(DBMS)。

    4、逻辑模型是数据库设计人员与应用程序员之间进行交流的工具。

    逻辑模型主要有层次、网状、关系三种。

    层次模型:用树型结构表示实体类型及实体间联系的数据模型称为层次模型。

    层次模型的特点是记录之间的联系是通过指针来实现,查询效率较高,用户和设计者面对的是逻辑数据而不是物理数据,逻辑数据和物理数据之间的转换由DBMS完成。

    层次模型的缺点:一、只能表示1:N联系;二、由于层次顺序的严格和复杂,引起数据的查询和更新操作很复杂,因此应用程序的编写也很复杂。

    网状模型:用有向图结构表示实体类型及实体间的联系的数据模型称为网状模型。

    缺点:数据结构复杂、编程复杂。

    关系模型:用二维表格表达实体集,它与网状、层次模型的最大区别是用关键码代替指针导航数据。

    五、外部模型特点

    1、外部模型是逻辑模型的一个逻辑子集。

    2、外部模型独立于硬件,依赖于软件。

    3、外部模型显示用户使用数据库的观点。

    六、外部模型的优点

    1、简化了用户的观点,外部模型是针对具有用户应用需要的数据而设计的,与该用户无关的数据就不必放入了。

    2、有助于数据库的安全保护。

    3、外部模型是对概念模型的支持。

    七、内部模型

    1、内部模型又称为物理模型,是数据库最底层的抽象。

    八、三层模式和两级映像

    1、DB的数据结构有三个层次:外部模型,逻辑模型,内部模型,这三个层次要用DDL定义,定义后的内容称为模式(Schema),即外模式,逻辑模式,内模式。

    外模式:是用户与数据库系统的接口,是用户用到的那部分数据的描述,由若干个外部记录类型组成。

    逻辑模式:数据库中全部数据的整体逻辑结构的描述,它由若干个逻辑记录类型组成,还包括记录间的联系、数据完整性和安全性等要求。

    内模式:数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件组织方式,以及数据控制方面的细节。

    2、三层模式的特点

    ①用户使用DML语句对数据库进行操作,实际上只是对外模式的外部记录进行操作。

    ②逻辑模式必须不涉及到存储结构、访问技术等细节,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘中,而逻辑模式提供了连接这两级的相对稳定的中间观点,并使得两级中任何一级的改变都不受另一极的牵制。

    ③内模式不涉及到物理设备的约束

    3、两级映像

    ①外模式/逻辑模式映像存在于外模式和逻辑模式之间,用户定义外模式和逻辑模式之间的对应性,这个映像一般放在外模式中描述

    ②逻辑模式/内模式映像存在于逻辑模式和内模式之间,用户定义逻辑模式和内模式之间的对应性,这个模式一般在内模式中描述

    九、高度的数据独立性

    1、物理数据独立性

    如果内模式要修改,只要修改内模式与逻辑模式之间的对应性(即映像)即可,可以使逻辑模式尽可能保持不变。

    2、逻辑数据的独立性

    如果逻辑模式要修改,只要对外模式/逻辑模式中的映像做出相应的修改即可,可以使外模式和应用程序尽可能保持不变。

     

     

     

    展开全文
  • 第二章 什么是数据抽象

    千次阅读 2017-06-25 15:10:24
    数据抽象: 在忽略类对象间存在差异的同时, 展现了对用户而言最重要的特性。的确, 抽象应该对终端用户隐藏无关紧要的细节, 避免暴露有可能分散用户注意力或与使用环境毫不相干的细节● 设计 , 或者说抽象, ...

    ● 我们的设计必须从客户角度出发, 不应让内部的细节打扰终端用户的使用。

    ● 数据抽象: 在忽略类对象间存在差异的同时, 展现了对用户而言最重要的特性。的确, 抽象应该对终端用户隐藏无关紧要的细节, 避免暴露有可能分散用户注意力或与使用环境毫不相干的细节

    ● 设计 , 或者说抽象, 就是把各个大小不一、功能各异的零部件组合起来, 在它们之间建立适当的通信机制。 进一步而言, 设计为用户提供一个明晰的接口, 将某物品的所有部件(即实现)隐藏, 只显示用户操作该物品所需的控件。


    (1) 接口的含义


    ● 传统的面向过程编程思想认为, 接口和实现差异不大。 但是在面向对象编程中, 整个设计过程都围绕着接口进行

    ● 类对象的接口支持外部视图, 接口就是用户观察或感觉到的对象视图,以及用户可以用接口做什么(也包括接口对用户做什么)

    ● 当我们设计接口时, 应最大程度地满足用户的要求, 这些用户也称为客户。 所谓类的客户, 就是使用类且不知道(或不关心)类内部运作的人。 客户可创建类的对象, 并通过接口对其进行操作。


    (2)什么是充足的接口


    ● 数据抽象的目的是, 提供清晰和充足的接口, 在方便且受控的模式下允许用户访问底层实现。 接口应满足用户使用对象的基本需求。 抽象的首要目标是, 为客户简化操作。

    ● 在大多数情况下, 如果现有接口无法满足用户需求, 用户都倾向于绕过所有的安全和保护, 直接干扰内部运作。 设计良好的接口不应该出现这样的问题。 当且仅当接口能满足用户需求时, 该抽象才是设计良好的抽象


    (3) 实现的含义


    ● 接口告诉用户可以做什么, 实现则负责如何做, 所有的工作都在实现中完成。 客户无需了解类如何实现接口所提供的操作。 因此,实现用于支持由对象表现的接口

    ● 使用接口并不需要了解实现。 实际上, 使用借口的用户不了解内部实现反而会更安全些。部分(甚至完全) 了解实现可能导致黑客代码突破接口或实现的障碍。 另外, 单一接口可由不同实现支持, 不同接口可由单一实现支持。


    (4)保护实现


    ● 传统的面向过程编程,缺乏对实现者的保护。

    ● 接口都由实现支持, 而且该实现由对应的接口来保护(即接口提供一个清晰且定义明确的方法访问实现)。 换言之, 实现以特定方式工作, 并跟踪自身的状态。 另外, 实现假设它的状态仅能通过接口更改, 如果违反此前提条件(既不知何故, 实现的状态被直接从外部更改, 并未通过提供的接口更改)。 则无法保证实现进行正确地操作。 从接口的角度看, 实现应通过公共接口运行(或由公共接口访问), 以确保实现的完整性。

    数据抽象引出的了相关的概念: 数据封装。 只要存在由实现支持的带接口的对象, 就一定存在实现隐藏(也称为信息隐藏), 有些信息对实现而言相当重要, 但是对使用接口的用户而言却毫无价值, 这些信息将被隐藏在实现中。 实现由接口封装, 而且接口是访问实现的唯一途径

    ● 被封装的数据对于对象的实现极其重要。 进一步而言, 实现必须维护被封装信息的完整(或正确的状态)。


    (5) 数据封装的优点


    ● 数据被封装后, 客户无法直接访问, 更不能修改, 只有接口函数才可访问和修改封装的信息。 进一步而言, 使用借口的用户完全不知道描述该接口的函数如何使用封装信息, 而且对象(或类)的用户对此也毫无兴趣。

    封装的信息只能通过已发布的接口访问, 才能确保对象的完整。

    ● 数据封装的另一个优点是 实现独立。 改动封装内的数据不会(也不该)影响用户所见的接口。

    ● 接口十分了解实现和被封装的数据, 接口明白如何利用新的实现工作。 因此, 改变封装信息只会影响接口对封装数据的操作(实现), 不会影响客户所见的接口。 也就是说, 实现中的改动不应该影响该对象的客户所见的接口。


    (6) 接口、 实现和数据封装之间的关系


    这里写图片描述
    这里写图片描述


    (7) 数据封装注意事项


    ● 尽管封装的信息对于用户而言无关紧要, 然而, 为了高效地使用对象, 用户可能也需要访问封装的信息。 实现者封装某元素后, 必须在接口提供访问或操控封装信息的工具。 尽管这些访问是受限或受控的, 但仍然要给接口提供适当的工具用于访问和修改封装的实体。 如果抽象封装了一部分对用户很重要的信息, 却未提供合适的工具来访问被封装的信息, 这样的抽象是不正确的(即接口不足)。


    (8) 确定封装的内容


    这里写图片描述
    这里写图片描述


    (9)抽象数据类型


    ● 抽象数据类型是由程序员定义的新类型, 附带一组操控新类型的操作。 定义新抽象类型将直接应用数据抽象的概念。 抽象数据类型也称为程序员定义类型

    ● 语言定义类型(内置类型)的用户不能直接访问这些类型的内部表示, 而且必须使用语言提供的操作来操控他们

    ● 在面向对象编程语言中,函数与数据结构形成一个完整的单元, 必须使用该类提供的函数才能访问对象中的数据。 对象拥有数据结构, 且只允许接口访问它。 由此可见, 在支持OOP 的语言中更容易实现抽象数据类型。

    ● 利用数据抽象,我们创建了一个新类型, 并且为这个新类型提供了一组有用的操作。 因为语言没有直接支持这个类型, 所以程序员只好利用抽象实现它, 因此它是一个抽象数据类型。
    鉴于此, 数据抽象有时也被定义为: 定义抽象数据类型以及一组操作并隐藏实现的过程。

    注意: 我们希望让抽象数据类型也拥有和语言定义类型(内置类型)相同的特权和责任(也就是说,不应该让新类型的客户发现语言定义类型和抽象数据类型之间的任何区别)。 操作符重载, 并不是所有的面向对象语言都允许这样做。


    (10)类的访问区域


    ● public 区域是最重要的区域, 为类的用户指定了类的接口。 任何客户都可以访问public区域。

    ● private 区域是任何客户都不能直接访问的区域,只供实现使用。 换言之, 只有类的实现才能访问private 区域。

    ● protected区域, 用于代码的扩展和复用(继承)。

    ● 在一个类中, 可以声明多个访问说明符, 编译器将负责合并。

    ● 在C++中, 其他类型(或声明)名称都不会有~,“~”符号(逻辑非运算符), 表示它为逆构造函数, 加上类名称来定义。 当某个类对象不再处于程序段的作用域内时, 该函数负责清理工作。

    ● 从一个函数(或块)中退出时, 编译器将自动销毁在该函数(或块)中创建的对象。 但是, 对象可能已经聚集了资源(动态内存、磁盘块、网络连接), 这些资源存储在对象的数据成员中, 由成员函数操控。 由于对象被销毁(退出函数)后不可再用, 因此, 必须释放该对象存储的资源

    但是, 编译器并不知道这些资源(它们可能由动态分配),因此, 对象必须释放它们。 为了帮助对象完成这些工作, 在退出函数(或块)时, 所有在该函数(或块)中静态创建(既不使用 new()操作符创建)的对象都将调用析构函数。

    析构函数将释放对象存储的所有资源。 换言之, 析构函数提供了一种机制, 即对象在被销毁前可自行处理掉自身存储的资源。

    注意: 析构函数和构造函数都是特殊的成员函数。 在声明中, 它们无任何返回值类型, 这表明它们不能返回任何值。

    ● 复制构造函数: 用于通过现有对象创建新对象, 因而称为 复制构造函数。

    当对象按值传递给一个函数时, 该对象的副本必须像内置类型那样被复制。 然而, 对象不是简单变量, 它们是由程序员实现的复杂实体。 因此, 编译器在复制对象时需要帮助。

    逻辑上, 应该由对象的实现者负责复制对象(内置类型的实现者是编译器)。 复制构造函数就提供了这样的帮助。

    无论何时需要对象的副本, 编译器都会调用复制构造函数来复制对象。 特别是, 当类在它的实现中使用动态内存时, 复制构造函数必不可少。 如果类的实现者不提供复制构造函数,编译器将会自动生成一个复制构造函数。

    至于这个生成的复制构造函数是否满足类的要求, 那完全是另一个问题, 注意: 复制构造函数是一个特殊语义的构造函数。 我们在创建和初始化一个新对象(从无到有地创建)时调用普通构造函数, 再通过现有对象创建一个新对象时才调用复制构造函数, 这是复制构造函数与其他构造函数的主要区别。

    ● 出现下列情况时,将调用复制构造函数:

    对象从一个函数按值传递至另一个函数时
    对象从函数按值返回时
    通过现有对象初始化一个新对象时
    

    ● 赋值运算符: 赋值运算符用于将现有对象显式赋值给另一现有对象。 赋值使用户显式完成的操作。

    ● 注意: 操作符重载是非常强大的机制, 很容易被滥用。 类的实现者必须为实现的类谨慎选择合适的操作符。 类只能使用它所支持(即实现)的操作符(赋值操作符, 即 = 操作符除外, 如果类的实现者未提供该操作符的实现, 需要时编译器将自动生成一个)。

    ● 严格意义上说,四则运算这四个运算符应作为非成员函数(或友元函数)实现。

    ● const成员函数: const应用于函数, 而非任何参数。 只有成员函数(非普通函数) 可以声明为const。 类的数据成员、函数的参数、对象、普通变量等 也都可以声明为const。

    const成员函数保证在被调期间, 不会修改调用对象的数据成员。 它只能从对象中读取数据, 不能在对象的数据成员中写入(修改) 数据。

    const函数中,编译器通过禁止给对象的数据成员赋值来确保对象的这种常量性


    ● 在C++中, 类的接口作为函数在该类中列出, 这样的函数称为成员函数。这样的函数提供类的接口, 因此也称为接口函数。

    ● 注意: 设计良好的接口绝不会把任何数据成员置于public区域。


    (11) 识别成员函数的目标对象


    ● this指针是隐含在每个类成员函数的指针, 其指向正在操作此函数的类对象。 this指针的作用域是在类的内部, 当在类的非静态成员函数中访问类的非静态成员时, 编译器会自动将对象本身的地址作为一个隐含参数传递给函数。

    ● 对于类的非静态数据成员,即每个对象都有自己的数据成员,不过函数却都是每个对象共享的, 那么对象调用共享的成员函数是通过this指针找到自己的数据成员, 类的静态成员函数没有this指针。

    ● 类的每个成员函数都有一个特殊的指针——this。 这个this指针内含调用成员函数的对象的地址(即this指针总是指向目标对象)。 this指针只在成员函数内部有效,this是c++中的关键字。

    ● 在成员函数内部,this指针指向调用该成员函数的类实例。

    ● 在每个成员函数中都隐含了一个this指针作为函数参数, 并且函数调用时将对象自身的地址隐含作为实际参数传递到该成员函数中。

    ● 那每个成员函数接受的第一个参数就是this指针(但存在一些限制)。尽管程序员从未显式声明this指针,但是他一定存在。 this指针通常是每个(非静态)成员函数隐含的第一个参数, 编译器在每个成员函数的声明中都会插入这个隐含的参数。

    ● 注意 : 一旦离开成员函数, this指针将不再有效。

    ● 是否一定要使用this指针来引用目标对象中的成员?

    不是所有的情况都需要这样做,只有在成员函数使用该类成员(数据成员和成员函数)的非限定名时,才意味着使用this指针。 如果在成员函数内部引用类的成员, 编译器会在每条表达式中均插入this指针(如果程序员没有这样做)

    ● this->m_member 表达式的意识是: this指针指向该对象中的m_member 数据成员, 所以说可以像使用成员函数的其他参数那样使用this指针。

    就算在成员函数中没有显式使用this指针引用成员, 编译器也会将m_member 表达式自动展开为 this->m_member 表达式。


    TInt aInt;
    aInt.print();

    对象aInt调用print()(即向对象aInt发送print()消息),在print()函数中this指针将指向aInt。

    ● 由于this指针是指向对象的指针, 因此,如果要使用this指针获得整个对象, 我们必须使用 * 操作符对this指针解引用为*this, 正如其他指针那样, this内部存放的是对象的地址, *this 则是该对象的值。


    这里写图片描述

    这里写图片描述


    (12) 对接口的再认识


    ● 如果一个对象支持定义在TInt接口中的所有操作, 则该对象的类型就是TInt. 一个对象可能由许多类型,换言之, 一个对象可以支持(或响应)多个接口。 如果两个对象都支持相同的接口,则它们的类型相同, 但两者的实现可能完全不同。

    对象的类和类型之间的区别?

    对象的类定义如何实现对象,它定义对象的内部表示以及操作的实现。然而,对象的类型与实现无关——它只涉及对象可响应的操作集合。 一个对象可以有多种类型, 不同的类可以有相同的类型。 但是另一方面, 类和类型的关系十分密切。 类清晰地定义了该类对象可执行的操作, 因此, 类也定义了对象的类型。 类的任何对象都支持该类定义的接口。

    ● 接口不应该暴露实现细节。 精心设计的接口不应该要求客户了解实现的任何细节。 如果接口中暴露了某些实现细节(甚至是非常微小的), 一些用户就会期望获得所有的实现细节, 从而使得软件非常脆弱,毫无稳定性可言。


    (13)类的不变式和断言


    ● 每个类都会在对象中包含一些恒为真的条件, 无论对象调用任何成员函数, 这些条件都必须为真。 这样的条件称为不变式。

    ● 除这些类不变式之外, 成员函数可能会包含其他条件, 在执行代码前必须保证这些条件为真, 这些在操作开始被调用之前必须为真的条件,称之为 前置条件。

    ● assert宏: 该宏接受一个表达式, 而且必须判断表达式的真假。 若真, 则继续执行, 若假, 程序停止, 并显示错误消息表明断言失败。

    ● 一旦成员函数完成它的操作, 将会执行某些条件必须为真的断言。 换言之, 如果成员函数成功执行完毕, 它将生成一个满足某些条件的结果, 这样的条件被称为后置条件。


    (14) 面向对象设计的表示法


    ● 我们需要一种表示法可以代表类、对象、类关系、状态图、进程图、对象关系等。
    可以使用 Booch表示法和UML

    Booch 表示法

    ● 对象用实线不定形表示, 对象场景图在描述解决方案的状态时非常有用。

    Booch 中类的关系

    ● 发现类并建立类之间的关系, 是分析和设计过程中最重要的阶段。

    ● Booch 方法论在类之间使用两种主要关系—— is-a关系和has-a 关系, 关系的完整列表如下:
    ● 关联、继承(is-a)、 聚集(has-a)、使用、元类。

    关联

    ● 关联用于分析的早期阶段, 最终会成为has-a 、is-a 或者“使用” 关系。 关联是一个双向关系。 关联的两端的数字代表基数,

    聚集(has-a)

    ● “has-a” 关系可以通过指针、引用或者甚至通过包含的对象来实现,也就说“has-a” 并不意味着每个类对象 在物理上包含许多其他的类对象(尽管也可能这也实现)

    ● 空心圆圈0 表示“使用” 关系, “使用”关系并不意味着“has-a” 关系

    “has-a” 关系是“使用” 关系的超集, 而且“has-a” 比“使用”关系的功能更强大

    ● 在问题的解决方案中,使用” 关系 并不常见。

    ● “is-a” 关系用于表示继承。

    ● 大多数项目都不可能在一张纸上显示出该项目涉及的所有类。 为帮助分组(和建模)类, 我们使用类范畴。 类范畴通过包含在其中的类提供服务。 类范畴有自己唯一的名称(类似于类)

    ● 要多整个系统进行高级描述, 只能用类范畴。 类范畴的分解图必须显示其中包含的所有类, 以及这些类之间的关系。


    (14) UML中类的关系


    ● 统一建模语言在类之间主要使用两种关系 : 关联 和 泛化 (继承)


    关系


    展开全文
  • 什么叫数据抽象

    千次阅读 2012-12-28 19:17:59
    数据抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。  如分类这种抽象是:定义某一类概念作为现实世界中...
  • c++之数据抽象

    千次阅读 2018-02-09 10:26:46
    C++ 数据抽象数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一...
  • 抽象数据类型

    千次阅读 2021-03-04 15:41:05
    抽象数据类型,泛指除基本数据类型以外的数据类型。 什么叫类型?就是一类数据。基本数据类型被人做是最基本地,不可再划分的数据,一般就是整形、浮点型、以及字符型。抽象数据类型是由若干基本数据类型归并之后...
  • 数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。 数据抽象是一种依赖于接口和实现分离的编程(设计)技术。 让我们举一个现实生活中的真实例子,比如一台电视机,...
  • java数据结构——抽象数据类型

    千次阅读 2019-02-18 12:24:51
    数据抽象是用抽象数据类型来实现的,ADT是这个集合和定义在这集合上的一组数据操作,它不包括计算机数据存储:隐藏了数据存储结构并且不涉及实现结构的数据类型。 java中抽象数据类型的描述:1.抽象类...
  • 如何理解数据结构中的抽象数据类型?

    万次阅读 多人点赞 2018-09-04 18:49:23
    抽象数据类型的标准格式 ADT 抽象数据类型名 { Data: 数据元素之间逻辑关系的定义; Operation: 操作1; 操作2; ... } 什么是抽象数据类型? 抽象数据类型(Abstract Data Type,ADT)是指一个数学...
  • 数据库的数据抽象、实例、模式

    千次阅读 2017-09-16 18:57:22
    数据抽象主要是为了向用户屏蔽复杂性。一共分为三层:1,物理层,物理层的数据抽象主要描述了数据在物理层面是怎么存储的数据,这主要是数据库的供应商来研究的。2,逻辑层,逻辑层的数据抽象主要描述了数据库中存储...
  • c++中数据抽象与数据封装的区别

    千次阅读 2018-10-13 09:58:44
    数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。 封装是:函数与数据在一起进行封装。 抽象是:仅仅将接口暴露,细节隐藏; 根据我...
  • 数据结构-抽象数据类型

    千次阅读 2017-12-19 14:19:27
    抽象数据类型的定义可以由一种数据结构和定义在其上的一组操作组成,数据结构又包括数据元素以及元素之间的关系。因此抽象数据元素类型一般由元素、关系及操作三种元素来定义。(D,R,P) D 是数据对象、R是D上的...
  • 数据结构和抽象数据类型

    千次阅读 2016-01-15 16:41:31
    这两个概念,尤其是第一个都是特别抽象的概念,没什么具体可对应的实体可以给你举例,我就粘贴复制了,说说我的理解吧。...自然肯定是相关的数据,比如说学生信息管理中,指令是增加学生,那他的对象就是学生信
  • 数据库系统有一个主要目的是给用户提供数据抽象试图,隐藏数据库关于数据储存与维护的某些细节物理层 最底层的抽象,描述数据实际是怎样被储存逻辑层 比物理层稍高,描述数据库中存储了怎样的数据以及数据间的...
  • 数据结构、数据类型、抽象数据类型之间的区别

    千次阅读 多人点赞 2019-11-03 20:15:37
    数据元素是最基本的数据单位,最基本的数据元素是一个二进制位。) 逻辑结构指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。包括: ...
  • 数据类型: 是一个值的集合和定义在此集合上一组操作的总称。 数据类型有两种:简单型和结构类型。...抽象数据类型(Abstract Datat Type, ADT): 是一个数学模型和定义在此数学模型上一组操作。 ...
  • 抽象数据类型概念

    千次阅读 2018-12-06 19:10:33
    数据类型与抽象数据类型的异同 首先数据结构定义为一个二元组 Data_Stucture(D,S),即两个集合,D是数据元素的集合,而S是数据元素之间或多个关系的集合 抽象数据类型其实本质上就是数据类型,涉及数据的存储以及如何...
  • 数据类型和抽象数据类型

    千次阅读 2018-04-26 22:43:21
    java 基本数据类型有float,int,long,char,...数据类型和抽象数据类型 在用高级程序设计语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。例如,C语言中的基本数据类型有...
  • 抽象数据类型有两个重要特征:数据抽象数据封装数据抽象所谓数据抽象是指用ADT描述程序处理的实体时,强调的是其本质的特征,无论内部结构如何变化,只要本质特性不变,就不会影响其外部使用。例如,在程序设...
  • 1.数据抽象的过程 模型是对现实世界的抽象,在数据技术中,我们用数据模型的概念描述数据库的结构和定义,对现实世界的数据进行抽象。 从现实世界的信息到数据库存储的数据以及用户使用的数据是一个逐步抽象的过程...
  • 抽象数据类型的实例

    千次阅读 2020-03-20 15:21:38
    重新学习数据结构,主要了解了一些关于数据结构的一些相关的概念; 数据结构是一种带结构的数据集合;它包括逻辑结构还有存储结构,然后学习了一下数据类型的表示以及实现...抽象数据类型的定义仅仅取决于它的一组逻...
  • 所谓抽象数据类型,是指模块具有功能说明和接口说明,前者说明模块所执行的任务,后者定义模块的使用。但是,模块的用户并不需要知道模块实现的任何细节,而且除了那些定义好的接口之外,用户不能以任何方式访问模块...
  • 在学习数据结构类型时,首先遇到的一个难点即是如何理解抽象数据结构类型。通过阅读多个博客,将个人理解总结如下: 如已看过抽象数据类型定义,可直接跳过定义。 抽象数据类似的定义 抽象数据类型(Abstract Data ...
  • 第二章 2.2 什么是抽象数据类型?

    千次阅读 2016-09-24 00:40:54
    计算机科学建立在许多经典的公理之上,而抽象是其中最重要的一个。 语言的发展就是一种抽象的产物。新的简写记号能表达更广泛的概念。 一条c语句平均代表10条汇编。一条c++平均代表3条c语句。 汇编语言也包含了有用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,005,425
精华内容 402,170
关键字:

信息是数据的抽象