Está en la página 1de 14

PROGRAMACIÓN ORIENTADA A OBJETOS

II

EVIDENCIA DE APRENDIZAJE UNIDAD I


EVENTOS DE JAVA
Problemática prototipo

Un restaurante de comida mexicana abre sus puertas por primera vez en el año
2012, con unas cuantas mesas y un espacio reducido, actualmente cuenta con 20
sucursales ubicadas en diferentes puntos estratégicos de la Ciudad de México.
Sin embargo; ha tenido diversos problemas, con la expansión primeramente no
existe un control preciso del inventario, el área de recursos humanos no tiene un
sistema que permita dar de bajas, altas o modificaciones a empleados y, por
último, el dueño desea dar un incentivo económico a los trabajadores que tienen
un buen desempeño, para ello solicita los servicios de una consultoría que
desarrolle el sistema.

1. Realiza, una descripción general de la problemática prototipo que te


compartirá tu docente en línea, en la cual debes identificar los eventos
provenientes de componentes, que vas utilizar para resolver la
problemática, botones, listas, cuadro de texto etcétera, o periféricos ratón,
teclado, pantalla, etcétera.
Respuesta:
El sistema estará representado por un formulario general básico que
llevará el título “Restaurante UNADM”. En general, el formulario tendrá
los siguientes submenús: ventas, inventarios, personal y salir. Los eventos
se ejecutarán en el momento en que el usuario elija uno de los submenús
a través del ratón. Además, los eventos pertenecientes a los submenús se
llevarán a cabo, a través de botones de ratón, cuando el usuario cree un
nuevo empleado, objeto o ventas a través de un botón que permitirá a una
caja de texto ingresar los datos del empleado a través del teclado, objeto o
producto vendido. Otros eventos serian eliminar un objeto o empleado de
la base de datos, actualizar la base de datos, buscar en la base de datos
por folio, nombre, etc. En general, los eventos los desataran el ratón y
teclado para hacer una modificación o buscar en la base de datos.
Finalmente, se usarán tablas con desplazamiento vertical para visualizar
la base de datos, botones selectivos y se añadirán un menú especial para
consultar la base de datos y registrar una sucursal de los restaurantes.

2. Identifica los componentes y la estructura requerida para la manipulación


de archivos de la problemática enviada.
Respuesta:
En general, el programa a desarrollar tendrá la siguiente estructura de
submenús, cajas de texto, etiquetas, botones de pulsación, etc.:

1. Menú de Registros

➢ Submenú de Registro Sucursal


o Etiqueta (Folio)
o Caja de texto para introducir el Folio

1
o Etiqueta (Gerente)
o Etiqueta (Teléfono)
o Caja de texto para introducir el Teléfono
o Etiqueta (Email)
o Caja de texto para introducir el Email
o Etiqueta (Dirección)
o Caja de texto para introducir la Dirección
o Caja de texto para introducir el Gerente
o Etiqueta (Buscar)
o Caja de texto para introducir datos a buscar en la base de
datos.
o Botón de pulsación de “Mostrar Datos”
o Botón de pulsación de “Nuevo”
o Botón de pulsación de “Guardar”
o Botón de pulsación de “Actualizar”
o Botón de pulsación de “Cancelar”
o Botón de pulsación de “Salir”
o Tabla con desplazamiento vertical
o Menú flotante con opciones para Modificar y Eliminar

➢ Submenú de Registro de Personal


o Etiqueta (Folio)
o Caja de texto para introducir el Folio
o Etiqueta (Nombre)
o Caja de texto para introducir el Nombre
o Etiqueta (Apellidos)
o Caja de texto para introducir los Apellidos
o Etiqueta (Sexo)
o Caja de texto para introducir el Sexo
o Etiqueta (Teléfono)
o Caja de texto para introducir el Teléfono
o Etiqueta (Email)
o Caja de texto para introducir el Email
o Etiqueta (Dirección)
o Caja de texto para introducir la Dirección
o Etiqueta (Sucursal)
o Caja de texto para introducir la Sucursal
o Etiqueta (Incentivo)
o Caja de texto para introducir el Incentivo
o Etiqueta (Buscar)
o Caja de texto para introducir datos a buscar en la base de
datos.
o Botón de pulsación de “Mostrar Datos”
o Botón de pulsación de “Nuevo”
o Botón de pulsación de “Guardar”
2
o Botón de pulsación de “Actualizar”
o Botón de pulsación de “Cancelar”
o Botón de pulsación de “Salir”
o Tabla con desplazamiento vertical
o Menú flotante con opciones para Modificar y Eliminar

