Browse Source

updated sources and README

Jose Ortiz 9 years ago
parent
commit
704cb5c896
6 changed files with 156 additions and 441 deletions
  1. 91
    147
      README.md
  2. 54
    101
      bird.cpp
  3. 11
    120
      bird.h
  4. 0
    14
      filter.cpp
  5. 0
    28
      mainwindow.cpp
  6. 0
    31
      mainwindow.h

+ 91
- 147
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
 
57
 
57
 
58
 ###Clases
58
 ###Clases
59
 
59
 
60
-Una clase es un pedazo de código en donde se describe cómo serán los objetos. Se definen las variables o atributos de los datos que contendrá el objeto y las funciones o métodos que hacen algún procedimiento a los datos del objeto. Para declarar una clase debemos especificar los tipos que tendrán las variables y los prototipos de los métodos de la clase. 
61
-
62
-
63
-Si no se especifica lo contrario, los atributos y métodos definidos en una clase serán "privados". Esto quiere decir que esas variables solo se pueden acceder y cambiar por los métodos de la clase (*constructores*, *"setters"* y *"getters"*, entre otros). 
60
+Una clase es una plantilla para la creación de objetos que establece sus atributos y su comportamiento. Si no se especifica lo contrario, los atributos y métodos definidos en una clase serán "privados". Esto quiere decir que esas variables solo se pueden acceder y cambiar por los métodos de la clase (*constructores*, *"setters"* y *"getters"*, entre otros). 
64
 
61
 
65
 Lo siguiente es el esqueleto de la declaración de una clase:
62
 Lo siguiente es el esqueleto de la declaración de una clase:
66
 
63
 
108
 
105
 
109
 
106
 
110
 ```cpp
107
 ```cpp
108
+
111
 class Bird : public QWidget
109
 class Bird : public QWidget
112
 {
110
 {
113
-.
114
-.
115
-.
111
+
112
+//...
113
+
116
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
114
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
117
     
115
     
118
     int getSize() const;
116
     int getSize() const;
125
     void setEyebrow(EyeBrowType) ;
123
     void setEyebrow(EyeBrowType) ;
126
     void setFaceColor(QString) ;
124
     void setFaceColor(QString) ;
127
     void setEyeColor(QString) ;
125
     void setEyeColor(QString) ;
128
-.
129
-.
130
-.
126
+
127
+//...
128
+
131
 };
129
 };
132
 ```
130
 ```
133
 ---
131
 ---
165
 
163
 
166
 La clase `Bird` que estarás usando en la sesión de hoy tiene dos constructores (funciones sobrecargadas):
164
 La clase `Bird` que estarás usando en la sesión de hoy tiene dos constructores (funciones sobrecargadas):
167
 
165
 
168
-```cpp
169
-Bird (QWidget *parent=0)`
170
-```
166
+`Bird (QWidget *parent=0)`
171
 
167
 
172
-```cpp
173
-Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)
174
-```
168
+`Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
175
 
169
 
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. 
170
 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. 
177
 
171
 
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:
172
 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:
179
 
173
 
180
-```cpp
181
-Bird pitirre;
182
-```
174
+`Bird pitirre;`
183
 
175
 
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`.
176
 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`.
185
 
177
 
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:
178
 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:
187
 
179
 
188
-```cpp
189
-Bird guaraguao(200, Bird::UPSET, "blue", "red");
190
-```
180
+`Bird guaraguao(200, Bird::UPSET, "blue", "red");`
191
 
181
 
192
 
182
 
193
 ####"Setters" ("mutators")
183
 ####"Setters" ("mutators")
202
 
192
 
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.
193
 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.
204
 
194
 
205
-```cpp
195
+```
206
 Bird bobo;
196
 Bird bobo;
207
 bobo.setSize(333);
197
 bobo.setSize(333);
208
 ```
198
 ```
220
 
210
 
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.
211
 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.
222
 
212
 
223
-```cpp
213
+```
224
 Bird piolin;
214
 Bird piolin;
225
 cout << piolin.getSize();
215
 cout << piolin.getSize();
226
 ```
216
 ```
229
 
219
 
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
220
 **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
231
 
221
 
232
-```cpp
233
-void MainWindow::addBird(int x, int y, Bird &b)
234
-```
222
+`void MainWindow::addBird(int x, int y, Bird &b)`  
235
 
223
 
236
-```cpp
237
-void MainWindow::addBird(Bird &b)` 
238
-```
224
+`void MainWindow::addBird(Bird &b)` 
239
 
225
 
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.
226
 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.
241
 
227
 
242
 
228
 
243
 
229
 
244
 ```cpp
