Skip to content

Commit b926fb5

Browse files
#29 - JavaScript
1 parent 1309339 commit b926fb5

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
/** #29 - JavaScript -> Jesus Antonio Escamilla */
2+
3+
/**
4+
* El ISP establece que una clase no debe estar obligada a implementar interfaces que no utiliza.
5+
* En otras palabras, es mejor tener interfaces más pequeñas y específicas que interfaces grandes y generales.
6+
*/
7+
8+
//---EJERCIÓ---
9+
// INCORRECTO
10+
// Interfaz general
11+
class IWorker{
12+
work(){
13+
throw new Error("Method not implemented");
14+
}
15+
16+
attendMeeting(){
17+
throw new Error("Method not implemented");
18+
}
19+
20+
writeCode(){
21+
throw new Error("Method not implemented");
22+
}
23+
}
24+
25+
// Clase que implementa interfaz general
26+
class Manager__ extends IWorker{
27+
work(){
28+
console.log("Manager working on project management");
29+
}
30+
31+
attendMeeting(){
32+
console.log("Manager attending a meeting");
33+
}
34+
35+
writeCode(){
36+
throw new Error("Manager does not write code");
37+
}
38+
}
39+
40+
class Developer__ extends IWorker{
41+
work(){
42+
console.log("Developer working on coding");
43+
}
44+
45+
attendMeeting(){
46+
throw new Error("Developer does not attend meetings");
47+
}
48+
49+
writeCode(){
50+
console.log("Developer writing code");
51+
}
52+
}
53+
54+
// Uso Incorrecto de ISP
55+
const basicPrinter__ = new Manager__();
56+
basicPrinter__.work();
57+
basicPrinter__.attendMeeting();
58+
59+
const advancedPrinter = new Developer__();
60+
advancedPrinter.work();
61+
advancedPrinter.writeCode();
62+
63+
64+
// CORRECTO
65+
// Interfaz general
66+
class IWork{
67+
work(){
68+
throw new Error("Method not implemented");
69+
}
70+
}
71+
72+
class IAttendMeeting{
73+
attendMeeting(){
74+
throw new Error("Method not implemented");
75+
}
76+
}
77+
78+
class IWriteCode{
79+
writeCode(){
80+
throw new Error("Method not implemented");
81+
}
82+
}
83+
84+
// Clase que implementa interfaz general
85+
class Manager extends IWork{
86+
work(){
87+
console.log("Manager working on project management");
88+
}
89+
}
90+
91+
class ManagerMeeting extends IAttendMeeting{
92+
attendMeeting(){
93+
console.log("Manager attending a meeting");
94+
}
95+
}
96+
97+
class Developer extends IWriteCode{
98+
work(){
99+
console.log("Developer working on coding");
100+
}
101+
}
102+
103+
class DeveloperCoding extends IWriteCode{
104+
writeCode(){
105+
console.log("Developer writing code")
106+
}
107+
}
108+
109+
// Uso Correcto de ISP
110+
const manager = new Manager();
111+
manager.work();
112+
113+
const managerMeeting = new ManagerMeeting();
114+
managerMeeting.attendMeeting();
115+
116+
const developer = new Developer();
117+
developer.work();
118+
119+
const developerCoding = new DeveloperCoding();
120+
developerCoding.writeCode();
121+
122+
123+
124+
/**-----DIFICULTAD EXTRA-----*/
125+
126+
// Pendiente
127+
128+
/**-----DIFICULTAD EXTRA-----*/

0 commit comments

Comments
 (0)