Universidad Tecnológica de Mexico
Carrera:
Licenciatura en Administración de Tecnologías de Información
Nombre de la asignatura:
Programación Orientada a Objetos
Profesor:
Luis Ernesto Rubio Torres
Alumno:
Eduardo Carrasco Torres
Número de cuenta:
20920504
Título de la actividad:
Foro 2
Fecha de la actividad:
10/02/2022
1.- Captura imágenes con tus resultados al ejecutar el programa
MediaPlayer.java, explicando a detalle el código de tu programa y cómo
aplica los principios de Abstracción, Herencia y Polimorfismo.
Ilustra el principio de polimorfismo se la da la instrucción y nos da el mensaje
escuchando una canción y otra viendo una película ahí podemos apreciar la
capacidad de objetos de distinta clase de responder a la misma orden.
Cuando poliPlayer apunta a un objeto de CDPlayer la orden poliPlayer.play(1,
"Allá en el rancho grande"); resulta en Escuchando la canción #1: Allá en el
rancho grande!!! Pero cuando poliPlayer refiere a un objeto de la clase DvdPlayer
la misma instrucción poliPlayer.play(1,"Allá en el rancho grande"); resulta
Viendo la película #1: Allá en el rancho grande!!! La misma instrucción da resultados
distintos dependiendo a la clase que estamos utilizando ahí se ven aplicados todos
los elementos necesarios para el polimorfismo.
Superclase poliPlayer que apunta a subclases la jerarquía de herencia se ilustra
en la siguiente imagen.
Cada uno de ellos sobrescribe el método play de la superclase y se hace mediante
este método sustituto.
Igualmente, la clase CdPlayer y DvdPlayer sobrescribe o sustituye el método play
realizando llamadas a otras órdenes.
La superclase hereda a la subclase en este caso cada subclase sustituye el método
play en la aplicación la super referencia Poliplayer apunta a objetos de las subclases
CdPlayer y DvdPlayer logrando el efecto de la invocación virtual de métodos que
consiste en llamar a un método sustituto mediante una referencia polimorfa o super
referencias, provoca que cada llamada invoque al método play correspondiente de
CdPlayer y DvdPlayer y asi se ve el efecto de polimorfismo.
2.- Captura imágenes con tus resultados al ejecutar en tu proyecto
Aprendiendo con OOPS, el siguiente programa anexo:
SupermanVsHulk.java, explicando a detalle el código de tu programa y
cómo aplica los principios de Abstracción, Herencia y Polimorfismo, así
como las clases de la librería learning.BasicGUI.
En este ejercicio el principio de abstracción es utilizado la siguiente parte del
código
En esta parte de la clase WalkButton aísla la propiedad o función walkAction() del
objeto, básicamente la abstracción es aislar los elementos de su entorno.
El principio de Herencia se utiliza al permitirnos crear nuevas clases a partir unas
ya existentes a fin de reutilizar el código, generando así una jerarquía de clases
dentro de una aplicación. Si una clase deriva de otra, esta hereda sus atributos y
métodos y puede añadir nuevos atributos, métodos o redefinir los heredados.
Aquí por ejemplo la clase SupermanVsHulkApp hereda de BaseAppGUI todos su
atributos y métodos.
La clase de la librería learning.BasicGUI son:
En cada una de ellas se tiene el desarrollo para que complementa la ejecución de
la aplicación.
BaseAppGUI
En esta clase se están definiendo las propiedades que tendrá la ventana de la
aplicación asi como la creación de 2 clases que permitirán dentro del código de la
aplicación ser modificados a conveniencia para la solución de la aplicación.
BorderPanel
En esta clase se utiliza el método setLayout() para hacer que el objeto sea el
controlador de posicionamiento de la ventana de aplicación
3.- Incluye las imágenes de tus resultados al programar la aplicación para
el sistema de “Los 4 Fantásticos” (capturas de la aplicación funcionando
y el código de la aplicación completa en Java en un IDE), explicando tu
experiencia al programar este software.
import learning.business.superAnimals.Superman;
import learning.business.superAnimals.ElasticHuman;
import learning.basicGUI.BaseAppGUI;
import learning.basicGUI.ImagePanel;
import learning.basicGUI.InternalButton;
import learning.basicGUI.FlowPanel;
import learning.basicGUI.GridPanel;
import java.awt.TextArea;
import java.awt.event.*;
public class CuatroFan extends BaseAppGUI {
private class WalkButton extends InternalButton{
public void pushAction(){
walkAction();
}
}
private class FlyButton extends InternalButton{
public void pushAction(){
flyAction();
}
}
private class StretchButton extends InternalButton{
public void pushAction(){
superHero.stretch(space, 200, 250 );
}
}
private boolean visibleFlag = true;
private class VisibleButton extends InternalButton{
public void pushAction(){
visibleFlag = !visibleFlag;
space2.setVisible(visibleFlag);
}
}
private class MouseStretch extends MouseAdapter {
public void mousePressed(MouseEvent e){
superHero.stretch(space, e.getX(), e.getY() );
}
}
private ElasticHuman superHero;
private ImagePanel space;
private ElasticHuman superHero2;
private ImagePanel space2;
private Superman superHero3;
private ImagePanel space3;
private ElasticHuman superHero4;
private ImagePanel space4;
private FlowPanel controlPanel;
private WalkButton ;
private FlyButton flyButton;
private StretchButton ;
private VisibleButton ;
private int spaceWidth;
private int spaceHeight;
private GridPanel gridPanel;
private int renglones;
private int columnas;
public void createComponents(){
super.createComponents();
superHero = new ElasticHuman();
space = new ImagePanel();
superHero2 = new ElasticHuman();
space2 = new ImagePanel();
superHero3 = new Superman();
space3 = new ImagePanel();
superHero4 = new ElasticHuman();
space4 = new ImagePanel();
controlPanel = new FlowPanel();
walkButton = new WalkButton();
flyButton = new FlyButton();
stretchButton = new StretchButton();
visibleButton = new VisibleButton();
spaceWidth = 600;
spaceHeight = 600;
renglones = 2;
columnas = 2;
gridPanel = new GridPanel(renglones, columnas);
public void distributeComponents(){
space.imageX = 10;
space.imageY = 0;
space.addMouseListener(new MouseStretch());
space.setImage("C:/Users/ECARRASCOT/Documents/NetBeansProjects/OOPS/resources/images/supers/Fantastic4/Reed Richards.jpg",
200,250);
space2.imageX = 0;
space2.imageY = 0;
space2.setImage("C:/Users/ECARRASCOT/Documents/NetBeansProjects/OOPS/resources/images/supers/Fantastic4/Sue Storm.jpg",
200,250);
space3.imageX = 10;
space3.imageY = 0;
space3.setImage("C:/Users/ECARRASCOT/Documents/NetBeansProjects/OOPS/resources/images/supers/Fantastic4/Jhonny Storm.jpg",
200,250);
space4.imageX = 0;
space4.imageY = 0;
space4.setImage("C:/Users/ECARRASCOT/Documents/NetBeansProjects/OOPS/resources/images/supers/Fantastic4/Ben Grimm.jpg",
200,250);
walkButton.setLabel("< Walk >");
flyButton.setLabel("< Fly >");
stretchButton.setLabel("< Stretch >");
visibleButton.setLabel("< Visible >");
controlPanel.add(stretchButton);
controlPanel.add(visibleButton);
controlPanel.add(walkButton);
controlPanel.add(flyButton);
gridPanel.add(space);
gridPanel.add(space2);
gridPanel.add(space3);
gridPanel.add(space4);
frameGUI.setTitle("Fanstastic Four !!!");
frameGUI.setSize(spaceWidth, spaceHeight);
frameGUI.setResizable(false);
frameGUI.addNorth(controlPanel);
frameGUI.addCenter(gridPanel);
public void startApplication(){
frameGUI.setVisible(true);
public void walkAction(){
superHero4.walk(space4, spaceWidth/2, spaceHeight);
}
public void flyAction(){
superHero3.fly(space3, spaceWidth/2, spaceHeight);
}
public static void main(String [] args){
CuatroFan theTest = new CuatroFan();
theTest.startApplication();
}
}
Funcionamiento de Botones
El Boton Stretch en el que al dar clic sobre la imagen esta estará cambiando de
tamaño y al presionar el botón stretch regresara a su forma original
El Botón Visible hará que aparezca y desaparezca la imagen al presionarlo
El Botón Walk hará que el personaje se desplace horizontalmente al presionarlo
El Botón Fly hará que el personaje se desplace verticalmente
Esta actividad me ha gustado por que me ayuda a comprender mas acerca de la
POO aunque es en un foro considero que son de gran utilidad estas practicas por
que permiten el uso de la aplicación y el desarrollo o modificación del código,
ayudan a tener una idea de lo que implica desarrollar una aplicación y todo lo que
está detrás de ella el tema de la herencia, polimorfismo y abstracción está presente
dentro en el código y sirve mas verlo de esta manera que solo agregando una
definición.