• C专家编程 第11章 你懂得C,所以C++不再话下 11.2 抽象---取事物的本质特性


    抽象实例
    汽车实例对象特征      软件实例:排序程序
    “Car” 整个事物具有一个名字  “sort”

    输入:燃料和汽油

    输出:交通运输 

    定义良好的输入和输出

    输入:一个未排序的文件 

    输出:一个已排序的文件

    发动机、传感器、泵等由更小的自包含的对象组成  模块、头文件、函数、数据结构等
    世界上存在很多汽车,有很多不同的品种可有很多的实例对象它的实现应该允许几个用户同时排 序,例如不需要依赖一个全局的临时工作空间
    燃料泵并不依赖并影响车板清洗器 更小的自包含的对象无相互作用, 除非它是通过定义良好的接口进行用于读取记录的程序应该与关键的的比较程序独立 
    计时器的计时变化并不是驾车者的任务,所以驾驶员不能直接控制计时器  不能直接操纵或甚至看到细节用户应该并不需要或进一步利用程序所使用的特定的排序算法(如快速排序、堆排序、Shell排序等)
    可以更换一个更好的发动机,而无须更改驾驶员的操作方法可以不修改用户接口的情况下修改实现   实现者应该能够在不影响用户使用的的前提下替换一种更好的算法 

    抽象---取事物的本质特性
    面向对象编程从面向对象设计开始,而面向对象设计从抽象开始。

    关键概念:抽象
    抽象的概念就是观察一群“事物”,并认识到它们具有一些共同的主题。你可以忽略不重要的区别,只记录表示事物特征的关键数据项。当你这样做的时候,就是在进行“抽象”,所以存储的数据类型就是“抽象数据类型”。抽象---只不过是事物的简化而已。

    抽象是非常有用的,因为它允许程序实现下列目标:
    *隐藏不相关的细节,把注意力集中在本质特征上。
    *向外部世界提供一个“黑盒”接口。接口确定了施加在对象之上的有效操作的集合,但它并不提示在内部是怎样实现的。
    *把一个复杂的系统分解成一个相互独立的组成部分。这可以做到分工明确,避免组件之间不符合规则的相互作用。
    *重用和共享代码。
    C语言通过允许用户定义新的类型(struct、enum)来支持抽象。用户定义类型几乎和预定义类型(int, char等)一样方便,使用形式也几乎一样。我们说“几乎一样方便”是因为C语言并不允许在用户定义类型中重新定义*、<<、[]、+等预定义操作符。C++则消除了这个障碍。C++同时提供了自动和受控制的初始化、数据在生命期结束后自动清除以及隐式类型转换。有些特性是C语言所不支持的,有些在C语言里不是很方便。

    抽象建立了抽象数据类型,C++使用类(class)这个特性来实现它。它提供了一种自上而下的观察数据类型属性的方法来看待封装:把用户定义类型中的各种数据和方法组合在一起。它同时提供了一种自底而上的观点来看待封装:把各种数据和方法组合在一起实现一种用户自定义行为。 
     

  • 相关阅读:
    [职场] Android是什么?Android行业有哪些- #媒体#经验分享
    浅谈无线测温产品在马来西亚某配电项目的应用
    VTK笔记——拾取器 Picker 汇总
    C++STL----list的模拟实现
    Docker安装Python3教程
    使用java mail SMTPTransport发送邮箱,本地秒到,一上服务器就20-30s左右,生产环境直接发送失败。
    Spring IoC和DI详解
    晨控CK-FR102系列与汇川AC800系列MODBUSTCP通讯手册
    springboot毕设项目大学生创新项目运维系统9y232(java+VUE+Mybatis+Maven+Mysql)
    用verilog编写FFT软核从0到1最强实现及解析(一)
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/126093982