➢ Submenú de Registro de Inventario


o Etiqueta del objeto mobiliario (Código)
o Caja de texto para introducir el Código del objeto
mobiliario
o Etiqueta (Descripción)
o Caja de texto para introducir la Descripción
o Etiqueta (Sucursal)
o Caja de texto para introducir la Sucursal
o Etiqueta (Buscar)
o Caja de texto para introducir datos a buscar en la base de
datos.
o Botón de pulsación de “Mostrar Datos”
o Botón de pulsación de “Nuevo”
o Botón de pulsación de “Guardar”
o Botón de pulsación de “Actualizar”
o Botón de pulsación de “Cancelar”
o Botón de pulsación de “Salir”
o Tabla con desplazamiento vertical
o Menú flotante con opciones para Modificar y Eliminar

2. Menú de Consultas
➢ Submenú de Consulta de Sucursal
o Botón selectivo de “Buscar Número de Sucursal”
o Caja de texto para introducir el Número de Sucursal
o Botón selectivo de “Mostrar todas las sucursales”
o Etiqueta de “La Cantidad de Registro”
➢ Submenú de Consulta de Personal
o Botón selectivo de “Mostrar Empleado por Genero”
o Caja de texto para introducir el Género del Empleado
o Botón selectivo de “Buscar Empleado por “Folio”
o Caja de texto para introducir el Número de Folio
o Botón selectivo de “Mostrar todos los empleados”
o Etiqueta de “La Cantidad de Registros”
➢ Submenú de Consulta de Inventario
o Botón selectivo de “Buscar Objeto”
o Caja de texto para introducir el Nombre del Objeto
o Botón selectivo de “Buscar Objeto por Código”
o Caja de texto para introducir el Código del Objeto

3
o Botón selectivo de “Mostrar todos los Objetos del
Inventario”
o Etiqueta de “La Cantidad de Registros”

Finalmente, el diagrama de flujos del programa a desarrollar se muestra


en la Fig. 1

3. Investiga en qué consiste la metodología de la programación orientada a


objetos: Encapsulación, herencia, polimorfismo, objeto, propiedades
métodos, eventos y clases.
Respuesta:
El mundo real está plagado de objetos: personas, animales, plantas,
automóviles, edificios, computadoras, teléfonos, casas, semáforos, lápi-ces,
libros, etcétera. Los programas en Java se componen de muchos objetos
para interactuar entre sí y todos tienen tres características o propiedades
clave: estado, comportamiento e identidad.

• Estado: Los atributos son datos que diferencian un objeto de otro;


el conjunto de ellos constituye su estado; cada objeto almacena
información acerca de su estado actual y en un momento dado éste
corresponde a una selección determinada de valores posibles de los
diversos atributos. Estos últimos son propiedades o características
de una clase y describen un rango de valores; un objeto y su clase
asociada podrán contener varios atributos o ninguno.
El estado de un objeto puede cambiar con el tiempo como
consecuencia de llamadas a métodos; si dicho estado cambiara sin
una llamada de un método de ese objeto, se rompería el principio de
encapsulamiento de datos. Los atributos se definen mediante
variables, las cuales son sitios donde se almacena la información de
un programa de computadoras. Una variable instancia o variable
del objeto define un atributo de un objeto específico; cada atributo
de una clase tiene una única variable correspondiente y se cambia
el atributo del objeto al modificar el valor de la variable.
• Comportamiento: Es el conjunto de capacidades y aptitudes que
describen sus operaciones, funciones y reacciones; además responde
a lo que se puede hacer con dicho objeto o a los métodos que se le
pueden aplicar. Todos los objetos de una misma clase soportan el
mismo comportamiento, el cual se define por los métodos que se
pue-den llamar y utilizar para cambiar sus atributos, recibir
información de otros objetos y enviar mensajes solicitando la
ejecución de tareas.
Los métodos se llaman funciones o procedimientos en C y Pascal y
son los grupos de sentencias o instrucciones relacionadas de una
clase que realizan o ejecutan una tarea específica sobre sus propios
objetos y también sobre otros.
4
Figura 1
Diagrama de flujo general

