Java面向对象在软件重用和体系结构中的应用

面向对象技术提供了一种新的认知和表示世界的思想和方法,它对计算机工业的影响是深远的。

计算机从业人士利用它提出了面向对象的计算机程序设计语言、面向对象的软件设计方法、面向对象的数据库等等。同时面向对象技术为软件工业实现工程化提供了强有力的支持,正是面向对象技术造就了组件、构件、中间件等概念。

一、可重用软件组件

计算机的不断发展为计算机及网络应用提供了大量技术先进、功能强大的应用软件系统,同时也给软件开发者和用户带来了相应的问题:

· 软件系统规模庞大,研制周期长,维护费用高;

· 软件系统过于复杂,在一个系统中集成了各种功能,大多数功能不能灵活地装卸、单独升级或重复利用;

· 应用软件不易集成,即使各应用程序是用相同的编程语言编写的,并且运行在相同的计算机上,特定应用程序的数据和功能也不能提供给其他应用程序使用。

为克服上述困难,实现全行业范围内的软件"即插即用",关键是解决软件系统的可操作性、可扩展性、语言独立性和跨平台的操作能力。

作为解决这类问题的一种方案,面向对象的程序设计思想20多年来得到很大发展。孤立的面向对象思想虽然功能强大,但目前其发展已接近极限,结果是产生了大量的"对象孤岛"。将面向对象思想与组件编程思想相接合发展起来的基于对象的组件软件结构为这一领域开辟了新的道路。

从广义上说,软件组件是一种定义良好的独立、可重用的二进制代码,包括功能模块、被封装的对象类、软件框架和软件系统模型等。

本世纪60年代末到80年代初,结构化的模块式软件开发思想占主导地位,当时的组件的含义是指一些定义良好的方法包或功能模块。

80年代起,面向对象的软件开发思想迅速发展起来,这时的软件组件的含义就是类库。类虽然提供了封装性、多态性和继承性,但需要依赖于具体的编程语言,耦合度高,且需要用户对类库的结构和宿主语言有较深入的了解,因此,不能完全达到软件重用的可移植性和互操作性要求。

90年代后,组件的内涵进一步加强,聚合性、独立性和重用性进一步提高。目前,基于对象的组件软件体系结构中的组件是指可方便地插入到语言、工具、操作系统、网络系统中的二进制代码和数据。

这种软件组件可以看作是一种软件集成电路元件,具有以下特点:

· 软件IC没有硬件IC的天然聚合性,构成粒度大小自由,便于扩展;

· 通过规定一个统一的二进制标准,建立起机构之间的智能互操作机制和语言独立性;

· 外界仅通过接口访问组件;

· 多侧面性,即组件表达的语义层次高,可以从不同侧面进行连接,外部特性不唯一;

· 支持封装、继承、多态性。

基于经典面向对象技术的组件模型为软件体系结构设计和大型应用软件开发给予了强有力的支持,目前已经为软件行业所广泛接受。Microsoft的OLE/COM和SunSoft的JavaBeans都是典型的软件组件规范。

1.1 JavaBeans

Java Bean是基于Java环境的,可视的、可操纵的、可重用的组件;JavaBeans组件模型是SunSoft制定的关于Bean的软件组件标准,规定设计所有Bean所依据的框架,确保Bean在具备特定功能的同时,还能被可视化软件构造工具所识别、操纵,并能将这些设计信息保存下来,指导运行时的行为。

作为可视化组件,所有JavaBean都具备如下特征:

· 内省(introspection)机制,能够告诉软件构造工具其所能完成的功能,从而允许软件构造工具在设计时对其加以操纵;

· 用户定制(customization)机制,允许程序员在软件开发阶段利用软件构造工具改变Bean的外观和行为方式。

· 事件(event)机制,能捕捉事件、引发事件,并将其所能产生和处理的事件告知软件构造工具。

· 特性(properties)机制,除在软件开发阶段支持用户定制外,还使得软件系统能够在运行时刻对Bean进行加工和控制;

· 保持(persistence)机制,保存程序员开发时利用构造工具对Bean所做的修改,并在运行时予以恢复。

· 设计时刻功能和运行时刻功能分离。

JavaBean主要用于可视化环境,为软件构造工具所利用,但也能通过程序接口直接操纵,Java类库中提供了相应的控制类。

时间: 2024-10-29 05:41:29

Java面向对象在软件重用和体系结构中的应用的相关文章

物联网软件体系结构中的感执模型的求精

