首页 理论教育 大话设计模式:毕业后怎么办?

大话设计模式:毕业后怎么办?

时间:2023-11-03 理论教育 版权反馈
【摘要】:——设计模式概述1.1大学毕业了怎么办大B和小A是同一所大学的师兄弟,都是学计算机编程专业。时间:12月2日20点地点:大B房间人物:大B,小A这天,小A问大B,大学毕业了怎么办?

大话设计模式:毕业后怎么办?

第一章 大学毕业了怎么办?——设计模式概述

1.1 大学毕业了怎么办

大B和小A是同一所大学的师兄弟,都是学计算机编程专业。大B在C大毕业在从事软件开发工作,大B是小A的校友兼师兄,大B在大学四年学了不少软件开发方面的东西,也学着编了些小程序,小A经常会找师兄学习一些关于编程方面的问题。

时间:12月2日20点  地点:大B房间  人物:大B,小A

这天,小A问大B,大学毕业了怎么办?

小A:“常听人说:‘大学毕业=失业’!”

大B:“不尽然吧!事实上还是有好多同学挺希望毕业的,有的人觉得在学校里学不到什么东西,或因为希望自己早点独立可以减轻家里负担啊什么的。”

小A:“毕业了,就是成人了。应该对自己负责了,又觉得还不能独自去面对社会。”

大B:“这就是为什么我们大学毕业后会觉得痛苦,觉得自己没有就业能力吧!不敢面对社会。有能力的人到哪里都不愁找不到好工作,相反欠缺工作经验的年轻人,如果没有一个正确的职业规划、良好的求职动机、成熟的求职技巧,可能到哪都会遇到不少困难和挫折。”

小A:“我平时在学校都很努力学习啊,毕业后找工作真的很难吗?”

大B:“就现在社会形式而言,找到工作其实并不难的,难的是找到自己喜欢的工作。现在的年轻人,大多都是喜欢‘钱多、活少、离家近、坐坐办公室’的工作,但是在现实中是不太可能的。我个人建议,先找一份适合自己发展,能累积到很多实践经验的基层工作,有了工作经验,再找更理想的工作,或是在原有岗位往更高的岗位发展就不再那么难了。”

小A:“那么师兄,你说如何才能找到适合自己的工作呢?”

大B:“我认为呐:首先还是要了解下自己的综合实力,再就是要密切留意下社会上的岗位需求,总得说起来有三点:1、我想做什么? 2、我能做什么? 3、市场要什么?”

1.2 什么是设计模式

这天大B问小A:“怎样设计可复用的面向对象软件?”

小A:“靠,师兄你这是考我么?”

大B:“啥啊?我这是想看你在学校是不是真学到了东西。”

小A:“得得得,那我就说说吧。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。”

大B:“我再考考你,用C++、Java、C#或VB.NET任意一种面向对象语言实现一个简单程序。”

小A不到几分钟就给大B一个程序。

1.3 代码规范

大B:“呵呵呵,写得不错,不亏是C大的高材生。”

小A:“师兄你这不是在取笑我嘛。我还有好多问题得请教你哩!”

大B:“行行行……没问题。小师弟好学,师兄哪能袖手旁观的呐!对了,你写代码的时候一定要注要代码的规范。”

小A:“代码规范?”

大B:“嗯,来来来,我说给你听。首先是要注意注释文档的格式,注释文档将用来生成HTML格式的代码报告,所以注释文档必须书写在类、域、构造函数、方法、定义之前。注释文档由两部分组成——描述、块标记。”

例如:

注释

大B:“看!前两行为描述,描述完毕后,由@符号起头为块标记。”

大B:“然后是注释的种类。有文件头注释、构造函数注释、域注释方法注释、和定义注释。”

小A:“什么?注释还有那么多的种类的?我以前都没有用心去记过它的喔。师兄能不能给我讲讲每一种注释的功能和要求啊?”

大B:“这有什么问题哩!举些例子来讲,那样你就容易理解多了。”

小A:“嘿嘿!那感情好。”