230
 ```cpp
231
+
245
 MainWindow w;
232
 MainWindow w;
246
 Bird zumbador;
233
 Bird zumbador;
247
 w.addBird(200,200,zumbador);
234
 w.addBird(200,200,zumbador);
264
 
251
 
265
 **randInt:** La clase `Bird` incluye el método
252
 **randInt:** La clase `Bird` incluye el método
266
 
253
 
267
-```cpp
268
-int Bird::randInt(int min, int max)
269
-```
254
+`int Bird::randInt(int min, int max)`
270
 
255
 
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)) ;`.
256
 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)) ;`.
272
 
257
 
273
 
258
 
274
 
259
 
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
-
285
 ---
260
 ---
286
 
261
 
287
 ---
262
 ---
291
 En la experiencia de laboratorio de hoy utilizarás la clase `Bird` para practicar la creación de objetos, acceder y cambiar sus atributos.
266
 En la experiencia de laboratorio de hoy utilizarás la clase `Bird` para practicar la creación de objetos, acceder y cambiar sus atributos.
292
 
267
 
293
 
268
 
294
-###Ejercicio 1
269
+###Ejercicio 1: Estudiar la clase `Bird`
295
 
270
 
296
 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.
271
 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.
297
 
272
 
303
 
278
 
304
 3. En el archivo `main.cpp` (en Sources) la función `main` hace lo siguiente:
279
 3. En el archivo `main.cpp` (en Sources) la función `main` hace lo siguiente:
305
 
280
 
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.
281
+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.
307
 
282
 
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.
283
+ b. Crea un objeto  de la clase MainWindow llamado `w`. Este objeto corresponde a la ventana que verás cuando corras la aplicación.
309
 
284
 
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).
285
+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).
311
 
286
 
312
-    d. Invoca el método `show()` al objeto `w`. Esto logra que se muestre la ventana donde se desplegarán los resultados.
287
+d. Invoca el método `show()` al objeto `w`. Esto logra que se muestre la ventana donde se desplegarán los resultados.
313
 
288
 
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.
289
+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.
315
 
290
 
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.
291
 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.
317
 
292
 
318
-###Ejercicio 2
293
+###Ejercicio 2: Crear objetos de clase `Bird` con ciertos atributos
319
 
294
 
320
-En este ejercicio crearás objetos del tipo `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.
295
+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.
321
 
296
 
322
 **Instrucciones**
297
 **Instrucciones**
323
 
298
 
327
 
302
 
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).
303
 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).
329
 
304
 
330
-    ---
305
+  
306
+  ---
331
 
307
 
332
-    ![figure2.png](images/figure2.png)
308
+  ![figure2.png](images/figure2.png)
333
 
309
 
334
-    **Figura 2.** Abelardo.
310
+  **Figura 2.** Abelardo.
335
 
311
 
336
-    ---
312
+  ---
337
 
313
 
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
339
 
314
 
340
-    ---
315
+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.
341
 
316
 
342
-    ![figure3.png](images/figure3.png)
343
 
317
 
344
-    **Figura 3.** Abelardo y Piolin.
318
+   ---
319
+
320
+  ![figure3.png](images/figure3.png)
321
+
322
+  **Figura 3.** Abelardo y Piolin.
323
+
324
+  ---
345
 
325
 
346
-    ---
347
-    
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.
326
 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.
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.
327
 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.
350
 
328
 
351
-    ---
329
+   ---
352
 
330
 
353
-    ![figure4.png](images/figure4.png)
331
+  ![figure4.png](images/figure4.png)
354
 
332
 
355
-    **Figura 4.** Abelardo, Piolín, Juana y Alondra.
333
+  **Figura 4.** Abelardo, Piolín, Juana y Alondra.
356
 
334
 
357
-    ---
335
+  ---
358
 
336
 
359
 6. Corre varias veces el programa para asegurarte que `alondra` y `juana` siguen pareciéndose en tamaño, cejas y ojos. 
337
 6. Corre varias veces el programa para asegurarte que `alondra` y `juana` siguen pareciéndose en tamaño, cejas y ojos. 
360
 
338
 
415
 
393
 
416
 1. Reviewed the following concepts:
394
 1. Reviewed the following concepts:
417
 
395
 
418
-    a. the creation of objects of a class.
396
+  a. the creation of objects of a class.
419
 
397
 
420
-    b. using the "getter" method functions to access the attributes of an object.
398
+  b. using the "getter" method functions to access the attributes of an object.
421
 
399
 
422
-    c. using the "setter" method functions to modify the attributes of an object.
400
+  c. using the "setter" method functions to modify the attributes of an object.
423
 
401
 
424
 2. Studied the documentation for the class `Bird` available in [this link.](http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html)
