UML遗留问题总结

这是自己的思维导图:

(一)泛化和继承的区别?

  1.定义看:

        1)泛化:是类元的 一般描述和具体描述,具体描述建立在一般描述之上,并对其进行了拓展

        举个例子,贷款就是一般性的描述,房贷就是一种具体的贷款,贷款的要求一般有借贷人,担保人(都算贷款的条件描述)就可以了,房贷还要考虑房子的这个因素,便做到了拓展

        2)继承:利用已有的数据类型定义新的数据类型,新生成的数据类型不仅有新定义的成员还有旧的成员,这种机制叫做继承

       但从定义上去看的区别就相当于拿我自己举例子吧:在家,我的身份是家里最小的孩子,都管我叫佳佳(小名),在廊坊师范学院都管我叫李建敏院长,好像看起来是一个人,但还是有所差别,因为当我是院长的身份是我就是一种机制代表而不在是我自己,单从定义上看确实很容易另人发懵,接下来就从用途上来进行说明

  2.用途看:

       泛化有两个用途:1)当一个变量(如参数或过程变量)被声明承载某个给定类的值时,可使用类(或其他元素)的实例作为值,这被称作可替代性原则

   并不清楚这和泛化有什么关系,也不知道这算什么用途,在大话设计模式中为了做到松耦合就用到了这个(代码如下)

<span style="font-size:18px;"><strong>public static IUser CreateUser()//在某类下面定义了一个IUser类型的方法
{
     IUser  result=null;//声明了一个IUser变量(叫对象应该更合适),来接收一个值
     switch(db)
     {
            case"sqlserver";
            result=new sqlserverUser();//返回了一个实例化的值,之所以能返回这样的值便是sqlserverUser是IUser的一个子类
            break;
     }
     return  result;//此时便符合了用途1
     
}</strong></span>
<span style="font-size:18px;"><strong>    2)给继承机制一个可视化视图,利用继承机制实现,就是告诉你谁应该继承谁,告诉你之后用面向对象中的继承机制去实现,军事的作用</strong></span>
<span style="font-size:18px;"><strong>
</strong></span>

       继承的用途:在学C#的时候我们就已经接触过了,1、继承可以减少重复的代码。比如父类已经提供的方法子类可以直接使用,不必再去实现。
2、继承是多态性的前提。当然使用继承的同时也提高了类的耦合度。

<span style="font-size:18px;"><strong>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 继承
{

    public class Person//人类一会将被继承,所以也是父类
    {
        public string Name;//定义了一些基本字段
        public int Age;
        //基类提供构造函数以进行初始化
        public Person(string Name, int Age)//给name和age赋值
        {
            this.Name = Name;
            this.Age = Age;
            Console.WriteLine(Name);
            Console.WriteLine(Age);

        }
 
    }<span style="color:#454545;">
    </span><span style="color:#ff0000;">public class Student : Person//这就是继承,在该类后面用冒号隔开,后面是要继承的父类,因为继承了person类所以就直接使用name和age</span><span style="color:#454545;">
    {
        private int _Id;
        //调用Person构造函数
        public Student(string Name,int Age,int _Id)
            :base(Name,Age)//利用构造函数赋值,如果与父类的字段一样就用base进行区别
        {
            this._Id=_Id;
            Console.WriteLine(_Id);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Student objStu = new Student("Tom", 20, 1001);
        }
    }
}</span></strong></span>

3.面向的使用对象

       泛化是在Uml中的,在绘制图时用到的一种关系

       继承是面向对象编程时使用的,是oo的三大特征,是在写代码时要用到的一种机制

       如果单纯的说人与男人和女人是什么关系,说泛化关系或者继承关系都没问题

4.小结:

       在代码实现时用面向对象的继承机制来实现泛化关系

(二)用例图的作用?


  


      1.通过这个图我们就可以知道老师需要的是1、2、3、4、5,而学生只需1、2  就可以了,由此可以需求分析作用

      2.当我们做完系统功能是不能齐全,来看看就知道了,由此可知项目验收的参考

      3.看着这个我们就可以知道要实现哪些,由此可知过程的向导,类似工程图

(三)UML图可以分成几类,每类有哪些?

         总体可以分成静态图和动态图两大类


       还可以分成用例图、静态图、行为图、交互图、实现图五大类


(四)交互图有哪些,有什么区别?

       有时序图和协作图,在代码实现过程中比较有用的两种图,主要还是说一下区别吧,这两种图的区别还是比较明的:

       1)时序图注重的时间和逻辑,对象之间先做什么后做什么一目了然,针对的是全局所有的对象

       2)协作图是比较注重空间可以这么说,展示的是对象之间发生了什么样的交互,利于分层

(五)UML图归何档,有谁来看?

       在软件工程中感觉文档就像电子书,UML图就像视频(好的还能转换成代码),搭配使用事半功倍,下面就是自己思考后的一些想法:

       每个图放在哪个文档主要还是看该图的作用,文档有可行性分析文档、需求文档、概要设计文档、详细设计文档、数据要求文档、数据库文档、测试计划文档、测试结果文档、软件开发计划、开发报告总结、操作手册、用户手册、开发进度月报,十种图可以这样:
       用例图:软件开发计划、需求文档
       类图、对象图:概要设计文档
       包图:概要设计文档
       时序图:开发进度月报、详细设计文档、测试计划文档、操作手册
       协作图:详细设计文档
       活动图:详细设计文档、数据库文档、测试计划文档、用户手册
       构件图:测试文档
       状态图:详细设计文档、数据要求文档
       部署图:用户手册

(六)总结

       正如导图中画的一样UNL中有泛化关系、扩展关系、包含关系、依赖关系、关联关系(聚合关系、组合关系)、实现关系,是本来就存在的,某一个图只是用到了某些关系,然后泛化关系和包含关系是肯定被执行的,扩展不一定被执行

       对如何具体在代码中实现很疑惑,但通过师傅和师姐的讲解就是具体问题具体分析,可以做一些实验,不要拘泥于自己没有做过的东西,继续向前吧
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值