|
@@ -6,13 +6,13 @@
|
6
|
6
|
![main2.png](images/main2.png)
|
7
|
7
|
![main3.png](images/main3.png)
|
8
|
8
|
|
9
|
|
-[Verano 2016 - Ive]
|
|
9
|
+[Verano 2016 - Ive- Tatiana]
|
10
|
10
|
|
11
|
|
-La *programación orientada a objetos* (object oriented programming, OOP) es un paradigma de programación que promueve el diseño de programas en el que distintos objetos interactúan entre sí para resolver un problema. C++ es uno de los lenguajes de programación que promueve la programación orientada a objetos, permitiendo que los programadores creen sus propias clases desde cero o derivadas de otras clases existentes. Algunos otros lenguajes que promueven OOP son Java, Python, javascript y PHP.
|
|
11
|
+La *programación orientada a objetos* (object oriented programming-OOP) es un paradigma de programación que promueve el diseño de programas en el que distintos objetos interactúan entre sí para resolver un problema. C++ es uno de los lenguajes de programación que promueve la programación orientada a objetos, permitiendo que los programadores creen sus propias clases desde cero o derivadas de otras clases existentes. Otros lenguajes que promueven OOP son Java, Python, Javascript y PHP.
|
12
|
12
|
|
13
|
|
-En OOP, cada objeto encapsula dentro de él ciertas propiedades sobre el ente que está modelando (por ejemplo, un objeto que modela un *punto* encapsula dentro de sí las coordenadas *x* y *y* del punto que representa). Además, cada objeto contiene *metodos*, i.e. acciones que puede realizar sobre sus propiedades o sobre otros objetos. Por ejemplo, un objeto de clase *punto* puede realizar la acción de cambiar el valor de su coordenada *x*.
|
|
13
|
+En OOP, cada objeto encapsula dentro de él ciertas propiedades sobre el ente que está modelando. Por ejemplo, un objeto que modela un *punto* que encapsula dentro de sí las coordenadas *x* y *y* del punto que representa. Además, cada objeto permite realizar ciertas acciones sobre sí, i.e. contiene sus *métodos*. Por ejemplo, un objeto de la clase *punto* puede realizar la acción de cambiar el valor de su coordenada *x*.
|
14
|
14
|
|
15
|
|
-Cuando la clase de objetos que necesitamos utilizar en nuestro programa no ha sido predefinida en el alguna librería, necesitamos declarar e implementar nuestra propia clase. Para esto definimos *clases* que contengan datos con ciertas *propiedades* o *atributos* y acciones que queremos hacer con esos datos por medio de *métodos* o *funciones miembro*. De esta manera, podremos organizar la información y procesos en *objetos* que tienen las propiedades y métodos de una clase. En la experiencia de laboratorio de hoy practicarás la implementación de una clase y algunos de sus métodos, completando un programa que simula un partido de baloncesto entre dos jugadores, mantiene la puntuación del juego y las estadísticas globales de los dos jugadores.
|
|
15
|
+Cuando la clase de objetos que necesitamos utilizar en nuestro programa no ha sido predefinida en el alguna librería, necesitamos declarar e implementar nuestra propia clase. Para esto, definimos *clases* que contengan datos con ciertas *propiedades* o *atributos*, y acciones que queremos hacer con esos datos por medio de *métodos* o *funciones miembro*. De esta manera, podremos organizar la información y los procesos en *objetos* que tienen las propiedades y métodos de una clase. En la experiencia de laboratorio de hoy, practicarás la implementación de una clase y algunos de sus métodos, completando un programa que simula un partido de baloncesto entre dos jugadores, mantiene la puntuación del juego y las estadísticas globales de los dos jugadores.
|
16
|
16
|
|
17
|
17
|
|
18
|
18
|
## Objetivos:
|
|
@@ -32,7 +32,7 @@ Antes de llegar al laboratorio debes haber:
|
32
|
32
|
|
33
|
33
|
3. Estudiado los conceptos e instrucciones para la sesión de laboratorio.
|
34
|
34
|
|
35
|
|
-4. Tomado el quiz Pre-Lab disponible en Moodle.
|
|
35
|
+4. Tomado el quiz Pre-Lab, disponible en Moodle.
|
36
|
36
|
|
37
|
37
|
|
38
|
38
|
|
|
@@ -44,7 +44,7 @@ Antes de llegar al laboratorio debes haber:
|
44
|
44
|
|
45
|
45
|
## El juego
|
46
|
46
|
|
47
|
|
-El esqueleto de programa que te proveemos simula un partido de baloncesto entre dos jugadores. El programa utiliza OOP y simula el partido creando un objeto de clase BBPlayer para cada jugador e invocando sus métodos. El objeto que representa cada jugador contiene atributos tales como el nombre del jugador y estádisticas de juego, e.g. tiros intentados y anotados. Durante el juego, cada tiro anotado vale dos puntos. El programa incluye funciones aleatorias y fórmulas para determinar el jugador que intenta el tiro, si anota el tiro y el jugador que coge el rebote. Durante el partido simulado se mantiene la puntuación de cada jugador y se actualizan los datos para cada jugador. Al final del partido se despliega una tabla con las estadísticas.
|
|
47
|
+El esqueleto del programa que te proveemos simula un partido de baloncesto entre dos jugadores. El programa utiliza OOP y simula el partido creando un objeto de clase BBPlayer para cada jugador e invocando sus métodos. El objeto que representa cada jugador contiene atributos tales como el nombre del jugador y estadísticas de juego, e.g. tiros intentados y anotados. Durante el juego, cada tiro anotado vale dos puntos. El programa incluye funciones aleatorias y fórmulas para determinar el jugador que intenta el tiro, si anota el tiro y el jugador que coge el rebote. Durante el partido simulado se mantiene la puntuación de cada jugador y se actualizan los datos para cada jugador. Al final del partido se despliega una tabla con las estadísticas.
|
48
|
48
|
|
49
|
49
|
El algoritmo que simula el juego es el siguiente:
|
50
|
50
|
|
|
@@ -54,15 +54,15 @@ El algoritmo que simula el juego es el siguiente:
|
54
|
54
|
3. while (ninguno ha ganado):
|
55
|
55
|
4. simular tiro al canasto
|
56
|
56
|
5. if (anotó):
|
57
|
|
-6. actualizar estadisticas de quien tiró al canasto
|
|
57
|
+6. actualizar estadísticas de quien tiró al canasto
|
58
|
58
|
7. if (puntuación >= 32):
|
59
|
59
|
8. informar que jugadorEnOfensiva ganó
|
60
|
60
|
9. else:
|
61
|
61
|
10. intercambiar jugadorEnOfensiva
|
62
|
62
|
11. else:
|
63
|
|
-12. actualizar estadisticas de quien tiró al canasto
|
64
|
|
-13. determinar quien atrapa rebote
|
65
|
|
-14. actualizar estadisticas de quien atrapó rebote
|
|
63
|
+12. actualizar estadísticas de quien tiró al canasto
|
|
64
|
+13. determinar quién atrapa rebote
|
|
65
|
+14. actualizar estadísticas de quien atrapó rebote
|
66
|
66
|
15. asignar jugadorEnOfensiva
|
67
|
67
|
16. mostrar estadísticas de los jugadores
|
68
|
68
|
```
|
|
@@ -71,7 +71,7 @@ El algoritmo que simula el juego es el siguiente:
|
71
|
71
|
|
72
|
72
|
### La clase `BBPlayer`
|
73
|
73
|
|
74
|
|
-Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que contenga los atributos y métodos que se describen a continuación. Como algunas de las funciones que ya están definidas en el código provisto utilizan atributos y métodos de esta clase, es importante que utilices los mismos nombres que te indicamos. El código comentado en la función `main` y en `test_BBPlayer` también te ayudará a determinar el tipo de dato que debe devolver el método y el orden y tipo de sus parámetros.
|
|
74
|
+Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que contenga los atributos y métodos que se describen a continuación. Como algunas de las funciones que ya están definidas en el código provisto que utilizan atributos y métodos de esta clase, es importante que utilices los mismos nombres que te indicamos. El código comentado en la función `main` y en `test_BBPlayer` también te ayudará a determinar el tipo de dato que debe devolver el método, el orden y el tipo de sus parámetros.
|
75
|
75
|
|
76
|
76
|
#### Atributos
|
77
|
77
|
|
|
@@ -94,7 +94,7 @@ Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que conten
|
94
|
94
|
* `reboundMade()`: método que registra un rebote atrapado.
|
95
|
95
|
* `addGame()`: método que registra que se jugó un partido.
|
96
|
96
|
* `score()`: método para adquirir la puntuación del jugador.
|
97
|
|
-* `printStats()`: método para desplegar las estádisticas del jugador. *(método incluido en `main.cpp`)*
|
|
97
|
+* `printStats()`: método para desplegar las estadísticas del jugador. *(método incluido en `main.cpp`)*
|
98
|
98
|
|
99
|
99
|
---
|
100
|
100
|
|
|
@@ -115,19 +115,19 @@ Para esta experiencia de laboratorio, definirás una clase `BBPlayer` que conten
|
115
|
115
|
|
116
|
116
|
## Sesión de laboratorio:
|
117
|
117
|
|
118
|
|
-Tu tarea durante la sesión de laboratorio será el definir la clase `BBPlayer` con los atributos y prototipos de los métodos que se listan arriba. El esqueleto del programa incluye la definición de algunos métodos. Tu debes completar el resto.
|
|
118
|
+Tu tarea durante la sesión de laboratorio será definir la clase `BBPlayer` con los atributos y prototipos de los métodos que se listan arriba. El esqueleto del programa incluye la definición de algunos métodos. Tu debes completar el resto.
|
119
|
119
|
|
120
|
|
-El esqueleto del programa también incluye la función `test_BBPlayer` que hace pruebas unitarias a cada una de las funciones del programa. Las pruebas están comentadas y, según vayas definiendo las funciones, debes irlas descomentando, probando y modificando la función hasta que pase la prueba. Una vez todas las funciones estén listas y hayan pasado las pruebas, probarás el programa completo removiendo los comentarios que sean necesarios en el código de la función `main`.
|
|
120
|
+El esqueleto del programa también incluye la función `test_BBPlayer` que hace pruebas unitarias a cada una de las funciones del programa. Las pruebas están comentadas y, según vayas definiendo las funciones, debes irlas descomentando, probando y modificando la función hasta que pase la prueba. Una vez todas las funciones estén listas y hayan pasado las pruebas, probarás el programa completo removiendo los comentarios que sean necesarios en el código de la función `main`.
|
121
|
121
|
|
122
|
122
|
|
123
|
123
|
### Ejercicio 1 - Bajar y entender el código provisto
|
124
|
124
|
|
125
|
|
-#### Instrucciones:
|
|
125
|
+#### Instrucciones
|
126
|
126
|
|
127
|
127
|
1. Carga a `QtCreator` el proyecto `basket01`. Hay dos maneras de hacer esto:
|
128
|
128
|
|
129
|
|
- * Utilizando la máquina virtual: Haz doble “click” en el archivo `basket01.pro` que se encuentra en el directorio `/home/eip/labs/classes-basker01` de la máquina virtual.
|
130
|
|
- * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/classes-basker01` para descargar la carpeta `classes-basker01` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `basket01.pro`.
|
|
129
|
+ * Utilizando la máquina virtual: Haz doble “click” en el archivo `basket01.pro` que se encuentra en el directorio `/home/eip/labs/classes-basket01` de la máquina virtual.
|
|
130
|
+ * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http:/bitbucket.org/eip-uprrp/classes-basket01` para descargar la carpeta `classes-basket01` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `basket01.pro`.
|
131
|
131
|
|
132
|
132
|
2. El ejecutable correrá en el terminal y debes seleccionar esa opción desde la ventana de "Projects". Para acceder a esta ventana, seleccionas "Projects" en el menú vertical de la izquierda. Luego en `Build & Run` seleccionas `Run` y luego marcas la caja que dice `Run in terminal`.
|
133
|
133
|
|
|
@@ -135,9 +135,11 @@ El esqueleto del programa también incluye la función `test_BBPlayer` que hace
|
135
|
135
|
|
136
|
136
|
### Ejercicio 2 - Definir la clase `BBPlayer`
|
137
|
137
|
|
|
138
|
+####Instrucciones
|
|
139
|
+
|
138
|
140
|
1. Define la clase `BBPlayer` con las especificaciones que se proveen en la sección **La clase BBPlayer**. Para cada uno de los métodos que se especifican en esa sección:
|
139
|
141
|
|
140
|
|
- a. Incluye su prototipo en la definición de la clase
|
|
142
|
+ a. Incluye su prototipo en la definición de la clase.
|
141
|
143
|
|
142
|
144
|
b. Si el método ya ha sido implementado, remueve los comentarios de las secciones correspondientes a esa función en `test_BBPlayer`.
|
143
|
145
|
|
|
@@ -178,7 +180,7 @@ El esqueleto del programa también incluye la función `test_BBPlayer` que hace
|
178
|
180
|
|
179
|
181
|
## Entrega
|
180
|
182
|
|
181
|
|
-Utiliza "Entrega" en Moodle para entregar el archivo `main.cpp`. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
|
|
183
|
+Utiliza "Entrega" en Moodle para entregar el archivo `main.cpp`. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores y documenta tu programa.
|
182
|
184
|
|
183
|
185
|
|
184
|
186
|
|
|
@@ -199,5 +201,4 @@ Utiliza "Entrega" en Moodle para entregar el archivo `main.cpp`. Recuerda utiliz
|
199
|
201
|
|
200
|
202
|
---
|
201
|
203
|
|
202
|
|
----
|
203
|
|
-
|
|
204
|
+---
|