大B:“文件头注释已结束,需要注明该文件创建时间,文件名,命名空间信息。”

例如:

描述部分用来书写该类的作用或者相关信息,块标记部分必须注明作者和版本。

如:

class Window extends BaseWindow {

...

}

大B:“构造函数注释采用,描述部分注明构造函数的作用,不一定有块标记部分。域注释可以出现在注释文档里面,也可以不出现在注释文档里面。用的域注释将会被认为是注释文档出现在最终生成的HTML报告里面,而使用的注释会被忽略。这个应该注意!”

例如:

boolean isTrigerSuccess = false;

又例如:

boolean isTrigerSuccess = false;

再例如:

int x = 1263732;

大B:“还有就是方法注释,方法注释采用描述部分注明方法的功能,块标记部分注明方法的参数,返回值,异常等信息。定义注释,规则同域注释。”

小A:“喔……原注释还真的是有那么多种类,每个种类都有不同的功能哩!嘿嘿!看来以后我得更认识学习才行哩!”

大B:“呵呵……你能这么想就好喽。对了,小A,注释块标记你知道不?”

小A:“注释块标?嘿嘿,这个……也不知道……”

大B:“没关系,我给告诉你。首先是标记的顺序。”

块标记将采用如下顺序:

一个块标记可以根据需要重复出现多次,多次出现的标记按照如下顺序:

小A:“哇噻!块标记还可以按照时间先后顺序,按照参数定义顺序,按照异常名字的字母顺序哩!师兄,你讲得真详细。看来我得好好得花点心思把它们都记下来才好哩!”

大B:“能记住当然好哩,我再给你讲下标记介绍。”

@param标记

@param后面空格后跟着参数的变量名字(不是类型),空格后跟着对该参数的描述。

在描述中第一个名字为该变量的数据类型,表示数据类型的名次前面可以有一个冠词如:a,an,the。如果是int类型的参数则不需要注明数据类型。例如:

大B:“对于参数的描述如果只是一短语,最好不要首字母大写,结尾也不要句号。对于参数的描述是一个句子,最好不要首字母大写,如果出现了句号这说明你的描述不止一句话。如果非要首字母大写的话,必须用句号来结束句子。(英文的句号)”

公司内部添加ByRef和ByVal两个标记,例如:

* @param _image the image ByRef 用来……

说明该参数是引用传递(指针),ByVal可以省略,表示是值传递。

大B:“代码规范大概要点就是这些了。听起来好像很多,只要用心,其实也很容易记的。”

小A:“嘿嘿!师兄,你太历害了!”

1.4 初学代码者常犯的错误

小A:“师兄,我经常在写代码的时候犯错,你能不能教教我呐!”

大B:“好啊!当出现这些错误的时候,要仔细的看看错误提示,找出问题所在,避免以后不再发生同样的错误。在这个过程当中我们的经验和水平也在不断的提升。Java错误,主要包括两方面,一种是语法错误,另一种是逻辑错误。语法错误,也就是我们的编码不符合Java 规范,在编译的时候无法通过。通常,我们都是用javac 编译我们的源程序,如果代码中存在语法错误,比如某个表达式后缺少分号的时候,编译器就会告诉我们错误信息,编译就此停止。逻辑错误,也就是我们常说的Bug,一般存在逻辑错误的程序都是可以顺利的被编译器编译产生相应的字节码文件,也就是class文件。但是,在执行的时候,也就是java ourClass的时候,得出的结果并不是我们所希望的。”

小A:“对!我在写代码的时候就是经常出现这样的问题,经常都解决不了。”

大B:“失败是成功的他妈!学习编程是没有什么捷径可以走的,要在不断的学习和编码的过程中,逐渐的积累经验,从开始的模仿者变成最后的创作者。和学习其它的编程语言一样,在开始编码的时候也会出现很多很多的错误,而且有的错误可能也是不断的出现。”

小A:“嗯嗯嗯……师兄说得是!”

1.5 面向对象编程

小A:“师兄,用任意一种面向对象语言实现,就是要用面向对象的编程方法去实现,对吗?”