402
 2. Studied the documentation for the class `Bird` available in [this link.](http://ada.uprrp.edu/~ranazario/bird-html/class_bird.html)
425
 
403
 
442
 
420
 
443
 ###Classes
421
 ###Classes
444
 
422
 
445
-A class is a piece of code that describes how objects will be. The variables or data's attributes that the object will contain are defined, and the methods that carry out a procedure on the object's data. To declare a class we should specify the types that the variables and the prototypes of the methods will have.
446
-
447
-If it isn't specified otherwise, the attributes and methods defined in a class will be private. This means that the variables can only be accessed and changed by the methods of the class (*constructors*, *setters*, and *getters*, among others).
423
+A class is a template for the creation of objects that establishes its attributes and behavior. If it isn't specified otherwise, the attributes and methods defined in a class will be private. This means that the variables can only be accessed and changed by the methods of the class (*constructors*, *setters*, and *getters*, among others).
448
 
424
 
449
 The following is the skeleton of the declaration of a class:
425
 The following is the skeleton of the declaration of a class:
450
 
426
 
451
 ---
427
 ---
452
 
428
 
453
 ```cpp
429
 ```cpp
430
+
454
   class ClassName
431
   class ClassName
455
    {
432
    {
456
     // Declarations
433
     // Declarations
472
       type nameOfPublicMemFunc(type of the parameters);
449
       type nameOfPublicMemFunc(type of the parameters);
473
    };
450
    };
474
 ```
451
 ```
452
+
475
 ---
453
 ---
476
 
454
 
477
 You can see the declaration of the `Bird` class in the file `bird.h` included in this laboratory experience's program.
455
 You can see the declaration of the `Bird` class in the file `bird.h` included in this laboratory experience's program.
492
 
470
 
493
 
471
 
494
 ```cpp
472
 ```cpp
473
+
495
 class Bird : public QWidget
474
 class Bird : public QWidget
496
 {
475
 {
497
-.
498
-.
499
-.
476
+
477
+//...
478
+
500
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
479
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
501
     
480
     
502
     int getSize() const;
481
     int getSize() const;
509
     void setEyebrow(EyeBrowType) ;
488
     void setEyebrow(EyeBrowType) ;
510
     void setFaceColor(QString) ;
489
     void setFaceColor(QString) ;
511
     void setEyeColor(QString) ;
490
     void setEyeColor(QString) ;
512
-.
513
-.
514
-.
491
+
492
+//...
493
+
515
 };
494
 };
516
 ```
495
 ```
517
 
496
 
551
 
530
 
552
 The class `Bird` that you will be using in today's session has two constructors (overloaded functions):
531
 The class `Bird` that you will be using in today's session has two constructors (overloaded functions):
553
 
532
 
554
-```cpp
555
-Bird (QWidget *parent=0)
556
-```
533
+`Bird (QWidget *parent=0)`
557
 
534
 
558
-```cpp
559
-Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)
560
-```
535
+`Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
561
 
536
 
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.
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.
563
 
538
 
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:
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:
565
 
540
 
566
-```cpp
567
-Bird pitirre;
568
-```
541
+`Bird pitirre;`
569
 
542
 
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.
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.
571
 
544
 
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:
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:
573
 
546
 
574
-```cpp
575
-Bird guaraguao(200, Bird::UPSET, "blue", "red");
576
-```
547
+`Bird guaraguao(200, Bird::UPSET, "blue", "red");`
548
+
577
 
549
 
578
 ####Setters (mutators)
550
 ####Setters (mutators)
579
 
551
 
587
 
559
 
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.
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.
589
 
561
 
590
-```cpp
562
+```
591
 Bird bobo;
563
 Bird bobo;
592
 bobo.setSize(333);
564
 bobo.setSize(333);
593
 ```
565
 ```
603
 
575
 
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:
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:
605
 
577
 
606
-```cpp
578
+```
607
 Bird piolin;
579
 Bird piolin;
608
 cout << piolin.getSize();
580
 cout << piolin.getSize();
609
 ```
581
 ```
612
 
584
 
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
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
614
 
586
 
615
-```cpp
616
-void MainWindow::addBird(int x, int y, Bird &b)
617
-```
587
+`void MainWindow::addBird(int x, int y, Bird &b)`  
618
 
588
 
619
-```cpp
620
-void MainWindow::addBird(Bird &b)
621
-```
589
+`void MainWindow::addBird(Bird &b)`  
622
 
590
 
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.
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.
624
 
592
 
625
 ```cpp
593
 ```cpp
594
+
626
 MainWindow w;
595
 MainWindow w;
627
 Bird zumbador;
596
 Bird zumbador;
628
 w.addBird(200,200,zumbador);
597
 w.addBird(200,200,zumbador);
644
 
613
 
645
 **randInt:** The `Bird` class includes the method
614
 **randInt:** The `Bird` class includes the method
646
 
615
 
647
-```cpp
648
-int Bird::randInt(int min, int max)
649
-```
650
-
616
+`int Bird::randInt(int min, int max)`
651
 
617
 
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
 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)) ;`.
653
 
619
 
654
 
620
 
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
-
666
 ---
621
 ---
667
 
622
 
668
 ---
623
 ---
671
 
626
 
672
 In today's laboratory experience you will use the `Bird` class to practice the creation of objects, accessing and changing its attributes.
627
 In today's laboratory experience you will use the `Bird` class to practice the creation of objects, accessing and changing its attributes.
673
 
628
 
674
-###Exercise 1
629
+###Exercise 1: Study the `Bird` class
675
 
630
 
676
 In this exercise you will familiarize yourself with the `Bird` class and with some methods associated with the `MainWindow` class that defines the window where the results are displayed.
631
 In this exercise you will familiarize yourself with the `Bird` class and with some methods associated with the `MainWindow` class that defines the window where the results are displayed.
677
 
632
 
683
 
638
 
684
 3. In the `main.cpp` file (in Sources) the `main` function does the following:
639
 3. In the `main.cpp` file (in Sources) the `main` function does the following:
685
 
640
 
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
+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.
687
 
642
 
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
+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.
689
 
644
 
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
+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).
691
 
