Skip to content

Commit 100533a

Browse files
authored
Merge pull request #8706 from bluefeatherdev/reto-08-dart
#8 - Dart
2 parents 0cb1966 + f199007 commit 100533a

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de clase y crea un ejemplo que implemente un inicializador,
4+
* atributos y una función que los imprima (teniendo en cuenta las posibilidades
5+
* de tu lenguaje).
6+
* Una vez implementada, créala, establece sus parámetros, modifícalos e imprímelos
7+
* utilizando su función.
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Implementa dos clases que representen las estructuras de Pila y Cola (estudiadas
11+
* en el ejercicio número 7 de la ruta de estudio)
12+
* - Deben poder inicializarse y disponer de operaciones para añadir, eliminar,
13+
* retornar el número de elementos e imprimir todo su contenido.
14+
*
15+
*/
16+
17+
/// 1. [Implementación de una clase]:
18+
class Person {
19+
// Atributos
20+
String name;
21+
int age;
22+
23+
// Inicializador
24+
Person(this.name, this.age);
25+
26+
// Imprimir
27+
void printPerson() {
28+
print('name: $name, age: $age');
29+
}
30+
}
31+
32+
/// 3. [Pila/Stack - DIFICULTAD EXTRA]:
33+
class Stack {
34+
// Atributos
35+
List<dynamic> _stack = [];
36+
37+
// Añadir elementos
38+
void push(dynamic element) {
39+
_stack.add(element);
40+
}
41+
42+
// Eliminar (LIFO - Last in/First Out)
43+
void pop() {
44+
if (_stack.isNotEmpty) _stack.removeLast();
45+
}
46+
47+
// Número de elementos
48+
int count() {
49+
return _stack.length;
50+
}
51+
52+
// Imprimir contenido
53+
void printStack() {
54+
for (var item in _stack.reversed) {
55+
print(item);
56+
}
57+
}
58+
59+
// Extra: status del stack
60+
void stackStatus() {
61+
printStack();
62+
print('Stack length: ${count()}');
63+
}
64+
}
65+
66+
/// 4. [Cola/Queue - DIFICULTAD EXTRA]:
67+
class Queue {
68+
// Atributos
69+
List<dynamic> _queue = [];
70+
71+
// Añadir elementos
72+
void push(dynamic element) {
73+
_queue.add(element);
74+
}
75+
76+
// Eliminar (FIFO - First in/First Out)
77+
void pop() {
78+
if (_queue.isNotEmpty) _queue.removeAt(0);
79+
}
80+
81+
// Número de elementos
82+
int count() {
83+
return _queue.length;
84+
}
85+
86+
// Imprimir contenido
87+
void printQueue() {
88+
for (var item in _queue) {
89+
print(item);
90+
}
91+
}
92+
93+
// Extra: status del queue
94+
void queueStatus() {
95+
printQueue();
96+
print('Queue length: ${count()}');
97+
}
98+
}
99+
100+
void main() {
101+
/// 2. [Instancias de clase]:
102+
var person1 = Person('Jesús', 21); // Creación
103+
var person2 = Person('Elie', 20); // Creación
104+
105+
person1.printPerson(); // name: Jesús, age: 21
106+
person2.printPerson(); // name: Elie, age: 20
107+
108+
person1.age = 23; // Modificación
109+
person2.age = 22; // Modificación
110+
111+
person1.printPerson(); // name: Jesús, age: 23
112+
person2.printPerson(); // name: Elie, age: 22
113+
114+
/// 3. [Pila/Stack - DIFICULTAD EXTRA]:
115+
Stack myStack = Stack(); // crear stack
116+
for (var i = 0; i < 5; i++) myStack.push(i); // llenar stack
117+
myStack.stackStatus(); // ver estado del stack
118+
119+
myStack.pop(); // eliminar elemento
120+
myStack.stackStatus(); // ver estado del stack
121+
122+
myStack.pop(); // eliminar elemento
123+
myStack.stackStatus(); // ver estado del stack
124+
125+
/// 4. [Cola/Queue - DIFICULTAD EXTRA]:
126+
Queue myQueue = Queue(); // crear queue
127+
for (var i = 97; i < 102; i++) {
128+
myQueue.push(String.fromCharCode(i)); // llenar queue
129+
}
130+
myQueue.queueStatus(); // ver estado del queue
131+
132+
myQueue.pop(); // eliminar elemento
133+
myQueue.queueStatus(); // ver estado del queue
134+
135+
myQueue.pop(); // eliminar elemento
136+
myQueue.queueStatus(); // ver estado del queue
137+
}

0 commit comments

Comments
 (0)