87 lines
1.4 KiB
Plaintext
87 lines
1.4 KiB
Plaintext
|
@startuml
|
||
|
title Class diagram for Messaging extension
|
||
|
|
||
|
package Messages {
|
||
|
class Message{
|
||
|
content: String
|
||
|
response: Message
|
||
|
respond(User, String)
|
||
|
}
|
||
|
class Discussion{
|
||
|
name: String
|
||
|
users: ArrayList<User>
|
||
|
invite(User)
|
||
|
sendMessage(User, String)
|
||
|
}
|
||
|
Discussion *-- Message
|
||
|
}
|
||
|
|
||
|
package Forums {
|
||
|
class Forum{
|
||
|
name: String
|
||
|
Owner: Teacher
|
||
|
Registered: ArrayList<User>
|
||
|
{static} createForum(Course): Forum
|
||
|
createTopic(String): Topic
|
||
|
createPoll(String, PollType, ArrayList<Option>): Poll
|
||
|
}
|
||
|
class Topic{
|
||
|
subject: String
|
||
|
author: Teacher
|
||
|
content: String
|
||
|
answer(User, String): Answer
|
||
|
lock(Boolean)
|
||
|
}
|
||
|
class Answer{
|
||
|
author: User
|
||
|
content: String
|
||
|
anonymous: Boolean
|
||
|
remove()
|
||
|
}
|
||
|
class Poll{
|
||
|
options: ArrayList<Option>
|
||
|
type: PollType
|
||
|
answer(User, Option): Vote
|
||
|
addOption(Option)
|
||
|
}
|
||
|
class Option{
|
||
|
name: String
|
||
|
}
|
||
|
class Vote{
|
||
|
voter: User
|
||
|
}
|
||
|
enum PollType {
|
||
|
ALLOW_NEW_OPTIONS
|
||
|
ALLOW_MULTIPLE_CHOICE
|
||
|
}
|
||
|
note "Change the behaviour of poll" as N
|
||
|
|
||
|
Forum *-l- Topic
|
||
|
Topic *-l- Answer
|
||
|
|
||
|
Topic <|-d- Poll
|
||
|
Poll *-l- Option
|
||
|
Option "1..*" -d-x Vote
|
||
|
Poll *-- Vote
|
||
|
|
||
|
Poll -- PollType
|
||
|
PollType .r. N
|
||
|
|
||
|
}
|
||
|
|
||
|
package Appointments{
|
||
|
class Appointment{
|
||
|
date: Date
|
||
|
teacher: Teacher
|
||
|
student: Student
|
||
|
{static} Appointment(Student, Teacher, Date)
|
||
|
accept()
|
||
|
refuse()
|
||
|
propose(Date)
|
||
|
export(): File
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Appointments -[hidden]d- Messages
|
||
|
@enduml
|