|
|
|
|
1
|
-#Utilizando objetos en C++ - Pájaros
|
|
|
|
|
1
|
+# Utilizando objetos en C++ - Pájaros
|
2
|
|
2
|
|
3
|
|
3
|
|
4
|
![](images/headerBirds.png)
|
4
|
![](images/headerBirds.png)
|
5
|
|
5
|
|
6
|
|
6
|
|
7
|
-[version 2016.02.10]
|
|
|
|
|
7
|
+[Verano 2016 - Ive]
|
8
|
|
8
|
|
9
|
Hasta ahora hemos visto cómo utilizar variables para guardar y manipular datos de cierto tipo y cómo estructurar nuestros programas dividiendo las tareas en funciones. Un *objeto* es una entidad que se utiliza en muchos lenguajes de programación para integrar los datos y el código que opera en ellos, haciendo más fácil el modificar programas grandes. En la experiencia de laboratorio de hoy utilizarás una clase llamada `Bird` para practicar algunas de las destrezas básicas en C++ para la creación y manejo de objetos.
|
9
|
Hasta ahora hemos visto cómo utilizar variables para guardar y manipular datos de cierto tipo y cómo estructurar nuestros programas dividiendo las tareas en funciones. Un *objeto* es una entidad que se utiliza en muchos lenguajes de programación para integrar los datos y el código que opera en ellos, haciendo más fácil el modificar programas grandes. En la experiencia de laboratorio de hoy utilizarás una clase llamada `Bird` para practicar algunas de las destrezas básicas en C++ para la creación y manejo de objetos.
|
10
|
|
10
|
|
11
|
-##Objetivos:
|
|
|
|
|
11
|
+## Objetivos:
|
12
|
|
12
|
|
13
|
1. Crear objetos de una clase.
|
13
|
1. Crear objetos de una clase.
|
14
|
2. Analizar la declaración de una clase para entender cómo crear y manipular objetos de esa clase.
|
14
|
2. Analizar la declaración de una clase para entender cómo crear y manipular objetos de esa clase.
|
15
|
3. Practicar la creación y manipulación de objetos, y la invocación de "setters" y "getters".
|
15
|
3. Practicar la creación y manipulación de objetos, y la invocación de "setters" y "getters".
|
16
|
|
16
|
|
17
|
|
17
|
|
18
|
-##Pre-Lab:
|
|
|
|
|
18
|
+## Pre-Lab:
|
19
|
|
19
|
|
20
|
-Antes de llegar al laboratorio debes:
|
|
|
|
|
20
|
+Antes de llegar al laboratorio debes haber:
|
21
|
|
21
|
|
22
|
-1. Haber repasado los siguientes conceptos:
|
|
|
|
|
22
|
+1. Repasado los siguientes conceptos:
|
23
|
|
23
|
|
24
|
a. creación de objetos de una clase.
|
24
|
a. creación de objetos de una clase.
|
25
|
|
25
|
|
|
|
|
|
27
|
|
27
|
|
28
|
c. utilización de métodos "setters" para modificar los atributos de un objeto.
|
28
|
c. utilización de métodos "setters" para modificar los atributos de un objeto.
|
29
|
|
29
|
|
30
|
-2. Haber estudiado la documentación de la clase `Bird` disponible dentro de la documentación del proyecto (`objects-birds/doc/es/html/class_bird.html`).
|
|
|
|
|
30
|
+2. Estudiado la documentación de la clase `Bird` disponible dentro de la documentación del proyecto (`objects-birds/doc/es/html/class_bird.html`).
|
31
|
|
31
|
|
32
|
-3. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
|
|
|
|
|
32
|
+3. Estudiado los conceptos e instrucciones para la sesión de laboratorio.
|
|
|
33
|
+
|
|
|
34
|
+4. Tomado el quiz Pre-Lab disponible en Moodle.
|
33
|
|
35
|
|
34
|
|
36
|
|
35
|
|
37
|
|
|
|
|
|
92
|
|
94
|
|
93
|
Una vez creamos un objeto, podemos interactuar con él usando los métodos de la clase a la que pertenece.
|
95
|
Una vez creamos un objeto, podemos interactuar con él usando los métodos de la clase a la que pertenece.
|
94
|
|
96
|
|
95
|
-###Métodos de una clase
|
|
|
|
|
97
|
+### Métodos de una clase
|
96
|
|
98
|
|
97
|
Los métodos de una clase determinan qué acciones podemos tomar sobre los objetos de esa clase. Los métodos son parecidos a las funciones en el sentido de que pueden recibir parámetros y regresar un resultado. Una forma elemental de conocer los métodos de una clase es leyendo la declaración de la clase. Por ejemplo, el siguiente código es parte de la declaración de la clase `Bird` en el archivo `bird.h`.
|
99
|
Los métodos de una clase determinan qué acciones podemos tomar sobre los objetos de esa clase. Los métodos son parecidos a las funciones en el sentido de que pueden recibir parámetros y regresar un resultado. Una forma elemental de conocer los métodos de una clase es leyendo la declaración de la clase. Por ejemplo, el siguiente código es parte de la declaración de la clase `Bird` en el archivo `bird.h`.
|
98
|
|
100
|
|
|
|
|
|
272
|
|
274
|
|
273
|
---
|
275
|
---
|
274
|
|
276
|
|
275
|
-##Sesión de laboratorio:
|
|
|
|
|
277
|
+## Sesión de laboratorio:
|
276
|
|
278
|
|
277
|
En la experiencia de laboratorio de hoy utilizarás la clase `Bird` para practicar la creación de objetos, acceder y cambiar sus atributos.
|
279
|
En la experiencia de laboratorio de hoy utilizarás la clase `Bird` para practicar la creación de objetos, acceder y cambiar sus atributos.
|
278
|
|
280
|
|
279
|
|
281
|
|
280
|
-###Ejercicio 1: Estudiar la clase `Bird`
|
|
|
|
|
282
|
+### Ejercicio 1 - Estudiar la clase `Bird`
|
281
|
|
283
|
|
282
|
En este ejercicio te familiarizarás con la clase `Bird` y con algunos métodos asociados a la clase `MainWindow` que define la ventana en donde se despliegan resultados.
|
284
|
En este ejercicio te familiarizarás con la clase `Bird` y con algunos métodos asociados a la clase `MainWindow` que define la ventana en donde se despliegan resultados.
|
283
|
|
285
|
|
284
|
-**Instrucciones**
|
|
|
|
|
286
|
+#### Instrucciones:
|
285
|
|
287
|
|
286
|
1. Descarga la carpeta `objects-birds` de `Bitbucket` usando un terminal, moviéndote al directorio `Documents/eip`, y escribiendo el comando `git clone http://bitbucket.org/eip-uprrp/objects-birds`.
|
288
|
1. Descarga la carpeta `objects-birds` de `Bitbucket` usando un terminal, moviéndote al directorio `Documents/eip`, y escribiendo el comando `git clone http://bitbucket.org/eip-uprrp/objects-birds`.
|
287
|
|
289
|
|
|
|
|
|
303
|
|
305
|
|
304
|
5. Ejecuta el programa marcando la flecha verde en el menú de la izquierda de la ventana de Qt Creator. El programa debe mostrar una ventana blanca.
|
306
|
5. Ejecuta el programa marcando la flecha verde en el menú de la izquierda de la ventana de Qt Creator. El programa debe mostrar una ventana blanca.
|
305
|
|
307
|
|
306
|
-###Ejercicio 2: Crear objetos de clase `Bird` con ciertos atributos
|
|
|
|
|
308
|
+### Ejercicio 2 - Crear objetos de clase `Bird` con ciertos atributos
|
307
|
|
309
|
|
308
|
En este ejercicio crearás objetos de clase `Bird` usando el constructor por defecto y usando constructores donde defines características específicas para el objeto. También practicarás el uso de "getters" y "setters" para obtener y asignar atributos a los objetos.
|
310
|
En este ejercicio crearás objetos de clase `Bird` usando el constructor por defecto y usando constructores donde defines características específicas para el objeto. También practicarás el uso de "getters" y "setters" para obtener y asignar atributos a los objetos.
|
309
|
|
311
|
|
310
|
-**Instrucciones**
|
|
|
|
|
312
|
+#### Instrucciones:
|
311
|
|
313
|
|
312
|
1. Ahora crea un objeto de clase `Bird` llamado `abelardo` usando el constructor default y añádelo a la ventana `w` usando el método `addBird(int x, int y, Bird b)`. Recuerda que la invocación del método debe comenzar con el nombre del objeto `w` y un punto.
|
314
|
1. Ahora crea un objeto de clase `Bird` llamado `abelardo` usando el constructor default y añádelo a la ventana `w` usando el método `addBird(int x, int y, Bird b)`. Recuerda que la invocación del método debe comenzar con el nombre del objeto `w` y un punto.
|
313
|
|
315
|
|
|
|
|
|
315
|
|
317
|
|
316
|
3. Utiliza los "setters" `setSize(int size)`, `setFaceColor(Qstring color)`, `setEyeColor(Qstring color)`, y `setEyebrow(EyeBrowType)` para que `abelardo` luzca como en la Figura 2 (su size es 200).
|
318
|
3. Utiliza los "setters" `setSize(int size)`, `setFaceColor(Qstring color)`, `setEyeColor(Qstring color)`, y `setEyebrow(EyeBrowType)` para que `abelardo` luzca como en la Figura 2 (su size es 200).
|
317
|
|
319
|
|
318
|
- ---
|
|
|
|
|
320
|
+ ---
|
319
|
|
321
|
|
320
|
- ![figure2.png](images/figure2.png)
|
|
|
|
|
322
|
+ ![figure2.png](images/figure2.png)
|
321
|
|
323
|
|
322
|
- **Figura 2.** Abelardo.
|
|
|
|
|
324
|
+ **Figura 2.** Abelardo.
|
323
|
|
325
|
|
324
|
- ---
|
|
|
|
|
326
|
+ ---
|
325
|
|
327
|
|
326
|
4. Crea otro objeto de la clase Bird llamado `piolin` que tenga cara azul, ojos verdes, y cejas UNI invocando el constructor `Bird(int size, EyeBrowType brow, QString faceColor, QString eyeColor, QWidget *parent = 0)`. Su tamaño debe ser la mitad que el de `abelardo`. Añádelo a la misma ventana donde se muestra a `abelardo` usando `w.addBird(300, 100, piolin)` para obtener una imagen como la que se muestra en la Figura 3.
|
328
|
4. Crea otro objeto de la clase Bird llamado `piolin` que tenga cara azul, ojos verdes, y cejas UNI invocando el constructor `Bird(int size, EyeBrowType brow, QString faceColor, QString eyeColor, QWidget *parent = 0)`. Su tamaño debe ser la mitad que el de `abelardo`. Añádelo a la misma ventana donde se muestra a `abelardo` usando `w.addBird(300, 100, piolin)` para obtener una imagen como la que se muestra en la Figura 3.
|
327
|
|
329
|
|
328
|
- ---
|
|
|
|
|
330
|
+ ---
|
329
|
|
331
|
|
330
|
- ![figure3.png](images/figure3.png)
|
|
|
|
|
332
|
+ ![figure3.png](images/figure3.png)
|
331
|
|
333
|
|
332
|
- **Figura 3.** Abelardo y Piolin.
|
|
|
|
|
334
|
+ **Figura 3.** Abelardo y Piolin.
|
333
|
|
335
|
|
334
|
- ---
|
|
|
|
|
336
|
+ ---
|
335
|
|
337
|
|
336
|
5. Crea otros dos objetos llamados `juana` y `alondra` que salgan dibujados en las coordenadas (100, 300) y (300,300) respectivamente. Crea a `juana` usando el constructor por defecto para que sus propiedades sean asignadas de forma aleatoria.
|
338
|
5. Crea otros dos objetos llamados `juana` y `alondra` que salgan dibujados en las coordenadas (100, 300) y (300,300) respectivamente. Crea a `juana` usando el constructor por defecto para que sus propiedades sean asignadas de forma aleatoria.
|
337
|
Luego crea a `alondra` usando el otro constructor (el que recibe argumentos) para que puedas especificar sus propiedades durante su creación. `alondra` debe ser igual de grande que `juana`, tener el mismo tipo de cejas, y el mismo color de ojos. Su cara debe ser blanca. Añade a `alondra` y a `juana` a la misma ventana de `abelardo` y `piolin`. La ventana debe ser similar a la de la Figura 4.
|
339
|
Luego crea a `alondra` usando el otro constructor (el que recibe argumentos) para que puedas especificar sus propiedades durante su creación. `alondra` debe ser igual de grande que `juana`, tener el mismo tipo de cejas, y el mismo color de ojos. Su cara debe ser blanca. Añade a `alondra` y a `juana` a la misma ventana de `abelardo` y `piolin`. La ventana debe ser similar a la de la Figura 4.
|
338
|
|
340
|
|
339
|
- ---
|
|
|
|
|
341
|
+ ---
|
340
|
|
342
|
|
341
|
- ![figure4.png](images/figure4.png)
|
|
|
|
|
343
|
+ ![figure4.png](images/figure4.png)
|
342
|
|
344
|
|
343
|
- **Figura 4.** Abelardo, Piolín, Juana y Alondra.
|
|
|
|
|
345
|
+ **Figura 4.** Abelardo, Piolín, Juana y Alondra.
|
344
|
|
346
|
|
345
|
- ---
|
|
|
|
|
347
|
+ ---
|
346
|
|
348
|
|
347
|
6. Corre varias veces el programa para asegurarte que `alondra` y `juana` siguen pareciéndose en tamaño, cejas y ojos.
|
349
|
6. Corre varias veces el programa para asegurarte que `alondra` y `juana` siguen pareciéndose en tamaño, cejas y ojos.
|
348
|
|
350
|
|