Este documento describe el desarrollo de un programa que simula el encuentro entre dos tipos de robots: un robot amigable y un robot hostil. Se definen tres clases de robots - Robot, Cazador y Recolector - con atributos y métodos específicos. El programa muestra dos situaciones posibles cuando el robot hostil ataca al robot amigable, dependiendo de si el robot hostil es letal o no. Se proveen instrucciones para compilar y ejecutar correctamente el programa.
1. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Herencia a partir de la clase
"ROBOT"
Demo desde planeación hasta codificación
Módulo II -Desarrolla software de aplicación utilizando programación orientada a objetos con almacenamiento persistente de los datos
Submódulo 1 -Desarrolla software de aplicación utilizando programación orientada a objetos
2. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Problema:
Haga un programa que simule el encuentro de dos robots, uno es
amigable y el otro es hostil, de tal manera que el robot hostil dispara
(si es que está armado) o golpea al robot amigable; en caso de que el
robot hostil sea letal, el robot amigable será dañado perdiendo una
vida, pero si el robot hostil no es letal, entonces el robot amigable
puede esquivar los disparos o los golpes y puede huir. Muestre
capturas de pantallas de ambas situaciones.
Haga tres clases de robots, dos de los cuales son extensiones de una
clase de robot que consta de un atributo publico "nombre", de un
atributo privado para indicar si está armado o no, además, es capaz
de saludar o amenazar.
El robot hostil es un cazador que tiene un atributo encapsulado para
indicar si es letal o no, también es capaz de disparar.
El robot amigable es un recolector que tiene un atributo encapsulado
para indicar el número de vidas que le quedan, es capaz de esquivar
una agresión.
Despues de 100 años de holocausto nuclear, la inteligencia artificial fué cobrando mayor mimetización a
los humanos. Los robots salian a buscar alimentos para ayudar a la supervivenica de la humanidad, pero
como en toda sociedad en evolución, no todos los robots eran buenos.
3. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
La clase "Robot"
La propiedad "armado" guardará un valor (Si o No) con el cual se habilita al robot para disparar o a golpear.
El método "saludar" ningún valor devolverá, sólo mostrará en pantalla un mensaje de que el robot está siendo amigable
con otro robot. El método "amenazar" ningún valor devolverá, sólo mostrará en pantalla un mensaje de que el robot
está siendo hostil con otro robot.
Robot
+nombre
-armado
+saludar()
+amenazar()
4. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
La clase "Cazador"
La propiedad "letal" guardará un valor (Si o No) con el cual se indica si el robot es peligroso o no.
El método "disparar" nada devolverá, sólo presentará un mensaje en pantalla que indique que el robot cazador está
disparando (si es que está armado) o en su defecto, que está golpeando.
Cazador
+nombre
-letal
+disparar()
5. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
La clase "Recolector"
La propiedad "numVidas" guardará un valor numérico que indicará el número de vidas que le quedan al robot.
El método "esquivar" ningún valor devolverá, sólo mostrará en pantalla un mensaje de que el robot está esquivando un
disparo o golpe y además está huyendo.
Recolector
+nombre
-numVidas
+esquivar()
6. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Las tres clases
Como vemos, el atributo en común
de las tres clases es el de "nombre":
Robot
+nombre
-armado
+saludar()
+amenazar()
Cazador
+nombre
-letal
+disparar()
Recolector
+nombre
-numVidas
+esquivar()
7. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
La herencia
Se elimina el atributo "nombre" en las
clases de "Cazador" y de "Recolector".
Se indica que la clase "Cazador"
hereda de la clase "Robot".
Así mismo, se indica que la clase
"Recolector" es una extensión de la
clase "Robot".
Robot
+nombre
-armado
+saludar()
+amenazar()
Cazador
-letal
+disparar()
Recolector
-numVidas
+esquivar()
8. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Codificación de
las clases
Robot
+nombre
-armado
+saludar()
+amenazar()
Cazador
-letal
+disparar()
Recolector
-numVidas
+esquivar()
9. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Despliegue Robot
+nombre
-armado
+saludar()
+amenazar()
Cazador
-letal
+disparar()
Recolector
-numVidas
+esquivar()
Se requiere de una clase que contenga el
método "MAIN" que es el punto de partida
de un programa en JAVA.
10. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Resultado del Despliegue
Enseguida se muestra el resultado de la ejecución o corrida del programa.
Como se puede observar, hay algunos mensajes, pero no sabemos a ciencia cierta quién (o cuál
de los objetos creados) está mandando esos mensajes.
11. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Momento de la compilación
El nombre del programa es igual al nombre de la clase que contiene el método MAIN, de lo contrario, el compilador
mandará una excepción, es decir, marcará un error.
Prompt o indicador del
sistema, listo para recibir
una orden, instrucción o
comando.
Comando para compilar
el código fuente.
Nombre del archivo que
contiene el código fuente.
Éstas líneas no aparecen si
durante la compilación existen
errores en el código fuente.
12. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Momento de la ejecución
Cuando todo el código fuente es correcto en su sintaxis, el compilador crea el código objeto, en éste ejemplo, el nombre
del archivo que contiene el código objeto es "Robots".
Prompt o indicador del
sistema, listo para recibir
una orden, instrucción o
comando.
Comando para ejecutar
el código objeto.
Nombre del archivo que
contiene el código objeto. Su
extensión es ".class" (aunque
aquí sea omitida)
Son parámetros o modificadores que el sitio WEB
"coddingground" usa para realizar la ejecución del
código objeto. Éstos no se necesitan normalmente
cuando el compilador está instalado en la PC.
Mensajes programados en
los métodos de los objetos.
13. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Identificación de
quién está realizando
una acción
Para tener una mejor percepción de los
mensajes que cada objeto está
mostrando, usaremos el comando
"THIS" en las instrucciones que
muestran mensajes en la pantalla.
Robot
+nombre
-armado
+saludar()
+amenazar()
Cazador
-letal
+disparar()
Recolector
-numVidas
+esquivar()
14. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Resultado del segundo despliegue
Enseguida se muestra el resultado de la ejecución o corrida del programa por segunda ocasión. La clase del programa
principal continua siendo el mismo código fuente. Ahora se percibe mejor lo que hace cada objeto:
15. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Validación de la acción de disparar (true)
Se tiene que verificar si el robot en cuestión está armado para poder disparar. Para ello se hacen los arreglos necesarios en
el método "disparar". Se realiza la ejecución del programa y tiene que seguir mostrandose en pantalla lo mismo, dado que
terminator si está armado. La clase principal continúa sin cambios. Recordemos que el atributo es privado y fué heredado
de la clase "Robot".
Robot
+nombre
-armado
+saludar()
+amenazar()
16. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Validación de la acción de disparar (false)
Ahora en la clase principal, desarmamos a terminator (es decir, al objeto "Robotote") y cuando quiera disparar, al no estar
armado, entonces tiene que lanzar golpes.
17. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
PRIMER SITUACIÓN: Cazador letal y recolector pierde una vida
En el código fuente, en la clase principal, quitamos la
línea (instrucción) en la que el el robot recolector (es
decir, robotito) salía huyendo.
Escribimos código para validar si el robot cazador (es
decir, robotote) es letal para dañar al robot recolector.
18. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
SEGUNDA SITUACIÓN: Cazador no letal y recolector huye
En el código fuente, en la clase principal indicamos
que el robot cazador (Robotote) no es letal, por lo
tanto, el robot recolector puede escapar de la
agresión.
19. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
Finalización
1. El nombre del archivo con código fuente del programa se llama "Herencia_ROBOTS.java", el nombre de la clase principal
es el mismo, pero sin la extensión, es decir, "Herencia_ROBOTS".
2. El nombre del archivo con el código objeto creado por el compilador Java es "Herencia_ROBOTS.class".
3. El nombre del archivo con la captura de pantalla con ambos casos deberá ser "Herencia_ROBOTS.png" o
"Herencia_ROBOTS.jpg".
4. La captura de pantalla y el archivo del código fuente se ampaquetan o comprimen en un archivo con el nombre
siguiente: "GrupoID_AlumnoID_U1_E01" v.g. 3CmP_VOJC_POO_U1_E01.RAR o 3CmP_VOJC_POO_U1_E01.ZIP
5. Este programa se realizará en equipos de trabajo, con cualquier número de estudiantes que lo integren. Este programa
vale 3 puntos que se dividirán entre el número de personas que integren el equipo.
NOTA: Cada integrante del equipo creará un robot con nombre diferente
de forma que deben verse diálogos como el de Terminator y Wall-e (estos
dos nombres de robots no deben existir en sus programas). Si el equipo es
de dos personas deberá existir un sólo encuentro entre robot1 y el robot2;
si el equipo es de tres personas, deberán existir dos encuentros, es decir, el
encuentro del robot1 con el robot2 y el encuentro del robot2 con el
robot3; si el equipo es de cuatro estudiantes, deberán existir tres
encuentros... PRIMERO: el del robot1 con el robot2, SEGUNDO: el del
robot2 con el robot3 y TERCERO: el del robot3 con el robot4; y así
sucesivamente de acuerdo con el número de estudiantes en el equipo.
Cada encuentro separado por una línea punteada, por ejemplo -------->
20. 2017
Oropeza
Curso POO 2017-1
Secretaría de Educación Pública
Subsecretaría de Educación Media Superior
Dirección General de Educación Tecnológica Industrial
CETis N° 67 "Daniel Cabrera Rivera" -Cholula, Pue.
profeoropeza@gmail.com @profeoropeza
Gracias!