瀏覽代碼

updated sources and README

Jose Ortiz 9 年之前
父節點
當前提交
704cb5c896
共有 6 個檔案被更改,包括 156 行新增441 行删除
  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 查看文件

@@ -28,11 +28,11 @@ Antes de llegar al laboratorio debes:
28 28
 
29 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 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,10 +57,7 @@ Dale un vistazo a la documentación de la clase `Bird` que se encuentra en http:
57 57
 
58 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 62
 Lo siguiente es el esqueleto de la declaración de una clase:
66 63
 
@@ -108,11 +105,12 @@ Los métodos de una clase determinan qué acciones podemos tomar sobre los objet
108 105
 
109 106
 
110 107
 ```cpp
108
+
111 109
 class Bird : public QWidget
112 110
 {
113
-.
114
-.
115
-.
111
+
112
+//...
113
+
116 114
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
117 115
     
118 116
     int getSize() const;
@@ -125,9 +123,9 @@ class Bird : public QWidget
125 123
     void setEyebrow(EyeBrowType) ;
126 124
     void setFaceColor(QString) ;
127 125
     void setEyeColor(QString) ;
128
-.
129
-.
130
-.
126
+
127
+//...
128
+
131 129
 };
132 130
 ```
133 131
 ---
@@ -165,29 +163,21 @@ El encabezado de la función será algo así:
165 163
 
166 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 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 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 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 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 183
 ####"Setters" ("mutators")
@@ -202,7 +192,7 @@ Las clases proveen métodos para modificar los valores de los atributos de un ob
202 192
 
203 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 196
 Bird bobo;
207 197
 bobo.setSize(333);
208 198
 ```
@@ -220,7 +210,7 @@ Las clases también proveen métodos para acceder  ("get") el valor del atributo
220 210
 
221 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 214
 Bird piolin;
225 215
 cout << piolin.getSize();
226 216
 ```
@@ -229,19 +219,16 @@ cout << piolin.getSize();
229 219
 
230 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 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 230
 ```cpp
231
+
245 232
 MainWindow w;
246 233
 Bird zumbador;
247 234
 w.addBird(200,200,zumbador);
@@ -264,24 +251,12 @@ w.addBird(200,200,zumbador);
264 251
 
265 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 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,7 +266,7 @@ para generar números enteros aleatorios ("random") en el rango [min, max]. El m
291 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 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,21 +278,21 @@ En este ejercicio te familiarizarás con la clase `Bird` y con algunos métodos
303 278
 
304 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 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 297
 **Instrucciones**
323 298
 
@@ -327,34 +302,37 @@ En este ejercicio crearás objetos del tipo `Bird` usando el constructor por def
327 302
 
328 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 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 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 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,11 +393,11 @@ Before the lab session each student should have:
415 393
 
416 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 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,15 +420,14 @@ Take a look at the documentation of the `Bird` class which can be found in [this
442 420
 
443 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 425
 The following is the skeleton of the declaration of a class:
450 426
 
451 427
 ---
452 428
 
453 429
 ```cpp
430
+
454 431
   class ClassName
455 432
    {
456 433
     // Declarations
@@ -472,6 +449,7 @@ The following is the skeleton of the declaration of a class:
472 449
       type nameOfPublicMemFunc(type of the parameters);
473 450
    };
474 451
 ```
452
+
475 453
 ---
476 454
 
477 455
 You can see the declaration of the `Bird` class in the file `bird.h` included in this laboratory experience's program.
@@ -492,11 +470,12 @@ The methods of a class determine the actions that we can take on the objects of
492 470
 
493 471
 
494 472
 ```cpp
473
+
495 474
 class Bird : public QWidget
496 475
 {
497
-.
498
-.
499
-.
476
+
477
+//...
478
+
500 479
     Bird(int , EyeBrowType , QString , QString, QWidget *parent = 0) ;
501 480
     
502 481
     int getSize() const;
@@ -509,9 +488,9 @@ class Bird : public QWidget
509 488
     void setEyebrow(EyeBrowType) ;
510 489
     void setFaceColor(QString) ;
511 490
     void setEyeColor(QString) ;
512
-.
513
-.
514
-.
491
+
492
+//...
493
+
515 494
 };
516 495
 ```
517 496
 
@@ -551,29 +530,22 @@ The function header will be like this:
551 530
 
552 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 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 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 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 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 550
 ####Setters (mutators)
579 551
 
@@ -587,7 +559,7 @@ Classes provide methods to modify the values of the attributes of an objected th
587 559
 
588 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 563
 Bird bobo;
592 564
 bobo.setSize(333);
593 565
 ```
@@ -603,7 +575,7 @@ Classes also provide methods to access (get) the value of the attribute of an ob
603 575
 
604 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 579
 Bird piolin;