大B:“一般编程初学者都会遇到这样的问题,碰到问题就直觉地用计算机能够理解的逻辑来描述和表达待解决的问题及具体的求解过程。其实这是用计算机的方式去考虑它,就好比计算器这个程序,先输入两个数和运算符号,再根据运算符号判断选择如何运算,得出结果。这样是对的。但这样的想法却使得程序只为满足实现当前的需求,而程序就不容易维护,不容易扩展,也更不容易复用。也就达不到高质量代码的要求了。”

小A:“师兄,你这样一讲我又不懂了,那怎么程序才能容易维护,容易扩展,也容易复用哩?”

大B:“我再跟你讲细点吧!顺便也举些例子,理解一点。发广告邮件,广告邮件列表存在数据库里面。倘若用C来写的话,一般会这样思考,先把邮件内容读入,然后连接数据库,循环取邮件地址,调用本机的qmail的sendmail命令发送。然后考虑用Java来实现,既然是OOP,就不能什么代码都塞到main过程里面,于是就设计了三个类:一个类是负责读取数据库,取邮件地址,调用qmail的sendmail命令发送;一个类是读邮件内容,MIME编码成HTML格式的,再加上邮件头;一个主类负责从命令读参数,处理命令行参数,调用发email的类。把一件工作按照功能划分为3个模块分别处理,每个类完成一件模块任务。仔细的分析一下,你就会发现这样的设计完全是从程序员实现程序功能的角度来设计的,或者说,设计类的时候,是自底向上的,从机器的角度到现实世界的角度来分析问题的。因此在设计的时候,就已经把程序编程实现的细节都考虑进去了,企图从底层实现程序这样的出发点来达到满足现实世界的软件需求的目标。这样的分析方法其实是不适用于Java这样面向对象的编程语言。”

小A:“为什么?”

大B:“因为,如果改用C语言,封装两个C函数,都会比Java实现起来轻松的多,逻辑上也清楚的多。”

小A:“我倒觉得面向对象的精髓在于考虑问题的思路是从现实世界的人类思维习惯出发的,只要领会了这一点,就领会了面向对象的思维方法。”

大B:“这样吧,我再举一个非常简单的例子:假使现在需要写一个网页计数器,客户访问一次页面,网页计数器加1,计数器是这样来访问的如:http://hostname/count.cgi?id=xxx 后台有一个数据库表,保存每个id(一个id对应一个被统计访问次数的页面)的计数器当前值,请求页面一次,对应id的计数器的字段加1(这里我们忽略并发更新数据库表,出现的表锁定的问题)。”

大B:“如果按照一般从程序实现的角度来分析,我们会这样考虑:首先是从HTTP GET请求取到id,然后按照id查数据库表,获得某id对应的访问计数值,然后加1,更新数据库,最后向页面显示访问计数。

小A:“现在假设一个没有程序设计经验的人,要怎样来思考这个问题的呢?会提出什么样的需求呢?”

大B:“你很可能会这样想:我需要有一个计数器,这个计数器应该有这样的功能,刷新一次页面,访问量就会加1,另外最好还有一个计数器清0的功能,当然计数器如果有一个可以设为任意值的功能的话,我就可以作弊了。做为一个没有程序设计经验的人来说,他完全不会想到对数据库应该如何操作,对于HTTP变量该如何传递,他考虑问题的角度就是我有什么需求,我的业务逻辑是什么,软件应该有什么功能。”

按照这样的思路需要有一个计数器类 Counter,有一个必须的和两个可选的方法:

getCount() // 取计数器值方法

resetCounter() // 计数器清0方法

setCount() // 设计数器为相应的值方法

把Counter类完整的定义如下:

解决问题的框架已经有了,来看一下如何使用Counter。在count.cgi里面调用Counter来计数,程序片段如下:(www.xing528.com)

程序的框架全都写好了,剩下的就是实现Counter类方法里面具体的代码了,此时才去考虑具体的程序语言实现的细节。