646
 
692
-    d. Invokes the method `show()` on the object `w`. This shows the window where the results will be displayed.
647
+d. Invokes the method `show()` on the object `w`. This shows the window where the results will be displayed.
693
 
648
 
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
+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.
695
 
650
 
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
 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.
697
 
652
 
698
-###Exercise 2
653
+###Exercise 2: Create objects of the `Bird` class with certain attributes
699
 
654
 
700
-In this exercise you will create an object of type `Bird` using the default constructor and using constructors where you define specific characteristics for the object. You will also practice the use of getters and setters to obtain and assign attributes to the objects.
655
+In this exercise you will create objects of the  `Bird` class using the default constructor and using constructors where you define specific characteristics for the object. You will also practice the use of getters and setters to obtain and assign attributes to the objects.
701
 
656
 
702
 **Instructions**
657
 **Instructions**
703
 
658
 
707
 
662
 
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
 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).
709
 
664
 
710
-    ---
665
+  ---
711
 
666
 
712
-    ![figure2.png](images/figure2.png)
667
+  ![figure2.png](images/figure2.png)
713
 
668
 
714
-    **Figure 2.** Abelardo.
669
+  **Figure 2.** Abelardo.
715
 
670
 
716
-    ---
671
+  ---
717
 
672
 
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
 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
719
 
674
 
720
-    ---
675
+  ---
721
 
676
 
722
-    ![figure3.png](images/figure3.png)
677
+  ![figure3.png](images/figure3.png)
723
 
678
 
724
-    **Figure 3.** Abelardo and Piolin.
679
+  **Figure 3.** Abelardo and Piolin.
725
 
680
 
726
-    ---
681
+  ---
727
 
682
 
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
 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.
729
 
684
 
730
-    ---
685
+  ---
731
 
686
 
732
-    ![figure4.png](images/figure4.png)
687
+  ![figure4.png](images/figure4.png)
733
 
688
 
734
-    **Figure 4.** Abelardo, Piolin, Juana and Alondra.
689
+  **Figure 4.** Abelardo, Piolin, Juana and Alondra.
735
 
690
 
736
-    ---
691
+  ---
737
 
692
 
738
 6. Run the program several times making sure that `alondra` and `juana` have the same size, eyebrows and eyes.
693
 6. Run the program several times making sure that `alondra` and `juana` have the same size, eyebrows and eyes.
739
 
694
 
752
 ##References
707
 ##References
753
 
708
 
754
 
709
 
755
-https://sites.google.com/a/wellesley.edu/wellesley-cs118-spring13/lectures-labs/lab-2
756
-
757
-
758
-
759
-
760
-
761
-
762
-
763
-
764
-
765
-
766
-
710
+https://sites.google.com/a/wellesley.edu/wellesley-cs118-spring13/lectures-labs/lab-2

+ 54
- 101
bird.cpp View File

8
 
8
 
9
 #include "bird.h"
9
 #include "bird.h"
10
 
10
 
11
-/// \fn Bird::Bird(QWidget *parent)
12
-/// \~English
13
-/// \brief Default constructor. The properties of the bird are set as follows:
14
-/// size: set to random value of either 50, 100, 150 or 200
11
+///
12
+/// Default constructor. The properties of the bird are set as follows:
13
+/// * size: set to random value of either 50, 100, 150 or 200
15
 /// * eyeBrow: set randomly to one of the five possible values
14
 /// * eyeBrow: set randomly to one of the five possible values
16
 /// * color and eColor: set randomly to one of the five possible colors: 
15
 /// * color and eColor: set randomly to one of the five possible colors: 
17
 /// "green", "blue", "red", "yellow", "white"
16
 /// "green", "blue", "red", "yellow", "white"
18
-/// \~Spanish
19
-/// \brief Constructor por defecto. Las propiedades de el pajaron son ajustados como sigue:
20
-/// * eyeBrow: ajustado aleatoriamente a uno de los 5 posibles valores
21
-/// * color y eColor: ajustao aleatoriamente a uno de los 5 posibles colores:
22
-/// "verde", "azul", "rojo", "amarillo", "blanco"
23
 ///
17
 ///
24
 Bird::Bird(QWidget *parent) :
18
 Bird::Bird(QWidget *parent) :
25
     QWidget(parent)
19
     QWidget(parent)
35
     setStyleSheet("background:transparent;");
29
     setStyleSheet("background:transparent;");
36
 }
30
 }
37
 
31
 
38
-/// \fn Bird::Bird(int s, EyeBrowType eb, QString col, QString eye, QWidget *parent)
39
-/// \~English
40
-/// \brief Constructor which accepts specification of the attributes of the bird
41
-/// \param s size
42
-/// \param eb eyeBrow
43
-/// \param col (faceColor)
44
-/// \param eye (eyeColor)
45
-/// \~Spanish
46
-/// \brief Constructor que acepta especificaciones de los atributos del pajaro
47
-/// \param s tamaño
48
-/// \param eb cejas
49
-/// \param col color de la cara
50
-/// \param eye color del ojo
32
+///
33
+/// Constructor which accepts specification for s (size), eb (eyeBrow),
34
+/// col (faceColor), eye (eyeColor)
35
+///
51
 Bird::Bird(int s, EyeBrowType eb, QString col, QString eye, QWidget *parent):