Inicio de programa Consulta


Menú Cerrar y Base de datos
sucursal

Menu Consulta
Elegir Menú Elegir submenu
Consultas Personal

Menú Cerrar y

Menu
Registros

Menú Cerrar
Consulta
Inventario

Registro Registro
Menú Cerrar Elegir submenu
sucursal Inventario

Menú Cerrar

Registro
Base de datos
Personal

Menú Cerrar

FIN
• Identidad: La identidad es la propiedad que diferencia un objeto
de otro similar; su estado no describe totalmente al objeto ya que
cada uno tiene distinta identidad; en realidad, éste es el modo en
que un objeto se diferencia de otros que pueden tener el mismo
comporta-miento y estado.
Los objetos individuales que son instancias de una clase difieren
siempre en su identidad y, normalmente, en su estado; esto implica
que la identidad hace posible distinguir cualquier objeto sin
ambigüedad e independientemente de su estado. Durante la fase de
implementación, la identidad se crea, normalmente, utilizando un
identificador que viene naturalmente del dominio del problema; por
ejemplo, los automóviles tienen un número de placa; los teléfonos
celulares tienen un número, aunque una misma persona pueda
tener varios: el personal, del trabajo, de casa, etcétera.

La programación orientada a objetos es un paradigma de programación


que viene a innovar la forma de obtener resultados. Los objetos manipulan
los datos de entrada para la obtención de datos de salida específicos, donde
cada objeto ofrece una funcionalidad especial.
Muchos de los objetos prediseñados de los lenguajes de programación
actuales permiten la agrupación en bibliotecas o librerías, sin embargo,
muchos de estos lenguajes permiten al usuario la creación de sus propias
bibliotecas. En general, la programación orientada a objetos mantiene las
siguientes propiedades:
• Abstracción: Es la propiedad que considera los aspectos más
significativos o notables de un problema y expresa una solución en
esos términos. En computación, es la etapa crucial de
representación de la información en relación con la interfaz y el
usuario; se representa con un tipo definido por el usuario, con el
diseño de una clase que implementa la interfaz correspondiente.
Una clase es un elemento en C++ o en Java que traduce una
abstracción a un tipo definido por el usuario y combina
representaciones de datos y métodos para manipular esa
información en un paquete.
La abstracción posee diversos grados denominados niveles; éstos
ayudan a estructurar la complejidad intrínseca que poseen los
sistemas del mundo real; en el análisis de un sistema hay que
concentrarse en qué hace y no en cómo lo hace.
El principio de la abstracción es más fácil de entender con una
analogía del mundo real; por ejemplo: la televisión es un
electrodoméstico que se encuentra en todos los hogares; la mayoría
de las personas está familiarizada con sus características y su
manejo manual o con el control remoto: encender, apagar, cambiar
de canal, ajustar el volumen, cambiar el brillo, etcétera, así como
5
añadir componentes externos: altavoces, grabadoras de CD,
reproductores de DVD, conexión de un módem para internet, etc.
Sin embargo, ¿sabe usted cómo funciona internamente?, ¿conoce
cómo recibe la señal por la antena, por cable, o satélite, traduce la
señal y la visualiza en pantalla? Normalmente no sabemos cómo
funciona el aparato de televisión, pero sí sabemos cómo utilizarlo;
esto se debe a que la televisión separa claramente su
implementación interna de su interfaz externa, en este caso, el
cuadro de mandos de su aparato o su control remoto; usamos la
televisión a través de su interfaz: los botones de ajuste, de cambio
de canal, control de volumen, etcétera. No conocemos el tipo de
tecnología que utiliza, el método de generar la imagen en pantalla
o cómo funciona internamente, es decir su implementación, ya que
ello no afecta a su interfaz.
En síntesis, la abstracción es el principio fundamental que se
encuentra tras la reutilización. Sólo se puede reutilizar un
componente o elemento si en él se ha abstraído la escena de un
conjunto de elementos del mundo real en el que aparecen una y otra
vez con ligeras variantes en sistemas diferentes.