面向对象的思维方法其实就是我们在现实生活中习惯的思维方式,是从人类考虑问题的角度出发,把人类解决问题的思维方式逐步翻译成程序能够理解的思维方式的过程,在这个翻译的过程中,软件也就逐步被设计好了。

大B:“在运用面向对象的思维方法进行软件设计的过程中,最容易犯的错误就是开始分析的时候,就想到了程序代码实现的细节,因此封装的类完全是基于程序实现逻辑,而不是基于解决问题的业务逻辑。”

1.6 面向对象

大B“我给你个通俗的例子:面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数;现在纯正的OO语言主要是Java和C#,C++也支持OO,C是面向过程的;你看这样好理解多了吧?”

小A:“是啊,这样的话一下子就看懂了!呵呵……”

1.7 面向对象的特征

大B:“那小师弟,面向对象它都有些什么特征哩?”

小A:“面向对象的三个基本特征是:封装、继承、多态。”

大B:“嗯,是的。那你能不能用图来说明?”

小A:“用图来说明?可以的。下面这个是我写的图(如图1-1面向对象基本特征所示),还得请师兄多指教。”

大B:“吼,不错嘛。”

图1-1 面向对象基本特征

1.8 面向对象的优势

大B:“其实学习编程也没什么很难的,我一开始也不知道的,不过学做了软件开发几年后,遇多了,还有更改最初想法的事件,就慢慢明白了它的道理。”

小A:“呵呵……这就是经验所得嘛!”

大B:“像你这么好学,一定能学好的!在我们生活中接触得最多是‘面向对象编程技术’,而‘面向对象编程技术’也是面向对象技术中的一个组成部分。面向对象技术需要面向对象的分析,设计和编程技术,也需要借助必要的建模和开发工具。”

小A:“师兄,能不能给我讲讲面向对象的优势具体有哪些呐?”

大B想,好学的小师弟,想想自己当年要是也能向小师弟这么好学的话,那肯定比现在学得好。

大B:“行呐,我讲给你听。1、要符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流。 2、易于软件的维护和功能的增减。对象的封装性及对象之间的松散组合,都给软件的修改和维护带来了方便。 3、可重用性好。重复使用一个类(类是对象的定义,对象是类的实例化),可以比较方便地构造出软件系统,加上继承的方式,极大地提高了软件开发的效率。4、与可视化技术相结合,改善了工作界面。随着基于图形界面操作系统的流行,面向对象的程序设计方法也将深入人心。它与可视化技术相结合,使人机界面进入GUI时代。”

小A:“就如Java语言,它都有哪些优点呐?”

大B:“Java是目前最流行的语言不是没有道理的。1、最为显著的优点是它与平台无关.Java依靠它的运行库(Run Time Library)获得了以往任何一种语言都没有的平台无关性。同样的代码可以不用改动就可在Windows、Solaris、Unix等各种软硬件平台上运行。 2、另外一个显著的优点是Java的类C++语法。Java从C++发展而来,对于当今世界上众多的c++程序员来说,Java显得并不陌生。 3、面向对象。Java语言是完全面向对象的,区别于C++的“半面向对象”。目前面向对象技术已经取代早期的结构化程序设计方法而成为计算机界的标准技术,因为事实证明面向对象技术处理复杂问题的优势远非其他方法所能及。 4、健壮。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大缩短了开发Java应用程序的周期。Java提供Null指针检测数组边界检测异常出口字节代码校验。5、安全。Java最重要的一点保证是:Java的安全体系架构。Java的安全性可从两个方面得到保证。一方面,在Java语言里,象指针和释放内存等C++功能被删除,避免了非法内存操作。另一方面,当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。 6、多线程。简言之为一项任务多点开工,多线程带来的更大的好处是更好的交互性能和实时控制性能。在Java里,你可用一个单线程来调一副图片,而你可以访问HTML里的其它信息而不必等它。 7、动态。Java的动态特性是其面向对象设计方法的发展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。”

小A:“哇噻!你不说我还真不知道Java语言还有这么多优点哩!嘿嘿!也真难怪现在最流行它了。”