36
 Bird::Bird(int s, EyeBrowType eb, QString col, QString eye, QWidget *parent):
52
     QWidget(parent)
37
     QWidget(parent)
53
 {
38
 {
58
     setStyleSheet("background:transparent;");
43
     setStyleSheet("background:transparent;");
59
 }
44
 }
60
 
45
 
61
-/// \fn QString  Bird::getEyeColor()
62
-/// \~English
63
-/// \brief Getter for the eyeColor.
64
-/// \~Spanish
65
-/// \brief Devuelve el color del ojo.
66
-QString  Bird::getEyeColor() const{
46
+///
47
+/// Getter for the eyeColor.
48
+///
49
+QString  Bird::getEyeColor(){
67
     return eColor ;
50
     return eColor ;
68
 }
51
 }
69
 
52
 
70
-/// \fn QString  Bird::getFaceColor()
71
-/// \~English
72
-/// \brief Getter for the faceColor.
73
-/// \~Spanish
74
-/// \brief Devuelve el color de la cara.
75
-QString  Bird::getFaceColor() const{
53
+///
54
+/// Getter for the faceColor.
55
+///
56
+QString  Bird::getFaceColor(){
76
     return color ;
57
     return color ;
77
 }
58
 }
78
 
59
 
79
-/// \fn void  Bird::setEyeColor(QString eye)
80
-/// \~English
81
-/// \brief Setter for the eyeColor.
82
-/// \param eye eyeColor
83
-/// \~Spanish
84
-/// \brief Ajusta el color del ojo
85
-/// \param eje color del ojo
60
+///
61
+/// Setter for the eyeColor.
62
+///
86
 void  Bird::setEyeColor(QString eye){
63
 void  Bird::setEyeColor(QString eye){
87
     eColor = eye ;
64
     eColor = eye ;
88
 }
65
 }
89
 
66
 
90
-/// \fn void  Bird::setFaceColor(QString col)
91
-/// \~English
92
-/// \brief Setter for the face color.
93
-/// \param col face Color
94
-/// \~Spanish
95
-/// \brief Ajusta el color de la cara
96
-/// \param col color de la cara
67
+///
68
+/// Setter for the faceColor.
69
+///
97
 void  Bird::setFaceColor(QString col){
70
 void  Bird::setFaceColor(QString col){
98
     color =   col;
71
     color =   col;
99
 }
72
 }
100
 
73
 
101
-/// \fn int Bird::getSize()
102
-/// \~English
103
-/// \brief Getter for the bird size.
104
-/// \~Spanish
105
-/// \brief Devuelve el tamano del pajaro.
106
-int Bird::getSize() const{
74
+///
75
+/// Getter for the size.
76
+///
77
+int Bird::getSize(){
107
     return size ;
78
     return size ;
108
 }
79
 }
109
 
80
 
110
-/// \fn int Bird::getEyeBrow()
111
-/// \~English
112
-/// \brief Getter for the bird eyeBrow type
113
-/// \~Spanish
114
-/// \brief Devuelve el tipo de ceja
115
-Bird::EyeBrowType Bird::getEyebrow() const{
81
+///
82
+/// Getter for the Eyebrow.
83
+///
84
+Bird::EyeBrowType Bird::getEyebrow(){
116
     return eyeBrow ;
85
     return eyeBrow ;
117
 }
86
 }
118
 
87
 
119
-/// \fn void  Bird::setSize(int s)
120
-/// \~English
121
-/// \brief Setter for the bird size.
122
-/// \param s bird size
123
-/// \~Spanish
124
-/// \brief Ajusta el tamano del pajaro
125
-/// \param s tamano del pajaro
88
+///
89
+/// Setter for the size.
90
+///
126
 void Bird::setSize(int s){
91
 void Bird::setSize(int s){
127
-    if(s <= 100 || s > 300)
128
-        size = 100 ;
129
-    else size = s;
92
+  //  if(s <= 100 || s > 300)
93
+  //     size = 100 ;
94
+  //  else
95
+    size = s;
130
     resize(size + 2, size + 2) ;
96
     resize(size + 2, size + 2) ;
131
 }
97
 }
132
 
98
 
133
-/// \fn void  Bird::setEyebrow(QString eye)
134
-/// \~English
135
-/// \brief Setter for the eyebrow type.
136
-/// \param eb eyebrow type
137
-/// \~Spanish
138
-/// \brief Ajusta el tipo de cejas
139
-/// \param eb tipo de ceja
99
+///
100
+/// Setter for the Eyebrow.
101
+///
140
 void Bird::setEyebrow(EyeBrowType eb){
102
 void Bird::setEyebrow(EyeBrowType eb){
141
     if(eb < 0 || eb > 3)
103
     if(eb < 0 || eb > 3)
142
         eyeBrow = UNI ;
104
         eyeBrow = UNI ;
143
     else eyeBrow = eb;
105
     else eyeBrow = eb;
144
 }
106
 }
