第一章 OO大智慧
今天,正式开始读王涛写的《你必须知道的.NET(第二版)》,刚开始读了序,觉得写的相当精彩,就被吸引住了。看了一会发现本书的特点可能就是以例举例,形象生动,比较期待的样子。虽然前面讲的概念性的东西,过于基础了,但是秉着有始有终的态度,要有个好的开始才有好的结尾,否则总感觉有什么东西落下了似的。
笔记
1、其中ShowType的方法为虚函数,这种在子类中实现虚函数的方式,成为方法的动态绑定,是实现面向对象的另一特性:多态的基本机制。
2、Eagle实现了接口IFlyable,这样保证了对象和行为的分离,保护了系统的完整性。
3、继承本质论:字段的创建,Chicken创建首先找到Bird,然后再找到Animal,以此类推,递归结束,最终找到Object,依次进行分配空间,最高层类排在最前面。方法表的创建,是在类第一次加载到APPDoMain时完成的,在创建方法表时只是将其附加成员TypeHandle指向方法列表在Loader Heap上的地址。Chicken创建时,首先将Bird中所有的的虚方法复制一份,然后和Chicken本身的方法列表对比,如果子类中已经复写了的,则以子类覆盖父类的虚方法。
4、面向对象的基本原则:多聚合,少继承;低耦合,高内聚。
5、适配器模式:类的适配器,是将每个类下面都继承相应的适配器,适配器统一实现接口,这样达到适配的效果;对象的适配器,是建立统一的适配器类,实现接口,在适配器类中,以聚合的方式进行对每个类的功能实现。
6、所谓的封装,就是你只有拿卡能在ATM机上取钱,你拿砖头塞不进去,拿公交卡也不识别。哈哈~~~
7、封装性告诉我们,类中的字段最好设置成Private,可通过属性进行与外界交互。这样有两点好处:一是提高了数据安全性,二是
8、反编译属性后,发现其编译后的结果就是get_属性名、set_属性名,这说明属性编译过程,就是将其变成两个相应的简单方法。
9、总结如下:
10、多态分为:基类继承式多态(IS-A)和接口实现式多态(CAN-DO)。
11、好的设计通常是面向抽象的,接口是实现这一思想的完美手段之一,高层依赖抽象,不依赖具体。接口隔离原则强调接口应该被声明为具有单一功能的小接口,而不是实现为具有多个功能的胖接口。
//好吧,今天就暂时告一段落,明天继续。
第一章 OO大智慧的更多相关文章
- 从结构和数字看OO——面向对象设计与构造第一章总结
不知不觉中,我已经接触OO五周了,顺利地完成了第一章节的学习,回顾三次编程作业,惊喜于自身在设计思路和编程习惯已有了一定的改变,下面我将从度量分析.自身Bug.互测和设计模式四个方向对自己第一章的学习 ...
- [head first 设计模式] 第一章 策略模式
[head first 设计模式] 第一章 策略模式 让我们先从一个简单的鸭子模拟器开始讲起. 假设有个简单的鸭子模拟器,游戏中会出现各种鸭子,此系统的原始设计如下,设计了一个鸭子超类,并让各种鸭子继 ...
- 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...
- MyBatis3.2从入门到精通第一章
第一章一.引言mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释)二.概述mybatis让程序将主要精力 ...
- Nova PhoneGap框架 第一章 前言
Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...
- 第一章 MYSQL的架构和历史
在读第一章的过程中,整理出来了一些重要的概念. 锁粒度 表锁(服务器实现,忽略存储引擎). 行锁(存储引擎实现,服务器没有实现). 事务的ACID概念 原子性(要么全部成功,要么全部回滚). 一致性 ...
- 第一章 Java多线程技能
1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...
- 【读书笔记】《编程珠玑》第一章之位向量&位图
此书的叙述模式是借由一个具体问题来引出的一系列算法,数据结构等等方面的技巧性策略.共分三篇,基础,性能,应用.每篇涵盖数章,章内案例都非常切实棘手,解说也生动有趣. 自个呢也是头一次接触编程技巧类的书 ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
随机推荐
- c# 进程间通信 IPC
最近在调试一个算法,想通过改变算法的参数看看结果有什么变化. 碰到一个麻烦的事情是,从磁盘加载.构建数据需要15分钟.这就比较讨厌了,也就是说我每次调一个参数前都要等15分钟启动时间? 于是我就想,能 ...
- Java异常处理和设计【转】
Java异常处理和设计 在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常 ...
- .NET三层架构例子超链接可以点击显示内容页面
在研究了一个星期的三层架构写出的一个小功能,使用三层架构并实现点击新闻标题可以跳转到自己写的新闻页面. 首先是一个DBHelper,这个不是我自己写的,是朋友给我的 using System; usi ...
- python 练习多级菜单思路
只写了一个zj的三级菜单,后面的功能没写 #-*- coding :utf-8 -*- print """ 你可以输入省份然后根据市县输入 ""&qu ...
- linux进程间通信-有名管道(FIFO)
有名管道(FIFO) 命名管道也被称为FIFO文件,是一种特殊的文件.由于linux所有的事物都可以被视为文件,所以对命名管道的使用也就变得与文件操作非常统一. (1)创建命名管道 用如下两个函数中的 ...
- php浮点型以及精度问题
浮点型(也叫浮点数 float,双精度数 double 或实数 real) 浮点数的形式表示: LNUM [0-9]+DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9 ...
- ubuntu16.04 安装网易云音乐
最爱的播放器 网易云音乐 哈哈,刚刚折腾了双系统,立马开始了软件安装. 网易云音乐从官网下载对应的 64 位版本,我下载的是 netease-cloud-music_1.0.0_amd64_ubunt ...
- 使用O_APPEND标志打开文件对文件进行lseek后进行读写的问题
fd = open("./newfile", O_RDWR|O_CREAT|O_APPEND, S_IRUSR|S_IWUSR); ) { perror("open&qu ...
- SQOOP Load Data from Oracle to Hive Table
sqoop import -D oraoop.disabled=true \ --connect "jdbc:oracle:thin:@(description=(address=(prot ...
- FIR数据广播结构-提高时钟速率
直接型的信号流图 采用转置得到广播结构的信号流图 对于一个常系数四阶的FIR滤波器 直接型的RT L结构如下: 转置后的RTL结构