大B:“是啊!不管哪种语言都有各自的优缺点,Java的缺点就是编译、执行的速度太慢,所以Java私塾建议你如果想学编程,不要总是问这个好不好,那个难不难,只要下定决心学就对了。”

1.9 类、对象、方法和实例变量

这天,大B问小A,“小师弟,你知道什么是类,对象,方法和实例变量吗?”

小A:“师兄,你问得我早都学过,不信,我说给你听。类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封闭在一起的集合体。类是对一组事物的抽象,是对事物的特性和功能的描述。类是一种模板,并不代表具体的事物。对象是类的实例,即类的变量。方法是指实现对象所具有的功能操作的代码。每个对象中一般包括若干种方法,每个方法有方法名和对应的一组代码。方法体现了对象的一种行为能力。实例变量……实例变量……”

大B:“哈哈!不记得了吧?”

小A:“实例变量?”

大B:“让师兄来告诉你吧,实例变量就是说某一实例具有的状态,比如说圆的半径,汽车的颜色。”

小A:“喔……我明白了,嘿嘿,其实这个我学过的,只是……只是一时想不起来了……”

大B:“没事,我这次问你,你不知道,下次遇到,你不就想起来了。对于初学者来说要理解类、对象、和对象变量不是一件很容易的事。现以美眉为例来说明。假设你的学校或者是赚大米的地方有很多美眉,为了和这些妹妹中的一部分或者全部建立良好的关系,你需要建立一个Java类:Meimei。那么学校种的美眉们就是类 Meimei,而对象就是类的一个实例,那么其中任何一个美眉就是对象。”

如:

假如你想让其中一个Meimei类实例成为你的‘超友谊朋友’, 另外一个Meimei类实例成为你的‘女朋友’,那么‘超友谊朋友’和‘女朋友’就是一个Meimei类对象变量;‘超友谊朋友’和‘女朋友’这两个对象变量 就引用其中一个Meimei对象。如现在你的超友谊朋友是meimei1, 你的女朋友是meimei2,那么:

三个月以后你的超友谊朋友是meimei3, 你的女朋友是meimei1,那么:

大B问小A,:“这下你该对类,对象,方法又有新的认识了吧?”

小A:“嘿嘿!简直就是重新认识啊!哈哈!”

1.10 继承

大B:“那我再来问你,你来讲讲继承。”

小A:“继承是指一个对象直接使用另一对象的属性和方法。”

大B:“嗯!事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的‘父亲’,而这些子实体则是汽车的‘孩子’。”

1.11  接口

大B:“你知道什么是接口吗?”

小A:“这个我知道,接口用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。”

看到小师弟还学得挺好的嘛!大B越来越欣赏小师弟了。

大B说:“接口好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口不能被实例化。类可以实现多个接口并且通过这些实现的接口被索引。接口变量只能索引实现该接口的类的实例。”

1.12  UML图

小A:“师兄,我想请你帮我总结和理解一下类图,因为我学了那么久的编程,类图就是学不好,简单的类图我还可以看懂,有些标记很容易混淆。你能给我讲讲吧!”

大B:“先看看UML的定义:统一建模语言(Unified Modeling Language,UML)是一种绘制软件蓝图的标准语言。”

小A:“那它有什么特性?”

大B:“顾名思义,它具备语言的特性:

-标准性:元素、规则、机制

-逻辑性:严谨

-灵活性:同样的事情,不同的正确表述

-方言性:利益驱动;翻译版本的混乱

-不可盲目模仿性:避免片面借鉴,抓住事务本质和思想灵魂”

小A:“嘿嘿,标准性、逻辑性我能理解,什么是灵活性,方言性和不可肓目模仿性?”

大B:“方言性,在一方面是由于软件商家(如微软)追求商业利益、行业标准的制定权和话语权,造成了一些CASE工具未完全遵从UML标准这一混乱现象;另一方面,由于国内翻译的参考教材中文字晦涩难懂、不统一,造成目前的UML的学习门槛高、入门困难的局面。其实,真的,这东西没有这么高深。说到方言性,不得不补充一句,不建议使用VISIO做为UML的CASE工具,UML的三个爸爸早在94、95年分别加入Rational公司,没有理由不使用Rational Rose啊。最值得一提的是它的灵活性、不可盲目模仿性。举个例子吧!”

