面向对象及相关概念剖析

时间:2022-05-22 19:47:43
    面向对象技术包括面向对象分析(OOA),面向对象设计(OOD),面向对象编程(OOP)和面向对象测试(OOT).面向对象技术的核心应该是OOA和OOD(有些资料上干脆把二者合并称OOAD),OOP和OOT跟面向过程的编程和测试没有什么区别.面向对象的思想因为更符合人思维习惯,所以用来做软件系统的分析和设计,但该技术并不是银弹,因为与传统技术(面向过程和结构化技术)相比,面向对象技术能解决的问题并不更多,也没有更多的技术含量.它只不过是与传统技术并列的一种技术.针对多角色,多交互的系统,利用面向对象的技术更方便,而电信设备中大量的软件处理的是协议和消息,所以更适合用传统技术.很多的技术人员(对传统技术知之甚少,当然也不能说他们对面向对象就知道很多,仅仅是因为他们利用面向对象的语言来编码)动辄称面向对象技术怎么怎么样?其实他们并没有理解面向对象的本质,所以他们对于面向对象技术的认识和理解会成为行家眼中的笑柄.下面我从以下几个方面对面向对象技术进行说明. 第一:面向对象与面向过程的关系.面向过程的分析阶段要做的工作包括建立数据模型,功能模型和行为模型.数据模型与OOA中的分析类中的实体类是对应的(虽然不是完全对应),功能模型中包括了边界类和控制类的概念.行为模型在面向对象技术中也是存在的.所以,面向对象与面向过程存在本质区别? 第二:面向对象与Use-Case的关系.很多用过Rational Rose的技术人员都把Use-Case看做面向对象的一部分.其实Use-Case仅仅是对用户需求进行分析的一种方法,所以也可以用到面向过程分析和设计中.. 第三:面向对象与MVC的关系.MVC实际上是一种架构样式,不过是利用模块化的思想实现高内聚低偶合的一种方法.并不专属面向对象.当然,可以用到利用面向对象技术进行分析与设计的系统中.在面向对象的分析中的实体类等价于M,边界类等价于V,控制类等价于C.当不能因此就把MVC与面向对象紧紧绑定起来. 第四:面向对象与接口的关系.肯定有人说接口是面向对象的一部分.明明很多的JAVA书中都说\"面向接口编程,而不是面向实现编程\".不能因为它出现在JAVA的教材中就说是面向对象的一部分.就好象说你借了别人的帽子戴就说这个帽子是你的一样.面向接口严格来说是面向功能或契约的.不仅在编程时要用,在系统设计时也可以用,可以仅仅定义一个模块的接口(功能或契约),其它的模块仅依赖该接口,而不用考虑模块的内部.很明显的一个例子,在C/C++中用到头文件,一个模块提供一个头文件,其它使用该模块的模块针对该头文件进行开发即可,不用考虑该模块是用lib还是dll还是com.所以,接口技术也不是专属于面向对象的. 第五:面向对象与分层的关系.分层严格来说也是一种架构样式.当然现在的B/S结构的系统大量使用分层技术进行设计.但不能因此就说分层也属于面向对象技术,其实在计算机的设计中(多层虚拟机),在TCP/IP协议栈中都已经使用分层技术了.那时,面向对象的技术恐怕还没有在软件领域使用. 以上是我个人对面向对象的理解.各位博友如有什么不同看看法,欢迎讨论.