尚学堂马士兵UML部分视频学习笔记
马士兵java基础笔记 pdf版 面向对象部分

public class Test{ public static void main(String args[]){ Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000)(1); test.change1(date)(4); test.change2(d1);(7) test.change3(d2);
b.setDay(22),把 b 指向的值改变了,这次真 的变了!
方法执行完后,b 消失,d2 的值变了。
四. 方法重载 类中可以定义相同名字但参数不同的方法。
五. this 关键字 this 指向对象自身的引用。
在类的方法定义中使用 this 关键字代表使用该方法的对象的引用。 当必须指出当前使用方法的对象是谁时要使用 this 有时使用 this 可以处理方法中成员变量和参数重名的情况 this 可以看作是一个变量,它的值是当前对象的引用
_id:1
age = _age; }
_age:25
public static void main(String[] args) {
Person tom = new Person(1, 25); } }
tom:XXX Stack
id:1 age:25
Heap
例子:
class BirthDate { private int day; private int month; private int year; public BirthDate(int d, int m, int y) { //构造方法 day = d; month = m; year = y; }
马士兵_J2SE第九章_线程_个人学习笔记

第九章Java多线程机制进程与线程区别每个进程都有独立的代码和数据空间,进程间的切换会有很大开销。
线程可以看成轻量级的进程同一类线程共享代码和数据空间,每个线程有独立的运行栈个程序计数器,线程切换开销小。
多线程:在操作系统中能同时运行多个任务(程序)。
多线程:在同一个应用程序中有多个顺序流同时执行。
二、说明:Runnable接口ng.Runnable–Java多线程机制的一个重要部分,实际上它只有一个run()方法–Thread类实现了Runnable接口,相对于Thread类,它更适合于多个线程处理同一资源–实现Runnable接口的类的对象可以用来创建线程,这时start方法启动此线程就会在此线程上运行run()方法–在编写复杂程序时相关的类可能已经继承了某个基类,而Java不支持多继承,在这种情况下,便需要通过实现Runnable接口来生成多线程Thread类ng.Thread–在Java程序中创建多线程的方法之一是继承Thread类–封装了Java程序中一个线程对象需要拥有的属性和方法–从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。
这个子类应该重写Thread 类的run方法,在run方法中写入需要在新线程中执行的语句段。
这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。
原线程将同时继续往下执行–Thread类直接继承了Object类,并实现了Runnable接口。
它位于ng包中,因而程序开头不用import 任何包就可直接使用例子:Thread\TestThread1.java 开始使用Eclipse2 一般程序先执行子线程,再执行主线程(方法调用)package Thread;public class TestThread1_1 {public static void main(String args[]) {Runner1 r = new Runner1();r.run();for(int i=0; i<100; i++) {System.out.println("Main Thread:------" + i);}}}class Runner1 implements Runnable {public void run() {for(int i=0; i<100; i++) {System.out.println("Runner1 :" + i);}}}3继承Thread类(继承,不常用)package Thread;public class TestThread1_2{public static void main(String arg[]){Runner1_2 r = new Runner1_2();r.start();for (int i = 0 ;i <= 100; i++){System.out.println("Main Thread:!!!!"+i);}}}class Runner1_2 extends Thread{public void run(){for (int i = 0 ;i <= 100; i++){System.out.println("Runner2:!!!!"+i);}}}2010-4-2 21:04:16 – 2010-4-14 16:28:59三、线程状态转换四、线程控制基本方法Sleep/Join/Yield方法Sleep/Join(需要捕获异常)例子1 Thread/TestInterrupt.Java (线程结束的方式)package Thread;import java.util.*;public class TestInterrupt {public static void main(String arg[]){MyThread thread = new MyThread();thread.start();try{Thread.sleep(10000);}//主线程睡眠…catch(InterruptedException e){}thread.interrupt();//中断线程。
尚学堂马士兵UML部分视频学习笔记范文

第一部分:1、总纲:2、走向UML3、uml概览【大略看一下】4、User Case 最重要了5、静态系统建模6、动态系统建模7、系统架构【component deploy】。
到此基本完成8、正确认识UML9、UML高级话题10、UML常见问题11、UML常见工具比较12、up13、UML与UP相铺相成14、UP常见问题15、分析模式16、设计模式17、架构模式18、综合练习与示例19、浅谈:MDA【软件工程新宠】20、复习第二部分:走向UML听听历史:【当小说听就行了】。
软件:将显示业务逻辑解析到计算机。
努力将自然语言解析到计算机语言之间的鸿沟最小没方法→数据流法→信息建模图[E--R图]以上上面主要用于面向过程后来出现了面向对象了======OO建模可以很大程度上帮助我们设计稳定\复用性高软件为什么要建模呢?规模很大的系统告诉你从哪下手就像将房子一样可视化建模:UML最大作用提供一套标准的沟通语言UML帮我们:定义出软件的架构抽象出可复用的组件。
UML的历史OOAD面向对象的分析设计语言BOOTH OOSE OMT1997年UML一统天下第三部分:UML的概览1、鸟瞰UMLUML各种图形的名称与作用UML如何用于开发过程简略介绍用于描述系统结构:用例图:需求捕获,测试依据类图:静态系统架构对象图:对象之间的关联构件图:构件之间的关联部署图:构件的物理部署用于描述系统行为:顺序图:不活User Case 在某个时间场景上时间执行顺序协作图:强调对象之间的写作顺序图与协作图之间可以互相转换,而其中的信息不会丢失状态图:描述关键类生命周期的转化活动图:流程图,描述某个方法或User Case的执行过程。
通常合在一块使用1、识别Actor【跟系统打交道的最直接的人或者模块】课管员、学生、教授、独立的学校计费系统2、识别User Case【Actor对我们系统所做的操作】课管员:建立和发布课程表学生“维护自己的课程表教授:取得人员名单财务系统:取得计费信息【不用画出用例图,因为对立计费系统不会操作选课系统,而是把选课情况发个计费系统】在UML中没有对不对,只有合不合适,在team中都赞同的话,就算是合适粒度的粗细根据不同情况而不同3、说明每个User Case的文档。
JAVA笔记(根据马士兵的java视频整理)

JAVA视频教程尚学堂---手把手教程Call:86-主讲教师马士兵SCM系统--------Java+VC跨平台(电信宽带运营平台-------Java+WEB(J2EE)跨平台远程教学平台----Java+WEB(tomcat)VOD视频监控-----VCERP视频会议---------VC新闻发布系统-----Java+XML(模板)网上商城课堂内容、教学方法、学习方法、预备知识、教学资源JAVA基础贯穿数据结构的知识(时间复杂度、链表)---非常重要语法基础【变量、循环、分支】最核心的东西—原理--学好OO【面向对象是最重要的】有新东西学是好事----个人价值Exception 从Java Web开始,框架巨多无比Array【数组】基础类、常用类I/O StreamCollection/Generic【集合类】Thread【线程】TCP/UDP【网络底层】GUI【Graphic User Interface 图形化用户接口窗口】Meta Data【以后讲,与紧密相关】Regular Expression【正规表达式】JDK初步Java Web编程【主攻一个框架---讲原理,略讲其他框架】针对Web程序J2EE【一套标准,包含Java Web 、JDPC、JSP、SP、JB/开源框架—就分步式来说,目前(2005)无东西与之抗衡】(比较,,)企业级应用J2ME移动设备移动增值SP运营商3G,2.5G,要火爆起来【网络先铺起来,应用才能上来;3G的网络还没有铺开、火爆起来,讲3G的应用超前了】巨无霸式的教学理论举例理论回顾练习讲解【三片面包加两片肉】注重结合工程实践【完全结合】注重传授自学能力【自学的东西相当重要,授人以鱼,不如授人以渔;慢慢学会掌握一定基础后才有,灌输、背,融成血液里的一部分,心中无剑,手中有剑—前提—心中有剑手中也有剑;时间短,强度大,该背就背】个人能力分三个层次知识学习前人的知识---学习能力的一个表现,被动地接受—接受能力{自己学习了知识后考虑如何去应用,去---学习解决问题的方法【类似问题遇到过】灵活运用学到的知识【碰到什么问题采用什么方法】解决问题的思路【最高层次】创造解决问题的方法【思路掌握了,遇到新问题,自己拓展一条思路,解决问题,不可能一口吃成一个胖子,沿着这三个层次一点一点往上升首先打造自己学习知识的能力,先把该掌握的知识掌握了,再谈如何应用---如何教---教大家写项目每一个知识教太深—给项目留得时间特别短---不合适;自学一些东西,慢慢去培养解决问题的思路,试着朝这个方向去培养,工作后慢慢遇到新问题使劲去思考了积累起来逐渐会有这个能力,灵活一点、再灵活一点!基础知识要背—灵活应用的东西不能背,无一定之规,在实践中慢慢锻炼—实践的越多—敲的代码越多(掌握思路后自主敲代码,哪怕敲不出来再看别人的思路—收获远远不一样,学习要自主一点,多思考思路才能开阔—无捷径,努力锻炼自己的就业能力。
马士兵vip课笔记

马士兵vip课笔记
马士兵VIP课笔记
1. 课程概述
马士兵的VIP课程是一个全面的编程培训项目,涵盖了从基础到高级的各类编程知识和技能。
该课程强调实战编程,注重培养学员的实际项目开发能力。
通过学习此课程,学员可以掌握多种编程语言和技术,为未来的职业发展打下坚实的基础。
2. 课程内容
•基础概念:课程首先介绍了编程的基本概念,如变量、数据类型、控制结构等。
•面向对象编程:深入探讨了面向对象编程的概念,包括类、对象、继承和多态等。
•高级编程技术:涵盖了如泛型、反射、异步编程等高级编程技术。
•框架与库:介绍了多个主流的编程框架和库,如Spring、Django等。
•实战项目:课程以多个实战项目作为结尾,让学员在实际操作中巩固所学知识。
3. 课程特色
•实战导向:课程强调实战编程,注重培养学员解决实际问题的能力。
•内容全面:课程内容涵盖了从基础到高级的各类编程知识和技能,满足不同层次学员的需求。
•互动性强:课程中设置有多个互动环节,鼓励学员与老师和同学进
行交流和讨论。
•社区支持:提供了一个强大的社区支持,学员可以在社区中寻求帮助和分享经验。
4. 总结
马士兵的VIP课程是一个非常全面且实战导向的编程培训项目。
通过学习此课程,学员可以系统地掌握编程知识和技能,为未来的职业发展打下坚实的基础。
如果你是一位编程爱好者或者想要在编程领域有所建树,那么这门课程是你不容错过的选择。
【免费下载】尚学堂科技.马士兵.JAVA.系列视频教程 [全]
![【免费下载】尚学堂科技.马士兵.JAVA.系列视频教程 [全]](https://img.taocdn.com/s3/m/e5f180999ec3d5bbfc0a7456.png)
尚学堂科技.马士兵.JAVA.系列视频教程第一部分:J2se学习视频内容包括:尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01章_JAVA简介_源代码_及重要说明尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_递归补充尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_基础语法尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第03章_面向对象尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第04章_异常处理尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_ 第05章_数组尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第06章_常用类尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第09章_线程尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第10章_网络尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第11章_GUI尚学堂科技_马士兵_JAVA 视频教程_J2SE_5.0_专题_日期处理尚学堂科技_马士兵_JAVA视频教程_J2SE_专题_正则表达式反射avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频涉及到项目之1俄罗斯方块.rar: 07.4 MB涉及到项目之2坦克大战视频教程.rar: 019.4 MB涉及到项目之3坦克大战视频教程_java_eclipse.rar: 0395.4 MB涉及到项目之4坦克大战图片版.rar: 0101.2 MB涉及到项目之5坦克大战网络版视频教程.rar: 0248.8 MB涉及到项目之snake_贪吃蛇视频.rar: 095.2 MB涉及到项目之在线聊天系统雏形视频教程_java_eclipse.rar: 0233.9 MB◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第三部分数据库视频Oracle视频内容包括:01——53讲avi格式◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第四部分:JDBC和MySQL视频,内容包括:1_lomboz_eclipse_jdbc2_mysql_avi3_ 连接池的设计思路.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第五部分:HTML & CSS & JAVASCRIPT 视频:Html & CSS 视频内容简介:01_html 简单介绍和meta标签.avi02_a_路径问题等等.avi03_学习方法_其他常用标签.avi04_1_note.avi04_ 表格和表单_1.avi05_表格和表单_2.avi06_Frame.avi07_Dreamweaver.avi08_CSS_1.avi09_CSS_2_ 选择方式.avi10_CSS_3.avi11_CSS_4.aviJavaScript 视频简介:01_JS 初步及调试.avi02_JS基本语法.avi03_函数_事件处理_1.avi04_事件处理_2.avi05_内置对象_DOM_BOM.avi06_趣味.avi07_实用.avi08_ 表单验证.avi09_表单验证_new.avi10_后台框架.avi11_后台框架_2.avi12_TREE.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第六部分:Servlet & JSP视频——内容包括:1 tomcat的安装使用,配置2 servlet & jsp 视频1——30节jsp的练习项目内容包括:3 简单bbs项目3 2007美化BBS项目4 网上商城项目视频4 网上商城项目视频讲解视频◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第七部分:J2EE学习视频包括:DRP项目框架视频学习:Struts视频Hibernate视频Spring视频提高部分:uml统一建模语言视频SSH项目视频:oa办公自动化系统视频crm项目视频银行系统视频ejb3.0视频J2ME_3G简介资料面试材料:面试题大汇总+笔记+技巧。
尚学堂-马士兵Struts2教学视频之Struts2 学习笔记

Struts2 学习笔记---wjt276 [二○一○年一月五日完]目录01 Struts2-Action (5)一、Struts作用: (5)二、搭建Struts2的运行环境: (5)三、Namespace (6)四、<package>标签 (6)五、Action (6)六、路径问题的说明 (8)七、Action的动态调用方法 (8)八、Action通配符(wildcard)的配置 (9)九、Action的属性接收参数 (10)1、在Action添加成员属性接受参数 (10)2、域模型(Domain Model) (10)3、ModelDriven接收参数 (11)十、Action属性接收参数中文问题 (12)十一、简单数据验证 (12)十二、访问Web元素 (14)一、方法一:ActionContext方式 (15)二、方式二:Ioc(控制反转)—推荐使用 (15)三、方式三:获取原类型 (16)四、方式四:获取原类型-控制反转 (17)十三、Struts2配置文件模块化包含(include) (17)十四、默认的Action (18)十五、Action总结 (18)02 Struts2-Result (19)一、Result类型 (type) (19)二、全局结果集(Globle Result) (20)三、动态的结果集(dynamic result) (21)四、带参数的结果集 (21)五、Result总结 (22)六、项目经理: (22)03 OGNL表达式语言 (23)04 Struts2-Tags (28)Struts2标签目录 (28)一、property标签 (28)二、set标签 (29)三、bean标签 (29)四、<include>标签-少使用 (29)五、If elseif else (30)六、Iterator标签 (31)七、Theme (31)05设计约定(编码规定) (32)06 项目开发顺序 (32)07 声明式异常处理 (33)08 国际化 (35)一、国际化资源文件 (35)二、Java国际化 (35)Struts学习笔记第3页共39页三、Struts2国际化 (35)1、Action级别 (35)2、Package级别 (36)3、Application级别 (36)四、资源文件中的参数处理 (37)五、国际化-动态语言切换 (37)09 自定义拦截器 (38)10 类型转换 (38)Struts2总结 (39)目录Action⏹简单数据校验Result常用配置文件OGNL & ValueStackTags---------------------Project⏹类型转换、上传与下载、interceptor、防止重复提交 MVC思想深入剖析源码解读其他话题01 Struts2-Action一、Struts作用:将请求与结果分开二、搭建Struts2的运行环境:1、建立Web项目;2、建立Struts2的配置文件(struts.xml);将Struts2的空项目中的配置文件(struts.xml)复制到项目的src目录下。
尚学堂马士兵坦克大战视频教程笔记

目录
目录 ..................................................................................................................................................1 坦克大战视频教程 ..........................................................................................................................1
1. 项目需求.......................................................................................................................1 2. 学习方法.......................................................................................................................1 3. 做这个项目是为了,不是为了...................................................................................1 4. 项目的注意事项...........................................................................................................1 5. 版本 0.1:产生一个窗口.............................................................................................2 6. 版本 0.2:添加关闭窗口的事件处理.........................................................................2 7. 版本 0.3:画出代表坦克的实心圆.............................................................................3 8. 版本 0.4:让坦克动起来.............................................................................................4 9. 版本 0.41:使用双缓冲消除闪烁现象.......................................................................6 10. 版本 0.5:代码重构.....................................................................................................8 11. 版本 0.6:让坦克听众我们的指挥.............................................................................9 12. 版本 0.7—重要版本:将坦克单独包装成类 ...........................................................12 13. 版本 0.8:让主战坦克向 8 个方向行走(1).........................................................15 14. 版本 0.9:让主战坦克向 8 个方向行走(2).........................................................19 15. 版本 1.0:添加子弹类...............................................................................................20 16. 版本 1.1:根据主战坦克的方向和位置,打出子弹 ...............................................22 17. 版本 1.2:为了解决坦克停下也能打出炮弹的问题—画出炮筒 ...........................29 18. 版本 1.3:打出多发炮弹...........................................................................................33 19. 版本 1.4(Debug 的运用):解决炮弹不消亡的问题.................................................40 20. 版本 1.5:画一辆敌人的坦克...................................................................................51 21. 版本 1.6:将敌人坦克击毙.......................................................................................58 22. 版本 1.7:加入爆炸...................................................................................................61 23. 版本 1.8:添加多辆坦克...........................................................................................63 24. 版本 1.9:让敌军坦克更加智...................................................................................64 25. 版本 2.0:添加两堵墙...............................................................................................65 26. 版本 2.1:坦克不能互相穿越...................................................................................67 27. 版本 2.2:超级炮弹...................................................................................................68 28. 版本 2.3:主战坦克的生命值...................................................................................68 29. 版本 2.4:图形化表示主战坦克的生命值...............................................................69 30. 版本 2.5:添加“血块”...........................................................................................69 31. 版本 2.6:最后的修正(最终代码) ............................................................................71
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分:
1、总纲:
2、走向UML
3、uml概览【大略看一下】
4、User Case 最重要了
5、静态系统建模
6、动态系统建模
7、系统架构【component deploy】。
到此基本完成
8、正确认识UML
9、UML高级话题
10、UML常见问题
11、UML常见工具比较
12、up
13、UML与UP相铺相成
14、UP常见问题
15、分析模式
16、设计模式
17、架构模式
18、综合练习与示例
19、浅谈:MDA【软件工程新宠】
20、复习
第二部分:
走向UML
听听历史:【当小说听就行了】。
软件:将显示业务逻辑解析到计算机。
努力将自然语言解析到计算机语言之间的鸿沟最小没方法→数据流法→信息建模图[E--R图]
以上上面主要用于面向过程
后来出现了面向对象了======
OO建模可以很大程度上帮助我们设计稳定\复用性高软件
为什么要建模呢?
规模很大的系统告诉你从哪下手就像将房子一样
可视化建模:UML最大作用提供一套标准的沟通语言
UML帮我们:
定义出软件的架构
抽象出可复用的组件。
UML的历史
OOAD面向对象的分析设计语言
BOOTH OOSE OMT
1997年UML一统天下
第三部分:UML的概览
1、鸟瞰UML
UML各种图形的名称与作用
UML如何用于开发过程简略介绍
用于描述系统结构:
用例图:需求捕获,测试依据
类图:静态系统架构
对象图:对象之间的关联
构件图:构件之间的关联
部署图:构件的物理部署
用于描述系统行为:
顺序图:不活User Case 在某个时间场景上时间执行顺序协作图:强调对象之间的写作
顺序图与协作图之间可以互相转换,而其中的信息不会丢失状态图:描述关键类生命周期的转化
活动图:流程图,描述某个方法或User Case的执行过程。
通常合在一块使用
1、识别Actor【跟系统打交道的最直接的人或者模块】
课管员、学生、教授、独立的学校计费系统
2、识别User Case【Actor对我们系统所做的操作】
课管员:建立和发布课程表
学生“维护自己的课程表
教授:取得人员名单
财务系统:取得计费信息【不用画出用例图,因为对立计费系统不会操作选课系统,而
是把选课情况发个计费系统】
在UML中没有对不对,只有合不合适,在team中都赞同的话,就算是合适粒度的粗细根据不同情况而不同
3、说明每个User Case的文档。
User Case的本质在于描述文档,而不是图。
4、使用Activity 图分析特定的User Case:
5、根据User Case和Document抽象出静态类图。
Logical View中
根据Document中的名词抽象出类
6、根据类和User Case的路径制作Sequence 图【代表完成一个User Case路径的时候,Actor
和系统内部相互作用的时间顺序】
引入两个概念:1、界面类2、控制类构成MVC
箭头指向某个类本身,说明这个类附有这个责任比如3课程类负责告诉别人我这个课程有没有开放。
7、从sequence图就可以抽象出业务方法。
8、在sequence图中按F5就可以自动转换为协作图:
【协作图】
两个说的都是相同的东西,但是强调重点不同sequence图强调的是时间上的顺序
协作图强调的是类与类、对象与对象之间的协作关系。
9、使用state chart说明关键类的状态图【不是所有的类都有的】
10、使用component图说明程序的逻辑组织
11、使用deploy说明系统的部署
【10、11暂时不演示】
UML是怎样和开发过程结合到一块的:
瀑布式开发过程
必须要求需求稳定住→后面才能进行【从建筑业拿过来的】→不成功:不承认需求的不断变化
UP模型→承认了变化,接受了变化→成功。
UP分为四个阶段,初始,精化,构建【编码】,交付【使用部署图】
UML在不同的阶段的不同用途。
总结:【牢记!!!】
1完成User Case以及document。
2对于比较复杂的User Case 使用Activity辅助说明【或者sequence】。
3根据User Case Document和Activity 分析业务领域的概念,抽象出概念模型
4根据概念模型抽象出类。
5分析类的职责与关系做出类图【通常先不做方法,制作属性然后做6,然后根据刘抽象出方法。
】。
6根据类图制作出sequence【顺序图】、Collaboration【协作图】、State Chart【状态图】等各种图示。
7根据图示重复迭代5-6,直至“完美“,没有完美,够用就行了。
8Coding【编码】
9测试并修改,必要从前面开始改起,或从1,或从5【内部测试】10部署并与用户一起测试
11从实施与测试的反馈驱动下一次的1 11 【交付用户测试】
声明:图是死的
人是活的。