-
Notifications
You must be signed in to change notification settings - Fork 0
/
intensamente.wlk
156 lines (92 loc) · 3.74 KB
/
intensamente.wlk
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
class Persona{
var property edad
const emociones=[]
method esAdolescente() = edad>=12 and edad<=19
method agregarEmocion(nuevaEmocion){emociones.add(nuevaEmocion)}
method porExplotar() = emociones.all({emocion=>emocion.puedeLiberarse()})
method vivirEvento(cual){cual.consecuencia()}
}
object intensidad {
var property valorIntensidadElevada=0
}
class Grupo{
var property integrantes=[]
method vivirEvento(cual){integrantes.forEach({persona=>persona.vivirEvento(cual)})}
}
class Evento{
var property impactoEvento
var property descripcion="" // char[n]
method consecuencia(){
Persona.emociones.forEach({emocion=>emocion.liberarse()})
}
}
class Emocion{
var property intensidad
var property eventosExperimentados=[]
var property cantEventosExperimentados=self.eventosExperimentados().size()
method disminuirIntensidad(cuanto){intensidad=-cuanto}
method puedeLiberarse(){return }
method consecuencia(){}
//method liberarse(){} // si cumple es liberable
method liberarse(){
if(self.puedeLiberarse()){
self.consecuencia()
}
}
method intensidadElevada() = self.intensidad()>intensidad.valorIntensidadElevada()
}
class Furia inherits Emocion(intensidad=100){
const property palabrotas=[]
method aprenderPalabrota(p){palabrotas.add(p)}
method olvidarPalabrota(p){palabrotas.remove(p)}
override method puedeLiberarse()=self.palabraConMasDeSiete(palabrotas) and self.intensidadElevada()
override method consecuencia(){
self.disminuirIntensidad(Evento.impactoEvento())
palabrotas.remove(palabrotas.head())} //la primera
method palabraConMasDeSiete(lista)=lista.any({p=>p.size()>7})
}
class Alegria inherits Emocion(intensidad=0){
override method puedeLiberarse()=self.intensidadElevada() and self.cantEventosExperimentados().even()
override method consecuencia(){
self.disminuirIntensidad(Evento.impactoEvento())
}
override method disminuirIntensidad(cuanto){
intensidad=-cuanto
intensidad.abs()
}
method intensidadPositiva(a) = a.abs()
}
class Tristeza inherits Emocion(intensidad=0){
var property causa="melancolia"
override method puedeLiberarse()=self.causa()!="melancolia" and self.intensidadElevada()
override method consecuencia(){
self.causa(Evento.descripcion())
self.disminuirIntensidad(Evento.impactoEvento())
}
}
class DesTem inherits Emocion(intensidad=0){
override method puedeLiberarse()=self.intensidadElevada() and self.masEvQueIntens()
override method consecuencia(){self.disminuirIntensidad(Evento.impactoEvento())}
method masEvQueIntens()= self.cantEventosExperimentados()>self.intensidad()
}
class Desagrado inherits DesTem{}
class Temor inherits DesTem{}
// ANSIEDAD
class Ansiedad inherits Emocion(intensidad=4){
override method puedeLiberarse()=self.intensidadNegativa()
override method consecuencia(){
self.disminuirIntensidad(Evento.impactoEvento())
}
method intensidadNegativa()=self.intensidad()<0
}
/*
---PARTE-TEORICA---
Polimorfismo y herencia, cliche de la programacion.
Primero, en cuanto a la herencia, este concepto fue fundamental
en el desarrollo de este parcial, ya que permitio generalizar el modelado
de las emociones por ejemplo, lo cual, sin el uso de dicho concepto, seria impractico,
asi que se utiliza la instanciacion de clases padre.
El polimorfismo a su vez, sirvio por ejemplo a la hora de escribir el metodo vivirEvento(),
ya que dependera lo que haga de lo que se le pase, si una persona o un grupo.
Por lo tanto se puede afirmar que permite que la respuesta varie dependiendo a lo que se le consulta.
*/