第一章 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 ...
随机推荐
- VISUAL STUDIO 调试
调试术语 Visual Studio调试之断点基础篇 Visual Studio调试之断点进阶篇 不能设置断点的检查步骤 Visual Studio调试之断点技巧篇 Visual Studio调试之断 ...
- pageX和pageY
pageX() 属性是鼠标指针的位置,相对于文档的左边缘. pageY() 属性是鼠标指针的位置,相对于文档的上边缘. 例1 $(document).mousemove(function(e){ $( ...
- Java zip and unzip demo
目录结构如下: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import ...
- 转载:HttpClient使用详解
原文地址:http://blog.csdn.net/wangpeng047/article/details/19624529 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自 ...
- HDU 4998 Rotate --几何
题意:给n个点(x,y,p),从1~n,一次每次所有点绕着第 i 个点(原来的)逆时针转pi个弧度,问最后所有点的位置相当于绕哪个点旋转多少弧度,求出那点X和弧度P 解法:直接模拟旋转,每次计算新的坐 ...
- nginx 一二事(3) - 反向代理以及负载均衡
先来说说正向代理 就是普通的代理,记得高中年代偷跑去网吧是要办卡的 题外话: 就是这货...相信很多80同龄人都有吧... 回到正题,那正向代理就不让你直接访问网络,而需要登录一下网吧的某个系统 ...
- IO流的练习2 —— 复制单级文件夹中的文件
需求:把C:\Users\Administrator\Desktop\记录\测试里面的所有文件复制到 C:\Users\Administrator\Desktop\新建文件夹\copy文件夹中 分析: ...
- Android Studio系列教程六--Gradle多渠道打包
Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...
- Android 画布绘图
我们已经介绍了Canvas,在那里,已经学习了如何创建自己的View.在第7章中也使用了Canvas来为MapView标注覆盖. 画布(Canvas)是图形编程中一个很普通的概念,通常由三个基本的绘图 ...
- 【原创】有关Silverlight DataGrid双击事件的分析 完整分析 代码与示例
公司项目用的silverlight,而且silverlight一些技术 资料比较少.所以分享出来 给大家参考参考. 有关Silverlight中DataGrid 双击事件 的代码 如下: 1. 前台x ...