java-design-patterns/priority-queue/etc/priority-queue.urm.puml
2019-12-07 18:03:49 +02:00

54 lines
1.6 KiB
Plaintext

@startuml
package com.iluwatar.priority.queue {
class Application {
+ Application()
+ main(args : String[]) {static}
}
class Message {
- message : String
- priority : int
+ Message(message : String, priority : int)
+ compareTo(o : Message) : int
+ toString() : String
}
class PriorityMessageQueue<T extends Comparable> {
- LOGGER : Logger {static}
- capacity : int
- queue : T[]
- size : int
+ PriorityMessageQueue<T extends Comparable>(queue : T[])
+ add(t : T extends Comparable)
- ensureCapacity()
- hasLeftChild(index : int) : boolean
- hasParent(index : int) : boolean
- hasRightChild(index : int) : boolean
+ isEmpty() : boolean
- left(parentIndex : int) : T extends Comparable
- leftChildIndex(parentPos : int) : int
- maxHeapifyDown()
- maxHeapifyUp()
- parent(childIndex : int) : T extends Comparable
- parentIndex(pos : int) : int
+ print()
+ remove() : T extends Comparable
- right(parentIndex : int) : T extends Comparable
- rightChildIndex(parentPos : int) : int
- swap(fpos : int, tpos : int)
}
class QueueManager {
- messagePriorityMessageQueue : PriorityMessageQueue<Message>
+ QueueManager(initialCapacity : int)
+ publishMessage(message : Message)
+ receiveMessage() : Message
}
class Worker {
- LOGGER : Logger {static}
- queueManager : QueueManager
+ Worker(queueManager : QueueManager)
- processMessage(message : Message)
+ run()
}
}
QueueManager --> "-messagePriorityMessageQueue" PriorityMessageQueue
Worker --> "-queueManager" QueueManager
@enduml