数据抽象, 具有C语言经理的我, 原先是将其看做是一个数据的集合, 把自己常用的数据通过某种方式总结,集合起来, 使用的时候能够更加方便------其实这个还是结构体思想的延续,结构体内部包含了若干的数据(当然,这是一般的说法,也可以添加指正让他具有操作数据的能力),C++的数据抽象,类,将这种思想强化,除了可以包含数据以外还可以包含操作;

类型是一组操作,抽象数据类型则是一组具有某种实现的操作,重点在于“当我们在某个领域中识别对象的时候,首先要考虑的问题是------可以用这个对象做什么,而不是------这个对象该怎么实现,(偶以前还是比较急,一下子就去想该如何实现了,功力还需要提升~),C++ 中抽象数据类型的设计是为了可以在问题领域和解决方案领域之间进行双向的搞笑的转化,这样才能做好思考与实现的平滑过渡。从而做到代码简洁,准确。

具体的设计上一般推荐这四个步骤:

  1. 为类型取一个描述性的名字,这个抽象的数据类型应该具有单一的,明确的概念,而且概念与所取的名字应该是显而易见的。
  2. 列出类型的具体操作,如果只是一系列的set/get方法,那只能说明这是一个缺乏想象力的设计,我们应该清楚的定义这个数据类型能用它做什么
  3. 为类型设计接口,------目标是:这个类型易于正确使用,难以错误使用,设身处地的为用户想,理解用户的心理,做到与用户心灵沟通-------不要让后来人,觉得前人是在挖坑,而不是在种树。
  4. 实现类型,类型的事项,不要影响类型的接口,实现接口所承诺的约定, 因为在大多数情况下,修改对象的实现,远比修改接口频繁的多得多。

C++ 必知必会: 条款1: 数据抽象的更多相关文章

  1. Java面试必知必会:基础

    面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力.但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点. 一.基础 包括: 杂七杂八 面向对象 数 ...

  2. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  3. 读书笔记--SQL必知必会--建立练习环境

    书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...

  4. 读书笔记--SQL必知必会12--联结表

    12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...

  5. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  6. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

  7. 《SQL必知必会》学习笔记(一)

    这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...

  8. SQL 必知必会

    本文介绍基本的 SQL 语句,包括查询.过滤.排序.分组.联结.视图.插入数据.创建操纵表等.入门系列,不足颇多,望诸君指点. 注意本文某些例子只能在特定的DBMS中实现(有的已标明,有的未标明),不 ...

  9. .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

    Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...

  10. 0005 《SQL必知必会》笔记01-SELECT语句

    1.SELECT基本语句: SELECT 字段名1,···,字段名n FROM 表名 2.检索所有字段,用"*"替换字段名,这会导致效率低下 SELECT * FROM 表名; 3 ...

随机推荐

  1. PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

    PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更 ...

  2. android webview type=file文件上传,安卓端代码

    http://stackoverflow.com/questions/5907369/file-upload-in-webview http://blog.csdn.net/longlingli/ar ...

  3. ubuntu 允许端口被连接

    iptables -I INPUT -p tcp --dport 3306 -j ACCEPT  推荐一个自己业余时间开发的网盘搜索引擎,360盘搜(www.360panso.com)

  4. [ActionScript 3.0] AS3 对XML的操作,创建、删除、增加节点方法

    package { import flash.display.Sprite; /** * @author:Frost.Yen * @E-mail:871979853@qq.com * @create: ...

  5. java异常处理机制throw

  6. DevExpress某些控件继承后的可编辑性

    今天在使用DevExpress的BarManager菜单控件时,发现在进行继承时无法在继承的子类窗体中对其进行编辑与修改,另外像GridView也有类似的情形,后来查阅资料后,现在可通过DevExpr ...

  7. 解决tomcat默认45s启动超时的问题

    进入工作空间目录下的.metadata\.plugins\org.eclipse.wst.server.core子目录,找到servers.xml文件,编辑它,找到start-timeout这一行,把 ...

  8. Hibernate——主键配置

    <id>元素中的<generator>用来为该持久化类的实例生成唯一的标识,hibernate提供了很多内置的实现. Increment:由hibernate自动递增生成标识符 ...

  9. 对Native App与Web App的一些思考

    前言 Native App:C/S架构,使用原生技术(Java/Objective-C/Swift)实现. Web App:B/S架构,使用浏览器技术来实现,广义上也包括phoneGap以及DP正在尝 ...

  10. 《Code Complete》ch.15 使用条件语句

    WHAT? 条件语句指if.else.case.switch,循环语句指for.while WHY? 不用条件语句你写得出代码吗? HOW? if-then 正常情况放在异常情况之前 执行频率高的情况 ...