608 580
 cout << piolin.getSize();
609 581
 ```
@@ -612,17 +584,14 @@ cout << piolin.getSize();
612 584
 
613 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 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 593
 ```cpp
594
+
626 595
 MainWindow w;
627 596
 Bird zumbador;
628 597
 w.addBird(200,200,zumbador);
@@ -644,25 +613,11 @@ w.addBird(200,200,zumbador);
644 613
 
645 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 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,7 +626,7 @@ to generate random numbers in the range [min, max]. The method `randInt` depends
671 626
 
672 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 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,21 +638,21 @@ In this exercise you will familiarize yourself with the `Bird` class and with so
683 638
 
684 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 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 657
 **Instructions**
703 658
 
@@ -707,33 +662,33 @@ In this exercise you will create an object of type `Bird` using the default cons
707 662
 
708 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 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 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 693
 6. Run the program several times making sure that `alondra` and `juana` have the same size, eyebrows and eyes.
739 694
 
@@ -752,15 +707,4 @@ Use "Deliverables" in Moodle to hand in the `main.cpp` file that contains the fu
752 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 查看文件

@@ -8,18 +8,12 @@
8 8
 
9 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 14
 /// * eyeBrow: set randomly to one of the five possible values
16 15
 /// * color and eColor: set randomly to one of the five possible colors: 
17 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 18
 Bird::Bird(QWidget *parent) :
25 19
     QWidget(parent)
@@ -35,19 +29,10 @@ Bird::Bird(QWidget *parent) :
35 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 36
 Bird::Bird(int s, EyeBrowType eb, QString col, QString eye, QWidget *parent):
52 37
     QWidget(parent)
53 38
 {
@@ -58,99 +43,72 @@ Bird::Bird(int s, EyeBrowType eb, QString col, QString eye, QWidget *parent):
58 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 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 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 63
 void  Bird::setEyeColor(QString eye){
87 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 70
 void  Bird::setFaceColor(QString col){
98 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 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 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 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 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 102
 void Bird::setEyebrow(EyeBrowType eb){
141 103
     if(eb < 0 || eb > 3)
142 104
         eyeBrow = UNI ;
143 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 113
     if(color=="red")
156 114
         return Qt::red ;
@@ -165,30 +123,25 @@ Qt::GlobalColor Bird::getColor(QString color) const{
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 129
 int Bird::randInt(int min, int max){
179 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 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 145
     QPainter p(this);
193 146
 
194 147
     QPen outlinePen(Qt::black);

+ 11
- 120
bird.h 查看文件

@@ -27,140 +27,31 @@ public:
27 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 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 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 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 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 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 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 43
 signals:
135 44
 
136 45
 public slots:
137 46
 
138 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 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 55
     int randInt(int min, int max) ;
165 56
 };
166 57
 

+ 0
- 14
filter.cpp 查看文件

@@ -1,18 +1,4 @@
1 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 2
 void FilterBirds(Bird birds[], int N){
17 3
 
18 4
     for(int i = 0; i < N; i++){

+ 0
- 28
mainwindow.cpp 查看文件

@@ -5,11 +5,6 @@
5 5
 #include "mainwindow.h"
6 6
 #include "ui_mainwindow.h"
7 7
 
8
-/// \fn MainWindow::MainWindow(QWidget *parent)
9
-/// \~English
10
-/// \brief Constructor
11
-/// \~Spanish
12
-/// \brief Constructor
13 8
 MainWindow::MainWindow(QWidget *parent) :
14 9
     QMainWindow(parent),
15 10
     ui(new Ui::MainWindow)
@@ -23,40 +18,17 @@ MainWindow::MainWindow(QWidget *parent) :
23 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 21
 MainWindow::~MainWindow()
32 22
 {
33 23
     delete ui;
34 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 27
 void MainWindow::addBird(int x, int y, Bird &b){
49 28
     scene->addWidget(&b) ;
50 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 32
 void MainWindow::addBird(Bird &b){
61 33
     scene->addWidget(&b) ;
62 34
 }

+ 0
- 31
mainwindow.h 查看文件

@@ -14,40 +14,9 @@ class MainWindow : public QMainWindow
14 14
     Q_OBJECT
15 15
 
16 16
 public:
17
-    /// \fn MainWindow::MainWindow(QWidget *parent)
18
-    /// \~English
19
-    /// \brief Constructor
20
-    /// \~Spanish
21
-    /// \brief Constructor
22 17
     explicit MainWindow(QWidget *parent = 0);
23
-
24
-    /// \fn MainWindow::~MainWindow(QWidget *parent)
25
-    /// \~English
26
-    /// \brief Destructor
27
-    /// \~Spanish
28
-    /// \brief Destructor
29 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 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 20
     void addBird(Bird &b) ;
52 21
 
53 22
 private: