-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path39-usar_class_para_disenar_objetos_con_propiedades_y_metodos.html
111 lines (87 loc) · 4.42 KB
/
39-usar_class_para_disenar_objetos_con_propiedades_y_metodos.html
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
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>39. Usar class para diseñar objetos con propiedades y métodos</title>
</head>
<body>
<h1>Capítulo 39</h1>
<h2>Usar class para diseñar objetos con propiedades y métodos</h2>
<section>
<h3>Input ChatGPT</h3>
<p>¿Cómo se utilizan las clases en JavaScript para diseñar objetos con propiedades y métodos?</p>
</section>
<section>
<h3>Para qué sirve</h3>
<p>Las clases en JavaScript proporcionan una forma más clara y concisa de crear objetos y manejar la herencia.
Al usar clases, podemos definir un modelo para un objeto, especificando sus propiedades y métodos. Esto facilita
la creación de múltiples instancias de un objeto y la implementación de conceptos de programación orientada a
objetos como la herencia, el encapsulamiento y el polimorfismo.</p>
</section>
<script>
console.log('39. Usar class para diseñar objetos con propiedades y métodos')
/**
* Ejercicio 1: Refactoriza ejercicios viejos para usar la sintaxis class
*/
/**
* Ejercicio 2: Desarrolla una clase `CuentaBancaria` con propiedades `titular` y `saldo`. Añade métodos `depositar` y
* `retirar` que permitan modificar el saldo de la cuenta.
*/
/**
* Ejercicio 3: Implementa una clase `Rectangulo` con propiedades `ancho` y `alto`. Incluye métodos para retornar el
* área y el perímetro del rectángulo.
*/
/**
* Ejercicio 4: Crea una clase `Estudiante` con propiedades `nombre`, `curso` y un array `notas`. Añade métodos para
* agregar notas (que son números) y calcular la nota media del estudiante.
*/
/**
* Ejercicio 5: Diseña una clase `Libreria` capaz de almacenar libros. Cada libro sería un objecto con propiedades
* `titulo`, `autor` y `año`. Incluye un método para añadir un libro, y otro(s) para buscar libros por autor, título o año.
*/
/**
TRABAJO EN GRUPO: Diseña una clase `Tablero` que inicializa una `cuadricula` de 2 x 2.
REQUISITOS:
1- La cuadricula generada se representa como un array de arrays:
[
[,], // esto es la fila de arriba de la cuadricula
[,], // esto es la fila de abajo de la cuadricula
]
2- Cada casilla de la cuadrícula contendrá un objeto
con una propiedad `activa` (con valor booleano):
[
[{activa:true} ,{activa:false}],
[{activa:false},{activa:false}],
]
Fijaros en lo siguiente:
- Solo una casilla del tablero puede estar activa al mismo tiempo
- Al iniciar un tablero nuevo, la casilla activa es la de arriba a la izquierda
3- El tablero tendrá un método `casillaActiva` para retornar las coordenadas de la casilla
activa en la forma de un objeto con propiedades `x`, `y`. La `x` representa la coordenada
en el eje horizontal, y la `y` en el eje vertical:
{x:0,y:0} // si la casilla activa es la superior izquierda
{x:1,y:0} // si la casilla activa es la superior derecha
{x:0,y:1} // si la casilla activa es la inferior izquierda
{x:1,y:1} // si la casilla activa es la inferior derecha
4- Además, el `Tablero` tendrá cuatro métodos más: `arriba`, `abajo`, `izquierda`, `derecha`.
El uso de estos métodos cambia la casilla activa de una manera lógica: si la casilla activa
es la superior izquierda, no podemos ir ni mas arriba ni mas a la izquierda.
Si el movimiento es posible, moveremos la casilla activa y retornaremos las nuevas
coordenadas de la casilla activa en el mismo formato utilizado por el método `casillaActiva`.
Si no es posible, retornaremos la cadena "Imposible mover arriba" (o "abajo", "izquierda", etc)
EJEMPLO DE USO EN LA CONSOLA:
let tablero = new Tablero()
tablero.cuadricula // evalua a [[{activa:true},{activa:false}],[{activa:false},{activa:false}]]
tablero.casillaActiva() // retorna {x:0,y:0}
tablero.derecha() // retorna {x:1,y:0}
tablero.casillaActiva() // retorna {x:1,y:0}
tablero.derecha() // retorna "Imposible mover derecha"
tablero.cuadricula // evalua a [[{activa:false},{activa:true}],[{activa:false},{activa:false}]]
5- Si os ha resultado muy fácil, hacer los cambios necesarios para poder generar
tableros de cualquier tamaño.
EJEMPLO DE USO EN LA CONSOLA:
let tablero = new Tablero(5, 3) // genera un tablero de dimensiones 5 x 3
*/
</script>
</body>
</html>