• Encapsulamiento y ocultación de datos: Encapsulamiento


significa reunir en cierta estructura todos los elementos que, a
determinado nivel de abstracción, se pueden considerar de una
misma entidad, y es el proceso de agrupamiento de datos y
operaciones relacionadas bajo una misma unidad de programación.
En este caso, los objetos que poseen las mismas características y
comportamiento se agrupan en clases que son unidades de
programación que encapsulan datos y operaciones; la encapsulación
oculta lo que hace un objeto de lo que hacen otros objetos del mundo
exterior, por lo que se denomina también ocultación de datos.
Un objeto tiene que presentar una “cara” al mundo exterior, de
modo que pueda iniciar operaciones; la televisión tiene un conjunto
de botones, bien en ella misma o incorporados en un control remoto.
Una máquina lavadora tiene un conjunto de mandos e indicadores
que establecen la temperatura y el nivel del agua. Los botones de la
TV y los mandos de la lavadora constituyen la comunicación con el
mundo exterior, las interfaces.
En resumen, El encapsulamiento o encapsulación consiste en
combinar datos y comportamiento en un paquete y ocultar los
detalles de la implementación del usuario del objeto.

• Herencia: El concepto de clases divididas en subclases se utiliza


en la vida diaria y conduce al de herencia; la clase animal se divide
en mamíferos, anfibios, insectos, aves, etcétera; la clase vehículo se
divide en autos, camiones, autobuses, motocicletas, etcétera. La
6
clase electrodoméstico se divide en lavadora, frigorífico, tostadora,
microondas, y así sucesivamente.
La idea principal de estas divisiones reside en el hecho de que cada
subclase comparte características con la clase de la cual se deriva.
Los autos, camiones, autobuses, y motocicletas, tienen motor,
ruedas y frenos; pero, además de estas características compartidas,
cada subclase tiene las propias; los autos, por ejemplo, pueden tener
maletero, cinco asientos; los camiones, cabina y caja para
transportar carga, entre otras características.
La clase principal de la que derivan las restantes se denomina base,
padre o superclase; las subclases también se denominan derivadas
o hijas.
Las clases reflejan que el mundo real contiene objetos con
propiedades o atributos y comportamiento; la herencia manifiesta
que dichos objetos tienden a organizarse en jerarquías; esta
jerarquía, desde el punto de vista del modelado, se denomina
relación de generalización. En programación orientada a objetos, la
relación de generalización se denomina herencia; cada clase
derivada hereda las características de la cual es base y además
añade sus propias características, atributos y operaciones. Las
clases bases también pueden ser subclases o derivarse de otras
superclases.
En general, La herencia permite la creación de nuevas clases a
partir de otra ya existente; la que sirve de modelo se llama base y
la que se creó, hereda: sus características, además se pueden
personalizar añadiendo rasgos adicionales. Las clases creadas a
partir de una base se denominan derivadas.
• Polimorfismo: Es la propiedad que le permite a una operación o
función tener el mismo nombre en clases diferentes y actuar de
modo distinto en cada una de ellas; por ejemplo: se puede abrir una
puerta, una ventana, un libro, un periódico, una cuenta en un
banco, una conversación, un congreso; en cada caso se realiza una
acción diferente. En orientación a objetos, cada clase “conoce” cómo
realizar esa operación.
En la práctica, polimorfismo implica la capacidad de una operación
de ser interpretada sólo por el propio objeto que lo invoca; desde un
punto de vista práctico de ejecución del programa, el polimorfismo
se realiza en tiempo de ejecución, ya que durante la compilación no
se conoce qué tipo de objeto y por consiguiente cuál operación fue
invocada.
En la vida diaria hay numerosos ejemplos de polimorfismo: en un
taller de reparaciones de automóviles existen diferentes marcas,
modelos, potencias, carburantes, etcétera, que constituyen una
clase o colección heterogénea. Supongamos que se ha de realizar
una operación típica como cambiar los frenos; ésta es la misma, los
7
principios de trabajo son iguales, sin embargo, dependiendo del
auto en particular, la operación cambiará e incluirá diferentes
acciones.
• Reutilización: Este concepto significa que una vez que se ha
creado, escrito y depurado una clase, se puede poner a disposición
de otros programadores; de manera similar, al uso de las bibliotecas
de funciones en un lenguaje de programación procedimental como
C.

