@@ -52,6 +52,8 @@ console.log(`Hola mi nombre es ${engineer.name} soy ${engineer.getOccupation()}`
52
52
53
53
// Extra
54
54
55
+ /* Clase abstracta. No puede ser instanciada directamente pero es capaz de ser heredada por la descendencia */
56
+
55
57
class Operation {
56
58
constructor ( ) {
57
59
if ( new . target === Operation ) {
@@ -107,10 +109,22 @@ class Divide extends Operation{
107
109
}
108
110
}
109
111
112
+ class Power extends Operation {
113
+ constructor ( a , b ) {
114
+ super ( )
115
+ this . a = a
116
+ this . b = b
117
+ }
118
+ execute ( ) {
119
+ return this . a ** this . b
120
+ }
121
+ }
122
+
110
123
class Calculator {
111
124
constructor ( ) {
112
125
this . operations = { }
113
126
}
127
+
114
128
addOperation ( name , operation ) {
115
129
this . operations [ name ] = operation
116
130
}
@@ -127,7 +141,11 @@ const calculadora = new Calculator()
127
141
calculadora . addOperation ( 'addition' , new Addition ( 10 , 2 ) )
128
142
calculadora . addOperation ( 'subtraction' , new Subtract ( 5 , 2 ) )
129
143
calculadora . addOperation ( 'multiplication' , new Multiply ( 9 , 2 ) )
144
+ calculadora . addOperation ( 'division' , new Divide ( 9 , 2 ) )
145
+ calculadora . addOperation ( 'power' , new Power ( 5 , 4 ) )
130
146
131
147
console . log ( calculadora . calculate ( 'subtraction' ) )
132
148
console . log ( calculadora . calculate ( 'addition' ) )
133
149
console . log ( calculadora . calculate ( 'multiplication' ) )
150
+ console . log ( calculadora . calculate ( 'division' ) )
151
+ console . log ( calculadora . calculate ( 'power' ) )
0 commit comments