热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

uml建模线上授课

本文主要介绍关于uml,java,开发语言的知识点,对【【UML建模案例】小型网上书店系统】和【uml建模线上授课】有兴趣的朋友可以看下由【明天的土拨鼠】投稿的技术文章,希望该技术和经验能帮到你解决你

本文主要介绍关于uml,java,开发语言的知识点,对【【UML建模案例】小型网上书店系统】和【uml建模线上授课】有兴趣的朋友可以看下由【明天的土拨鼠】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【UML建模练习】相关技术问题。

uml建模线上授课

小型网上书店系统 前言一、案例简介二、使用工具三、软件过程四、系统的UML基本模型 总结


前言

最近上半年的浙江软考已经取消,于是开始高强度系统复习Java面向对象的各个知识点,顺便将UML的系统性学习提上日程。

这里先附上本项目的.eap工程文件(须用Enterprise Architect打开)、生成的Java代码以及参考教材存放的github仓库地址
https://github.com/2820881540/online_book_store_system_UML.git

PS: 学校对于UML的教学很不重视,只给了2个选修学分,选不上就只能自学了


一、案例简介

这里对于UML的重要性和一些基础的定义不再赘述,详细内容可参考吕云翔教授的《UML与Rose建模实用教程》,本案例就以该教材第15章的内容"小型网上书店系统"为例,通过一个简单但完整软件过程进行UML建模实践学习。

uml建模线上授课


二、使用工具

关于建模工具除了教材中展示的Rose之外,还可选择PowerDesignerVisioEnterprise Architect

其中Rose过于古老而且安装破解很麻烦。

PowerDesigner虽上手容易但我对该软件的审美不敢恭维。

最后还是选择功能最强大的Enterprise Architect来进行建模


三、软件过程

1、 项目背景描述

随着互联网时代的到来,相对于实体书店,很多人选择网络购书。某公司计划建立一个网上书店,需要本软件团队来为公司开发一款“小型网上书店系统”。

系统的主要功能是实现用户通过互联网的图书购买。未注册的用户(以下称为游客)可以通过本系统搜索图书,并可以查看图书的书名、作者、价格等一系列基本图书信息,还可以通过注册来成为网上书店的会员(注册用户)。会员仍然具有游客除了注册之外的所有功能,还可以进行图书的购买操作。购买行为又称作交易, 每一次交易对应着一张订单。

为了方便,本系统拟提供会员对已下订单的管理功能。 一个典型的会员购买流程如下。

?用户(注册并)登录;
?用户在浏览图书时选择其中一本;
?填写姓名、收货地址、手机号等必要信息;(在这一步生成订单)
?用户确认订单,并通过第三方支付平台进行支付;
?支付成功,通知书店发货; 
?书店发货;
?用户收货,并确认收货。(订单生命周期结束)

考虑到网络交易的非实时性,订单的处理情况可能比较复杂(尤其是涉及取消订单和退货问题时),在实现时需要注意这一点。

2、系统需求分析
使用以下包含4个步骤的建模方法进行该项目的需求分析。

(1)参与者的确定
第一步,根据参与者确定其对系统有何需求,把这些需求转化成用例。
小型网上书店系统最明显的主要业务参与者就是游客和会员,其次由于系统的书单需要管理
员来维护,所以管理员也是这个系统的参与者。所以参与者有游客、会员和管理员三者。

(2)用例的获取
在描述中我们看到,游客可以浏览和搜索网上书店的书目,可以查看某种书的详细信息,并且可以注册成为会员,所以起初我们可以将这三个需求加以转化;会员具有游客的全部功能,并且还可以登录,以及进行购书操作,并且可以修改和取消订单(均纳入订单管理);管理员可以对书目进行管理,并且在使用管理员功能时也应当事先登录。

(3)系统的模块划分
由于系统存在一定的复杂性,考虑将其划分成以下几个模块。
?用户管理模块;
?订单管理模块;
?书目管理模块。

(4)系统的非功能需求考察
由于背景中给出的信息很少,考虑到未来可能添加更多的功能,应当适当地提高系统的可扩展性。因此该系统应采用分层设计,把各个功能模块横向划分为显示层、接口层和实现层。在本项目中这些层次对应着以下组件。
?显示层:界面层;
?接口层:业务动作层;
?实现层:业务实现层;
?其他实用组件:数据库。

3、用户管理模块

用户管理选块的核心任务是提供用户的注册、登录、个人信息添加和修改等功能。 本模块涉皮的参与者包括游客、会员和管理员。对于三种不同的参与者分别存在以下功能。

?游客可以通过本模块进行注册和登录;

?会员可以通过本模块添加个人信息、修改个人信息;个人信息包括昵称、密码、个人描述、 常用收货地址等。

