Skip to content

Commit e8fb6ce

Browse files
Merge pull request #3 from EmilianoAngel/solutions
#27 - Dart
2 parents b9bb03d + 8db3e4a commit e8fb6ce

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
// Incorrecto
2+
// class Form {
3+
4+
// void drawSquare() {
5+
// print('Dibujar un cuadrado');
6+
// }
7+
8+
// void drawCircle() {
9+
// print('Dibujar un círculo');
10+
// }
11+
// }
12+
13+
// Correcto
14+
abstract class Form {
15+
void draw() {}
16+
}
17+
18+
class Square extends Form {
19+
@override
20+
void draw() {
21+
print('Dibujar un cuadrado');
22+
}
23+
}
24+
25+
class Circle extends Form {
26+
@override
27+
void draw() {
28+
print('Dibujar un círculo');
29+
}
30+
}
31+
32+
class Triangle extends Form {
33+
@override
34+
void draw() {
35+
print('Dibujar un triángulo');
36+
}
37+
}
38+
39+
// Ejercicio de calculadora
40+
41+
abstract class Operation {
42+
double execute(double a, double b) {
43+
return 0;
44+
}
45+
}
46+
47+
class Addition extends Operation {
48+
@override
49+
double execute(double a, double b) {
50+
return a + b;
51+
}
52+
}
53+
54+
class Subtraction extends Operation {
55+
@override
56+
double execute(double a, double b) {
57+
return a - b;
58+
}
59+
}
60+
61+
class Multiplication extends Operation {
62+
@override
63+
double execute(double a, double b) {
64+
return a * b;
65+
}
66+
}
67+
68+
class Division extends Operation {
69+
@override
70+
double execute(double a, double b) {
71+
if (b == 0) {
72+
throw Exception('Division by zero is not allowed.');
73+
}
74+
return a / b;
75+
}
76+
}
77+
78+
class Power extends Operation {
79+
@override
80+
double execute(double a, double b) {
81+
double result = 1;
82+
for(int i = 0; i < b; i++) {
83+
result *= a;
84+
}
85+
return result;
86+
}
87+
}
88+
89+
class Calculator {
90+
final Map<String, dynamic> _operations = {};
91+
92+
void addOperation(String name, Operation operation) {
93+
_operations[name] = operation;
94+
}
95+
double calculate(String name, double a, double b) {
96+
final operation = _operations[name];
97+
if (operation == null) {
98+
throw ArgumentError('Operation $name not supported.');
99+
}
100+
return operation.execute(a,b);
101+
}
102+
}
103+
104+
void main () {
105+
Calculator calculator = Calculator();
106+
107+
calculator.addOperation('addition', Addition());
108+
calculator.addOperation('substraction', Subtraction());
109+
calculator.addOperation('multiplication', Multiplication());
110+
calculator.addOperation('division', Division());
111+
calculator.addOperation('power', Power());
112+
113+
print(calculator.calculate('addition', 5, 3));
114+
print(calculator.calculate('substraction', 6, 3));
115+
print(calculator.calculate('multiplication', 5, 2));
116+
print(calculator.calculate('division', 12, 6));
117+
print(calculator.calculate('power', 2, 3));
118+
119+
}

0 commit comments

Comments
 (0)