物联网软件体系结构中的感执模型的求精 谢开斌 陈海明 崔莉 物联网的基本功能是感知物理环境,并根据实时的感知信息和用户的执行需求实现对物理环境的控制.因此,感执模块是物联网软件的核心模块.为最终将软件体系结构应用于物联网软件的开发,在基于物理模型的物联网软件体系结构(physical-model driven software architecture,简称PMDA)研究的基础上,对PMDA 中的感执模型SEM进行求精,求精后的感执模型称为R-SEM.R-SEM 考虑了物联网的特有属性,将SEM

Java面向对象编程学习总结

重要知识点总结如下: 1,抽象,封装,继承,多态是面向对象程序设计中得四个特点. 2,面向对象得软件开发大体分为:面向对象的分析,面向对象的设计,面向对象的实现. 可概括为如下过程:分析用户需求,从问题中抽取对象模型;细化模型,设计类,包括类的属性和类间的 相互关系,同时观察是否有可以直接引用的已有类或部件;选定一种面向对象的编程语言,具体编码实现 上一阶段类的设计,并在开发过程中引入测试,完善整个解决方案. 3,面向对象程序设计方法的优点是:可重用性,可扩展性,可管理性. 4,类的定义:cla

JAVA学习(五):Java面向对象编程基础

Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它采用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目的. 1.OOP的3个特性(封装.继承和多态性) 封装是类的基础,指把类的相关实现细节隐藏起来,在类中将数据和实现操作的代码集中起来放在对象的内部,调用这些类时只需直接使用类预留的接口就可以了. 继承提供了子类自动拥有父类数据结构和方法的机制,它表示类之间的一种关系. 多态指使一个对象被看成另一个对

java 面向对象面试集锦_java

java  面向对象:这里整理了面向对象的基础知识,帮助大家学习理解,希望能帮助到大家,这里是 根据公司面试资料整理的相关知识: Overload和Override的区别.Overloaded的方法是否可以改变返回值的类型? Overload是重载的意思,Override是覆盖的意思,也就是重写.重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子

面向对象的软件分析设计过程备忘

面向对象的软件分析设计过程备忘 一.业务分析与需求收集 1.重点梳理主业务流程,逐步完善分支流程.整理和发现业务流程中的涉众以及他们的业务目标和系统目标,显式目标以及隐式目标: 2.整理涉众们在系统中所承担的角色以及各自的职责: 3.在流程的运转过程中,发现和查找业务实体.他们之间的关系以及关键实体的生命周期(由谁在什么场景下创建.中间状态的变化以致最后的消亡): 4.在流程的运转过程中,有哪些业务规则以及各种隐式的规则: 5.不断的提问和验证流程的正确性和完整性(即使是边界以外的流程也不要放过

【Java面向对象学习】一张图搞定Java面向对象

刚开始学习Java的时候,一个人跌跌撞撞摸索着往前走,很多东西理解的也懵懵懂懂,后来实践的多了,才慢慢清楚:许多东西虽然很基础但是却很重要,是需要反复思考和加深理解的,[Java面向对象学习]一张图搞定Java面向对象,分享一些归纳总结后的技术干货,一张图能搞定的事,绝对不长篇大论. 大家都知道,Java面向对象是Java的一个核心,也是初学者的一个难点,所以我们从这里开始,Let's go ! Java面向对象 面向对象(Oriented Object) 是相对于面向过程而言的,过程其实就是函

java-android面向对象中不能重用方法

问题描述 android面向对象中不能重用方法 在我的应用中我不能重用我已经在ArabicUtility类中声明的方法.我想要做的是用Arabicutility来安排一个阿拉伯语的文本.因此,我需要做的是给已经在Arabicutility类中声明的方法传递字符串并进行转换 我想这个在面向对象中是有一些困难的,所以希望能有人帮我改一下. 这个是我在Arabicutility类中加的方法 public void addTranslate(int rid, TextView txt1) { Strin

java面向对象(三)之抽象类,接口

java类 java类分为普通类和抽象类,接口,上一节我大概讲了java类的一般格式,今天将抽象类和接口.同时讲一下它们是怎样存储的. 最重要的是理解为什么要有抽象和接口,这样学下来你猜不会迷茫,才能更好的去使用,所以多看看我写的关于抽象类和接口的目的. 抽象类 目的 为了对代码更好的维护和重用. 解析: 抽象类往往用来表征对问题领域进行分析.设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象. 1.因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用.这样就可

Java面向对象的三大特征_java

java面向对象的三大特征:"封装.继承.多态".更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. 以本文为例,User类中的变量为私有变量,只能通过创建对象(此时构造方法自动调用)来赋值. 外界只能通过公有方法api()来访问User类. Admin类继承了User类,调用了其构造方法,还重写了method_1方法,增加了一个特有方法power(). User文件 public class User { /**