-
Notifications
You must be signed in to change notification settings - Fork 0
/
d3e02_notificator.rb
87 lines (70 loc) · 2.85 KB
/
d3e02_notificator.rb
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
class User
attr_accessor :name, :email, :twitter, :facebook
def initialize(name,email,twitter,facebook)
@name = name
@email = email
@twitter = twitter
@facebook = facebook
end
end
class Notificator
#El .self nos permite usar ese método sin tener que crear un objeto
#de esa clase para poder usarlo
def self.get_valid_notificator(user)
#Sí el twitter es ditinto de "none" (osea, si el user tiene twitter) entonces
#crea el twitterNotificator el cual manda el mensaje.
if user.email != "none"
EmailNotificator.new(user) #Añadimos el (user) para que el nuevo EmailNotificator object tenga los inputs de dicho (user), que será un objeto de la class User
elsif user.twitter != "none"
TwitterNotificator.new(user)
elsif user.facebook != "none"
FacebookNotificator.new(user)
else
puts "He has nothing, good luck with that bro...."
end
end
end
class EmailNotificator
def initialize(user) #Necesitamos el initialize para que se ejecute cuando se crea un nuevo EmailNotificator in this case y toma el valor del user
@the_user_email = user.email #Recordemos que user en este caso es el objeto de la class User (user_new es uno de estos objetos)
@the_user_name = user.name #Entonces llamamos a la variable name (IMPORTANTE: podemos hacerlo fuera de su clase gracias al atrr_accessor)
end
def send_message
puts "El usuario #{@the_user_name} tiene este email: #{@the_user_email}"
end
end
class TwitterNotificator
def initialize(user)
@the_user_name = user.name
@the_user_twitter = user.twitter
end
def send_message
puts "El usuario #{@the_user_name} tiene esta cuenta de twitter: #{@the_user_twitter}"
end
end
class FacebookNotificator
def initialize(user)
@the_user_name = user.name
@the_user_facebook = user.facebook
end
def send_message
puts "El usuario #{@the_user_name} tiene esta cuenta de facebook #{@the_user_facebook}"
end
end
user_new = User.new("Helena", "none", "@Helena", "none")
user_two = User.new("Hector", "[email protected]", "none", "none")
user_three = User.new("Rafa", "none", "none", "FB/GodOfRuby")
user_empty = User.new("Anonymous", "none", "none", "none")
#Este (user_new) dentro de la linea inferior hace lo siguiente:
#notificator analiza el objeto user_new creado previamente
#Dicho objeto pasa a ser un argumento en el método get_valid_notificator
#Ahora usa los condicionales if, elsif....etc para realizar la acción del método
contact_user_new = Notificator.get_valid_notificator(user_new)
contact_user_new.send_message
contact_user_two = Notificator.get_valid_notificator(user_two)
contact_user_two.send_message
contact_user_three = Notificator.get_valid_notificator(user_three)
contact_user_three.send_message
contact_user_empty = Notificator.get_valid_notificator(user_empty)
contact_user_empty.send_message
#User_one = User.new("Helena", "[email protected]", "@Helena", "facebook/ELenea/whatever")