Browse Source

Como en el libro

Luis Albertorio 8 years ago
parent
commit
1a9ff41dec
2 changed files with 40 additions and 48 deletions
  1. 27
    22
      README-en.md
  2. 13
    26
      README-es.md

+ 27
- 22
README-en.md View File

1
-
2
 # Using Objects in C++ - Birds
1
 # Using Objects in C++ - Birds
3
 
2
 
4
 
3
 
5
 ![](images/headerBirds.png)
4
 ![](images/headerBirds.png)
6
 
5
 
7
-<p> </p>
8
 
6
 
9
-Up to now we've seen how to use variables to store and manipulate data of certain types and how to structure programs by dividing their tasks into functions. An *object* is an entity that it is used in many programming languages to integrate the data and the code that operates on it, simplifying the modification of large programs. In today’s laboratory experience you will use a class called `Bird` to practice some basic skills in C++ to create and manipulate objects.
7
+[version 2016.02.10]
8
+
9
+Up to now we've seen how to use variables to store and manipulate data of certain types and how to structure programs by dividing their tasks into functions. An *object* is an entity that is used in many programming languages to integrate the data and the code that operates on it, simplifying the modification of large programs. In today’s laboratory experience you will use a class called `Bird` to practice some basic skills in C++ to create and manipulate objects.
10
 
10
 
11
 
11
 
12
 
12
 
13
 ##Objectives:
13
 ##Objectives:
14
 
14
 
15
 1. Create objects from a class.
15
 1. Create objects from a class.
16
-2. Manipulate attributes of the objects using their "getter" and "setter" method functions.
16
+2. Analyze the declaration of a class to understand how to create and manipulate objects of the class.
17
+3. Practice the creation and manipulation of objects, and the invocation of "setters" and "getters".
17
 
18
 
18
 
19
 
19
 ##Pre-Lab:
20
 ##Pre-Lab:
20
 
21
 
21
-Before the lab session each student should have:
22
+Before arriving to the laboratory you should have:
22
 
23
 
23
 1. Reviewed the following concepts:
24
 1. Reviewed the following concepts:
24
 
25
 
28
 
29
 
29
   c. using the "setter" method functions to modify the attributes of an object.
30
   c. using the "setter" method functions to modify the attributes of an object.
30
 
31
 
31
-2. Studied the documentation for the class `Bird` available in the documentation for this project (`eip/objetcs-birds/doc/es/html/class_bird.html`).
32
+2. Studied the documentation for the class `Bird` available in the documentation for this project (`objects-birds/doc/en/html/class_bird.html`).
32
 
33
 
33
 3. Studied the concepts and instructions for the laboratory session.
34
 3. Studied the concepts and instructions for the laboratory session.
34
 
35
 
35
-4. Taken the Pre-Lab quiz that can be found in Moodle.
36
 
36
 
37
 ---
37
 ---
38
 
38
 
41
 
41
 
42
 ##Classes and objects in C++
42
 ##Classes and objects in C++
43
 
43
 
44
-An *object* es an entity that contains data and procedures to manipulate them. Similar to how each variable has a *type* of data associated to it, each object has a *class* associated that describes the properties of the objects: its data (*attributes*), and the procedures that can be used to manipulate its data (*methods*).
44
+An *object* is an entity that contains data and procedures to manipulate them. Similar to how each variable has a *type* of data associated to it, each object has a *class* associated that describes the properties of the objects: its data (*attributes*), and the procedures that can be used to manipulate its data (*methods*).
45
 
45
 
46
 To define and use an object it is not necessary to know all of the details about the methods of the object, but you must know how to create it and how to interact with it. The necessary  information is available in the class' documentation. Before creating objects of any class we should familiarize ourselves with its documentation. The documentation indicates, among other things, what entity is trying to be represented in the class, and its interface or methods available to manipulate the objects of the class.
46
 To define and use an object it is not necessary to know all of the details about the methods of the object, but you must know how to create it and how to interact with it. The necessary  information is available in the class' documentation. Before creating objects of any class we should familiarize ourselves with its documentation. The documentation indicates, among other things, what entity is trying to be represented in the class, and its interface or methods available to manipulate the objects of the class.
47
 
47
 
48
-Take a look at the documentation for the `Bird` class which can be found in the documentation for this project (`eip/objetcs-birds/doc/es/html/class_bird.html`).
48
+Take a look at the documentation for the `Bird` class which can be found in the documentation for this project (`objects-birds/doc/en/html/class_bird.html`).
49
 
49
 
50
 ###Classes
50
 ###Classes
51
 
51
 
89
 
89
 
90
 `ClassName objectName(arguments);`
90
 `ClassName objectName(arguments);`
91
 
