diagramma UML delle classi

Codice PlantUML

' PlantUML: tool per la generazione di UML (.png) in modo testuale
' supporta diversi diagrammi UML 
' (es. diagramma delle classi, di sequenza...)
' esempio file plantuml.txt per generare UML a destra
' download (jar): http://plantuml.com/download
' documentazione: http://plantuml.com/class-diagram

@startuml
' START STYLE (B/W)
skinparam {
	monochrome true
	shadowing false
	classBackgroundColor white
	noteBackgroundColor white
	classAttributeIconSize 0
}
hide circle
' END STYLE (B/W)

title Path of Neo - Class Diagram

class Main 

class Cappotto {
	- slots : Queue
	- capienza : int 
	+ aggiungi(a:Arma) : void
	+ armaDisponibile() : boolean
	+ estraiArma() : Arma
}

class Neo {
	- cappotto : Cappotto
	+ Neo(cappotto)
	+ combatti(stanza) : void
}

class Stanza {
	- nemici : List
	- minaccia : int
	+ Stanza(difficolta)
	- generaNemici() : void
	+ affrontaNemico() : Nemico
	+ ripulita() : boolean
	+ stampaNemiciPresenti() : void
}

class Nemico <> {
	# stordito : boolean
	# sconfitto : boolean
	# cntStordito : int
	# cntNormale : int
	# cntPerforante : int
	# tipo : String
	+ sconfitto() : boolean
	+ getLivelloMinaccia() : int
	+ getTipo() : String
	+ getUltimoDanno() : String
	# {abstract} infliggiColpiStordenti(n:int) : void
	# {abstract} infliggiColpiNormali(n:int) : void
	# {abstract} infliggiColpiPerforanti(n:int) : void
}

class Arma <> {
	- ingombro : int
	# utilizzi : int
	# nome : String
	+ Arma(ingombro, utilizzi)
	+ getNome() : String
	+ esaurita() : boolean
	+ attacca(n:Nemico) : void
	# {abstract} colpisci(n:Nemico) : void
}

note left of Arma::attacca
  colpisci(n);
  utilizzi--;
end note

class Tirapugni 
class Pistola
class Fucile 

class Katana {
	- mode: String
	# colpisci(n:Nemico) : void
	- colpoSamurai(n:Nemico) : void
	- colpoNinja(n:Nemico) : void	
}

class Poliziotto
class Soldato
class Elite

hide Main members
hide Poliziotto members
hide Elite members
hide Soldato members
hide Tirapugni members
hide Fucile members
hide Pistola members

Arma <|-down- Tirapugni
Arma <|-down- Pistola
Arma <|-down- Fucile
Arma <|-down- Katana

Nemico <|-down- Poliziotto
Nemico <|-down- Soldato
Nemico <|-down- Elite

Main -right-> Neo : crea

Neo o-right-> "1" Cappotto
Neo --> Arma : usa
Neo -up-> Stanza
Cappotto o-down-> Arma

Arma -right-> Nemico : attacca

@enduml