C++ Program3 读书笔记第一章

2010年09月10日 星期五

 

撰写人:阿舰

 

《Think C++》 第一章学习笔记:

1、对于已经存在的数据类型的作用是什么?

   答:这些已存在的数据类型的设计动机仅仅是为了描述机器的存储单元。
  
2、我们自定义类是为了做什么的?或者说我们为什么要设计类这个概念呢?

   答:类描述了一组有相同特性(数据元素)和相同行为(函数)的对象。类实际上就是数据类
       型,例如,浮点数也有一组特性和行为。区别在于程序员定义类是为了与具体问题相适应,
       而不是被迫使用已存在的数据类型。
      
3、面向对象的作用是什么呢?或者说我们为什么大量采用OOP所谓面向对象的技术呢?

   答:OOP技术能很容易地将大量问题归纳成为一个简单的解,这一发现产生了大量的OOP语言,
       后期更为强势的面向对象的C++语言腾空问世。这也成为了业界公认的领军者。
      
4、继承的核心概念是什么?继承的基类有什么意义?子类对于继承基类又是出于什么动机呢?
   直插重点来说,继承在我们实际开发中的意义,或者说它存在的价值是什么?

   答:(1)继承表示了基本类型和派生类型之间的相似性。
       (2)程序员创建一个基类以描述系统中一些对象的思想核心。
       (3)表达了认识该核心的不同途径,他的意思也就是说子类仰仗父类的功能体系来完善自己的行为。
       (4)有些行为可以不同(计算形体的面积)。类型层次结构既体现了形体间的类似,又体现了它们
          之间的区别。
         
        在此,我个人总结一个公式:共性 + 区别 = 继承
       
二、多态性       
       
       
5、多态性出现的条件是什么?或者说多态出现的理由是什么?
  
   答:当处理类型层次结构的时候,程序员常常希望不把对象看做是某一特殊类型的成员,而把它看做是基
       本类型成员,这样就可以编写不依赖于特殊的代码。
      
6、往项目中扩展功能最有效最减少维护费用最基本的方法是什么呢?

   答:可以派生出形体的一个新的子类称为五边形,而不必修改那些处理一般形体的函数。通过派生新子类
       很容易扩展程序,这个能力很重要,因为它极大的减少了软件维护的花费。

7、介绍两个概念:“早捆绑”&&“晚捆绑”,是什么意思?

   答:所谓的“早捆绑”就是程序在编译阶段,编译器已经确定了该调用哪个具体的函数,就是一般所说的
       “静态联编”;
      
       所谓的“晚捆绑”是程序在编译阶段不去确定它应该调用具体的哪个函数。但是编译器保证该函数是
       具体存在的,只负责检查参数值和返回类型的检查,但是它不知道准确应该调用哪个确定的函数。一切
       都是在程序运行的时候才被确定下来。这就是我们常说的“动态联编”。为了实现这个“动态联编”,编
       译器在真正调用的地方插一段二进制代码。通过使用存放在对象自身中的信息,这段代码在运行的时候,
       计算被调用函数的地址。这样每个对象就能根据一个指针的内容有不同的行为。当一个对象接收到消息的,
       它根据这个消息来判断应该做什么。
      
8、虚函数的作用Virtual是什么?

   答:程序员可以使用Virtual表明他希望某个函数有“晚捆绑”的特性,而不需要懂得Virtual的使用机制。没有
       它就不能用C++做面向对象的程序设计。Virtual函数(虚函数)表示允许在相同家族中的类有不同的行为。这
       些不同是引起多态行为的原因。


       在这里我仍然给多态一个公式:映射 + 灵活 = 多态
      
      
三、如何组织一个项目呢?

答:(1)方法中不含有不需要的东西。记住,“七加减二”规则的复杂性。(瞬间人们只能在头脑中存放这么多东西)
        额外的细节就变成了一种负担,必须维护它,为它花钱。
       
     (2)通过深入到描述层,人们应该能够得到所需要的信息。即我们可以在较高的抽象层上创建一些隐藏的层,仅
        在需要的时候,它们才可见。
       
     (3)符号应当尽可能的少。过多的鳌头可能会使软件变坏。
    
     (4)系统设计和类设计是互相隔离的问题。类是可重用的工具,而系统是对特殊问题的解(虽然系统设计也是可
        重用的)。符号应该首先集中在系统设计方面。
       
     (5)类设计符号是必须的吗?由C++语言提供的类表达对大多数情况是足够的。如果符号在描述类方面不能比用
        OOP语言描述有一个明显的推进,就不要使用它了。
       
     (6)符号应在隐藏对象的内部实现。在设计期间,这些内部实现一般不重要。
    
     (7)保持符号简单。我们想用我们方法做的所有的事情基本上就是发现对象及如何互相连接以形成系统。如果一个
        方法或符号要求更多的东西,则应当问一问,该方法花费我们的时间是否合理。
       
       
四、下面开始具体的分析一个系统(项目),着手设计到实现的思路。或者说是大纲:

    答:(1)高概念:建立的系统无论多么复杂,都有一个基本的目的,它服务于哪一个行业和它应该达到的基本的要求
                   这个纲领很重要,这是我们开发的主线或者说是依据。
        
        (2)论 述:实际上就是整个项目的模块划分设计的初期设计的产物。
       
        (3)结构化:对于系统,结构是它的重中之重。没有结构,何谈什么架构,就会瞎忙活一气,到头来就是个杯具。
                   有了结构,故事就有了开端。故事的结构通过特征来体现(特征就是C++中的对象了),情节结构对应
                   于系统设计。
                  
                   用一个公式描述这段话就是:客户要求 + 对象模型 = 结构化
                  
                   (A)组织系统
                  
                      也就是设计主线,心里边团队得有个大致的研发组织方向。
                     
                   (B)特征:发现初始对象
                  
                      我们不要总是在对象段里,分析这个论述时应当在对象和系统设计之间来回磨合运动。着眼全局。
                     
                   (3)情节:初始系统设计
                  
                   (4)依据以上设计编码并不断改之

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值