前两篇文章主要介绍了面向对象编程的哲学依据、核心思想以及基本特性。本文主要介绍入门面向对象编程要学习掌握的一些基础知识,并且推荐几本书。
统一建模语言(UML)
写程序离不开开设计,就如同建房子,谁都不会一上来就开始垒砖头。在建房子之前,设计师得先根据客户的需求设计房子的结构、功能、布局等等,并且要绘制标准的图纸,这样建筑工人才能拿着图纸开始建房子。编程也一样,首先得分析客户的需求,然后再根据需求设计软件的构架,这个构架需要使用标准的语言进行描述,这就像标准的图纸,如此程序员才能根据图纸往上垒代码。
这个标准语言就叫做统一建模语言(Unified Modeling Language,UML),它是用来对软件密集系统进行描述、构造、视化和文档编制的一种语言。简单一点理解,它就是软件的图纸。
UML包括的内容非常多,这里仅简单地介绍一下。前面说了第一步要对客户需求进行分析,UML提供了用例图,用于软件的功能需求分析。用例图主要包含两个元素——参与者和用例。参与者用小人表示,用例用椭圆表示,参与者和执行者之间的关系用箭头表示。用例图主要反映了从参与者的角度看,系统应当向外暴露哪些功能,并不反映系统内部的结构。进行用例分析时,最重要地就是区分参与者和用例。
除了要进行功能需求分析外,还要对系统的动态行为需求进行分析,UML提供了“活动图”,活动图中最重要的两个元素是甬道和活动,甬道往往用于表示实际执行活动的对象,活动的执行有一定的流程和逻辑,这类似于面向过程编程中的流程图。
完成需求分析后就开始设计软件的构架,这包括静态模型和动态行为,静态模型包括组建图、类图等等,动态行为包括状态图、时序图等等。程序员要和这些图直接打交道,掌握它们很重要。但这些图比较复杂,不是三言两语就能说的清的,请阅读相关的书籍。
设计模式
软件设计最核心的一个理念是区分“不变”与“变化”,这样会有利于软件后期的维护和升级。“变化”就是意味着将来可能需要修改或者升级,在设计时一定要将这部分程序小心地隔离出来。将来要修改这部分程序时不用担心牵一发而动全身,这样的软件才叫做构架良好的软件。
区分并隔离“不变”与“变化”是需要大量的编程经验的,对于新手而言,在没有经验积累的基础上,如何才能设计架构良好的软件?这并不是做不到的,因为前人已经为我们总结了大量的经验,并归纳出许多设计原则,这就是设计模式。
这些设计模式就是代码模板,我们可以直接拿来用,我们要做的只是将我们的具体问题套进去就行了。设计模式也许多种,建议阅读相关书籍进行学习。
书籍推荐
这里仅根据我自己的学习过程推荐书籍,但不一定是最好的书籍,也不一定适合所有人,还请根据实际情况选择。
(1)谭浩强,清华大学出版社,《c++程序设计》
(2)侯俊杰,华中科技大学出版社,《深入浅出MFC》
(3)Bruce Eckel,机械工业出版社,《java编程思想》
(4)Eric Freeman,东南大学出版社,《深入浅出设计模式》
(5)谭云杰,水利水电出版社,《大象-Thinking in UML(第二版)》
在学习编程时,建议精读,不要坐这山望那山,所以就推荐这几本了。
面向对象编程思想的介绍到此就结束了,欢迎大家交流讨论。