91
 
92
-The creation  of the objects is done by functions called `constructors` that will be explained later. By creating an object we have available the methods of the class that the object belongs to.
92
+The creation  of the objects is done by functions called `constructors` that will be explained later. Once we have created an object, we can interact with it using the methods that belong to the class.
93
 
93
 
94
 ###Methods of a class
94
 ###Methods of a class
95
 
95
 
147
 
147
 
148
 The first methods of a class that we should understand are the *constructors*. A class can have multiple constructors. One of the constructors will be invoked automatically each time an object of that class is created. In most of the cases, the constructors are used to initialize the values for the object’s attributes. To create objects of a class, we must know which are the constructors of the class.
148
 The first methods of a class that we should understand are the *constructors*. A class can have multiple constructors. One of the constructors will be invoked automatically each time an object of that class is created. In most of the cases, the constructors are used to initialize the values for the object’s attributes. To create objects of a class, we must know which are the constructors of the class.
149
 
149
 
150
-
151
-
152
 In C++, the constructors have the same name as the class. The type returned by these functions is not declared since they do not return any value. Their declaration (included in the definition of the class) is like this:
150
 In C++, the constructors have the same name as the class. The type returned by these functions is not declared since they do not return any value. Their declaration (included in the definition of the class) is like this:
153
 
151
 
154
 `methodName(type of the parameters);`
152
 `methodName(type of the parameters);`
163
 
161
 
164
 `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
162
 `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
165
 
163
 
166
-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 for the class can be found in the documentation for this project (`eip/objetcs-birds/doc/es/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.
164
+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 for the class can be found in the documentation for this project (`objects-birds/doc/en/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.
167
 
165
 
168
 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:
166
 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:
169
 
167
 
170
 `Bird pitirre;`
168
 `Bird pitirre;`
171
 
169
 
172
-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.
170
+You can see the implementations of the class `Bird` in the file `bird.cpp`. Notice 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.
173
 
171
 
174
 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:
172
 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:
175
 
173
 
178
 
176
 
179
 ####Setters (mutators)
177
 ####Setters (mutators)
180
 
178
 
181
-Classes provide methods to modify the values of the attributes of an objected that has been created. These methods are called *setters* or *mutators*. Usually, we declare one setter for each attribute that the class has. The `Bird` class has the following setters:
179
+Classes provide methods to modify the values of the attributes of an object that has been created. These methods are called *setters* or *mutators*. Usually, we declare one setter for each attribute that the class has. The `Bird` class has the following setters:
182
 
180
 
183
 * `void setSize (int)`
181
 * `void setSize (int)`
184
 * `void setEyebrow (EyeBrowType)`
182
 * `void setEyebrow (EyeBrowType)`
252
 ---
250
 ---
253
 
251
 
254
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-01.html"
252
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-01.html"
253
+<br>
255
 
254
 
256
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-02.html"
255
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-02.html"
256
+<br>
257
 
257
 
258
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-03.html"
258
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-03.html"
259
+<br>
259
 
260
 
260
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-04.html"
261
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-04.html"
262
+<br>
261
 
263
 
262
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-05.html"
264
 !INCLUDE "../../eip-diagnostic/birds-objects/en/diag-birds-objects-05.html"
265
+<br>
263
 
266
 
264
 ---
267
 ---
265
 
268
 
276
 
279
 
277
 **Instructions**
280
 **Instructions**
278
 
281
 
279
-1. Load the `Birds` project onto Qt by double clicking on the `Birds.pro` filein the directory `Documents/eip/Objects-Birds` of your computer. You may also go to `http://bitbucket.org/eip-uprrp/objects-birds` to download the `Objects-Birds` folder to your computer.
282
+1. Download the `objects-birds` folder from `Bitbucket` using a terminal, moving to the `Documents/eip` directory, and writing the command `git clone http://bitbucket.org/eip-uprrp/objects-birds`.
283
+
284
+2. Load the `Birds` project onto Qt by double clicking on the `Birds.pro` file in the directory `Documents/eip/objects-birds` of your computer. Configure the project.
280
 
285
 
281
-2. Study the `Bird` class contained in the `bird.h` file. Identify the methods that are constructors, setters and getters.
286
+3. Study the `Bird` class contained in the `bird.h` file. Identify the methods that are constructors, setters and getters.
282
 
287
 
283
-3. In the `main.cpp` file (in Sources) the `main` function does the following:
288
+4. In the `main.cpp` file (in Sources) the `main` function does the following:
284
 
289
 
285
     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.
290
     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.
286
 
291
 
292
 
297
 
293
     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.
298
     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.
294
 
299
 
295
-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.
300
+5. 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.
296
 
301
 
297
 ###Exercise 2: Create objects of the `Bird` class with certain attributes
302
 ###Exercise 2: Create objects of the `Bird` class with certain attributes
298
 
303
 
299
-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.
304
+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.
300
 
305
 
301
 **Instructions**
306
 **Instructions**
302
 
307
 
303
 1. Create an object of the `Bird` class called `abelardo` using the default constructor and add it to the `w` window using the method `addBird(int x, int y, Bird b)`. Remember that the method's call should start with the name of the object `w` and a period.
308
 1. Create an object of the `Bird` class called `abelardo` using the default constructor and add it to the `w` window using the method `addBird(int x, int y, Bird b)`. Remember that the method's call should start with the name of the object `w` and a period.
304
 
309
 
305
-2. Run the program several  times and marvel at seeing `abelardo` have different sizes, colors and eyebrows.
310
+2. Run the program several times and marvel at seeing `abelardo` have different sizes, colors and eyebrows.
306
 
311
 
307
 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).
