Browse Source

Added diagnostic questions

Rafael Arce Nazario 9 years ago
parent
commit
86bce93ea8
1 changed files with 115 additions and 69 deletions
  1. 115
    69
      README.md

+ 115
- 69
README.md View File

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