|
|
|
|
28
|
|
28
|
|
29
|
1. Haber repasado los siguientes conceptos:
|
29
|
1. Haber repasado los siguientes conceptos:
|
30
|
|
30
|
|
31
|
- a. creación de objetos de una clase.
|
|
|
|
|
31
|
+ a. creación de objetos de una clase.
|
32
|
|
32
|
|
33
|
- b. utilización de métodos "getters" para acceder a los atributos de un objeto.
|
|
|
|
|
33
|
+ b. utilización de métodos "getters" para acceder a los atributos de un objeto.
|
34
|
|
34
|
|
35
|
- c. utilización de métodos "setters" para modificar los atributos de un objeto.
|
|
|
|
|
35
|
+ c. utilización de métodos "setters" para modificar los atributos de un objeto.
|
36
|
|
36
|
|
37
|
2. Haber estudiado la documentación de la clase `Bird` disponible en [este enlace] (http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html).
|
37
|
2. Haber estudiado la documentación de la clase `Bird` disponible en [este enlace] (http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html).
|
38
|
|
38
|
|
|
|
|
|
66
|
|
66
|
|
67
|
---
|
67
|
---
|
68
|
|
68
|
|
69
|
-```
|
|
|
|
|
69
|
+```cpp
|
70
|
class NombreClase
|
70
|
class NombreClase
|
71
|
{
|
71
|
{
|
72
|
// Declaraciones
|
72
|
// Declaraciones
|
|
|
|
|
107
|
---
|
107
|
---
|
108
|
|
108
|
|
109
|
|
109
|
|
110
|
-```
|
|
|
|
|
110
|
+```cpp
|
111
|
class Bird : public QWidget
|
111
|
class Bird : public QWidget
|
112
|
{
|
112
|
{
|
113
|
.
|
113
|
.
|
|
|
|
|
165
|
|
165
|
|
166
|
La clase `Bird` que estarás usando en la sesión de hoy tiene dos constructores (funciones sobrecargadas):
|
166
|
La clase `Bird` que estarás usando en la sesión de hoy tiene dos constructores (funciones sobrecargadas):
|
167
|
|
167
|
|
168
|
-`Bird (QWidget *parent=0)`
|
|
|
|
|
168
|
+```cpp
|
|
|
169
|
+Bird (QWidget *parent=0)`
|
|
|
170
|
+```
|
169
|
|
171
|
|
170
|
-`Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
|
|
|
|
|
172
|
+```cpp
|
|
|
173
|
+Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)
|
|
|
174
|
+```
|
171
|
|
175
|
|
172
|
Puedes ver las declaraciones de los prototipos de estos métodos en la declaración de la clase `Bird` en el archivo `bird.h` del proyecto. La documentación se encuentra en http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html. El primer constructor, `Bird (QWidget *parent=0)`, es un método que se puede invocar con uno o ningún argumento. Si al invocarlo no se usa argumento, el parámetro de la función toma el valor 0.
|
176
|
Puedes ver las declaraciones de los prototipos de estos métodos en la declaración de la clase `Bird` en el archivo `bird.h` del proyecto. La documentación se encuentra en http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html. El primer constructor, `Bird (QWidget *parent=0)`, es un método que se puede invocar con uno o ningún argumento. Si al invocarlo no se usa argumento, el parámetro de la función toma el valor 0.
|
173
|
|
177
|
|
174
|
El constructor de una clase que se puede invocar sin usar argumentos es el *constructor* "*default*" de la clase; esto es, el constructor que se invoca cuando creamos un objeto usando una instrucción como:
|
178
|
El constructor de una clase que se puede invocar sin usar argumentos es el *constructor* "*default*" de la clase; esto es, el constructor que se invoca cuando creamos un objeto usando una instrucción como:
|
175
|
|
179
|
|
176
|
-`Bird pitirre;`
|
|
|
|
|
180
|
+```cpp
|
|
|
181
|
+Bird pitirre;
|
|
|
182
|
+```
|
177
|
|
183
|
|
178
|
Puedes ver las implementaciones de los métodos de la clase Birden el archivo `bird.cpp`. Nota que el primer constructor, `Bird (QWidget *parent=0)`, asignará valores aleatorios ("random") a cada uno de los atributos del objeto. Más adelante hay una breve explicación de la función `randInt`.
|
184
|
Puedes ver las implementaciones de los métodos de la clase Birden el archivo `bird.cpp`. Nota que el primer constructor, `Bird (QWidget *parent=0)`, asignará valores aleatorios ("random") a cada uno de los atributos del objeto. Más adelante hay una breve explicación de la función `randInt`.
|
179
|
|
185
|
|
180
|
Dale un vistazo a la documentación del segundo constructor, `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`. Esta función requiere cuatro argumentos y tiene un quinto argumento que es opcional porque tiene un valor por defecto. Una manera para usar este constructor es creando un objeto como el siguiente:
|
186
|
Dale un vistazo a la documentación del segundo constructor, `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`. Esta función requiere cuatro argumentos y tiene un quinto argumento que es opcional porque tiene un valor por defecto. Una manera para usar este constructor es creando un objeto como el siguiente:
|
181
|
|
187
|
|
182
|
-`Bird guaraguao(200, Bird::UPSET, "blue", "red");`
|
|
|
|
|
188
|
+```cpp
|
|
|
189
|
+Bird guaraguao(200, Bird::UPSET, "blue", "red");
|
|
|
190
|
+```
|
183
|
|
191
|
|
184
|
|
192
|
|
185
|
####"Setters" ("mutators")
|
193
|
####"Setters" ("mutators")
|
|
|
|
|
194
|
|
202
|
|
195
|
Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en `bird.h`, y la implementación de algunos de los métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `bobo` de la clase `Bird` y luego cambia su tamaño a 333.
|
203
|
Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en `bird.h`, y la implementación de algunos de los métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `bobo` de la clase `Bird` y luego cambia su tamaño a 333.
|
196
|
|
204
|
|
197
|
-```
|
|
|
|
|
205
|
+```cpp
|
198
|
Bird bobo;
|
206
|
Bird bobo;
|
199
|
bobo.setSize(333);
|
207
|
bobo.setSize(333);
|
200
|
```
|
208
|
```
|
|
|
|
|
212
|
|
220
|
|
213
|
Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en `bird.h`, y las implementaciones de algunos de métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `piolin` de la clase `Bird` e imprime su tamaño.
|
221
|
Puedes ver las declaraciones de los métodos en la Figura 1 y en la declaración de la clase `Bird` en `bird.h`, y las implementaciones de algunos de métodos en `bird.cpp`. El código en el siguiente ejemplo crea el objeto `piolin` de la clase `Bird` e imprime su tamaño.
|
214
|
|
222
|
|
215
|
-```
|
|
|
|
|
223
|
+```cpp
|
216
|
Bird piolin;
|
224
|
Bird piolin;
|
217
|
cout << piolin.getSize();
|
225
|
cout << piolin.getSize();
|
218
|
```
|
226
|
```
|
|
|
|
|
221
|
|
229
|
|
222
|
**MainWindow:** El archivo `mainwindow.h` contiene la declaración de una clase llamada `MainWindow`. Los objetos que sean instancias de esta clase podrán utilizar los métodos sobrecargados
|
230
|
**MainWindow:** El archivo `mainwindow.h` contiene la declaración de una clase llamada `MainWindow`. Los objetos que sean instancias de esta clase podrán utilizar los métodos sobrecargados
|
223
|
|
231
|
|
224
|
-`void MainWindow::addBird(int x, int y, Bird &b)`
|
|
|
|
|
232
|
+```cpp
|
|
|
233
|
+void MainWindow::addBird(int x, int y, Bird &b)
|
|
|
234
|
+```
|
225
|
|
235
|
|
226
|
-`void MainWindow::addBird(Bird &b)`
|
|
|
|
|
236
|
+```cpp
|
|
|
237
|
+void MainWindow::addBird(Bird &b)`
|
|
|
238
|
+```
|
227
|
|
239
|
|
228
|
que añadirán a la pantalla un dibujo del objeto de la clase `Bird` que es recibido como argumento. El código en el siguiente ejemplo crea un objeto `w` de la clase `MainWindow`, crea un objeto `zumbador` de la clase `Bird` y lo añade a la posición (200,200) de la pantalla `w` usando el primer método.
|
240
|
que añadirán a la pantalla un dibujo del objeto de la clase `Bird` que es recibido como argumento. El código en el siguiente ejemplo crea un objeto `w` de la clase `MainWindow`, crea un objeto `zumbador` de la clase `Bird` y lo añade a la posición (200,200) de la pantalla `w` usando el primer método.
|
229
|
|
241
|
|
230
|
|
242
|
|
231
|
|
243
|
|
232
|
-```
|
|
|
|
|
244
|
+```cpp
|
233
|
MainWindow w;
|
245
|
MainWindow w;
|
234
|
Bird zumbador;
|
246
|
Bird zumbador;
|
235
|
w.addBird(200,200,zumbador);
|
247
|
w.addBird(200,200,zumbador);
|
|
|
|
|
252
|
|
264
|
|
253
|
**randInt:** La clase `Bird` incluye el método
|
265
|
**randInt:** La clase `Bird` incluye el método
|
254
|
|
266
|
|
255
|
-`int Bird::randInt(int min, int max)`
|
|
|
|
|
267
|
+```cpp
|
|
|
268
|
+int Bird::randInt(int min, int max)
|
|
|
269
|
+```
|
256
|
|
270
|
|
257
|
para generar números enteros aleatorios ("random") en el rango [min, max]. El método `randInt` depende de otra función para generar números aleatorios que requiere un primer elemento o *semilla* para ser evaluada. En este proyecto, ese primer elemento se genera con la invocación `srand(time(NULL)) ;`.
|
271
|
para generar números enteros aleatorios ("random") en el rango [min, max]. El método `randInt` depende de otra función para generar números aleatorios que requiere un primer elemento o *semilla* para ser evaluada. En este proyecto, ese primer elemento se genera con la invocación `srand(time(NULL)) ;`.
|
258
|
|
272
|
|
259
|
|
273
|
|
260
|
|
274
|
|
|
|
275
|
+!INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-01.html"
|
|
|
276
|
+
|
|
|
277
|
+!INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-02.html"
|
|
|
278
|
+
|
|
|
279
|
+!INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-03.html"
|
|
|
280
|
+
|
|
|
281
|
+!INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-04.html"
|
|
|
282
|
+
|
|
|
283
|
+!INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-05.html"
|
|
|
284
|
+
|
261
|
---
|
285
|
---
|
262
|
|
286
|
|
263
|
---
|
287
|
---
|
|
|
|
|
279
|
|
303
|
|
280
|
3. En el archivo `main.cpp` (en Sources) la función `main` hace lo siguiente:
|
304
|
3. En el archivo `main.cpp` (en Sources) la función `main` hace lo siguiente:
|
281
|
|
305
|
|
282
|
- a. Crea un objeto aplicación de Qt, llamado `a`. Lo único que necesitas saber sobre este objeto es que gracias a él es que podemos crear una aplicación gráfica en Qt e interaccionar con ella.
|
|
|
|
|
306
|
+ a. Crea un objeto aplicación de Qt, llamado `a`. Lo único que necesitas saber sobre este objeto es que gracias a él es que podemos crear una aplicación gráfica en Qt e interaccionar con ella.
|
283
|
|
307
|
|
284
|
- b. Crea un objeto de la clase MainWindow llamado `w`. Este objeto corresponde a la ventana que verás cuando corras la aplicación.
|
|
|
|
|
308
|
+ b. Crea un objeto de la clase MainWindow llamado `w`. Este objeto corresponde a la ventana que verás cuando corras la aplicación.
|
285
|
|
309
|
|
286
|
- c. Inicializa la semilla del generador de números aleatorios de Qt. Esto hará que los pájaros nuevos tengan tamaños, colores y cejas aleatorias (a menos que los forcemos a tener valores específicos).
|
|
|
|
|
310
|
+ c. Inicializa la semilla del generador de números aleatorios de Qt. Esto hará que los pájaros nuevos tengan tamaños, colores y cejas aleatorias (a menos que los forcemos a tener valores específicos).
|
287
|
|
311
|
|
288
|
- d. Invoca el método `show()` al objeto `w`. Esto logra que se muestre la ventana donde se desplegarán los resultados.
|
|
|
|
|
312
|
+ d. Invoca el método `show()` al objeto `w`. Esto logra que se muestre la ventana donde se desplegarán los resultados.
|
289
|
|
313
|
|
290
|
- e. En los programas que no tienen interfaz gráfica, la función `main()` usualmente termina con la instrucción `return 0;`. En este proyecto se utiliza la instrucción `return a.exec();` para que el objeto `a` se haga cargo de la aplicación a partir de ese momento.
|
|
|
|
|
314
|
+ e. En los programas que no tienen interfaz gráfica, la función `main()` usualmente termina con la instrucción `return 0;`. En este proyecto se utiliza la instrucción `return a.exec();` para que el objeto `a` se haga cargo de la aplicación a partir de ese momento.
|
291
|
|
315
|
|
292
|
4. 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.
|
316
|
4. 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.
|
293
|
|
317
|
|
|
|
|
|
303
|
|
327
|
|
304
|
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).
|
328
|
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).
|
305
|
|
329
|
|
306
|
-
|
|
|
307
|
- ---
|
|
|
308
|
-
|
|
|
309
|
- ![figure2.png](images/figure2.png)
|
|
|
|
|
330
|
+ ---
|
310
|
|
331
|
|
311
|
- **Figura 2.** Abelardo.
|
|
|
|
|
332
|
+ ![figure2.png](images/figure2.png)
|
312
|
|
333
|
|
313
|
- ---
|
|
|
|
|
334
|
+ **Figura 2.** Abelardo.
|
314
|
|
335
|
|
|
|
336
|
+ ---
|
315
|
|
337
|
|
316
|
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
|
338
|
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
|
317
|
|
339
|
|
|
|
340
|
+ ---
|
318
|
|
341
|
|
319
|
- ---
|
|
|
320
|
-
|
|
|
321
|
- ![figure3.png](images/figure3.png)
|
|
|
|
|
342
|
+ ![figure3.png](images/figure3.png)
|
322
|
|
343
|
|
323
|
- **Figura 3.** Abelardo y Piolin.
|
|
|
324
|
-
|
|
|
325
|
- ---
|
|
|
|
|
344
|
+ **Figura 3.** Abelardo y Piolin.
|
326
|
|
345
|
|
|
|
346
|
+ ---
|
|
|
347
|
+
|
327
|
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.
|
348
|
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.
|
328
|
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.
|
349
|
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.
|
329
|
|
350
|
|
330
|
- ---
|
|
|
|
|
351
|
+ ---
|
331
|
|
352
|
|
332
|
- ![figure4.png](images/figure4.png)
|
|
|
|
|
353
|
+ ![figure4.png](images/figure4.png)
|
333
|
|
354
|
|
334
|
- **Figura 4.** Abelardo, Piolín, Juana y Alondra.
|
|
|
|
|
355
|
+ **Figura 4.** Abelardo, Piolín, Juana y Alondra.
|
335
|
|
356
|
|
336
|
- ---
|
|
|
|
|
357
|
+ ---
|
337
|
|
358
|
|
338
|
6. Corre varias veces el programa para asegurarte que `alondra` y `juana` siguen pareciéndose en tamaño, cejas y ojos.
|
359
|
6. Corre varias veces el programa para asegurarte que `alondra` y `juana` siguen pareciéndose en tamaño, cejas y ojos.
|
339
|
|
360
|
|
|
|
|
|
394
|
|
415
|
|
395
|
1. Reviewed the following concepts:
|
416
|
1. Reviewed the following concepts:
|
396
|
|
417
|
|
397
|
- a. the creation of objects of a class.
|
|
|
|
|
418
|
+ a. the creation of objects of a class.
|
398
|
|
419
|
|
399
|
- b. using the "getter" method functions to access the attributes of an object.
|
|
|
|
|
420
|
+ b. using the "getter" method functions to access the attributes of an object.
|
400
|
|
421
|
|
401
|
- c. using the "setter" method functions to modify the attributes of an object.
|
|
|
|
|
422
|
+ c. using the "setter" method functions to modify the attributes of an object.
|
402
|
|
423
|
|
403
|
2. Studied the documentation for the class `Bird` available in [this link.](http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html)
|
424
|
2. Studied the documentation for the class `Bird` available in [this link.](http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html)
|
404
|
|
425
|
|
|
|
|
|
429
|
|
450
|
|
430
|
---
|
451
|
---
|
431
|
|
452
|
|
432
|
-```
|
|
|
|
|
453
|
+```cpp
|
433
|
class ClassName
|
454
|
class ClassName
|
434
|
{
|
455
|
{
|
435
|
// Declarations
|
456
|
// Declarations
|
|
|
|
|
470
|
---
|
491
|
---
|
471
|
|
492
|
|
472
|
|
493
|
|
473
|
-```
|
|
|
|
|
494
|
+```cpp
|
474
|
class Bird : public QWidget
|
495
|
class Bird : public QWidget
|
475
|
{
|
496
|
{
|
476
|
.
|
497
|
.
|
|
|
|
|
530
|
|
551
|
|
531
|
The class `Bird` that you will be using in today's session has two constructors (overloaded functions):
|
552
|
The class `Bird` that you will be using in today's session has two constructors (overloaded functions):
|
532
|
|
553
|
|
533
|
-`Bird (QWidget *parent=0)`
|
|
|
|
|
554
|
+```cpp
|
|
|
555
|
+Bird (QWidget *parent=0)
|
|
|
556
|
+```
|
534
|
|
557
|
|
535
|
-`Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
|
|
|
|
|
558
|
+```cpp
|
|
|
559
|
+Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)
|
|
|
560
|
+```
|
536
|
|
561
|
|
537
|
You can see the declarations of the method prototypes in the declaration of the `Bird` class in the project's `bird.h` file. The documentation can be found in [this link.](http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html) The first constructor, `Bird (QWidget *parent=0)`, is a method that can be invoked with one or no argument. If no argument is used, the function's parameter has a value of 0.
|
562
|
You can see the declarations of the method prototypes in the declaration of the `Bird` class in the project's `bird.h` file. The documentation can be found in [this link.](http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html) The first constructor, `Bird (QWidget *parent=0)`, is a method that can be invoked with one or no argument. If no argument is used, the function's parameter has a value of 0.
|
538
|
|
563
|
|
539
|
A class' constructor that can be invoked without using an argument is the class' *default constructor*; that is, the constructor that is invoked when we create an object using an instruction like:
|
564
|
A class' constructor that can be invoked without using an argument is the class' *default constructor*; that is, the constructor that is invoked when we create an object using an instruction like:
|
540
|
|
565
|
|
541
|
-`Bird pitirre;`
|
|
|
|
|
566
|
+```cpp
|
|
|
567
|
+Bird pitirre;
|
|
|
568
|
+```
|
542
|
|
569
|
|
543
|
You can see the implementations of the class `Bird` in the file `bird.cpp`. Note that the first constructor, `Bird (QWidget *parent=0)`, will assign random values to each of the object's attributes. Later on there is a brief explanation for the `randInt` function.
|
570
|
You can see the implementations of the class `Bird` in the file `bird.cpp`. Note that the first constructor, `Bird (QWidget *parent=0)`, will assign random values to each of the object's attributes. Later on there is a brief explanation for the `randInt` function.
|
544
|
|
571
|
|
545
|
Have a look at the documentation for the second constructor, `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`. This function requires four arguments and has a fifth argument that is optional since it has a default value. One way to use this constructor is creating an object like this:
|
572
|
Have a look at the documentation for the second constructor, `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`. This function requires four arguments and has a fifth argument that is optional since it has a default value. One way to use this constructor is creating an object like this:
|
546
|
|
573
|
|
547
|
-`Bird guaraguao(200, Bird::UPSET, "blue", "red");`
|
|
|
548
|
-
|
|
|
|
|
574
|
+```cpp
|
|
|
575
|
+Bird guaraguao(200, Bird::UPSET, "blue", "red");
|
|
|
576
|
+```
|
549
|
|
577
|
|
550
|
####Setters (mutators)
|
578
|
####Setters (mutators)
|
551
|
|
579
|
|
|
|
|
|
559
|
|
587
|
|
560
|
You can see the method's declarations in Figure 1 and in the `Bird` class declaration in `bird.h`, and the implementation of the some of the methods in `bird.cpp`. The code in the following example creates the object `bobo` of the `Bird` class and then changes its size to 333.
|
588
|
You can see the method's declarations in Figure 1 and in the `Bird` class declaration in `bird.h`, and the implementation of the some of the methods in `bird.cpp`. The code in the following example creates the object `bobo` of the `Bird` class and then changes its size to 333.
|
561
|
|
589
|
|
562
|
-```
|
|
|
|
|
590
|
+```cpp
|
563
|
Bird bobo;
|
591
|
Bird bobo;
|
564
|
bobo.setSize(333);
|
592
|
bobo.setSize(333);
|
565
|
```
|
593
|
```
|
|
|
|
|
575
|
|
603
|
|
576
|
You can see the declarations of the methods in Figure 1 and in the `Bird` class declaration in `bird.h`, and the implementations of some of the methods in `bird.cpp`. The code in the following example creates the object `piolin` of the `Bird` class and prints its size:
|
604
|
You can see the declarations of the methods in Figure 1 and in the `Bird` class declaration in `bird.h`, and the implementations of some of the methods in `bird.cpp`. The code in the following example creates the object `piolin` of the `Bird` class and prints its size:
|
577
|
|
605
|
|
578
|
-```
|
|
|
|
|
606
|
+```cpp
|
579
|
Bird piolin;
|
607
|
Bird piolin;
|
580
|
cout << piolin.getSize();
|
608
|
cout << piolin.getSize();
|
581
|
```
|
609
|
```
|
|
|
|
|
584
|
|
612
|
|
585
|
**MainWindow:** The file `mainwindow.h` contains the declaration of a class called `MainWindow`. The objects that are instances of this class will be able to use the overloaded methods
|
613
|
**MainWindow:** The file `mainwindow.h` contains the declaration of a class called `MainWindow`. The objects that are instances of this class will be able to use the overloaded methods
|
586
|
|
614
|
|
587
|
-`void MainWindow::addBird(int x, int y, Bird &b)`
|
|
|
|
|
615
|
+```cpp
|
|
|
616
|
+void MainWindow::addBird(int x, int y, Bird &b)
|
|
|
617
|
+```
|
588
|
|
618
|
|
589
|
-`void MainWindow::addBird(Bird &b)`
|
|
|
|
|
619
|
+```cpp
|
|
|
620
|
+void MainWindow::addBird(Bird &b)
|
|
|
621
|
+```
|
590
|
|
622
|
|
591
|
that will add to the screen a drawing of an object of the `Bird` class that is received as an argument. The code in the following example creates an object `w` of the `MainWindow` class, creates an object `zumbador` of the `Bird` class and adds it in the position (200,200) on the screen `w` using the first method.
|
623
|
that will add to the screen a drawing of an object of the `Bird` class that is received as an argument. The code in the following example creates an object `w` of the `MainWindow` class, creates an object `zumbador` of the `Bird` class and adds it in the position (200,200) on the screen `w` using the first method.
|
592
|
|
624
|
|
593
|
-```
|
|
|
|
|
625
|
+```cpp
|
594
|
MainWindow w;
|
626
|
MainWindow w;
|
595
|
Bird zumbador;
|
627
|
Bird zumbador;
|
596
|
w.addBird(200,200,zumbador);
|
628
|
w.addBird(200,200,zumbador);
|
|
|
|
|
612
|
|
644
|
|
613
|
**randInt:** The `Bird` class includes the method
|
645
|
**randInt:** The `Bird` class includes the method
|
614
|
|
646
|
|
615
|
-`int Bird::randInt(int min, int max)`
|
|
|
|
|
647
|
+```cpp
|
|
|
648
|
+int Bird::randInt(int min, int max)
|
|
|
649
|
+```
|
|
|
650
|
+
|
616
|
|
651
|
|
617
|
to generate random numbers in the range [min, max]. The method `randInt` depends on another function to generate random numbers that require a first element or *seed* to be evaluated. In this project, that first element is generated with the function call `srand(time(NULL)) ;`.
|
652
|
to generate random numbers in the range [min, max]. The method `randInt` depends on another function to generate random numbers that require a first element or *seed* to be evaluated. In this project, that first element is generated with the function call `srand(time(NULL)) ;`.
|
618
|
|
653
|
|
619
|
|
654
|
|
|
|
655
|
+
|
|
|
656
|
+!INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-01.html"
|
|
|
657
|
+
|
|
|
658
|
+!INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-02.html"
|
|
|
659
|
+
|
|
|
660
|
+!INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-03.html"
|
|
|
661
|
+
|
|
|
662
|
+!INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-04.html"
|
|
|
663
|
+
|
|
|
664
|
+!INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-05.html"
|
|
|
665
|
+
|
620
|
---
|
666
|
---
|
621
|
|
667
|
|
622
|
---
|
668
|
---
|
|
|
|
|
637
|
|
683
|
|
638
|
3. In the `main.cpp` file (in Sources) the `main` function does the following:
|
684
|
3. In the `main.cpp` file (in Sources) the `main` function does the following:
|
639
|
|
685
|
|
640
|
- a. Creates a Qt object application, called `a`. The only thing you need to know is that thanks to this object we can create a graphical application in Qt and interact with it.
|
|
|
|
|
686
|
+ a. Creates a Qt object application, called `a`. The only thing you need to know is that thanks to this object we can create a graphical application in Qt and interact with it.
|
641
|
|
687
|
|
642
|
- b. Creates an object of the MainWindow class called `w`. This object corresponds to the window that you will see when you run the application.
|
|
|
|
|
688
|
+ b. Creates an object of the MainWindow class called `w`. This object corresponds to the window that you will see when you run the application.
|
643
|
|
689
|
|
644
|
- c. Initializes the seed of Qt's random number generator. As a result of this, the new birds will have random sizes, colors and eyebrows (unless we force them to have specific values).
|
|
|
|
|
690
|
+ c. Initializes the seed of Qt's random number generator. As a result of this, the new birds will have random sizes, colors and eyebrows (unless we force them to have specific values).
|
645
|
|
691
|
|
646
|
- d. Invokes the method `show()` on the object `w`. This shows the window where the results will be displayed.
|
|
|
|
|
692
|
+ d. Invokes the method `show()` on the object `w`. This shows the window where the results will be displayed.
|
647
|
|
693
|
|
648
|
- e. In programs that don't have a graphical interface, the `main()` function usually ends with the instruction `return 0;`. In this project, the `return a.exec();` instruction is used so that the object `a` takes charge of the application from that moment on.
|
|
|
|
|
694
|
+ e. In programs that don't have a graphical interface, the `main()` function usually ends with the instruction `return 0;`. In this project, the `return a.exec();` instruction is used so that the object `a` takes charge of the application from that moment on.
|
649
|
|
695
|
|
650
|
4. Execute the program by clicking on the green arrow in the left menu on the Qt Creator window. The program should display a blank window.
|
696
|
4. Execute the program by clicking on the green arrow in the left menu on the Qt Creator window. The program should display a blank window.
|
651
|
|
697
|
|
|
|
|
|
661
|
|
707
|
|
662
|
3. Use the setters `setSize(int size)`, `setFaceColor(Qstring color)`, `setEyeColor(Qstring color)`, and `setEyebrow(EyeBrowType)` so that `abelardo` looks as in Figure 2 (its size is 200).
|
708
|
3. Use the setters `setSize(int size)`, `setFaceColor(Qstring color)`, `setEyeColor(Qstring color)`, and `setEyebrow(EyeBrowType)` so that `abelardo` looks as in Figure 2 (its size is 200).
|
663
|
|
709
|
|
664
|
- ---
|
|
|
|
|
710
|
+ ---
|
665
|
|
711
|
|
666
|
- ![figure2.png](images/figure2.png)
|
|
|
|
|
712
|
+ ![figure2.png](images/figure2.png)
|
667
|
|
713
|
|
668
|
- **Figure 2.** Abelardo.
|
|
|
|
|
714
|
+ **Figure 2.** Abelardo.
|
669
|
|
715
|
|
670
|
- ---
|
|
|
|
|
716
|
+ ---
|
671
|
|
717
|
|
672
|
4. Create another object of class Bird called `piolin` that has a blue face, green eyes and UNI eyebrows invoking the constructor `Bird(int size, EyeBrowType brow, QString faceColor, QString eyeColor, QWidget *parent = 0)`. Its size should be half of `abelardo`'s. Add it to the same window where `abelardo` is being displayed by using `w.addBird(300, 100, piolin)`, to obtain an image like the one in Figure 3
|
718
|
4. Create another object of class Bird called `piolin` that has a blue face, green eyes and UNI eyebrows invoking the constructor `Bird(int size, EyeBrowType brow, QString faceColor, QString eyeColor, QWidget *parent = 0)`. Its size should be half of `abelardo`'s. Add it to the same window where `abelardo` is being displayed by using `w.addBird(300, 100, piolin)`, to obtain an image like the one in Figure 3
|
673
|
|
719
|
|
674
|
- ---
|
|
|
|
|
720
|
+ ---
|
675
|
|
721
|
|
676
|
- ![figure3.png](images/figure3.png)
|
|
|
|
|
722
|
+ ![figure3.png](images/figure3.png)
|
677
|
|
723
|
|
678
|
- **Figure 3.** Abelardo and Piolin.
|
|
|
|
|
724
|
+ **Figure 3.** Abelardo and Piolin.
|
679
|
|
725
|
|
680
|
- ---
|
|
|
|
|
726
|
+ ---
|
681
|
|
727
|
|
682
|
5. Create two other objects called `juana` and `alondra` that will appear drawn in the coordinates (100, 300) and (300,300) respectively. Create `juana` using the default constructor so that its properties are assigned randomly. Create `alondra` using the other constructor so that you may specify its properties during its creation. `alondra` should have the same size as `juana`, have the same type of eyebrows, and the same eye color. Its face should be white. Add `alondra` and `juana` to the window where `abelardo` and `piolin` are. The window should look similar to the one in Figure 4.
|
728
|
5. Create two other objects called `juana` and `alondra` that will appear drawn in the coordinates (100, 300) and (300,300) respectively. Create `juana` using the default constructor so that its properties are assigned randomly. Create `alondra` using the other constructor so that you may specify its properties during its creation. `alondra` should have the same size as `juana`, have the same type of eyebrows, and the same eye color. Its face should be white. Add `alondra` and `juana` to the window where `abelardo` and `piolin` are. The window should look similar to the one in Figure 4.
|
683
|
|
729
|
|
684
|
- ---
|
|
|
|
|
730
|
+ ---
|
685
|
|
731
|
|
686
|
- ![figure4.png](images/figure4.png)
|
|
|
|
|
732
|
+ ![figure4.png](images/figure4.png)
|
687
|
|
733
|
|
688
|
- **Figure 4.** Abelardo, Piolin, Juana and Alondra.
|
|
|
|
|
734
|
+ **Figure 4.** Abelardo, Piolin, Juana and Alondra.
|
689
|
|
735
|
|
690
|
- ---
|
|
|
|
|
736
|
+ ---
|
691
|
|
737
|
|
692
|
6. Run the program several times making sure that `alondra` and `juana` have the same size, eyebrows and eyes.
|
738
|
6. Run the program several times making sure that `alondra` and `juana` have the same size, eyebrows and eyes.
|
693
|
|
739
|
|