甘草的《面向对象理论》阅读笔记
来源:互联网 发布:软件培训大纲 编辑:程序博客网 时间:2024/04/27 16:14
今天读了 甘草的《面向对象理论》,内容还是比较基础的,不过有两点比较关注
一是类与类之间的关系,除了 has-a(聚合), is-a(继承), can-do(实现) 之外,在第八篇提到了 implement-with 关系
以前没有考虑过C++ public, protected, private 继承之间不同。文中明确指出了 C++ 中只有 public 继承是 is-a 关系,而 protected 则是 implement-with 关系。所谓的 implement-with ,则是指 class A 实现了某一功能,而 class B 利用 class A 的功能实现自身的功能。例子请看原文
二是第九篇中提到的矩形和正方形关系。这个问题以前也考虑过。为什么数学中“正方形是特殊的矩形”这一论断,到了OOP中就不对了呢?原因其实在于“正方形”和“矩形”的概念改变了
在数学中,给定一个顶点和长宽,就确定了一个矩形。如果改变顶点或者长宽,那就是另外一个矩形了。但是在设计矩形类的时候,一般都会具有设置顶点和长宽的函数。于是,同一个矩形对象,可以改变它的顶点和长宽,表示(数学意义上)不同的矩形了。
如果我们在设计矩形类时为这个类加上不变性(immutable),即对象创建出来后就不能改变了,那么这个矩形类才能真正表达数学上的矩形;从它派生出正方形类,虽然可能会有数据冗余,但却不会有逻辑上的问题了。
不可变类的典型例子,就是 C# 中的 string 类。string 类没有提供任何改变对象自身的方法,只提供了从一个 string 对象构造出新的 string 对象的方法。
- 甘草的《面向对象理论》阅读笔记
- 面向对象的理论工具
- 面向对象的一些理论
- C++primer阅读笔记---------------面向对象程序设计
- IOS_面向对象理论
- 理论:面向对象
- 面向对象编程理论
- 面向对象的笔记
- 面向对象的阅读理解-(1)
- 非典型2D游戏引擎 Orx 源码阅读笔记(6) C语言实现的面向对象
- C++面向对象程序设计(谭浩强)阅读笔记3——关于运算符的重载
- 《设计模式——可复用面向对象软件的基础》阅读笔记01
- 《设计模式——可复用面向对象软件的基础》阅读笔记02
- 设计模式---可复用面向对象软件的基础 阅读笔记(一)
- 面向对象理论(1)-Preview
- 面向对象理论(2)-Object
- 面向对象理论(3)-Encapsulation
- 面向对象理论(4)-Inheritance
- Symbian环境配置
- Symbian 资源 网址
- Smarty生成静态页面
- 自定义AdvancedDataGridHeaderRenderer
- 元数据在SOA中的应用(转)
- 甘草的《面向对象理论》阅读笔记
- epoll用法举例说明
- Libusb-win32 for C# .net
- 罂粟花的感情
- 体验Windows Live Writer来在客户端上发布CSDN的博客文章
- DB2 分拆字符串
- Epoll为我们带来什么
- Javascript 表单 Select 添加删除子项目
- 科技园又有餐厅关门了