145
 
107
 
146
-/// \fn Qt::GlobalColor Bird::getColor(QString color)
147
-/// \~English
148
-/// \brief Converts a color specified as string to a Qt::GlobalColor
149
-/// \param color string with a color
150
-/// \~Spanish
151
-/// \brief Convierte un color especificado como un string a un Qt::GlobalColor
152
-/// \param color cadena de caracteres de un color
153
-Qt::GlobalColor Bird::getColor(QString color) const{
108
+///
109
+/// Converts a color specified as string to a Qt::GlobalColor
110
+///
111
+Qt::GlobalColor Bird::getColor(QString color){
154
 
112
 
155
     if(color=="red")
113
     if(color=="red")
156
         return Qt::red ;
114
         return Qt::red ;
165
 
123
 
166
 }
124
 }
167
 
125
 
168
-/// \fn int Bird::randInt(int min, int max)
169
-/// \~English
170
-/// \brief Generates a random integer in the range [min, max]
171
-/// \param min minimum random value
172
-/// \param max maximum random value
173
-/// \~Spanish
174
-/// \brief Genera un entero aleatorio en el rango [min, max]
175
-/// \param min valor aleatorio minimo
176
-/// \param max valor aleatorio maximo
126
+///
127
+/// Generates a random integer in the range [min, max]
177
 ///
128
 ///
178
 int Bird::randInt(int min, int max){
129
 int Bird::randInt(int min, int max){
179
     return qrand() % ((max +1 )- min) +  min ;
130
     return qrand() % ((max +1 )- min) +  min ;
180
 }
131
 }
181
 
132
 
133
+///
134
+/// Assignment operator
135
+///
136
+Bird & Bird::operator=(Bird &b) {
137
+    return *this;
138
+}
182
 
139
 
183
-/// \fn void Bird::paintEvent(QPaintEvent *event)
184
-/// \~English
185
-/// \brief This function is automatically invoked each time the widget or
140
+///
141
+/// This function is automatically invoked each time the widget or 
186
 /// its parent receives a repaint signal.
142
 /// its parent receives a repaint signal.
187
-/// \~Spanish
188
-/// \brief Esta funcion es invocada automaticamente cada ves que el widget
189
-/// o su padre recive una senal de repintar.
190
 ///
143
 ///
191
-void Bird::paintEvent(QPaintEvent *) {
144
+void Bird::paintEvent(QPaintEvent *event) {
192
     QPainter p(this);
145
     QPainter p(this);
193
 
146
 
194
     QPen outlinePen(Qt::black);
147
     QPen outlinePen(Qt::black);

+ 11
- 120
bird.h View File

27
         BUSHY   /**< enum value 3 */
27
         BUSHY   /**< enum value 3 */
28
     };
28
     };
29
     
29
     
30
-    /// \fn Bird::Bird(QWidget *parent)
31
-    /// \~English
32
-    /// \brief Default constructor. The properties of the bird are set as follows:
33
-    /// size: set to random value of either 50, 100, 150 or 200
34
-    /// * eyeBrow: set randomly to one of the five possible values
35
-    /// * color and eColor: set randomly to one of the five possible colors:
36
-    /// "green", "blue", "red", "yellow", "white"
37
-    /// \~Spanish
38
-    /// \brief Constructor por defecto. Las propiedades de el pajaron son ajustados como sigue:
39
-    /// * eyeBrow: ajustado aleatoriamente a uno de los 5 posibles valores
40
-    /// * color y eColor: ajustao aleatoriamente a uno de los 5 posibles colores:
41
-    /// "verde", "azul", "rojo", "amarillo", "blanco"
42
-    ///
43
     explicit Bird(QWidget *parent = 0);
30
     explicit Bird(QWidget *parent = 0);
44
-
45
-    /// \fn Bird::Bird(int s, EyeBrowType eb, QString col, QString eye, QWidget *parent)
46
-    /// \~English
47
-    /// \brief Constructor which accepts specification of the attributes of the bird
48
-    /// \param s size
49
-    /// \param eb eyeBrow
50
-    /// \param col (faceColor)
51
-    /// \param eye (eyeColor)
52
-    /// \~Spanish
53
-    /// \brief Constructor que acepta especificaciones de los atributos del pajaro
54
-    /// \param s tamaño
55
-    /// \param eb cejas
56
-    /// \param col color de la cara
57
-    /// \param eye color del ojo
58
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
31
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
59
-
60
-    /// \fn QString  Bird::getEyeColor()
61
-    /// \~English
62
-    /// \brief Getter for the eyeColor.
63
-    /// \~Spanish
64
-    /// \brief Devuelve el color del ojo.
65
-    QString  getEyeColor() const;
66
-
67
-    /// \fn QString  Bird::getFaceColor()
68
-    /// \~English
69
-    /// \brief Getter for the faceColor.
70
-    /// \~Spanish
71
-    /// \brief Devuelve el color de la cara.
72
-    QString  getFaceColor() const;
73
-
74
-    /// \fn void  Bird::setEyeColor(QString eye)
75
-    /// \~English
76
-    /// \brief Setter for the eyeColor.
77
-    /// \param eye eyeColor
78
-    /// \~Spanish
79
-    /// \brief Ajusta el color del ojo
80
-    /// \param eje color del ojo
81
-    ///
32
+    QString  getEyeColor() ;
33
+    QString  getFaceColor() ;
82
     void  setEyeColor(QString) ;
