抽象,抽象
什么是对象
在上大学的时候,上C++课程,第一次接触到对象的概念。老师告诉我们对象的特征是封装,继承和多态。
也许是当然对软件了解得不是很深,并不记得有讲为什么会有面向对象语言的出现。当读到《大象》的时候,我了解到了面向对象语言解决了很多面向过程语言的一些缺点,如:扩展性差与代码的可维护性很差。其实最大的缺点就是当需求中的业务复杂的时候,面向过程语言难于设计与实现。
最近又把《大象》翻来看看,感觉书还是要多读几遍,每遍都会由于自己的知识的不断积累,获取到不同层次的信息。
翻开书的看两页,讲到面向对象的优缺点,感觉作者总结的缺点总结得实在是很好。从前做项目的时候都只是考虑,为什么会有软件的需求,有一个软件系统以后为它解决了什么问题。然后就开始对需求分析,了解用户的需求,再对需求进行面向对象的分析与设计。但是似乎我们还有很多的基本问题没有考虑。
1.需求为什么会对应对象类呢?(WHY)
2.对象是怎样实现我们的业务需求呢?(HOW)
3.这些对象之些有一些什么样的联系呢?(WHAT)
我们如果是一个程序员,拿着需求分析和软件设计,跟本没有办法将它们联系起来。而我们的软件设计人员也往往是凭着某些经验对需求进行设计,根本没有办法将这个过程像数学运算一样一步一步的推导过来。
作者对这个问题作了一个很好的解释,将需求转化为对象的关键就在于抽象,软件设计人员就是通过自己的多年开发和设计经验,从需求中通过抽象思维,将需求的实现抽象为一个个对象的行为组合。其实我们的社会到处都运用着抽象的方法。比如,我们在生活中的一物质交换,我们为这个领域抽象出一个概念叫经济来专门研究它。
通过软件设计人员的抽象就得到了面向对象的设计,有了面向对象的设计以后,再用面象对象的语言来实现是很容易的。但是,怎么来证明我们的软件设计是正确的呢。于是,就有人研究用什么办法可以像解决数学问题一样,通过公式的推导就能把需求映射到设计当中,这样就能保证我的设计是正确的。随着这个领域的发展,人们逐渐总结出了一堆又一堆最佳实践的方法论,通过将需求进行业务建模,分析建模,设计建模等过程,将问题承前启后的逐渐细化。最终达到我们从需求推导到对象的目标。而从业务需求->业务建模->分析建模->设计建模是一个描象而又复杂的过程,人们急切需要某种方面能够很好的表示它们的信息及相互的关联关系。于是,UML就是在这个时候顺应首时代诞生了。下面我们来讲讲什么是UML。
UML翻译为中文就是统一建模语言。既然是语言,它就会跟c,java等语言一样,有词汇,有语法。而在UML中就叫做元素和视图等概念。所以我们需要明白的是,UML的作用是表达各种模型的信息。
to be perfect