开始C++的学习(第一章)~美少女战士,加油!
来源:互联网 发布:沁人缘淘宝网 编辑:程序博客网 时间:2024/03/29 17:32
第一阶段所用书籍:《C++轻松入门》 王浩著 人民邮电出版社
参考书籍:《Absolute C++》中英文版 (亦为第二阶段主打书籍)
接下来的blog,更倾向于学习笔记,好了,C++旅途开始啦~。。。。欢呼。。不着急到达目的地,沿途的风景更美丽!
===========================================================================================
第一章:面向对象设计
1.1 接近自然的思维方式---面向对象思想
对象 和 类
对象:所研究的任何事物
类:具有相同属性和行为的一组对象的集合
类与对象的关系:
对象的抽象是类 类的实例化结果是对象
蔬菜是一个类,是对白菜,青菜,花菜等对象的一种分类,是把其主要特征进行抽象后得到的。 如车是一类,卡车,跑车,面包车是对象;
面向对象的三大特征:继承,多态,封闭;
基于对象和面向对象的差别:
基于对象:是对数据的封装以及提供一组方法对封装过的数据进行操作,如C的IO库中的FILE*就可以看成是基于对象的;
面向对象:是在基于对象的基础上增加了继承和多态。
1.2 传统设计和面向对象设计的比较
“北京烤鸭”:
传统的制作方法,一步一步来,先怎样后怎样。。。杀鸭--拔毛--清洗--填料--浇烫--浇淋--风干--烘烤--取出--上油。
面向对象的制作方法:制造一台新型的全自动化“北京烤鸭”机器,输入是:烤鸭(一个对象),机器运作后,输出:熟了的烤鸭。。。不必知道机器内部是如何运作(封装)的,如何杀,如何清洗,只要知道这台机子的用途是制作“北京烤鸭”,操作方法是往入口放鸭子,再从出口拿出就行。如果用户想吃烤鸡了,传统方法需重新设计,面向对象的方法只要给原来的机器上增加新功能(面向对象优势之一:易于维护和改进)
传统方法的缺点:
(1)可修改性差,维护困难,导致可维护性差;
(2)重用性差(指同一事物不经修改或稍加修改就可多次重复使用的性质);
(3)在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户需求;
(4)开发出的软件稳定性,可修改性,可重用性都比较差,这是因为传统设计方法的本质是功能分解;
传统方法重过程,用户需求变化针对功能,如此变化对于基于过程的设计时灾难性的。
面向对象的优点:
(1)可读性高,维护方便且成本低(继承的存在,是得改变需求的维护在局部模块);
(2)质量高(可重用现有的,以前被测试过多次的类);
(3)开发效率高(接近自然的思维方式);
(4)灵活性好,易扩展,成本低(因继承,多态,封装的特性,自然设计出高内聚,低耦合的系统结构);
1.3 面向对象的核心思想---抽象
抽象:从众多事物中抽取共同的、本质性的特征和操作,抓住对象最核心的东西,过滤掉一部分对象自有的特性和操作,直到只剩下最基本的属性和操作。
使用抽象 可以使 复杂度 降低
将对象 抽象 成 类 :确定对象自己的特征,进行比较,找到共同的部分。
1.4 面向对象的分析与设计
面向对象的分析方法
围绕虚拟现实世界中的对象来构造系统,而不是围绕功能来构造系统
面向对象的设计
面向对象的设计是把分析阶段得道的需求转变成符合要求的、抽象的系统实现方案的过程。从面向对象分析道面向对象设计,是一个逐渐扩充的过程。
一家公司要设计一个人事管理系统,对不同类型的员工计算其当月工资
分析方法: 从各中员工类中抽象出员工类
设计:根据员工类型不同,设计出其他类,这些类继承在员工类下,各个类中,重写计算工资的方法
若新增一个(清洁工)类,设计这个新类,同样把其继承于这个员工的抽象类,并重写其中的工资计算方法,便可以支持新增加类型员工的工资计算了。
补充知识:
高内聚 内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。 所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。低耦合 耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。) 对于低耦合,粗浅的理解是:
一个完整的系统,模块与模块之间,尽可能的使其独立存在。
也就是说,让每个模块,尽可能的独立完成某个特定的子功能。
模块与模块之间的接口,尽量的少而简单。
如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。
这样有利于修改和组合】
- 开始C++的学习(第一章)~美少女战士,加油!
- c++primer学习摘抄之一(第一章 开始)
- 新的开始,加油。。。
- 新的开始,加油!
- 新的开始,加油
- 新的开始~加油
- 自传的开始,加油。
- 开始学习Android了,加油
- 新手上路,开始这种方式的学习,加油
- 加油学习c 语言
- 《C++primer》第一章--开始
- c++primer第一章:开始
- 加油,一切都是崭新的开始....
- 新的开始,加油啦!!
- 2017,新的开始,加油
- 2017新的开始,加油~
- 第一章 “开始”学习笔记(第一遍阅读)
- 第一章 开始 学习笔记
- Android 开发之 ---- bootloader (LK)
- 优秀的用户体验设计师应该做好的五件事
- Java:转换汉字为unicode形式的命令(native2ascii)
- sort和qsort函数的用法
- ps常用参数
- 开始C++的学习(第一章)~美少女战士,加油!
- X264阅读笔记3
- iostream迭代器的使用
- 简单 却爱
- 横竖屏切换中的界面设计与体验提升
- Strlcpy和strlcat-一致的、安全的字符串复制和串接
- openssl rand 产生随机数
- iic二
- 如何选择Javascript模板引擎(javascript template engine)?