第一章 引 言
面向对象是一种软件分析、设计和编码等软件开发过程中所运用的思想,这种思想的重要性却往往被人们所忽略,当然至少是被大多数本专科学生所忽略。这不是什么好高务远等浮躁的行为,我们必须承认现实并且去面对这现实,中国计算机界特别是软件教育的人才培养总是跟不上市场的需求,这是国民生计乃至国家防御的大问题。每个人都应该有社会责任感,都应该承担起自己的责任和义务,人一辈子不求什么,但求临终追问一生所为而不至于问心有愧。当然,我们目前需要的是,做好自己的职责。而我,正在尽力的去做。
早先我曾经参与了一家教育类的创业公司,并且负责该公司IT方面的问题。当我看到以及参与一些包括IT与非IT项目的策划时,我从其中认识到了一些非常严重的问题。最严重的莫过于“人各有志”,一个人的人生观以及世界观决定了这个人的所为和所做。或许有些人不希望在技术上费劲而想其他办法多挣钱,那是人各有志吧。目前所在的软件公司中,参与的项目也让我感觉到需要去多学习什么技术。所以我想,对这篇技术论文,懂得欣赏的我说声谢谢你的理解,不能体会的我也于心谢谢你的谅解。
准备好了没有?你的回答只有肯定。
第二章 面向对象开发语言与开发工具
2.1面向对象语言
语言,我们还要争吵下去吗?尺有所长,寸有所短。面向对象语言,在他眼睛里,所有程序即将要进行描述的事物都是对象。他的特点是以对象作为基本程序结构单位,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承、多态、封装等成分和概念。JAVA语言就是面向对象语言中最具代表性之一的,他提供了比较纯的面向对象概念和机制。
2.1.1 Java语言
Java技术是一种面向对象的编程语言,由SUN微系统公司(http://www.sun.com)所开发的编程平台。Java语言的创始人是James Gosling ,他是一个大胡子,程序界但凡厉害的人物大多似乎都是大胡子。
Java 技术的最大卖点就是他的平台无关性,他仅仅要对Java 虚拟机(JVM)负责。JVM 是编程语言与机器底层软件和硬件之间的翻译器,而通过针对JVM的编程,就可以让Java程序在任何具有JVM的平台上运行。而JVM不仅仅是SUN的杰作,包括BEA、IBM、ORACLE等都有自己的JVM,并且Java程序也出现了不同的解释或则编译方式。
Java 编程语言是与众不同的,因为 Java 程序需要经过编译为中间语言,然后解释通过 JVM 分析和运行字节码。编译只进行一次,生成.class的后缀名文件,解释则在每次运行.class文件时都要进行。
Java 平台(1.4)具有三个版本:J2SE、J2ME、J2EE,该平台由 JVM 和 Java Application Programming Interface (API) 组成,Java API 是现成软件组件的集合,便于进行 applet 和应用程序的开发和部署,其中包括健壮的、安全的和可互操作的企业应用程序。Java API 被分组到相关类和接口的库中;这些库称为包。而程序员们也可以开发自己的API,组建自己的库,通过这些方式,我们可以重复利用优良的代码。
2.2开发工具
当我们开始设计和编写程序之前,我们需要劳动的工具,一把好的锤子可让你少敲几下,甚至避免把你的拇指错当成钉子。在面向对象的设计和编程中,你不可或缺的需要工具的支持,用来自动寻找错误、重构代码、判断依赖,甚至自动生成转换代码与模型等等。目前的工具有很多,针对语言,针对平台等等的都有,但我只打算简单介绍下面的工具。
2.2.1神奇而卓越的集成开发环境Eclipse
工欲成其事,必先利其器!Eclipse,不容错过的神兵利器!(http://www.eclipse.org)
Eclipse是由IBM领导的开源项目,参与这个社区的厂商与个人不计其数,除了微软外,你知道的不知道的大公司和大人物都在这里头找到了自己想要的东西。Eclipse 提供了一个允许快速原型、协作并分享看法的构建于通用架构之上的平台。同时又可以访问功能强大的可扩展平台,从而使得快速有效地开发高质量的工具变得十分容易。如果整个平台太重量级以至于难以使用,Eclipse 提供了 Rich Client Platform (RCP,富客户端平台),它用于不需要通用资源模型或平台其他功能的应用程序。曾经听说过微软有个类似于RCP的技术,他们都是基于XML的一项技术,这两种互不相容但有者共同机理和目的的技术将引导我们往后的技术发展,一种超前但已经距离不远的概念。通过他们,我们的所有应用程序和资源都类似一个浏览器IE一般。
Eclipse Project
Equinox (home)
JDT - Java Development Tools (home)
PDE - Plugin Development Environment (home)
Platform (home)
Tools Project
C/C++ IDE (home)
COBOL (home)
EMF (home)
GEF - Graphical Editor Framework (home)
Hyades [closed] (home)
PHP Integrated Development Environment (home)
UML2 (home)
VE - Visual Editor (home)
Eclipse Web Tools Platform Project
J2EE Standard Tools (home)
WST - Web Standards Tools (home)
上面是Eclipse的一些平台环境和插件项目,使用这些插件你可以自由的构建你所需要的开发平台。如通常我们的使用eclipse-SDK-3.1后,为了能够可视化的开发JAVA窗口应用程序以及UML的软件设计,可以再添加VE-SDK-1.1、JEM-SDK-1.1、GEF-ALL-3.1、emf-sdo-xsd-SDK-2.1.0、uml2-SDK-1.1.0、eclipseUML_E310_freeEdition_2.1.0(这个有商业版和Free版)。类似,我们开发任何一种特定技术或领域的程序时,都需要相关的包或则插件,我们可以自由的搭配采用。但要记住一点,Eclipse项目的更新是芸斓模渌喙夭寮南钅扛禄岣莸鼻捌教ǖ陌姹纠唇校煌钅考浠嵊幸览倒叵怠K裕乇鹱⒁獠煌掌诎姹镜亩杂Γ约安寮浯嬖诘囊览倒叵担裨蚧岬贾?/SPAN>IDE出现错误甚至无法运行。
第三章 面向对象的架构设计
3.1 UML统一建模语言概要
统一建模语言(Unified Modeling Language,UML)是OMG组织(Object Management Group对象管理组织 http://www.omg.org)负责维护和管理的一个模型语言。UML的主要创始人是Jim Rumbaugh、Ivar Jacobson和Grady Booch,他们都有自己的建模方法(OMT、OOSE和Booch),由于不同模型间的理解和交互存在问题,所以他们一起创建了UML用来统一的实现建模语言。当然,UML不只用户于对象设计,他在过程语言上也有很大的用途。LINUX上百万行的内核原代码早已经被一个组织机构反编译为UML图,这样对整体代码的分析和维护变得不再那么复杂。
UML包括了结构图、行为图和交互图三大类。其中各类中又包含数种图:

图3-1 UML的分类
3.2基于UML的软件设计与建模重要性
在2006年上半年的全国计算机技术与软件专业技术资格(水平)考试中,软件设计师的试题出得让我感觉到世界原来转得比我想象中还快,但让我觉得郁闷的同时,我想也让大多数学生身份的人感觉到有苦说不出。上午理论基础,试题对于UML知识有了大范围增加,比去年多了两倍左右,我想对于很多大学生而言,他们目前还在学校的课堂研究程序流图,那是过程语言的范畴,而不是面向对象设计的领域。不出我所料,到了下午应用技术,UML不仅单独做为一个题形,还对程序设计的C++,JAVA题进行了整体结构的描述。一张图,对一个简单产品销售库存系统以及客户管理维护系统有了非常直观的概括,并且可以很清晰的从其中认识到程序类和方法中的各种依赖观系。通过观察UML,就可以在短时间了解这个程序,假如你一开始就去看代码,那么需要的时间就很可观了。
软件考试可以说是我国软件业对人才培养和资格认证的最专业考试,这类考试通常反应了目前的市场对人才技术的需求。可以看得出,UML是一个必然的趋势。有必要提到一点,就是下午的Java程序设计题目,所采用的居然是最新的JDK5.0,而目前据我所知道,整个广西软件界,基于JAVA的开发,没有一个上是JDK5.0版本的,其中增添的一些新特性如泛型等,以及语法的部分不同,让我感觉到焦虑,这不得不让我深思我们还停留在什么地方,而我们周边的环境已经发展到什么地步了。
3.2.1一个简单的ATM系统类图告诉了我们什么
从下面这个简单的ATM自动取款机系统的类图中,我们就可以一览此系统内部程序类是如何交替工作传递消息的。当然这只是一个静态图,他只能告诉我们类之间的依赖联系,而活动状态下类之间的工作机理,还需要我们采用动态图来表示,如序列图、活动图等。我们看看,UI类做了什么呢?他引用了Screen以及MessageLog类,其中Screen类是对屏幕显示功能内聚的类,MessageLog类是对日志进行处理的类,这两个类就好比两个零件,都遵守了单一职责原则,可以不只为UI所用。大家也可以看出,所有接口都没有依赖于具体类,而是所有具体类依赖于接口,这也属于依赖倒置原则。语言处理的这两个类通过继承这个UI类,又很轻易的实现了英语和西班牙语的UI显示和日志记录, 我们只需要新添加一个处理中文的类ChineseUI,通过继承UI我们就可以继承原先的UI处理机制,ChineseUI类只需要添加相关中文的处理即可,如图中绿色的类所显示。一个优良的系统程序结构,通过查看一个直观的UML [1] [2] [3] [4] [5] [6] [7] 下一页
|