用例场景:

张无忌,出生于冰火岛,父亲张翠山,母亲殷素素。张无忌的武功大全:武当长拳、九阳神功、武当梯云纵、乾坤大挪移、少林擒龙手、崆峒七伤拳、太极拳剑、圣火令武功。

先画个用例图,描述张无忌他家的情况。如图1-2用例图所示

图1-2 用例图

2)以泛化关系表示继承的时候,用例描述中需要强调描述:儿子继承了爸爸的什么,爸爸有哪些没有被儿子继承,儿子还新增了什么。如图1-3用例图所示

图1-3 用例图

3)这是一个有问题的用例图,看看错误在哪里?提示:聚合关系是一种松散的关联关系,目标元素可有可无。如图1-4用例图所示

图1-4 用例图

想一想,人亡家还在么?所以以上关系用聚合是完全错误的!那么,上面用例场景描述中,哪些可以使用聚合关系描述呢?

图1-5 用例图

没错,张无忌可以不会任何武功,也可以会N多武功;张无忌学习九阳神功,并不妨碍杨过、郭靖去学习嘛!如图1-5用例图所示

4)这还是一个有问题的用例,看看错误在哪里?提示:组合关系是一种强关联,它有一个重要的特性:部分在某一时刻仅仅只能属于一个整体。如图1-6用例图所示

图1-6 用例图

想一想,殷素素不但是张翠山的老婆,还是殷家的女儿,张家的儿媳妇。有人问,这张用例图中并未讲到张家和殷家啊,所以这般描述好像也不错。非也,用例图描述的是实际的、真实的关系,跟“人为地”画或不画是没有任何关系的。所以以上关系用组合是完全错误的!那么,上面用例场景描述中,哪些可以使用组合关系描述呢?

我挖,我挖,我使劲挖,挖掘需求。5分钟过后。突然想到:冰火岛上有树,树上长叶子,嘿,有了!如图1-7用例图所示

图1-7 用例图

现在是不是感觉UML很好玩?想不想了解一下UML的成长历程,想不想认识一下它的三个爸爸?如图1-8用例图所示

图1-8 用例图

UML之父:Grady Booch、James Rumbaugh、Ivar Jacobson

Grady Booch 在他的一本书中说:“如果你有好的思想,那么它也是我们的”。这其实从一方面概括了UML的哲学--它吸取已有的精华并且在其上进行OOA/D(面向对象分析和设计)整合和构造。这是最广泛意义上的复用。

大B:“在正式上手去应用UML之前,再了解一下应用UML的三种方式,包括:

-UML作为草图

非正式的、不完整的图(通常是在白板上手绘草图),借助可视化语言的功能,用于探讨问题或解决方案空间的复杂部分。

-UML作为蓝图(主要方式)

这是UML更加正式和精确的用法,使用UML用于详细规定软件系统。UML模型可被维护,并成为软件的一个重要交付成果。用于:正向工程,逆向工程。这种方法需要使用如Rational Rose建模工具。

-UML作为编程语言

使用模型驱动构架(Model Driven Architecture,MDA),给UMl模型添加足够的细节,使得能够从模型中编译生成系统。这是UML最正式和精确的用法,是软件开发的未来。但目前在理论、工具的健壮性和可用性方面仍处于发展阶段。”

大B:“还有就是,类图这东西你以后看多了,用多了自然就熟悉了。”

小A:“看来UML类图也不太难嘛!嘿嘿!”

大B:“就是啊!以后就要记住了哦!编程是一门技术,也是一门艺术。不能只满足于写代码运行结果正确,要考虑如何让代码更加简练,更加容易维护,容易扩展和复用,这样才可以真正得到提高。UML类图不是一学就会的,要有一个慢慢熟练的过程。学无止境,理解面向对象的才是真正学习编程的开始!”

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