312
 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).
308
 
313
 
330
 
335
 
331
   ![figure4.png](images/figure4.png)
336
   ![figure4.png](images/figure4.png)
332
 
337
 
333
-  **Figure 4.** Abelardo, Piolin, Juana and Alondra.
338
+  **Figure 4.** Abelardo, Piolin, Juana, and Alondra.
334
 
339
 
335
   ---
340
   ---
336
 
341
 

+ 13
- 26
README-es.md View File

1
-
2
 #Utilizando objetos en C++ - Pájaros
1
 #Utilizando objetos en C++ - Pájaros
3
 
2
 
4
 
3
 
5
-
6
 ![](images/headerBirds.png)
4
 ![](images/headerBirds.png)
7
 
5
 
8
-<p> </p>
9
 
6
 
10
 [version 2016.02.10]
7
 [version 2016.02.10]
11
 
8
 
15
 
12
 
16
 1. Crear objetos de una clase.
13
 1. Crear objetos de una clase.
17
 2. Analizar la declaración de una clase para entender cómo crear y manipular objetos de esa clase.
14
 2. Analizar la declaración de una clase para entender cómo crear y manipular objetos de esa clase.
18
-3. Analizar la declaración de una clase para entender cómo crear y manipular objetos de esa clase.
19
-4. Practicar la creación y manipulación de objetos, y la invocación de "setters" y "getters".
20
-
21
-
15
+3. Practicar la creación y manipulación de objetos, y la invocación de "setters" y "getters".
22
 
16
 
23
 
17
 
24
 ##Pre-Lab:
18
 ##Pre-Lab:
32
     b. utilización de métodos "getters" para acceder a los atributos de un objeto.
26
     b. utilización de métodos "getters" para acceder a los atributos de un objeto.
33
 
27
 
34
     c. utilización de métodos "setters" para modificar los atributos de un objeto.
28
     c. utilización de métodos "setters" para modificar los atributos de un objeto.
35
-  
36
 
29
 
37
-2. Haber estudiado la documentación de la clase `Bird` disponible dentro de la documentación del proyecto (`objetcs-birds/doc/es/html/class_bird.html`).
30
+2. Haber estudiado la documentación de la clase `Bird` disponible dentro de la documentación del proyecto (`objects-birds/doc/es/html/class_bird.html`).
38
 
31
 
39
 3. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
32
 3. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
40
 
33
 
52
 
45
 
53
 Para definir y utilizar un objeto  no hay que saber todos los detalles de los métodos del objeto pero hay que saber cómo crearlo, y cómo interactuar con él. La  información necesaria está disponible en la documentación de la clase. Antes de crear objetos de cualquier clase debemos familiarizarnos con su documentación. La documentación nos indica, entre otras cosas, que ente se está tratando de representar con la clase, y cuáles son los interfaces  o métodos disponibles para manipular los objetos de la clase.
46
 Para definir y utilizar un objeto  no hay que saber todos los detalles de los métodos del objeto pero hay que saber cómo crearlo, y cómo interactuar con él. La  información necesaria está disponible en la documentación de la clase. Antes de crear objetos de cualquier clase debemos familiarizarnos con su documentación. La documentación nos indica, entre otras cosas, que ente se está tratando de representar con la clase, y cuáles son los interfaces  o métodos disponibles para manipular los objetos de la clase.
54
 
47
 
55
-Una vez hayas bajado los archivos de este proyecto a tu computadora, dale un vistazo a la documentación de la clase `Bird` que se encuentra dentro de la documentación del proyecto (`objetcs-birds/doc/es/html/class_bird.html`).
48
+Una vez hayas bajado los archivos de este proyecto a tu computadora, dale un vistazo a la documentación de la clase `Bird` que se encuentra dentro de la documentación del proyecto (`objects-birds/doc/es/html/class_bird.html`).
56
 