En UML se puede representar la clase Caballo, que posee la estructura y


el comportamiento descritos en la figura

Fig. 2 La clase Caballo

El caballo Jorgelina es una instancia de la clase Caballo cuyos atributos


y valores se ilustran en la figura 3.

Figura 3 El caballo Jorgelina

Todos los componentes Swing son objetos de clases derivadas de la clase


JComponent, que a su vez se deriva de la clase java.awt.Component,
lo que pone de manifiesto que Swing se deriva de AWT. Para combinar
estos formando una interfaz gráfica, Swing provee, además, los
contenedores de nivel alto JWindow, JFrame, JDialog y JApplet que
puede verse en la jerarquía de clases de Java mostrada a continuación:

8
Las librerías vinculadas a Java que llevan a cabo elementos Swing y AWT
son los siguientes:

Swing AWT
• AbstractAction • AlphaComposite
• AbstractButton • AWTEvent
• AbstractCellEditor • AWTEventMulticaster
• AbstractListModel • AWTKeyStroke
• AbstractSpinnerModel • AWTPermission
• ActionMap • BasicStroke
• BorderFactory • BorderLayout
• Box • BufferCapabilities
• Box.Filler • BufferCapabilities.FlipContents
• BoxLayout • Button
• ButtonGroup • Canvas
• CellRendererPane • CardLayout
• ComponentInputMap • Checkbox
• DebugGraphics • CheckboxGroup
• DefaultBoundedRangeModel • CheckboxMenuItem
• DefaultButtonModel • Choice
• DefaultCellEditor • Color
• DefaultComboBoxModel • Component
• DefaultDesktopManager • ComponentOrientation
• DefaultFocusManager • Container
• DefaultListCellRenderer • ContainerOrderFocusTraversalPolicy
• DefaultListCellRenderer.UIResource • Cursor

9
• DefaultListModel • DefaultFocusTraversalPolicy
• DefaultListSelectionModel • DefaultKeyboardFocusManager
• DefaultRowSorter • Desktop
• DefaultRowSorter.ModelWrapper • Dialog
• DefaultSingleSelectionModel • Dimension
• FocusManager • DisplayMode
• GrayFilter • Event
• GroupLayout • EventQueue
• ImageIcon • FileDialog
• InputMap • FlowLayout
• InputVerifier • FocusTraversalPolicy
• InternalFrameFocusTraversalPolicy • Font
• JApplet • FontMetrics
• JButton • Frame
• JCheckBox • GradientPaint
• JCheckBoxMenuItem • Graphics
• JColorChooser • Graphics2D
• JComboBox • GraphicsConfigTemplate
• JComponent • GraphicsConfiguration
• JDesktopPane • GraphicsDevice
• JDialog • GraphicsEnvironment
• JEditorPane • GridBagConstraints
• JFileChooser • GridBagLayout
• JFormattedTextField • GridBagLayoutInfo
• JFormattedTextField.AbstractFormatter • GridLayout
• JFormattedTextField.AbstractFormatterFactory • Image
• JFrame • ImageCapabilities
• JInternalFrame • Insets
• JInternalFrame.JDesktopIcon • JobAttributes
• JLabel • JobAttributes.DefaultSelectionType
• JLayer • JobAttributes.DestinationType
• JLayeredPane • JobAttributes.DialogType
• JList • JobAttributes.MultipleDocumentHandlingType
• JList.DropLocation • JobAttributes.SidesType
• JMenu • KeyboardFocusManager
• JMenuBar • Label
• JMenuItem • LinearGradientPaint
• JOptionPane • List
• JPanel • MediaTracker
• JPasswordField • Menu
• JPopupMenu • MenuBar
• JPopupMenu.Separator • MenuComponent
• JProgressBar • MenuItem
• JRadioButton • MenuShortcut
• JRadioButtonMenuItem • MouseInfo
• JRootPane • MultipleGradientPaint
• JScrollBar • PageAttributes
• JScrollPane • PageAttributes.ColorType
• JSeparator • PageAttributes.MediaType
• JSlider • PageAttributes.OrientationRequestedType
• JSpinner • PageAttributes.OriginType
• JSpinner.DateEditor • PageAttributes.PrintQualityType
• JSpinner.DefaultEditor • Panel
• JSpinner.ListEditor • Point

