OOAD&UML_OOAD概述_UML_OO设计原则_OO设计模式_分析阶段静态建模_分析阶段动态建模_设计阶段静态建模_设计阶段动态建模

问题:怎么运用OO设计原则和模式到UML的分析阶段和设计阶段建模?

思路:OOAD概念:分OOA  分析阶段,OOD  设计阶段,OOP  编码阶段,OOT  测试阶段

            OOA阶段主要解决以下问题(“What to do?”)
               建立针对业务问题域的清晰视图          业务流程
               列出系统必须要完成的核心任务          业务核心
               针对问题域建立公共词汇表              业务术语
               列出针对此问题域的最佳解决方案        经验积累

            OOD阶段主要解决以下问题(“How to do?”)
               如何解决具体的业务问题
               引入系统工作所需的支持元素
               定义系统的实现策略

            OOP的主要特征:

               抽象(abstract)
               封装(encapsulation)

               关联(Association) 
                  1.A对象通过B对象的引用来访问B对象的方法时,称A关联B。
                  2.4种方法关联:构造方法设置;set方法设置;方法参数传引用;在方法内部new出对象
                  3.. 对象间交互的方式; 
                     . 对象间相互使用其功能;
                     . 一个对象使用另一个对象的服务或操作另一个对象,这时候对象相互关联。

                  4.关联是有方向性的
                        A对象通过B对象的引用来访问B对象的方法时,A关联B ,单向关联
                        A、B互拿对方引用,双向关联
                     关联关系有多重性
                        class A{
                           private List list = new ArraryList();
                        }
                        A与C是一对多的单项关联
                        一个A对应多个C,一个C对应一个A
                        若Class C{
                           private A a;
                        }
                        则称为A与C是一对多的双向关联。
                        若Class C{
                           private List a;  
                        }
                        则称为A与C是多对多的双向关联。

                  5.关联的2种方式:聚合和依赖
                        序列化一个对象,就是序列化和他有聚合关系的对象
                        只关注聚合关系的关联是狭义的关联
                        class A{
                           private B b;       //聚合关系,has a关系,A有B,B是A的属性,是个实例变量,关联性强
                           public A(B b){     //A是外部对象,B是内部对象,A聚合B
                              this.b=b;       
                           }
                        public void action(C c){
                              c=new C();      //依赖关系,use a关系,A使用C,C是A的局部变量
                           }
                        }

               聚合(aggregation)

                  . 定义一个对象是另一个对象的一个组成部分; 
                  . 是一种比较强的关联; 
                  . 一个对象是另外一个对象的组成部分(特殊的关联)。
                  . 通过“Has A”关系可进行确认。一辆车有轮子、座椅以及门,它们是一部车的组成部分。
                  假如你移除其间的任何一部分,车没有了相应的功能,但仍是一部车。
               组合(composition)

                  1.组合的关联关系是最强的
                    . 一个对象包含另一个对象(has a的关系); 
                    . 是最强的关联形式; 
                    . 外部对象全程负责内部对象的生命周期(特殊的聚合)
                    . 通过“contain”关系可进行确认。 
                    . 假设部件不存在,对象亦不存在。 
                  2.一种特殊的聚合,外部对象管理内部对象的生命周期
                        有外部对象不一定有内部对象
                        有内部对象一样要有外部对象
                        内部对象的创建往往是由外部对象自己控制的
               继承(inheritance)

                  1.泛化和特化
                  2.. 是一种根据既存类定义新类的机制; 
                     . 通过“Is A”或者“Kind of”关系可进行确认; 
                     . 允许你组织相关类,这样这些类可共同地被管理以及重用。

               内聚与耦合(cohesion & coupling)

                  . 组件之间依赖关系的度量;
                  . 内聚: 在一个类或一个模块的内部独立完成工作的能力 
                  . 耦合: 组件之间依赖关系的度量;
                  . 系统的耦合性越小越好,系统的内聚性越高越好。高内聚,低耦合
                    依赖-----类A调用B类的方法,局部变量
               多态(polymorphism)

                  编译时多态(方法重载)、运行时多态(父类引用指向子类对象)
                  . 一种行为在不同的环境下所变现出来不同的行为;
                  . 不同对象完成相同语义上的结果; 
                  . 基于继承或实现; 
                  . 多态功能的实现依赖于它应用的对象; 
                  . 举例:足球-扔-需二只手、网球-扔-只需一只手,同样是扔,有不同的实现。当你将不同的球给一个小孩子,他知道是用

                       一只手还是二只手。小孩都知道多态。

         UML(Unified Modeling Language,统一的建模语言):

            软件开发过程及其控制(引言):

               1. 传统开发过程: 
                      . 瀑布式开发:需求->分析->设计->实现->测试。每个步骤完成和文档化后才进入下一个阶段。使用于小项目 
                      . 假设在后期阶段出现问题,很难返回到先前阶段。 
                      . 项目组成员花费大量时间和精力于每个阶段确保它是正确的. 
                      . 各阶段所用符号和术语均是变化的。完成的软件虽然正确,但与它所表现的商业逻辑相关甚少。 
               2. OOAD开发过程 --- 统一开发过程(USDP) 
                      . 典型的处理方式是将一个项目作为一系列的小项目; 
                      . UML(Unified Modeling Language)是一种符号,不是一个处理过程; 
                      . USDP(Unified Software Development Process)是迭代增量式的(即,下面的3.部分); 
                           初启->细化->构建->交付,每个阶段都有特定的目标
                           统一软件开发过程是一个跌代、递增的开发过程。
                      . USDP和RUP(Rational Unified Process)都是流行的OOAD过程。 
               3.1迭代增量式项目生命周期 
                     1.“迭代”指生命周期中每一个步骤; 
                     2. 迭代的结果便是整个项目功能完成的一步步增长; 
                     3. 在每个迭代的构建阶段,你应该: 
                            . 选择并分析相关的用例; 
                            . 使用选择的体系结构创建一个设计; 
                            . 用组件实现设计; 
                            . 检验组件满足用例。

               3.2迭代增量生命周期的主要阶段 
                     1.Inception(初始)阶段: 
                        . 这个阶段的增长集中在:
                             a. 开始项目; 
                             b. 为这个项目建立起商业原则; 
                             c. 定义一个商业问题; 
                             d. 识别潜在的风险; 
                             e. 定义对问题更好理解的范围; 
                             f. 创建对商业问题的解释文档。 
                        . 每个循环包括一至多个反复,每个阶段的完成结果都是里程碑式的。 
                     2. Elaboration(细化)阶段: 
                        . 这个阶段的增长集中在: 
                             a. 高水平的分析和设计; 
                             b. 为项目建立一个架构体系的基线; 
                             c. 监测潜在的风险; 
                             d. 创建一个实现项目目标的构建计划; 
                     3. The Construction(构建)阶段: 
                        . 这个阶段的增长集中在软件项目日益成型; 
                     4. The Transition(提交)阶段: 
                        . 这个阶段的增长集中在: 
                             a. 发布产品给客户; 
                             b. 完成beta测试; 
                             c. 实现性能调整、用户培训以及接受度测试。

              3.3迭代增量式项目过程图:        
                     业务建模,需求,设计分析,实现,测试,部署,配置管理,项目管理,环境搭建

                     阶段期间的工作步骤
                        1. 每次跌代由以下五个工作步骤组成: 
                               . 需求 . 分析 . 设计 . 实现 . 测试 
                        2. 不同的反复对每个工作步骤完成的程度不同; 
                        3. 早期的反复在深度上覆盖了第一个工作步骤,以后的反复在深度上覆盖了最后的工作步骤。 
                        4. 80/20原则:测试里80%的Bug存在于20%的操作上,开发里80%的时间用在20%的工作上。

                     反复和工作步骤 
                        1. 在每个反复过程,根据需求你可以包括五个工作步骤中的任何一个。 
                        2. 早期的反复过程集中在靠前的工作步骤,后期的反复过程集中在靠后的工作步骤。 
                        3. 当你发现应该修改早先工作步骤中的某些错误,你可以: 
                               . 继续并在下一个反复过程中修正; 
                               . 继续并增加一个新的反复过程修正问题; 
                               . 假如时间允许,返回到当前的反复并修正这个问题。 
                        4. 不同的反复执行每个工作步骤于不同的程度。

                     迭代增量生命周期的好处 
                        1. 错误提早发现,降低成本; 
                        2. 对项目进度的更好保证; 
                        3. 对于开发团队而言开发速度更快; 
                        4. 便于适应用户需求的动态改变;

            UML简介: 
               1. UML定义 :图形化的建模语言
                   1. UML是一种图形化语言用于:
                        . 说明; 
                        . 构建; 
                        . 肉眼观察; 
                        . 文档化系统原型; 
                   2. 在分析阶段,你创建类图以帮助你理解商业概念(还没有实现的细节); 
                   3. 在构建阶段,我们通过为相同的类图增加附加的细节——实现商业细节;

               2. UML和蓝图的关系:开发OOAD程序——UML(程序的结构),蓝图——整体的规划

               3. UML图形类型 

                   1. 静态模型:代表你正在建模的软件系统的基本结构; 
                       1. 构建以及文档化一个系统的静态方面; 
                       2. 反映了一个软件系统基本的、稳定的框架,即由什么组成; 
                       3. 创建问题主要元素的代表; 
                       4. 由以下图形组成: 
                              用例图(use case diagrams)         用来解析需求
                              类图(class diagrams)              用于描述类的结构和关系
                              对象图(object diagrams)           用来描述对象间的关系,这个图现在已不再使用了。
                              组件图(component diagrams)        描述你在你的项目中都使用了哪些组件
                              部署图(deployment diagrams)       用于代表部署的结构  
                           用例图和类图是必须要会的      
                   2. 动态模型 动态建模:强调了系统的行为;
                       1. 构建显示系统行为的图形,即系统的行为; 
                       2. 由以下图形组成: 
                              时序图(sequence diagrams)                   某一个模块按时间的变化图
                              协作图(collaboration diagrams)              如何在模块与模块间传递东西
                              状态图(state chart diagrams)                指对象状态的变化
                              活动图(activity diagrams)                     近似于流程图

                              一般时序和协作选用一个,常用的是时序图
                   在静态建模的时候确定类的方法,在动态建模验证类的方法
         需求和初始化分析:

         OO设计原则和模式:

            分析阶段:

               静态建模:

               动态建模:

            设计阶段:

               静态建模:

               动态建模:

代码(文字:UML实验内容):

         OOA静态建模:

         OOA动态建模:

         OOD静态建模:

         OOD动态建模:

解释:

你可能感兴趣的:(OOAD&UML_OOAD概述_UML_OO设计原则_OO设计模式_分析阶段静态建模_分析阶段动态建模_设计阶段静态建模_设计阶段动态建模)