企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
这是自己的思维导图: ![](https://box.kancloud.cn/2016-03-16_56e9102721131.jpg) ###(一)泛化和继承的区别? **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.小结:** 在代码实现时用面向对象的继承机制来实现泛化关系** ###(二)用例图的作用? ![](https://box.kancloud.cn/2016-03-16_56e9102743173.jpg) 1.通过这个图我们就可以知道老师需要的是1、2、3、4、5,而学生只需1、2  就可以了,由此可以需求分析作用 2.当我们做完系统功能是不能齐全,来看看就知道了,由此可知项目验收的参考 3.看着这个我们就可以知道要实现哪些,由此可知过程的向导,类似工程图 ###(三)UML图可以分成几类,每类有哪些? 总体可以分成静态图和动态图两大类 ![](https://box.kancloud.cn/2016-03-16_56e910275bf87.jpg) 还可以分成用例图、静态图、行为图、交互图、实现图五大类** ![](https://box.kancloud.cn/2016-03-16_56e910276cb5e.jpg) ###(四)交互图有哪些,有什么区别? 有时序图和协作图,在代码实现过程中比较有用的两种图,主要还是说一下区别吧,这两种图的区别还是比较明的: 1)时序图注重的时间和逻辑,对象之间先做什么后做什么一目了然,针对的是全局所有的对象 2)协作图是比较注重空间可以这么说,展示的是对象之间发生了什么样的交互,利于分层 ###(五)UML图归何档,有谁来看? 在软件工程中感觉文档就像电子书,UML图就像视频(好的还能转换成代码),搭配使用事半功倍,下面就是自己思考后的一些想法: 每个图放在哪个文档主要还是看该图的作用,文档有可行性分析文档、需求文档、概要设计文档、详细设计文档、数据要求文档、数据库文档、测试计划文档、测试结果文档、软件开发计划、开发报告总结、操作手册、用户手册、开发进度月报,十种图可以这样:        用例图:软件开发计划、需求文档        类图、对象图:概要设计文档        包图:概要设计文档        时序图:开发进度月报、详细设计文档、测试计划文档、操作手册        协作图:详细设计文档        活动图:详细设计文档、数据库文档、测试计划文档、用户手册        构件图:测试文档        状态图:详细设计文档、数据要求文档        部署图:用户手册** ###(六)总结 正如导图中画的一样UNL中有泛化关系、扩展关系、包含关系、依赖关系、关联关系(聚合关系、组合关系)、实现关系,是本来就存在的,某一个图只是用到了某些关系,然后泛化关系和包含关系是肯定被执行的,扩展不一定被执行 对如何具体在代码中实现很疑惑,但通过师傅和师姐的讲解就是具体问题具体分析,可以做一些实验,不要拘泥于自己没有做过的东西,继续向前吧