34
     void  setEyeColor(QString) ;
83
-
84
-    /// \fn void  Bird::setFaceColor(QString col)
85
-    /// \~English
86
-    /// \brief Setter for the face color.
87
-    /// \param col face Color
88
-    /// \~Spanish
89
-    /// \brief Ajusta el color de la cara
90
-    /// \param col color de la cara
91
     void  setFaceColor(QString) ;
35
     void  setFaceColor(QString) ;
92
-
93
-    /// \fn int Bird::getSize()
94
-    /// \~English
95
-    /// \brief Getter for the bird size.
96
-    /// \~Spanish
97
-    /// \brief Devuelve el tamano del pajaro.
98
-    int getSize() const ;
99
-
100
-    /// \fn int Bird::getEyeBrow()
101
-    /// \~English
102
-    /// \brief Getter for the bird eyeBrow type
103
-    /// \~Spanish
104
-    /// \brief Devuelve el tipo de ceja
105
-    EyeBrowType getEyebrow() const;
106
-
107
-    /// \fn void  Bird::setSize(int s)
108
-    /// \~English
109
-    /// \brief Setter for the bird size.
110
-    /// \param s bird size
111
-    /// \~Spanish
112
-    /// \brief Ajusta el tamano del pajaro
113
-    /// \param s tamano del pajaro
36
+    int getSize() ;
37
+    EyeBrowType getEyebrow() ;
114
     void setSize(int) ;
38
     void setSize(int) ;
115
-
116
-    /// \fn void  Bird::setEyebrow(QString eye)
117
-    /// \~English
118
-    /// \brief Setter for the eyebrow type.
119
-    /// \param eb eyebrow type
120
-    /// \~Spanish
121
-    /// \brief Ajusta el tipo de cejas
122
-    /// \param eb tipo de ceja
123
     void setEyebrow(EyeBrowType) ;
39
     void setEyebrow(EyeBrowType) ;
40
+    Qt::GlobalColor getColor(QString) ;
124
 
41
 
125
-    /// \fn Qt::GlobalColor Bird::getColor(QString color)
126
-    /// \~English
127
-    /// \brief Converts a color specified as string to a Qt::GlobalColor
128
-    /// \param color string with a color
129
-    /// \~Spanish
130
-    /// \brief Convierte un color especificado como un string a un Qt::GlobalColor
131
-    /// \param color cadena de caracteres de un color
132
-    Qt::GlobalColor getColor(QString) const;
133
-
42
+    Bird & operator=(Bird &b);
134
 signals:
43
 signals:
135
 
44
 
136
 public slots:
45
 public slots:
137
 
46
 
138
 protected:
47
 protected:
139
-    /// \fn void Bird::paintEvent(QPaintEvent *event)
140
-    /// \~English
141
-    /// \brief This function is automatically invoked each time the widget or
142
-    /// its parent receives a repaint signal.
143
-    /// \~Spanish
144
-    /// \brief Esta funcion es invocada automaticamente cada ves que el widget
145
-    /// o su padre recive una senal de repintar.
146
-    void paintEvent(QPaintEvent *);
48
+    void paintEvent(QPaintEvent *event);
147
 
49
 
148
 private:
50
 private:
149
-    int size ; /**< size of the bird*/
150
-    EyeBrowType eyeBrow ; /**< eyebrow type (ceja)*/
151
-    QString color ; /**< face color  (cara)*/
152
-    QString eColor ; /**< eye color (ojos)*/
153
-
154
-    /// \fn int Bird::randInt(int min, int max)
155
-    /// \~English
156
-    /// \brief Generates a random integer in the range [min, max]
157
-    /// \param min minimum random value
158
-    /// \param max maximum random value
159
-    /// \~Spanish
160
-    /// \brief Genera un entero aleatorio en el rango [min, max]
161
-    /// \param min valor aleatorio minimo
162
-    /// \param max valor aleatorio maximo
163
-    ///
51
+    int size ;
52
+    EyeBrowType eyeBrow ;
53
+    QString color ;
54
+    QString eColor ;
164
     int randInt(int min, int max) ;
55
     int randInt(int min, int max) ;
165
 };
56
 };
166
 
57
 

+ 0
- 14
filter.cpp View File

1
 #include "bird.h"
1
 #include "bird.h"
