Skip to content

adampalkowski/netsimG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TU JEST KOD UML NIE SKOCZNONY

@startuml ' TODO

' --------

' ==== < CONFIGURATION > ====

hide empty members hide <> circle

' ==== END of < CONFIGURATION > ====

package "Storage" {

interface IPackageStockpile <<interface>> {
    + {abstract} push(Package&&) : void
    + {abstract} empty() : bool {query}
    + {abstract} size() : size_type {query}
    + {method} /iteratory/
    + ~IPackageStockpile()
} 

interface IPackageQueue <<interface>> {
    + {abstract} pop() : Package
    + {abstract} get_queue_type() : PackageQueueType {query}
} 
IPackageQueue <|--- IPackageStockpile

enum PackageQueueType <<enumeration>> {
	FIFO
	LIFO
}
PackageQueueType <.. IPackageQueue: << uses >> 
    Package <.. IPackageQueue: << uses >> 

class PackageQueue {
    + PackageQueue(PackageQueueType)
}
PackageQueue ..|> IPackageQueue

class Package {
	+ Package()
	+ Package(ElementID)
	+ Package(Package&&)
	+ operator=(Package&&) : Package&
	+ get_id(): ElementID {query}
	+ ~Package()
}

}

' == END of package "Storage"

' .. DATA TYPES -- together { class ElementID << (T,orchid) primitive>> }

' == END of together

' ==== END of < POSITIONING > ====

' TODO

' --------

' ==== < CONFIGURATION > ====

hide empty members hide <> circle

' ==== END of < CONFIGURATION > ====

package "Factory Package" {

class NodeCollection<Node> << (T,olive) >> {
    + add(node: Node&&) : void
    + remove_by_id(id: ElementID) : void
    + find_by_id(id: ElementID) : NodeCollection<Node>::iterator
    + find_by_id(id: ElementID) : NodeCollection<Node>::const_iterator {query}
    + {method} /iteratory/
}

Ramps .. NodeCollection
Workers .. NodeCollection
Storehouses .. NodeCollection

class Factory {
	+ add_ramp(Ramp&&) : void
	+ remove_ramp(id: ElementID) : void
	+ find_ramp_by_id(id: ElementID) : NodeCollection<Ramp>::iterator
	+ find_ramp_by_id(id: ElementID) : NodeCollection<Ramp>::const_iterator {query}
    + ramp_cbegin() : NodeCollection<Ramp>::const_iterator {query}
    + ramp_cend() : NodeCollection<Ramp>::const_iterator {query}

	... (analogicznie dla pozostałych typów węzłów)

	- remove_receiver(collection: NodeCollection<Node>&, id: ElementID) : void

	+ is_consistent(void) : bool {query}
	+ do_deliveries(Time) : void
	+ do_package_passing(void) : void
	+ do_work(Time) : void
}
Factory .. Ramps
Factory .. Workers
Factory .. Storehouses

}

' == END of package "Factory"

' ==== END of < POSITIONING > ====

' TODO

' --------

' ==== < CONFIGURATION > ====

hide empty members hide <> circle

' ==== END of < CONFIGURATION > ====

package "Storage" {

interface IPackageStockpile <<interface>> {
} 

interface IPackageQueue <<interface>> {
} 
IPackageQueue . IPackageStockpile

} ' == END of package "Storage"

package "Nodes" {

interface IPackageReceiver <<interface>> {
	+ {abstract} receive_package(p: Package&&) : void

' + {abstract} get_receiver_type(void) : ReceiverType {query} + {abstract} get_id(void) : ElementID {query} }

' enum ReceiverType <> { ' } ' IPackageReceiver .. ReceiverType

class ReceiverPreferences {
	+ preferences_t
	+ ReceiverPreferences(pg: ProbabilityGenerator)
	+ add_receiver(r: IPackageReceiver*) : void
	+ remove_receiver(r: IPackageReceiver*) : void
	+ choose_receiver(void) : IPackageReceiver*
	+ get_preferences(void) : preferences_t& {query}
}


class PackageSender {
	+ PackageSender(PackageSender&&)
	+ receiver_preferences_: ReceiverPreferences
	+ send_package(void) : void
	+ get_sending_buffer(void) : std::optional<Package>& {query}
	# push_package(Package&&) : void
}

PackageSender .. ReceiverPreferences

class Ramp {
	+ Ramp(id: ElementID, di: TimeOffset) : void
	+ deliver_goods(t: Time) : void
	+ get_delivery_interval(void) : TimeOffset {query}
	+ get_id(void) : ElementID {query}
}

Ramp .. PackageSender


class Worker {
	+ Worker(id: ElementID, pd: TimeOffset, q: std::unique_ptr<IPackageQueue>) : void
	+ do_work(t: Time) : void
	+ get_processing_duration(void) : TimeOffset {query}
	+ get_package_processing_start_time(void) : Time {query}
}

Worker .. PackageSender
Worker .. IPackageReceiver
IPackageQueue .. Worker

class Storehouse {
	+ Storehouse(id: ElementID, d: std::unique_ptr<IPackageStockpile>)
}

Storehouse .. IPackageReceiver
IPackageStockpile .. Storehouse

Ramp -[hidden] Worker
Worker -[hidden] Storehouse

' == POSITIONING ==
PackageSender -[hidden]> IPackageReceiver
Ramp ..[hidden] PackageSender
ReceiverPreferences -[hidden]- PackageSender

IPackageQueue -[hidden]- Worker


' == END of POSITIONING ==

} ' == END of package "Nodes"

' .. HELPERS ----

' .. DATA TYPES -- together { class Time << (T,orchid) primitive>> class TimeOffset << (T,orchid) primitive>> class ElementID << (T,orchid) primitive>> class ProbabilityGenerator << (T,orchid) primitive>>

ElementID -[hidden] Time
Time -[hidden] TimeOffset
TimeOffset -[hidden] ProbabilityGenerator

}

' == END of together

' ==== < POSITIONING > ====

'ReceiverPreferences <-[hidden]- IPackageStockpile

'IPackageStockpile -[hidden]-> Storehouse

ReceiverPreferences -[hidden]- Time

' ==== END of < POSITIONING > ==== @enduml

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors