|
|
|
|
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. 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* 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*.
|
|
|
|
|
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 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 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.
|
|
|
|
|
15
|
+Cuando la clase de objetos que necesitamos utilizar en nuestro programa no ha sido predefinida en 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
|
## Objetivos:
|
18
|
## Objetivos:
|
|
|
|
|
45
|
Un *objeto* es un ente que contiene datos y procedimientos para manipularlos. Al igual que cada variable tiene un *tipo* de dato asociada a ella, cada objeto tiene una *clase* asociada que describe las propiedades de los objetos:
|
45
|
Un *objeto* es un ente que contiene datos y procedimientos para manipularlos. Al igual que cada variable tiene un *tipo* de dato asociada a ella, cada objeto tiene una *clase* asociada que describe las propiedades de los objetos:
|
46
|
sus datos (*atributos*), y los procedimientos con los que se pueden manipular los datos (*métodos*).
|
46
|
sus datos (*atributos*), y los procedimientos con los que se pueden manipular los datos (*métodos*).
|
47
|
|
47
|
|
48
|
-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.
|
|
|
|
|
48
|
+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, qué 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.
|
49
|
|
49
|
|
50
|
Dale un vistazo a la documentación de la clase `Bird` que se encuentra en [este enlace](doc/es/html/index.html) para que veas un ejemplo de una clase.
|
50
|
Dale un vistazo a la documentación de la clase `Bird` que se encuentra en [este enlace](doc/es/html/index.html) para que veas un ejemplo de una clase.
|
51
|
|
51
|
|
|
|
|
|
160
|
|
160
|
|
161
|
## Sesión de laboratorio:
|
161
|
## Sesión de laboratorio:
|
162
|
|
162
|
|
163
|
-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.
|
|
|
|
|
163
|
+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. Tú debes completar el resto.
|
164
|
|
164
|
|
165
|
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`.
|
165
|
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`.
|
166
|
|
166
|
|
|
|
|
|
172
|
1. Carga a `QtCreator` el proyecto `basket01`. Hay dos maneras de hacer esto:
|
172
|
1. Carga a `QtCreator` el proyecto `basket01`. Hay dos maneras de hacer esto:
|
173
|
|
173
|
|
174
|
* 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.
|
174
|
* 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.
|
175
|
- * 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`.
|
|
|
|
|
175
|
+ * 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`.
|
176
|
|
176
|
|
177
|
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`.
|
177
|
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`.
|
178
|
|
178
|
|
|
|
|
|
245
|
|
245
|
|
246
|
---
|
246
|
---
|
247
|
|
247
|
|
248
|
----
|
|
|
|
|
248
|
+---
|