?管理员通过本模块对已注册用户(会员)进行管理,包括对一些常常进行非法操作的账号进行封禁和销号等。

4、订单管理模块

订单管理模块的主要任务是管理用户的订单,即已确认和未确认的购买记录。本模块涉及的参与者主要为会员。

会员可以通过本模块对指定图书进行购买操作,生成订单;可以对已有的订单进行管理;可以取消一份未确认的订单。

5、书目管理模块

书目管理模块的主要功能是管理网上书店的书目信息。本模块设计的参与者为管理员。管理员可以通过本模块进行图书上新、下架、信息修改等工作。

四、系统的UML基本模型

1、需求分析阶段模型

小型网上书店系统的整体用例图如下。通过对项目背景进行需求分析,得到用户管理模块的主要业务参与者有游客、会员和管理员。另外还有一个外部服务参与者——第三方支付系统。

uml建模线上授课

2、基本动态模型

(1)用户登录活动图
用户登录的主要过程为:

?用户进入登录界面; 
?输入用户名、密码、验证码; 
?单击登录; ?系统对输入信息进行验证; 
?验证成功则用户以会员身份进入网站,否则返回跳转至重新进行登录验证。

uml建模线上授课

(2)取消订单活动图
在本系统中,取消订单是一个比较复杂的用例。
在订单处于不同状态时取消订单的用例事件流有比较大的变化,
对这样经常需要根据条件变化的事件过程适宜建立活动图。

uml建模线上授课

(3)提交订单协作图
提交订单用例涉及用户界面、订单控制和数据库管理三个对象,以及一个数据库组件。
会员通过用户界面来新建订单、填写必要信息并提交;
订单提交到订单控制对象时需要经过信息校验,
校验成功后通过数据库管理类来向数据库中记录订单信息,
数据库将成功消息沿着各个类反向传递回用户界面。

uml建模线上授课

(4)订单实体状态图
订单实体在本系统中存在未确认、已确认、已发出、已取消和已确认收货五个状态,
不同状态的语义如下:
 ?未确认:用户选择了购买商品,输入了必要的信息(如收货地址等),但没有确认购买; 
 ?已确认:用户确认购买并付款,网站正在对订单进行处理或刚刚处理完毕,书店方面没有发货;
 ?已发出:书店已经发货,此时不支持从网站退货,若退货则需要另行和工作人员联系; 
 ?已取消:未发货的订单被取消,交易结束;
 ?已确认收货:用户确认收到了商品,交易结束。

uml建模线上授课

(5)添加图书顺序图

添加图书的基本步骤如下。

?管理员在图书管理界面中选择“添加图书”;
?界面类返回一个添加图书的操作界面;
?管理员录入新图书的各个信息并单击“提交”按钮;
?界面类向图书管理控制类发出添加图书请求,并将图书信息传给控制类; 
?控制类收到添加图书请求,执行一定方法,通过图书数据管理类向数据库中录入信息;
?图书数据管理类录入成功,向控制类返回成功信息; 
?控制类返回成功信息,由界面类向管理员呈现最终的成功界面。

uml建模线上授课

3、类的设计与实现

(1)系统设计类

uml建模线上授课


uml建模线上授课

(2)导出Java代码:以 BookServiceImpl 为例
/** * @author lenovo * @version 1.0 * @created 26-5月-2022 20:52:49 */
public class BookServiceImpl implements IBookService {
   

	public List m_Book;

	public BookServiceImpl(){
   

	}

	public void finalize() throws Throwable {
   
		super.finalize();
	}
	/** * * @param Book */
	public boolean addBook(Book Book){
   
		return false;
	}

	/** * * @param book */
	public boolean deleteBook(Book book){
   
		return false;
	}

	/** * * @param isbnNo */
	public Book searchBook(String isbnNo){
   
		return null;
	}

	/** * * @param book */
	public void updateBookStatus(Book book){
   

	}
}//end BookServiceImpl

4、系统的组件图

uml建模线上授课


5、系统的部署图

uml建模线上授课

总结

依照教材,使用 Enterprise Architect 针对本管理系统共绘制了9幅UML图,其中最核心的是类图、用例图、顺序图,这三者分别描述了系统的静态结构、系统开发的驱动因素以及系统动态的时间结构。

通过对UML建模的初步学习,帮助我有效完善了对软件过程的理解,相信之后在参与真实的项目时不至于无从下手。

另外,本模型是笔者在短期内使用操作较为复杂的Architect绘制的UML图仓促赶制的,必然会存在各种各样的缺陷和不足之处(如对于各种类、接口关联类型的选择和构造型的设置问题),希望大家能多多提供批评和建议。

本文《【UML建模案例】小型网上书店系统》版权归明天的土拨鼠所有,引用【UML建模案例】小型网上书店系统需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
author-avatar
小伟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有