10
• JSpinner.NumberEditor • PointerInfo
• JSplitPane • Polygon
• JTabbedPane • PopupMenu
• JTable • PrintJob
• JTable.DropLocation • RadialGradientPaint
• JTextArea • Rectangle
• JTextField • RenderingHints
• JTextPane • RenderingHints.Key
• JToggleButton • Robot
• JToggleButton.ToggleButtonModel • Scrollbar
• JToolBar • ScrollPane
• JToolBar.Separator • ScrollPaneAdjustable
• JToolTip • SplashScreen
• JTree • SystemColor
• JTree.DropLocation • SystemTray
• JTree.DynamicUtilTreeNode • TextArea
• JTree.EmptySelectionModel • TextComponent
• JViewport • TextField
• JWindow • TexturePaint
• KeyStroke • Toolkit
• LayoutFocusTraversalPolicy • TrayIcon
• LayoutStyle • Window
• LookAndFeel
• MenuSelectionManager
• OverlayLayout
• Popup
• PopupFactory
• ProgressMonitor
• ProgressMonitorInputStream
• RepaintManager
• RowFilter
• RowFilter.Entry
• RowSorter
• RowSorter.SortKey
• ScrollPaneLayout
• ScrollPaneLayout.UIResource
• SizeRequirements
• SizeSequence
• SortingFocusTraversalPolicy
• SpinnerDateModel
• SpinnerListModel
• SpinnerNumberModel
• Spring
• SpringLayout
• SpringLayout.Constraints
• SwingUtilities
• SwingWorker
• Timer
• ToolTipManager
• TransferHandler
• TransferHandler.DropLocation
• TransferHandler.TransferSupport
• UIDefaults
• UIDefaults.LazyInputMap

11
• UIDefaults.ProxyLazyValue
• UIManager
• UIManager.LookAndFeelInfo
• ViewportLayout

Conclusión:

Java es un lenguaje de programación orientado a objetos en donde se pueden


desarrollar entornos gráficos basado en las librerías de Swing y AWT. En
general, los marcos, cajas de textos, botones de ratón, tablas, etc. son objetos que
tienen atributos y métodos. Además, los elementos que pertenecen a las librerías
mencionadas anteriormente se pueden heredar para crear nuevas clases
heredadas y que gracias a la programación orientada a objetos heredan todas las
propiedades de las clases superiores (clases padres). Aunado a lo anterior, el
concepto de “Evento” es introducido en la programación orientada a objetos
usando un entorno gráfico y es crucial para poder desarrollar códigos.
Finalmente, la API de Java otorga una gran ayuda para poder manejar
ampliamente las librerías de Java, métodos de cada clase que pertenecen a las
respectivas librerías, etc.

Bibliografía:

 Java 2, interfaces gráficas y aplicaciones para Internet, Javier Ceballos,


editorial Alfa-Omega, 2008.
 Java, Graphical user interfaces –An introduction to Java programming,
D. Etheridge, MTD training and ventus publishing, 2009.
 Learning java through applications A graphical approach, Duane Jarc,
Charles River Media, 2005.
 A comprehensive introduction to object-oriented programming with Java,
C. Thomas Wu, McGraw Hill, 2008.
 Programación en Java 6, Algoritmos y programación orientada a objetos,
Luis Joyanes Aguilar, Ignacio Zahonero Martínez, McGraw Hill, 2011.
 Java Platform Standard Ed. 8: https://docs.oracle.com/javase/8/docs/api/

12

También podría gustarte