-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathchatroom.py
More file actions
110 lines (93 loc) · 2.38 KB
/
chatroom.py
File metadata and controls
110 lines (93 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
"""
Date: 29/09/2016
@author: bruno
"""
import abc
class IChat:
"""
IChat interface defining operation
"""
__metaclass__ = abc.ABCMeta
def send_message(self, member, message):
"""
Notify all members in
the chat room
:param member: The rementent
:param message: The message
"""
raise NotImplementedError
def join_chat(self, member):
"""
Add a member to the chat
:param member: The member to join
"""
raise NotImplementedError
def leave_chat(self, member):
"""
Leaves the chat
:param member: The member to leave
"""
raise NotImplementedError
class Chat(IChat):
"""
The chat implementation
"""
def __init__(self):
"""
Constructor
"""
self.members = []
def send_message(self, member, message):
"""
Notify all members in
the chat room
:param member: The rementent
:param message: The message
"""
lst = [m for m in self.members if m.name != member.name]
for m in lst:
m.receive_message(member.name + ' typed: ' + message)
def join_chat(self, member):
"""
Add a member to the chat
:param member: The member to join
"""
self.members.append(member)
self.send_message(member, member.name + ' joined the chat')
def leave_chat(self, member):
"""
Leaves the chat
:param member: The member to leave
"""
self.members.remove(member)
self.send_message(member, member.name + ' leaved the chat')
class Member:
"""
The member class
"""
def __init__(self, chat_room, name):
"""
Constructor
:param chat_room: The chat
:param name: The member's name
"""
self.chat_room = chat_room
self.name = name
self.messages = []
self.chat_room.join_chat(self)
def send_message(self, message):
"""
Sends a message
"""
self.messages.append('Me: ' + message)
self.chat_room.send_message(self, message)
def receive_message(self, message):
"""
Receives a message
"""
self.messages.append(message)
def __str__(self):
"""
String representation
"""
return self.name