49
 
57
 ###Clases
50
 ###Clases
58
 
51
 
150
 
143
 
151
 ####Constructores
144
 ####Constructores
152
 
145
 
153
-Los primeros métodos de una clase que debemos entender son los *constructores*.Una clase puede tener múltiples constructores. Uno de los constructores será invocado automáticamente cada vez que se crea un objeto de esa clase. En la mayoría de los casos, los constructores se utilizan para inicializar los valores de los atributos del objeto. Para poder crear objetos de una clase, debemos conocer cuáles son sus constructores.
146
+Los primeros métodos de una clase que debemos entender son los *constructores*. Una clase puede tener múltiples constructores. Uno de los constructores será invocado automáticamente cada vez que se crea un objeto de esa clase. En la mayoría de los casos, los constructores se utilizan para inicializar los valores de los atributos del objeto. Para poder crear objetos de una clase, debemos conocer cuáles son sus constructores.
154
 
147
 
155
 En C++, los  constructores tienen el mismo nombre que la clase. No se declara el tipo que devuelven porque estas funciones no devuelven ningún valor. Su declaración (incluida en la definición de la clase) es algo así:
148
 En C++, los  constructores tienen el mismo nombre que la clase. No se declara el tipo que devuelven porque estas funciones no devuelven ningún valor. Su declaración (incluida en la definición de la clase) es algo así:
156
 
149
 
166
 
159
 
167
 `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
160
 `Bird (int, EyeBrowType, QString, QString, QWidget *parent=0)`
168
 
161
 
169
-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 de la clase se encuentra dentro de la documentación del proyecto (`eip/objetcs-birds/doc/es/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.
162
+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 de la clase se encuentra dentro de la documentación del proyecto (`objects-birds/doc/es/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
 
163
 
171
 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:
164
 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
 
165
 
173
 `Bird pitirre;`
166
 `Bird pitirre;`
174
 
167
 
175
-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`.
168
+Puedes ver las implementaciones de los métodos de la clase Bird en 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
 
169
 
177
 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:
170
 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
 
171
 
225
 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.
218
 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
 
219
 
227
 
220
 
228
-
229
 ```cpp
221
 ```cpp
230
 
222
 
231
 MainWindow w;
223
 MainWindow w;
261
 ---
253
 ---
262
 
254
 
263
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-01.html"
255
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-01.html"
256
+<br>
264
 
257
 
265
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-02.html"
258
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-02.html"
259
+<br>
266
 
260
 
267
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-03.html"
261
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-03.html"
262
+<br>
268
 
263
 
269
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-04.html"
264
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-04.html"
265
+<br>
270
 
266
 
271
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-05.html"
267
 !INCLUDE "../../eip-diagnostic/birds-objects/es/diag-birds-objects-05.html"
268
+<br>
272
 
269
 
273
 ---
270
 ---
274
 
271
 
285
 
282
 
286
 **Instrucciones**
283
 **Instrucciones**
287
 
284
 
288
-1. Descarga la carpeta `Objects-Birds` de `Bitbucket` usando un terminal, moviéndote al directorio `Documents/eip`,  y escribiendo el comando `git clone http://bitbucket.org/eip-uprrp/objects-birds`.
285
+1. Descarga la carpeta `objects-birds` de `Bitbucket` usando un terminal, moviéndote al directorio `Documents/eip`,  y escribiendo el comando `git clone http://bitbucket.org/eip-uprrp/objects-birds`.
289
 
286
 
290
-2. Carga a Qt el proyecto `Birds`  haciendo doble "click" en el archivo `Birds.pro` que se encuentra en la carpeta `Documents/eip/Objects-Birds` de tu computadora. Configura el proyecto.
287
+2. Carga a Qt el proyecto `Birds`  haciendo doble "click" en el archivo `Birds.pro` que se encuentra en la carpeta `Documents/eip/objects-birds` de tu computadora. Configura el proyecto.
291
 
288
 
292
 3. Estudia la clase `Bird` contenida en el archivo `bird.h`. Identifica los métodos que son constructores, "setters" y "getters".
289
 3. Estudia la clase `Bird` contenida en el archivo `bird.h`. Identifica los métodos que son constructores, "setters" y "getters".
293
 
290
 
367
 
364
 
368
 
365
 
369
 https://sites.google.com/a/wellesley.edu/wellesley-cs118-spring13/lectures-labs/lab-2
366
 https://sites.google.com/a/wellesley.edu/wellesley-cs118-spring13/lectures-labs/lab-2
370
-
371
----
372
-
373
----
374
-
375
----
376
-
377
-
378
-
379
-