1、Java&UML 教程授课:刘松华授课:刘松华版权所有:江西理工大学理学院UML对象、UML和Java统一建模语言(Unified Modeling Language)版权所有:理学院UMLJava&UML课程目录 面向对象分析和设计(OOA/D)版权所有:理学院UMLJava&UML课程要点 课程目标:介绍面向对象(OO)软件开发 介绍如何应用UML进行OOAD 面向对象软件开发包括了分析问题、设计解决方案、编码实现及维护 将思维从仅仅让程序运行转变到面向对象地思考 我们需要一种用于OOAD的语言,这既是一种思考的工具,也是一种沟通的形式。因此,我们将在OOAD中应用UML 分析(analy
2、sis)-对问题和需求的调查研究 设计(design)-满足需求的概念上的解决方案 面向对象分析(object-oriented analysis)-在问题域内发现和描述对象 面向对象设计(object-oriented design)-如何定义软件对象以及它们之间如何协作以实现需求版权所有:理学院UMLJava&UML1.1 面向对象技术 核心是对象对象 什么是对象?哪些可以认为是对象?为什么需要使用对象?版权所有:理学院UMLJava&UML1.2 面向对象程序设计语言 现有语言:C+、Objective C、Objective Pascal、Java、Ada等 市场主流语言:C+和Jav
3、a Java的优势及问题:WWW和Java能让小程序在任何有浏览器的计算机或操作系统上运行 不仅可以开发Web小程序,而且可以在几乎任何一种计算机上开发 C+的优势及问题:源于C,传承了在真实系统中完成真实任务的能力,兼容C 现在扩展为一种巨大而复杂的语言,难以全面掌握并达成相当水平版权所有:理学院UMLJava&UML1.3 面向对象设计和UML 在UML之前,有OMT、Booch等方法试图将各种方法中使用的概念进行统一(无原作者参与失败)。94年Rational软件公司合并两种概念,设计了统一建模语言 UML统一的内涵:对于开发的要求具有无缝性(软件开发生命期)适用于各种应用领域的建模,包
4、括大型、复杂、实时、分布式、集中式或计算的、嵌入式的系统 可应用于运行不同的编程实现语言和开发平台 不是对开发过程细节进行描述的工具 在构建UML模型的过程中,特别注意揭示和表达各种概念之间的内在联系并试图用多种适用于已知和未知情况的办法去把握建模中的概念版权所有:理学院UMLJava&UML1.3 面向对象设计和UML UML的目标:使其成为一个通用的建模语言,可供所有建模者使用 使其能很好地支持设计工作,如封装、分块、记录模型构造思路 使其能准确表达当前软件开发中的热点问题,比如大规模、分布、并发、方式和团体开发等 最终目标是尽可能简单的同时能够对实际需要简历的系统的各个方面建模版权所有:
5、理学院UMLJava&UML附录4:建议阅读参考书 UML Distilled UML精化 Applying UML and Patterns UML与模式应用 The Unified Modeling Language User Guide UML用户指南 The Unified Modeling Language Reference Manual UML参考手册 Design Patterns:Elements of Reuseable Object-Oriented Software 设计模式 可复用面向对象软件的基础 Agile Software Development-Princip
6、les,Patterns,and Practices 敏捷软件开发 原则、模式与实践 Analysis Patterns:Reusable Object Models 分析模式 可复用对象模型版权所有:理学院UMLJava&UML对象的精髓统一建模语言(Unified Modeling Language)版权所有:理学院UMLJava&UML2.1 基本概念 对象(Object)对象是封装了状态和行为的统一体 状态主要表现为属性和关联 行为主要表现为操作,方法和状态机 实例 MS12医疗器械专用温度传感器 皮肤传感器,生命监护仪 培养箱,透析设备 呼吸器等医疗器械 结论 几乎所有的东西都可以在
7、软件中通过建模成为对象 从对象的职责角度来思考对象比从它的属性角度思考更有用版权所有:理学院UMLJava&UML例子:版权所有:理学院UMLJava&UML对象具有状态:l一个对象的状态是这个对象可以存在的一个可能的环境l一个对象的状态通常会发生多次改变版权所有:理学院UMLJava&UML对象具有行为:l行为决定了一个对象如何起作用以及和其它对象相互作用l对象的可见行为是被一系列所响应的消息模型化了版权所有:理学院UMLJava&UML每个对象都有自己的标识l每个对象有唯一的标识,即使它和另外一个对象具有完全一致的状态版权所有:理学院UMLJava&UML2.1 基本概念 类(Class)
8、类是一组对象的描述,这一组对象有共同的属性和行为 类的定义描述了所有对象的属性,也描述了实现该类对象的行为的类的方法 结论 类的描述包括对类的单个对象的状态进行访问和改变的方式 坚持以对象的观点思考版权所有:理学院UMLJava&UML2.2 面向对象系统 面向对象软件系统具备6大特性:利用对象进行抽象抽象使得复杂的、真实世界的情况可以通过简单的模型表示如:对颜色的一种抽象是RGB模型 结论:什么是抽象?定义一个观点的边界区别于其它实体最本质的特征版权所有:理学院UMLJava&UML例子:抽象版权所有:理学院UMLJava&UML2.2 面向对象系统 封装的类将抽象出来的状态和行为结合在一个
9、封装的整体里如:Java中通过类定义里面定义属性和方法,强制封装 结论:什么是封装?向调用者隐藏了实现,调用者依赖接口版权所有:理学院UMLJava&UML2.2 面向对象系统 通过消息进行通信同一类的不同对象、不同类的对象之间需要通过发送消息给其它对象,传递消息或请求动作,互操作得到处理版权所有:理学院UMLJava&UML2.2 面向对象系统 对象生命周期对象在需要时被创建并初始化,继而执行功能,最后被销毁版权所有:理学院UMLJava&UML2.2 面向对象系统 类层次结构关联、聚合(组合)、继承版权所有:理学院UMLJava&UML2.2 面向对象系统 多态性特殊类实现与通用类有差别的
10、行为,但是行为的名字相同 结论:什么是多态?使用同一接口隐藏不同的实现版权所有:理学院UMLJava&UML例子:多态版权所有:理学院UMLJava&UML2.3 UML类表示法 类的UML表示法是由三个水平部分组成的矩形。顶端部分用来填写类的名字,中间部分用来填写属性,底端部分用来填写类的操作(方法)。版权所有:理学院UMLJava&UML2.3 UML类表示法 关联通过类之间的连线表示,通常标注关联名称 关联的名称应该反映关系的用途,并且是一个动词;该名称可以忽略,尤其是使用角色名的时候。应该尽量避免使用“具有”和“包含”这样的名称,因为它们不包含说明类之间具有什么关系的信息。版权所有:理
11、学院UMLJava&UML2.3 UML类表示法 继承的表示方法是一个有三角形箭头的连线,箭头指向更为通用的类(超类)版权所有:理学院UMLJava&UML2.3 UML类表示法 聚合的表示方法是一个有空心菱形的连线,菱形指向整体类1计算机计算机主机主机显示器显示器键盘键盘鼠标鼠标一个空心菱形连接到聚一个空心菱形连接到聚集体(整体)一侧的关集体(整体)一侧的关联路径端联路径端 版权所有:理学院UMLJava&UML2.3 UML类表示法 组成的表示方法是一个有实心菱形的连线,菱形指向整体类 组成是一种整体和部分所属更强的聚合关系,每个部分只能属于一个组成是一种整体和部分所属更强的聚合关系,每个
12、部分只能属于一个整体,没有整体,部分也没有存在的价值整体,没有整体,部分也没有存在的价值114桌桌 子子桌桌 腿腿桌桌 面面一个实心菱形连接到关联一个实心菱形连接到关联路径端(在整体一侧路径端(在整体一侧)版权所有:理学院UMLJava&UML2.3 结论:类层次结构 最简单的层次结构是关联(涉及相互独立的类)相互不独立的类之间有两种层次结构:第一种是将一个类作为另一个类的一部分,即整体/部分整体/部分通用术语为聚合,在聚合中,部分一方的对象可以来去自由。如果对象是整体的不可或缺的部分,则称为组合 第二种特征存在“是关系”,即泛化/特殊化泛化/特殊化主要机制为继承Java不支持多继承,因此使用
13、接口来替代版权所有:理学院UMLJava&UML实例版权所有:理学院UMLJava&UML实例说明 Book和Person是两个通用的超类 Book由Page组成,组合关系表明书可以从一页到任意页 LibraryBook类从Book类派生,可能有一些特殊属性 Reader是Person类的特殊情况,是要使用Library的Person Borrowing类用于实现读者和图书馆的书之间的borrowing关联,虚线表示一个简单的LibraryBook类和Reader类之间的双向连结,用类实现关联表示两者之间的连结通过Borrowing类来管理 最后一个LibraryBook对象是一个Book对象,一个Reader对象是一个Person对象,能通过继承的“是测试”版权所有:理学院UMLJava&UML2.4 其它面向对象概念 抽象类:不能实例化的类 具体类:完全指明其实现方式并能够实例化的类 可见性:一个类看到和使用另一个类的资源的能力 公有可见性(public)私有可见性(private)保护可见性(protected)友类可见性(friend)