StarUML简要OOP建模

概要

本文从精简的篇幅来讲述 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),类及其属性设置,类成员方法及其参数也通过右键弹出菜单来操作。


然后将这些包、类拖到左边工作区上的 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 也可以同样的事。


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


PS: CSDN图片打码也太内个什么了!blog.csdn.net/winsenjiansbomber,换几个字不行么!

PS:第一张图的桌面水珠图片是不是挺不错的,自己拍的,链接在乐乎这:http://jimbowhy.lofter.com/post/1cac3850_8f1501c

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

/*
 *
 *  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)
{

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值