2
-
3
-/// \file
4
-
5
-/// \fn void FilterBirds(Bird birds[], int N)
6
-/// \~English
7
-/// \brief Funtion that receives an array with birds and only shows
8
-/// the birds that pass a filter.
9
-/// \param birds Array of birds.
10
-/// \param N number of birds.
11
-/// \~Spanish
12
-/// \brief Funcion que recibe un arreglo de pajaros (tipo Bird) y solo demuestra
13
-/// los pajaros que pasan el filtro.
14
-/// \param birds arreglo de pajaros (tipo Bird).
15
-/// \param N numero de pajaros.
16
 void FilterBirds(Bird birds[], int N){
2
 void FilterBirds(Bird birds[], int N){
17
 
3
 
18
     for(int i = 0; i < N; i++){
4
     for(int i = 0; i < N; i++){

+ 0
- 28
mainwindow.cpp View File

5
 #include "mainwindow.h"
5
 #include "mainwindow.h"
6
 #include "ui_mainwindow.h"
6
 #include "ui_mainwindow.h"
7
 
7
 
8
-/// \fn MainWindow::MainWindow(QWidget *parent)
9
-/// \~English
10
-/// \brief Constructor
11
-/// \~Spanish
12
-/// \brief Constructor
13
 MainWindow::MainWindow(QWidget *parent) :
8
 MainWindow::MainWindow(QWidget *parent) :
14
     QMainWindow(parent),
9
     QMainWindow(parent),
15
     ui(new Ui::MainWindow)
10
     ui(new Ui::MainWindow)
23
     ui->mainView->setAlignment((Qt::AlignLeft | Qt::AlignTop));
18
     ui->mainView->setAlignment((Qt::AlignLeft | Qt::AlignTop));
24
 }
19
 }
25
 
20
 
26
-/// \fn MainWindow::~MainWindow(QWidget *parent)
27
-/// \~English
28
-/// \brief Destructor
29
-/// \~Spanish
30
-/// \brief Destructor
31
 MainWindow::~MainWindow()
21
 MainWindow::~MainWindow()
32
 {
22
 {
33
     delete ui;
23
     delete ui;
34
     delete scene;
24
     delete scene;
35
 }
25
 }
36
 
26
 
37
-/// \fn void MainWindow::addBird(int x, int y, Bird &b)
38
-/// \~English
39
-/// \brief Paints a bird into the MainWindow
40
-/// \param x X coordinate of the Main Window
41
-/// \param y Y coordinate of the Main Window
42
-/// \param b Bird object to be painted
43
-/// \~Spanish
44
-/// \brief Pinta un pajaro en la pantalla principal
45
-/// \param x Coordenada X de la pantalla principal
46
-/// \param y Coordenada Y de la pantalla principal
47
-/// \param b Objecto Bird a ser pintado
48
 void MainWindow::addBird(int x, int y, Bird &b){
27
 void MainWindow::addBird(int x, int y, Bird &b){
49
     scene->addWidget(&b) ;
28
     scene->addWidget(&b) ;
50
     b.move(x,y) ;
29
     b.move(x,y) ;
51
 }
30
 }
52
 
31
 
53
-/// \fn void MainWindow::addBird(Bird &b)
54
-/// \~English
55
-/// \brief Paints a bird into the MainWindow
56
-/// \param b Bird object to be painted
57
-/// \~Spanish
58
-/// \brief Pinta un pajaro en la pantalla principal
59
-/// \param b Objecto Bird a ser pintado
60
 void MainWindow::addBird(Bird &b){
32
 void MainWindow::addBird(Bird &b){
61
     scene->addWidget(&b) ;
33
     scene->addWidget(&b) ;
62
 }
34
 }

+ 0
- 31
mainwindow.h View File

14
     Q_OBJECT
14
     Q_OBJECT
15
 
15
 
16
 public:
16
 public:
17
-    /// \fn MainWindow::MainWindow(QWidget *parent)
18
-    /// \~English
19
-    /// \brief Constructor
20
-    /// \~Spanish
21
-    /// \brief Constructor
22
     explicit MainWindow(QWidget *parent = 0);
17
     explicit MainWindow(QWidget *parent = 0);
23
-
24
-    /// \fn MainWindow::~MainWindow(QWidget *parent)
25
-    /// \~English
26
-    /// \brief Destructor
27
-    /// \~Spanish
28
-    /// \brief Destructor
29
     ~MainWindow();
18
     ~MainWindow();
30
-
31
-    /// \fn void MainWindow::addBird(int x, int y, Bird &b)
32
-    /// \~English
33
-    /// \brief Paints a bird into the MainWindow
34
-    /// \param x X coordinate of the Main Window
35
-    /// \param y Y coordinate of the Main Window
36
-    /// \param b Bird object to be painted
37
-    /// \~Spanish
38
-    /// \brief Pinta un pajaro en la pantalla principal
39
-    /// \param x Coordenada X de la pantalla principal
40
-    /// \param y Coordenada Y de la pantalla principal
41
-    /// \param b Objecto Bird a ser pintado
42
     void addBird(int x, int y, Bird &b) ;
19
     void addBird(int x, int y, Bird &b) ;
43
-
44
-    /// \fn void MainWindow::addBird(Bird &b)
45
-    /// \~English
46
-    /// \brief Paints a bird into the MainWindow
47
-    /// \param b Bird object to be painted
48
-    /// \~Spanish
49
-    /// \brief Pinta un pajaro en la pantalla principal
50
-    /// \param b Objecto Bird a ser pintado
51
     void addBird(Bird &b) ;
20
     void addBird(Bird &b) ;
52
 
21
 
53
 private:
22
 private: