C++编程思想 对象导言

  1. 抽象的过程

    1. 万物皆对象。
    2. 程序就是一组对象,对象之间通过发送消息互相通知做什么。
    3. 每一个对象都有它自己的由其他对象构成的存储区。
    4. 每个对象都有一个类型。
      • 类的最重要的突出特征是“能向它发送什么消息”
    5. 一个特定类型的所有对象都能接收相同的消息。
      • 对象的转型使其可接收与父类一样的消息。代表了OOP思想带来的替换能力。
  2. 对象有一个接口
    • 创建抽象数据类型是面向对象程序设计的基本思想。
    • 操作这些变量(称为发送消息或请求,对象根据收到的消息推断需要做什么事情)
    • 类描述了一组有相同特性(数据元素)和相同行为(功能)的对象,因此类实际上就是数据类型。
      • 一开始错误理解了上句话里的数据类型,认为类本身就一种类。但这样也是可以正确理解的。
      • 每定义一个类,可以认为这个类就是一个类实例。这个类我称它为高类。超类应该与设计模式有一定关系。
    • 可以向对象发出的请求是由它的接口(interface)定义的,而接口由类型决定。接口+隐藏的数据 = 实现(implementation)
  3. 实现的隐藏
    • 类创建者和客户程序员分开是有必要的。
    • 包装,用户不应该接触到机器内部。只需要接触到控制机器的接口就可以了。
    • 使用访问控制可以在类设计上实现这中包装。
      1. 理由1:防止客户程序员插手他们不应当接触的部分,使用户知道那些对他重要,那些他可以无视。
      2. 理由2:允许库设计者去改变这个类的内部工作方式,而不必担心这样会影响客户程序员。
    • public,private,protected.
    • protected基本与private相似:继承的类可以访问protected,但不可访问private。
  4. 实现的重用
    • 在类中包括另一个类为他的类成员。称为组合。
    • 当创建新类时,应该首先考虑组合,因为它更简单和灵活。
  5. 继承:重用接口
    • 继承后包含父类的所有成员和接口。
    • 子类与父类是相同类型的。
    • 加入全新函数,使子类与父类不同。
    • Overriding,改变已经存在的基类函数,使子类与父类不同
  6. 具有多态性的可互换对象
    • 早捆绑,编译器会对特定的函数名产生调用,而链接器将这个调用解析为真正要执行的代码的绝对地址。
    • 晚捆绑,当给对象发送消息时,在程序运行时才去确定被调用的代码。
      • c++编译器在真正调用的地方插入一段特殊的二进制代码。通过使用存放在对象自身中的信息,这段代码在运行时计算被调用函数函数体的地址。
    • 用virtual声明希望有晚捆绑的灵活性的函数。
  7. 创建和销毁对象
    • 栈内存

      • 为了最大化运行速度,将对象存放在栈中或静态存储区中,存储和生命期可以在编写程序时确定。
      • 栈是内存中的一个区域,可以直接由微处理器在程序执行期间存放数据。
      • 在栈中的变量可称为自动变量,或局部变量。
      • 栈为静态存储区,是内存中一个固定的块,在程序执行前分配。
      • 可以快速分配和释放,但是牺牲了灵活性,在写程序时,必须知道对象的准确数量、生命周期和类型。
      • 在栈上创建存储常常只是一条向下移动栈指针的微处理器指令,另一条是移回指令。
    • 堆内存
      • 可以在运行时才动态决定要创建的对象的类型和数量。
      • 需要新的对象,直接使用new关键字让它在堆上生存。
      • 当使用结束时,用关键字delete释放。
      • 在运行时动态管理,所有比栈内存的使用要耗时。
      • 在堆上的内存,必须要程序员决定何时销毁对象。
  8. 异常处理:应对错误
    • 检查错误,若有错误,进入处理错误的代码。
    • 与传统的C检查错误不同的是必须要处理错误的情况,不可以忽略。
时间: 2024-10-02 02:45:57

C++编程思想 对象导言的相关文章

1.JAVA 编程思想——对象入门

对象入门 欢迎转载,转载请标明出处:    http://blog.csdn.net/notbaron/article/details/51040219 如果学JAVA,没有读透<JAVA 编程思想>这本书,实在不好意思和别人说自己学过JAVA.鉴于此,蛤蟆忙里偷闲,偷偷翻看这本传说中的牛书. 面向对象编程OOP具有多方面吸引力.实现了更快和更廉价的开发与维护过程.对分析与设计人员,建模处理变得更加简单,能生成清晰.已于维护的设计方案. 这些描述看上去非常吸引人的,不过蛤蟆还是没啥印象(至少到

10.JAVA编程思想——对象容纳

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040244 "如果一个程序只含有数量固定的对象,而且已知它们的存在时间,那么这个程序可以说是相当简单的." 通常,我们的程序需要根据程序运行时才知道的一些标准创建新对象.若非程序正式运行,否则我们根本不知道自己到底需要多少数量的对象,甚至不知道它们的准确类型.为了满足常规编程的需要,我们要求能在任何时候.任何地点创建任意数量的对象.所以不可依赖一个已命名的句柄来容

java编程思想---对象

一.对象 对于每种语言来说,都有自己操纵内存中元素的方法. 在java中,一切被视为对象.但是操纵对象的是一个"引用".举个例子,可以比作为遥控器对电视的操作,遥控器就是引用,而电视为对象. 引用可以建立,比如String s:但没有初始化,其没法使用.在使用过程中,要报错. 二.创建对象 在java中,提供了大量的类型,我们也可以自己创建类型. 有了类型后,我们就可以使用new来创建对象. 1.对象存放在哪里? 有五个地方可以存放数据.寄存器,堆栈,堆,常量存储,非ram存储. 我们

c++编程思想(一)--对象导言

回过头来看c++编程思想第一章,虽然只是对c++知识的一个总结,并没有实质性知识点,但是收获还是蛮多的! 下面感觉是让自己茅塞顿开的说法,虽然含义并不是很准确,但是很形象(自己的语言): 1.类描述了一组具有相同特性(数据元素)和相同行为(功能)的对象,本质就是一个数据类型,已存在的数据类型只是表示计算机的存储单位,定义新的类就是为了与问题结合,解决问题-----不要把类想的很复杂,直接抽象成这样 2.类要产生工作,会有一个接口,来实现功能 3.程序猿分为类创建者和客户程序猿(调用别人的类).客

Java编程思想 4th 第2章 一切都是对象

Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情在类对象中完成. 在Java中,使用引用来操纵对象,在Java编程思想的第四版中,使用的术语是"引用(reference)",之前有读过Java编程思想第三版,在第三版中,使用的术语是"句柄(handle)",事实上,我觉得第三版的术语"句柄"更加形象传神,就像你用一个

JAVA编程思想学习笔记——第一章 对象导论

搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的集合,它们通过发送消息来告诉彼此所要做的 3.每个对象都由自己的由其它对象所构成的存储 4.每个对象都拥有其类型 5.某一特定类型的所有对象都可以接收同样的信息  单根继承结构 所有的类都继承自单一的基类,Object.在单根集成结构中的所有对象都具有一个公用接口,所以他们归根到底都是相同的基本类型.单根集成

【java编程思想--学习笔记(四)】对象导论

写这篇博客的前言: 长话短说,我希望通过阅读<java编程思想>来使我的代码 简洁可用 . 目的的层次不同,首先具体的目标是,了解Java的特性和巩固Java的基础. 更抽象的目的如下: 1.期待以巩固基础的方式,使代码优美,简洁,高效. 2.使自己写的模块能够开放适度,好用. 3.形成一种对代码是否优美的审美观. 于是<Java编程思想>第一章 对象导论 由此开始. 1.1 抽象过程 java 相对于命令式语言的优势在于只针对于待解问题建模.后者所做的主要抽象要求所做问题基于计算

Java编程思想(一)——一切都是对象

<Java编程思想> 作者:Bruce Eckel 虽然这本书是经典,但是对于一个入门java,又没有其他编程经验的人来讲,实在难以看懂,前前后后看了三遍. 第一次什么都不懂的时候硬着头皮看,没看完,看了前面忘了后面,中间很多看不懂.第二次的时候,看懂了很多,但是不知道经典在何处. 第三次,是自己用了这门语言一年后,知道所谓的经典是什么,java的特性都在这里,这书不是从基础的JDK怎么装开始讲起.,大部头的一本书,现代人的话很少去翻了,其实可以当参考书,看哪一部分忘了,直接温故即可.一次在学

『Java编程思想-第四版』第二章:一切都是对象

Java编程思想-第四版学习总结,此为第二章:一切都是对象. package com.w3cjava.second; @SuppressWarnings("all") public class Second { /** * Java编程思想(第四版) * 第2章 一切都是对象 * @param args */ public static void main(String[] args) { /** * 2.1 用引用操作对象 * 遥控器(引用)操作电视机(对象),改变音量,改变频道 *