StarUML 建模MD版

本文简要介绍了如何使用StarUML进行面向对象编程的建模,包括基本概念如泛化、聚合、组合和依赖关系,以及操作步骤,如新建工程、设置类关系和生成代码。
摘要由CSDN通过智能技术生成
  • MD OL by Jimbowhy, 2016/4/1 22:26

概要

本文从精简的篇幅来讲述 StarUML 建模工具在面向对象编程中的应用,力求向编程人员提供一个Minute级的 StarUML 使用教程。

基本概念

设计模式上有几个重要的概念:泛化(Generalization) 聚合(Aggregation)组合(Composition)依赖(Dependency)

泛化(Generalization)使用空心的三角表示继承关系(类继承)。在UML的术语中,这种关系被称为泛化(Generalization)。比如 Animal 是基类,Man、Bird和Dog是子类。

在逻辑上基类 Animal 是子类的基础或起源,并且基类所有功能和属性对子类都有意义,也表示为B是A的一种(a kind of )。

聚合(Aggregation)逻辑上表示A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类Eye、Nose、Mouth、Ear组合而成,不是派生(继承)而成。

组合(composition)它代表了一种更为坚固的聚合关系——组合(composition)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。

依赖(Dependency) 这种关系表明,如果类A被修改,那么类B会受到影响。

基本操作

打开你的StarUML,新建一个工程。使用 Model Explorer 来添加包(Namespace),类及其属性设置,类成员方法及其参数也通过右键弹出菜单来操作。

star_uml.jpg

然后将这些包、类拖到左边工作区上的 Main 图表上,并设置类继承等关系。注意不能在 Model Explorer 中设置继承关系,如果将 Man 拖到 Animal 下级则表示为它的内部类。

以上操作就完成了 Model -> View -> Diagram 的转换。

Model, View and Diagram

StarUML™ makes a clear conceptual distinction between models, views and diagrams. AModel is an element that contains information for a software model. AView is a visual expression of the information contained in a model, and aDiagram is a collection of view elements that represent the user’s specific design thoughts.

同样,生成代码也是在右键弹出菜单操作,选择 C++ 项目,其子项 Generate Code 用来生成 C++ 项目代码。使用 Tools -> C++ -> Generate Code 也可以同样的事。

StarUML_generation.jpg

在向导界面中选择需要的包或类,指定一个导出目录,并设置好导出参数,如代码注解、包转Namespace、缩进等等。

StarUML_options.jpg

PS:第一张图的桌面水珠图片是不是挺不错的,自己拍的,链接在乐乎这

CODE展示

    /*
     *
     *  Generated by StarUML(tm) C++ Add-In
     *
     *  @ Project : Untitled
     *  @ File Name : Animal.h
     *  @ Date : 2016/1/5
     *  @ Author : Jimbowhy
     *
     */


    #if !defined(_ANIMAL_H)
    #define _ANIMAL_H


    class Animal
    {
    public:
        void Motion(int Speed);
    };

    #endif  //_ANIMAL_H
    /*
     *
     *  Generated by StarUML(tm) C++ Add-In
     *
     *  @ Project : Untitled
     *  @ File Name : Animal.cpp
     *  @ Date : 2016/1/5
     *  @ Author : Jimbowhy
     *
     */


    #include "Animal.h"

    void Animal::Motion(int Speed)
    {

    }
    /*
     *
     *  Generated by StarUML(tm) C++ Add-In
     *
     *  @ Project : Untitled
     *  @ File Name : Dog.h
     *  @ Date : 2016/1/5
     *  @ Author : Jimbowhy
     *
     */

    #if !defined(_DOG_H)
    #define _DOG_H

    #include "Animal.h"

    class Dog : public Animal
    {
    public:
        int Name;
        int Age;
        void Barking(int moon);
        void Bite(Animal target);
    };

    #endif  //_DOG_H</pre>
    /*
     *
     *  Generated by StarUML(tm) C++ Add-In
     *
     *  @ Project : Untitled
     *  @ File Name : Dog.cpp
     *  @ Date : 2016/1/5
     *  @ Author : Jimbowhy
     *
     */

    #include "Dog.h"
    #include "Animal.h"

    void Dog::Barking(int moon)
    {

    }

    void Dog::Bite(Animal target)
    {

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值