54 lines
1.6 KiB
Plaintext
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 |