Coder Social home page Coder Social logo

staruml-java's Introduction

Java Extension for StarUML

This extension for StarUML(http://staruml.io) support to generate Java code from UML model and to reverse Java code to UML model. Install this extension from Extension Manager of StarUML.

Note This extensions do not provide perfect reverse engineering which is a test and temporal feature. If you need a complete reverse engineering feature, please check other professional reverse engineering tools.

Note This extension is based on Java 1.7 Specification.

Java Code Generation

  1. Click the menu (Tools > Java > Generate Code...)
  2. Select a base model (or package) that will be generated to Java.
  3. Select a folder where generated Java source files will be placed.

Belows are the rules to convert from UML model elements to Java source codes.

UMLPackage

  • converted to Java Package (as a folder).

UMLClass

  • converted to Java Class. (as a separate .java file)
  • visibility to one of modifiers public, protected, private and none.
  • isAbstract property to abstract modifier.
  • isFinalSpecialization and isLeaf property to final modifier.
  • Default constructor is generated.
  • All contained types (UMLClass, UMLInterface, UMLEnumeration) are generated as inner type definition.
  • Documentation property to JavaDoc comment.

UMLAttribute

  • converted to Java Field.
  • visibility property to one of modifiers public, protected, private and none.
  • name property to field identifier.
  • type property to field type.
  • multiplicity property to array type.
  • isStatic property to static modifier.
  • isLeaf property to final modifier.
  • defaultValue property to initial value.
  • Documentation property to JavaDoc comment.

UMLOperation

  • converted to Java Methods.
  • visibility property to one of modifiers public, protected, private and none.
  • name property to method identifier.
  • isAbstract property to abstract modifier.
  • isStatic property to static modifier.
  • UMLParameter to Java Method Parameters.
  • UMLParameter's name property to parameter identifier.
  • UMLParameter's type property to type of parameter.
  • UMLParameter with direction = return to return type of method. When no return parameter, void is used.
  • UMLParameter with isReadOnly = true to final modifier of parameter.
  • Documentation property to JavaDoc comment.

UMLInterface

  • converted to Java Interface. (as a separate .java file)
  • visibility property to one of modifiers public, protected, private and none.
  • Documentation property to JavaDoc comment.

UMLEnumeration

  • converted to Java Enum. (as a separate .java file)
  • visibility property to one of modifiers public, protected, private and none.
  • UMLEnumerationLiteral to literals of enum.

UMLAssociationEnd

  • converted to Java Field.
  • visibility property to one of modifiers public, protected, private and none.
  • name property to field identifier.
  • type property to field type.
  • If multiplicity is one of 0..*, 1..*, *, then collection type (java.util.List<> when isOrdered = true or java.util.Set<>) is used.
  • defaultValue property to initial value.
  • Documentation property to JavaDoc comment.

UMLGeneralization

  • converted to Java Extends (extends).
  • Allowed only for UMLClass to UMLClass, and UMLInterface to UMLInterface.

UMLInterfaceRealization

  • converted to Java Implements (implements).
  • Allowed only for UMLClass to UMLInterface.

Java Reverse Engineering

  1. Click the menu (Tools > Java > Reverse Code...)
  2. Select a folder containing Java source files to be converted to UML model elements.
  3. JavaReverse model will be created in the Project.

Belows are the rules to convert from Java source code to UML model elements.

Java Package

  • converted to UMLPackage.

Java Class

  • converted to UMLClass.
  • Class name to name property.
  • Type parameters to UMLTemplateParameter.
  • Access modifier public, protected and private to visibility property.
  • abstract modifier to isAbstract property.
  • final modifier to isLeaf property.
  • Constructors to UMLOperation with stereotype <<constructor>>.
  • All contained types (UMLClass, UMLInterface, UMLEnumeration) are generated as inner type definition.
  • JavaDoc comment to Documentation.

Java Field (to UMLAttribute)

  • converted to UMLAttribute if "Use Association" is off in Preferences.

  • Field type to type property.

    • Primitive Types : type property has the primitive type name as string.
    • T[](array), java.util.List<T>, java.util.Set<T> or its decendants: type property refers to T with multiplicity *.
    • T (User-Defined Types) : type property refers to the T type.
    • Otherwise : type property has the type name as string.
  • Access modifier public, protected and private to visibility property.

  • static modifier to isStatic property.

  • final modifier to isLeaf and isReadOnly property.

  • transient modifier to a Tag with name="transient" and checked=true .

  • volatile modifier to a Tag with name="volatile" and checked=true.

  • Initial value to defaultValue property.

  • JavaDoc comment to Documentation.

Java Field (to UMLAssociation)

  • converted to (Directed) UMLAssociation if "Use Association" is on in Preferences and there is a UML type element (UMLClass, UMLInterface, or UMLEnumeration) correspond to the field type.

  • Field type to end2.reference property.

    • T[](array), java.util.List<T>, java.util.Set<T> or its decendants: reference property refers to T with multiplicity *.
    • T (User-Defined Types) : reference property refers to the T type.
    • Otherwise : converted to UMLAttribute, not UMLAssociation.
  • Access modifier public, protected and private to visibility property.

  • JavaDoc comment to Documentation.

Java Method

  • converted to UMLOperation.
  • Type parameters to UMLTemplateParameter.
  • Access modifier public, protected and private to visibility property.
  • static modifier to isStatic property.
  • abstract modifier to isAbstract property.
  • final modifier to isLeaf property.
  • synchronized modifier to concurrency="concurrent" property.
  • native modifier to a Tag with name="native" and checked=true.
  • strictfp modifier to a Tag with name="strictfp" and checked=true.
  • throws clauses to raisedExceptions property.
  • JavaDoc comment to Documentation.

Java Interface

  • converted to UMLInterface.
  • Class name to name property.
  • Type parameters to UMLTemplateParameter.
  • Access modifier public, protected and private to visibility property.
  • JavaDoc comment to Documentation.

Java Enum

  • converted to UMLEnumeration.
  • Enum name to name property.
  • Type parameters to UMLTemplateParameter.
  • Access modifier public, protected and private to visibility property.
  • Enum constants are converted to UMLEnumerationLiteral.
  • JavaDoc comment to Documentation.

Java AnnotationType

  • converted to UMLClass with stereotype <<annotationType>>.
  • Annotation type elements to UMLOperation. (Default value to a Tag with name="default").
  • JavaDoc comment to Documentation.

Licensed under the MIT license (see LICENSE file).

staruml-java's People

Contributors

niklauslee avatar rtfsc8 avatar tekreme73 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.