码迷,mamicode.com
首页 > 其他好文 > 详细

类图关系

时间:2015-10-20 13:47:21      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

1.类图概述

    何谓类图?

    它描述的是显示一组类、接口、协作以及它们之间关系的图。

    类与类之间有哪些关系?

    四种关系:依赖、关联【含特殊的聚合和复合(组合)】、泛化(继承)、实现。

2.依赖关系

    依赖关系是两个类之间的语义关系,对一个类(提供者)的改变可能会影响或者提供消息给其他类(客户)。也就是客户以某种方式依赖于提供者。 

    依赖强调的是类发生改变引起其他类相应地变化,它不仅可以由于类之间的关联引起,也可以由于类的参数变化(该参数也是类)以及类之间消息传递机制引起。只要是类发生了变化引起另一个类的变化,就可以说成存在依赖。

    比如TV类和Channel类代码:

    //电视类
    public class TV
    {
        //频道类 作为形参 产生依赖关系
        public void ChangeChannel(Channel c) { }
    }
    //频道类
    public class Channel { }

    其类图关系设计:

    技术分享

3.关联关系

    关联关系表示元素之间的一种固有关系,是描述类之间的结构关系

    关联关系表现为一个对象能够获得另一个对象的实例引用并调用它的服务(即使用它)。定义了类或对象之间的关系规则,表示某个类以属性的形式包含其他类的对象,也就一般表现为类的属性(实例变量)。

    比如Company类和Employee类代码:

    //公司类
    public class Company
    {
        //以属性方式 包含其对象 产生关联关系
        public List<Employee> Employees { get; set; }
    }
    //员工类
    public class Employee { }

    其类图关系设计:

    技术分享

4.聚合关系

    聚合关系是一种特殊的关联关系,聚合是整体和个体之间的关系,即has-a关系,此时整体与部分之间是可以分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以作为多个整体对象共享。

    聚合表示两个类的实例之间存在一种拥有或属于关系,是较弱的“整体-部分”关系,或逻辑上的“隶属”关系。

    比如Car类和Wheel类代码:

    //汽车类
    public class Car
    {
        //以属性方式 包含其对象 产生聚合关系
        public List<Wheel> Wheels { get; set; }
    }
    //轮子类
    public class Wheel { }

    其类图关系设计:

    技术分享

5.复合关系

    复合关系相比聚合关系整体和部分不可以分离的,也就是部分类的生命周期不独立整体类的生命周期,即部分类不能脱离整体而单独存在。整体和个体是contains-a关系。

    比如Head类和Mouth类代码:

    //头类
    public class Head
    {
        //以属性方式 包含其对象 产生复合关系
        public Mouth Mouth { get; set; }
    }
    //嘴类
    public class Mouth { }

    其类图关系设计:

    技术分享

6.继承关系

    继承关系指出类之间的“一般与特殊关系”。它只使用在类型上,而不是实例上。在类中,一般元素被称为超类或父类,而特殊元素称之为子类。

    比如Person类和Man类代码:

    //人类
    public class Person
    {
        public int Age { get; set; }
    }
    //男人类  继承Person类
    public class Man : Person { }

    其类图关系设计:

    技术分享

7.实现关系

    实现关系是类之间的语义关系。指定了两个实例之间的一个合同,实体定义一个合同,而另一个实体保证履行该合同。实现关系通常用在接口以及实现该接口的类之间。

    其ITimeProvider类和TimeProvider类代码:

    //时间提供者 接口类
    public interface ITimeProvider
    {
        DateTime GetDate();
    }
    //时间提供者 实现类  继承ITimeProvider接口
    public class TimeProvider : ITimeProvider
    {
        public DateTime GetDate()
        {
            throw new NotImplementedException();
        }
    }

    其类图关系设计:

    技术分享

8.关系强弱

    从强到弱的结果是:继承=实现>复合关系>聚合关系>关联关系>依赖关系。 

   

类图关系

标签:

原文地址:http://www.cnblogs.com/givecase/p/4865947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!