Skip to content

Ivesvdf/NaiveUML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NaiveUML

NaiveUML consists of a very simple UML class diagram representation and accompanying compiler to GraphViz code. It aims to have the lowest possible overhead (syntax) to make creating a class diagram as fast as humanly possible.

NaiveUML is very simple to write, a small example:

# A cat is a class that is related to classes Mouse and Bird, and derives
# from class Animal
Cat : Animal : Mouse, Bird
=
miceCaught: integer
birdsCaught: integer
=
setMiceCaught(newCaught: integer)
setBirdsCaught(newCaught: integer)
getMiceCaught() : integer
getBirdsCaught() : integer
getAnimalsCaught() : integer


# ============================================
Animal : Organism
=
=


# ============================================
Interface Organism
=
=
eat()

# ============================================
Mouse : Animal
=
=


# ============================================
Bird : Animal
=
=

If this file is named example.uml, it can be converted to a pdf by executing the command

python naiveuml.py <example.uml | dot -Tpdf >output.pdf

which obviously requires the GraphViz package.

It produces something like

Example output

Now, what does this mean?
First of all, all lines starting with # are considered comments, so the

# ============================================

that appear are not required to be present and do not cary any meaning.

A class is shaped as following:

STRUCTURE
=
PRIVATE MEMBERS
=
PUBLIC MEMBERS

similar to how UML class diagrams are structured when displayed. Empty lines are not allowed within a class definition.

STRUCTURE can optionally have an "Interface" qualifier, which makes this class an interface class. It always contains the name of this class. It can also contain a colon (:) followed by a comma separated list of classes this class is derived from, possibly followed by another colon (:) followed by a comma separated list of classes this class is somehow related to.

The PRIVATE MEMBERS and PUBLIC MEMBERS sections of a class definition contain the respectively private and public members of your class. This could be data members or functions.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages