- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目三需求分析
* 2.5模块调整(续) 4、编码时构建适当的动态临时类 1) 命令模式 2) 事务处理类型 3) 纯虚构 5、效率的优化 1) 效率与结构的折中 2) 优化效率的3步骤 3系统架构设计案例:3.1需求工程 某公司需要为客户运用面向对象软件工程开发问候机器人,它能用不同语言问候。如: 英文(en):Hello UML OOSE! 中文(cn) :你好 UML OOSE! 日文(jp):こんにちはuml大瀬! 韩文(ko):?, uml ?????! 俄文(ru):привет oose умл! 和可能的其它语言的问候未定, 以及未来新出现的语言问候。 3.2系统分析——用例建模 3.2系统分析——类图 谁,什么,数据,服务,系统… 3.2系统分析——时序建模 StarUML绘制时序图演示 3.2系统分析——时序建模 ServerStarter对象、Server对象、PluginLoaderModule对象、PluginLoaderModule对象、PluginMenuModule对象、PluginClassLoader对象都相对独立,利用java的动态加载,实现零耦合,达到完全解耦 3.3系统设计 3.3系统设计 HelloWorld10HostApp组件中ServerStarter类的main启动系统; 通过Class.forName(cn.edu.chzu.xxxy.umloose.server.Server).newInstance(); 反射启动HelloWorld10PluginManager组件中的Server类的init方法初始化主框架,完成系统各组成模块(包括宿主和客户的所有模块、插件和服务)加载和启动; 系统各组件及演示实现的HelloWorld10ENPlugin和HelloWorld10RUPlugin插件各自实现IModule、IPlugin、IService接口。 3.3系统设计——详细类图 3.3系统设计——主要类说明/细化 3.3系统设计——包图 4 Java类加载器原理 Java动态加载主要是classloader实现 4.1 Java类加载器原理 1.检测此Class是否载入过(即在cache中是否有此Class),如果有到8,如果没有到2 2.如果parent classloader不存在(没有parent,那parent一定是bootstrap classloader了),到4 3.请求parent classloader载入,如果成功到8,不成功到5 4.请求jvm从bootstrap classloader中载入,如果成功到8 5.寻找Class文件(从与此classloader相关的类路径中寻找)。如果找不到则到7. 6.从文件中载入Class,到8. 7.抛出ClassNotFoundException. 8.返回Class. 其中5.6步可以通过覆盖ClassLoader的findClass方法来实现自己的载入策略,甚至覆盖loadClass方法来实现自己的载入过程。 4.2系统实现——加载功能插件类GreetingImpl_ru.java import cn.edu.chzu.xxxy.umloose.module.PluginMenuModule; import cn.edu.chzu.xxxy.umloose.plugin.IPlugin; import cn.edu.chzu.xxxy.umloose.server.Server; import cn.edu.chzu.xxxy.umloose.service.GreetTranslate; public class GreetingImpl_ru implements IPlugin{ private PluginMenuModule module ; public String greet() { return RU:Hello UML OOSE!; } @Override public void start() { module = Server.getInstance().getGreetModule(); module.addMenu(ru,this); System.out.println(greet()); GreetTranslate.GreetingTranslate();//hostapp的服务 } 系统演示 @¥$§???????! 实验 软件项目设计 重点1: 类设计和系统时序图绘制 重点2: 设计文档编写 考虑使用插件框架或熟知框架 第16讲 面向对象的分析与设计(2) 系统架构概念 架构设计实践 架构设计案例 案例原理分析 1.1
文档评论(0)