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 |