Temas Completo Poo
Temas Completo Poo
Temas Completo Poo
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/1
2/7/2020 1.1. Sistema de control de versionamiento (VCS) | Tema 1: Conceptos generales de la POO
El control de versiones es un sistema que registra los cambios realizados sobre un archivo
o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones
específicas más adelante. El control de versiones es útil para guardar cualquier documento
que cambie con frecuencia, como código fuente, documentación o ficheros de configuración.
Un método de control de versiones usado por muchas personas es copiar los archivos a
otro directorio (quizás indicando la fecha y hora en que lo hicieron, si son ingeniosas). Este
método es muy común porque es muy sencillo, pero también es tremendamente propenso a
errores. Es fácil olvidar en qué directorio te encuentras y guardar accidentalmente en el
archivo equivocado o sobrescribir archivos que no querías. Para hacer frente a este
problema, los programadores desarrollaron hace tiempo VCSs locales, que contenían una
simple base de datos en la que se llevaba el registro de todos los cambios realizados sobre
los archivos, como muestra la figura 1.
Fuente: https://git-scm.com/book/es/v1/Empezando-Acerca-del-control-de-versiones
El siguiente gran problema que se encuentra la gente es que necesita colaborar con
desarrolladores en otros sistemas. Para solventar este problema, se ejecutaron los sistemas
de control de versiones centralizados (Centralized Version Control Systems o CVCSs en
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/3
2/7/2020 1.1. Sistema de control de versionamiento (VCS) | Tema 1: Conceptos generales de la POO
inglés). Estos sistemas, como CVS, Subversion y Perforce, tienen un único servidor que
contiene todos los archivos versionados y varios clientes que descargan los archivos de ese
lugar central. Durante muchos años, este ha sido el estándar para el control de versiones
(figura 2).
Fuente: https://git-scm.com/book/es/v1/Empezando-Acerca-del-control-de-versiones
Esta configuración ofrece muchas ventajas, especialmente frente a VCSs locales. Por
ejemplo, todo el mundo sabe hasta cierto punto en qué está trabajando el resto de gente en
el proyecto. Los administradores tienen control detallado de qué puede hacer cada uno; es
mucho más fácil administrar un CVCS que tener que lidiar con bases de datos locales en
cada cliente. Sin embargo, esta configuración también tiene serias desventajas. La más obvia
es el punto único de fallo que representa el servidor centralizado. Si ese servidor se cae
durante una hora, entonces durante esa hora nadie puede colaborar o guardar cambios
versionados de aquello en que están trabajando. Si el disco duro en el que se encuentra la
base de datos central se corrompe y no se han llevado copias de seguridad adecuadamente
pierdes absolutamente todo, toda la historia del proyecto, salvo aquellas instantáneas que la
gente pueda tener en sus máquinas locales. Los VCSs locales sufren de este mismo
problema cuando tienes toda la historia del proyecto en un único lugar, te arriesgas a perderlo
todo.
Es aquí donde entran los sistemas de control de versiones distribuidos (Distributed Version
Control Systems o DVCSs en inglés). En un DVCS (como Git, Mercurial, Bazaar o Darcs), los
clientes no solo descargan la última instantánea de los archivos, replican completamente el
repositorio. Así, si un servidor muere y estos sistemas estaban colaborando a través de él,
cualquiera de los repositorios de los clientes puede copiarse en el servidor para restaurarlo.
Cada vez que se descarga una instantánea, en realidad se hace una copia de seguridad
completa de todos los datos como indica la figura 3.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 2/3
2/7/2020 1.1. Sistema de control de versionamiento (VCS) | Tema 1: Conceptos generales de la POO
Fuente: https://git-scm.com/book/es/v1/Empezando-Acerca-del-control-de-versiones
Es más, muchos de estos sistemas se las arreglan bastante bien teniendo varios
repositorios con los que trabajar, por lo que puedes colaborar con distintos grupos de gente
de maneras distintas simultáneamente dentro del mismo proyecto. Esto te permite establecer
varios tipos de flujos de trabajo que no son posibles en sistemas centralizados, como pueden
ser los modelos jerárquicos.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 3/3
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
Git es un software de control de versiones diseñado por Linus Torvalds. La pregunta es:
¿qué es control de versiones? Pues bien, se define como control de versiones a la gestión de
los diversos cambios que se realizan sobre los elementos de algún producto o una
configuración de este, y para los que aún no les queda claro del todo, control de versiones es
lo que se hace al momento de estar desarrollando un software o una página web.
Exactamente es eso que haces cuando subes y actualizas tu código en la nube o le añades
alguna parte o simplemente le editas cosas que no funcionan como deberían o al menos no
como tú esperarías.
Rapidez en la gestión de ramas, debido a que Git nos dice que un cambio será
fusionado mucho más frecuentemente de lo que se escribe originalmente.
Gestión distribuida. Los cambios se importan como ramas adicionales y pueden ser
fusionados de la misma manera como se hace en la rama local.
Gestión eficiente de proyectos grandes.
Realmacenamiento periódico en paquetes.
GitHub es una compañía sin fines de lucro que ofrece un servicio de hosting de
repositorios almacenados en la nube. Esencialmente, hace que sea más fácil para individuos
y equipos usar Git como la versión de control y colaboración.
La interfaz de GitHub es bastante fácil de usar para el desarrollador novato que quiera
aprovechar las ventajas del Git. Sin GitHub, usar un Git generalmente requiere de un poco
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/8
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
GitHub es tan fácil de usar, que incluso algunas personas lo usan para administrar otro
tipo de proyectos, como escribir libros.
Además de esto, cualquier persona puede inscribirse y alojar un repositorio de código público
completamente gratuito, el cual hace que GitHub sea especialmente popular con proyectos
de fuente abierta.
Como compañía, GitHub obtiene dinero vendiendo alojamiento para repositorios de código
privado, al igual que otros planes enfocados para negocios, lo que hace más fácil que las
organizaciones administren a los miembros de su equipo y su seguridad. Utilizamos GitHub
de forma extensiva aquí en Kinsta para administrar y desarrollar proyectos internos.
Tenemos que tener instalado Git en nuestro ordenador que estará en la página oficial
(https://git-scm.com/).
Figura 4. Descarga.
Figura 5. Descarga.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 2/8
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
Figura 6. Repositorio.
El siguiente paso es tener un código fuente listo para subir, que es un programa que sume
dos números enteros, como se muestra en la figura 8.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 3/8
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
Figura 9. Ejemplo.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 4/8
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 5/8
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
Esta opción nos agrega todos los archivos del proyecto, todo lo que utiliza el paquete de
Java para poderlo subir. Le damos clic en Commint.
Damos clic en Push. En esta opción necesitamos la url del repositorio en el que vamos a
subir el archivo. Inicialmente al crear un repositorio nos da un enlace, tenemos que copiar el
enlace y pegarlo, nos pedirá nuestro usuario y contraseña. Una vez que hemos llenado esos
campos le damos clic en siguiente.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 6/8
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 7/8
2/7/2020 1.1.1. Software VCS: Git, GitHub | Tema 1: Conceptos generales de la POO
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 8/8
2/7/2020 1.2. Paradigmas de programación | Tema 1: Conceptos generales de la POO
Transición de paradigmas
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/2
2/7/2020 1.2. Paradigmas de programación | Tema 1: Conceptos generales de la POO
Fuente: https://culturacion.com/wp-content/uploads/2011/05/Image1.jpg
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 2/2
2/7/2020 1.2.1. Transición de paradigma | Tema 1: Conceptos generales de la POO
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/1
2/7/2020 1.3. Revisión de conceptos generales del paradigma orientado a objetos | Tema 1: Conceptos generales de la POO
Simula 67 introdujo por primera vez los conceptos de clases, objetos, herencia, subclases,
corrutinas y funciones virtuales. Es por esta razón que Simula es considerado el primer
lenguaje orientado a objetos.
Como se puede ver, los objetos interactúan entre ellos, ha habido un análisis funcional
que ha conducido a la creación de los diferentes objetos, su realización y su puesta en
relación.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/2
2/7/2020 1.3. Revisión de conceptos generales del paradigma orientado a objetos | Tema 1: Conceptos generales de la POO
El código del programa al modelar los objetos va a seguir esta realidad, proponiendo
tantos objetos como se han descrito con anterioridad, pero definiendo entre estos objetos los
métodos de intercambio adecuados, que conducirán al funcionamiento esperado.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 2/2
2/7/2020 1.3.1. Principios generales de la POO | Tema 1: Conceptos generales de la POO
Fuente https://previews.123rf.com/images/dualororua/dualororua1706/dualororua170600527/80388651-
ni%C3%B1o-de-dibujos-animados-corriendo-y-llevando-un-material-escolar.jpg
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para
escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que
veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos
un poco. Con este tipo de programación, cada objeto tiene una responsabilidad y el resultado
es el producto de la colaboración de todos los objetos en la solución del problema. Las
acciones en programación orientada a objetos se producen como respuesta a las peticiones
de acciones, que se llaman mensajes. Un objeto puede aceptar un mensaje y como
respuesta puede realizar una acción y devolver un valor. Está basado en varias técnicas,
incluyendo herencia, abstracción, polimorfismo y encapsulamiento, que sirven como pilares
de la POO (figura 24).
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/7
2/7/2020 1.3.1. Principios generales de la POO | Tema 1: Conceptos generales de la POO
Fuente https://elvex.ugr.es/decsai/builder/intro/oop/pilares.gif
Fuente: http://1.bp.blogspot.com/-
l3aZgFckxJY/VOEUXEtWVQI/AAAAAAAAAHA/Jb3TzvMPAEI/s1600/image008.png
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 2/7
2/7/2020 1.3.1. Principios generales de la POO | Tema 1: Conceptos generales de la POO
Fuente: http://ygalicia.cs.buap.mx/POO.pdf
En otras palabras, es la capacidad de esconder los detalles de cómo funciona algo, detrás
de una interfaz. Solo se necesita conocer la interfaz para poder usar alguna cosa. El usuario
no se ve afectado si se cambia o se mejora al funcionamiento interno de algo, mientras se
mantenga la interfaz.
Ejemplo de encapsulamiento
Consiste en restringir el acceso y ocultar el proceso de cada uno de los datos miembro de
una clase y solo podrán cambiar mediante las operaciones definidas para ese espacio. El
aislamiento protege contra la modificación y garantiza el flujo del programa. Una clase y un
método funcionan como cápsula. En una pantalla, nosotros solo vemos la imagen y no
conocemos lo que se procese dentro (figura 27).
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 3/7
2/7/2020 1.3.1. Principios generales de la POO | Tema 1: Conceptos generales de la POO
Fuente http://paginawebleon.mx/wp/programacion-orientada-a-objetos-poo/
Fuente: http://agrega.juntadeandalucia.es/repositorio/02122016/da/es-
an_2016120212_9103251/Polimorfismo.jpg
Herencia. Las clases no se encuentran aisladas, sino que se relacionan entre sí,
formando una jerarquía de clasificación. Es el proceso mediante el cual un objeto
hereda las propiedades a una subclase, la cual contiene las características de la clase
primaria, nos ayudan a reutilizar el código existente. En la figura 29 se muestra un
ejemplo.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 4/7
2/7/2020 1.3.1. Principios generales de la POO | Tema 1: Conceptos generales de la POO
Fuente http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/POO/Apuntes/01.-
%20Introduccion%20a%20la%20POO.pdf
Semánticamente, la herencia denota una relación “es un”, por ejemplo, un oso es un
mamífero, una casa es un bien inmueble. Los objetos en sí disponen de una clase, atributo y
método.
Fuente: https://image.slidesharecdn.com/cuadrocomparativodeenfoqueestructuradoyenfoqueorientado-
131123193238-phpapp01/95/cuadro-comparativo-de-enfoque-estructurado-y-enfoque-orientado-2-638.jpg?
cb=1385235348
A partir de las diferencias previamente establecidas para los dos paradigmas, se puede
determinar las ventajas y desventajas de que dispone la POO.
Tabla 1
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 5/7
2/7/2020 1.3.1. Principios generales de la POO | Tema 1: Conceptos generales de la POO
Ventajas Desventajas
Mantenimiento de software
Amplia documentación
Fuente https://ferestrepoca.github.io/paradigmas-de-programacion/poo/poo_teoria/index.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 6/7
2/7/2020 1.3.1. Principios generales de la POO | Tema 1: Conceptos generales de la POO
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 7/7
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Objeto
Los objetos poseen características propias que los distinguen entre sí.
Ejemplo de objeto
En la siguiente imagen podemos observar que hay cuatro perros, a estos perros podemos
ver como un objeto, ya que tienen características y acciones propias:
Características Acciones
- Raza - Ladrar
- Nombre - Comer
- color - Ladrar
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 1/8
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Fuente: https://previews.123rf.com/images/ghenadie/ghenadie1704/ghenadie170400037/76873629-conjunto-de-
perros-de-perrito-de-dibujos-animados-simple-ilustraci%C3%B3n-vectorial.jpg
Características
- Nombre
- Edad
- Genero
- Estatura
- Peso
Acciones
- Saludar
- Hablar
- Comer
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 2/8
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Fuente: http://micanalsamuelc.blogspot.com/
Clase
Una clase no es un objeto, es solo una planilla, plano o definición para crear objetos.
A partir de una clase se pueden crear muchos objetos independientes con las mismas
características.
Fuente: http://ferestrepoca.github.io/paradigmas-de-programacion/poo/poo_teoria/images/philosophy.png
Un objeto es declarado a partir de una clase, los datos y funciones son encapsulados, un
objeto es una instancia de una clase.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 3/8
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Fuente: http://cdn.simplesite.com/i/5e/50/285415631240056926/i285415639416338167._szw480h1280_.jpg
Cada clase tendrá atributos y métodos propios específicos que darán funcionalidad a los
objetos creados. Tomemos como ejemplo un objeto vehículo el cual será representado con el
siguiente molde:
Fuente: http://paginawebleon.mx/wp/programacion-orientada-a-objetos-poo/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 4/8
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Fuente: https://www.google.com/url?
sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwjO7M_j6J3nAhWrslkKHYXTA90QjB16BAgBEAM&url
Instanciar
Atributo
Se trata de las propiedades que tiene un objeto, consideradas como tal las características
de las que dispone la clase como el nombre, el color, el modelo, entre otras.
Los atributos son los datos que se van a almacenar de los objetos. Se declaran de la
siguiente manera:
tipo nombreAtributo;
int numero;
float valorResultado;
Fuente http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/POO/Apuntes/01.-
%20Introduccion%20a%20la%20POO.pdf
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 5/8
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Método
Son mecanismos que permiten acceder a los atributos de un objeto. Son las operaciones
que es capaz de hacer un objeto, como en el caso de un automóvil se puede acelerar, frenar,
prender, moverse, abrirse, entre otros. En los métodos se implementan los algoritmos, así
mismo de cada método debe indicarse su nivel de accesibilidad.
Fuente http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/POO/Apuntes/01.-
%20Introduccion%20a%20la%20POO.pdf
Ejemplos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 6/8
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Los atributos son representados con un signo – esto quiere decir que son privados, solo la
clase los conoce.
Los métodos son representados con un signo + que significa que son públicos.
Se puede observar que son objetos mesas de los cuales podemos abstraer las
características que tienen: atributos: material, forma/modelo, color, entre otros.
Fuente: https://www.google.com/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwjU--
ac7p3nAhVCj1kKHZe5CeQQjB16BAgBEAM&url=https%3A%2F%2Fwww.degaplast.com.ar%2Fvaso-facetado-
plastico-simil-vidrio-nair-320-color-x-72-unidades--det-
-06010118&psig=AOvVaw1GPg4tfUVNGNxoUZmLMKu2&ust=1580011108608155
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 7/8
2/7/2020 1.3.2. Definición de objeto, clase, atributo y método | Tema 1: Conceptos generales de la POO
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11559&wAccion=ver_scos 8/8
2/7/2020 Tema 2: Modelamiento de clases y objetos
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/1
2/7/2020 2.1. Modelamiento de clases y objetos | Tema 2: Modelamiento de clases y objetos
UML no es un lenguaje propiamente dicho, sino una serie de normas y estándares gráficos
respecto a cómo se deben representar los esquemas relativos al software.
UML se quiere convertir en un lenguaje estándar con el que sea posible modelar todos los
componentes del proceso de desarrollo de aplicaciones. Sin embargo, hay que tener en
cuenta un aspecto importante del modelo: no pretende definir un modelo estándar de
desarrollo, sino únicamente un lenguaje de modelado. Otros métodos de modelaje como
OMT (Object Modeling Technique) o Booch sí definen procesos concretos. En UML los
procesos de desarrollo son diferentes según los distintos dominios de trabajo; no puede ser el
mismo el proceso para crear una aplicación en tiempo real, que el proceso de desarrollo de
una aplicación orientada a gestión, por poner un ejemplo.
Elementos estructurales
Elementos de comportamiento
Elementos de agrupación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/3
2/7/2020 2.1. Modelamiento de clases y objetos | Tema 2: Modelamiento de clases y objetos
Elementos de anotación
Dependencia
Asociación
Generalización
Realización
Clases Estados
Objetos Actividades
Secuencia Despliegue
Colaboración
Clasificación de diagramas
Se dispone de dos tipos diferentes de diagramas: los que dan una vista estática del
sistema y los que dan una visión dinámica.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 2/3
2/7/2020 2.1. Modelamiento de clases y objetos | Tema 2: Modelamiento de clases y objetos
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 3/3
2/7/2020 2.1.1. UML Diagrama de casos de uso | Tema 2: Modelamiento de clases y objetos
Un caso de uso es una descripción de las acciones de un sistema desde el punto de vista
del usuario. Es una herramienta valiosa dado que es una técnica de aciertos y errores para
obtener los requerimientos del sistema, justamente desde el punto de vista del usuario.
Los diagramas de caso de uso modelan la funcionalidad del sistema usando actores y
casos de uso. Los casos de uso son servicios o funciones provistas por el sistema para sus
usuarios.
Fuente: http://www.antonionavas.info/blog/wp-content/uploads/2016/01/requerimientos6-simbologia.jpg
Sistema
El rectángulo representa los límites del sistema que contiene los casos de uso. Los actores
se ubican fuera de los límites del Sistema.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/5
2/7/2020 2.1.1. UML Diagrama de casos de uso | Tema 2: Modelamiento de clases y objetos
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/3.png
Caso de uso
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/4.png
Actor
Un diagrama de caso de uso contiene los símbolos del actor y del caso de uso, junto con
líneas conectoras. Los actores son similares a las entidades externas; existen fuera del
sistema. El término actor se refiere a un rol específico de un usuario del sistema.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 2/5
2/7/2020 2.1.1. UML Diagrama de casos de uso | Tema 2: Modelamiento de clases y objetos
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/5.png
Relaciones
Las relaciones entre un actor y un caso de uso se dibujan con una línea simple. Para
relaciones entre casos de uso, se utilizan flechas etiquetadas “incluir” o “extender”. Una
relación “incluir” indica que un caso de uso es necesitado por otro para poder cumplir una
tarea. Una relación “extender” indica opciones alternativas para un cierto caso de uso.
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/esta.png
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 3/5
2/7/2020 2.1.1. UML Diagrama de casos de uso | Tema 2: Modelamiento de clases y objetos
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/8.png
Un diagrama en UML
Un documento detallado
Documentar casos de uso no es una tarea fácil que se pueda dominar de un día para
otro, requiere de tiempo, disciplina y experiencia, sin embargo, podemos definir una serie de
pasos identificables para escribir los casos de uso.
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/9.png
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/10.png?w=646&h=373
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 4/5
2/7/2020 2.1.1. UML Diagrama de casos de uso | Tema 2: Modelamiento de clases y objetos
Fuente: https://ingsotfwarekarlacevallos.files.wordpress.com/2015/07/11.png
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 5/5
2/7/2020 2.1.2. UML Diagrama de clases | Tema 2: Modelamiento de clases y objetos
En UML, una clase se representa con un rectángulo que posee tres divisiones: nombre de
la clase, atributos que tiene y métodos.
En la segunda parte van los atributos o variables de instancia; las variables de clase
van subrayados.
En el último cuadro se escriben los métodos, es decir, las operaciones que puede
realizar.
Debemos tener en cuenta que una clase que no tiene comportamiento no está
comunicando qué tipo de rol cumple en la solución, así que o está faltando definir qué es lo
que le puedo pedir, o entonces esa clase no debería estar en el diagrama.
Fuente: https://2.bp.blogspot.com/-
GNHmDKzeqcI/WJj8EFzPbxI/AAAAAAAABZ8/iH9R4gmpdMUsYaOGLU3TYW_oB9nTyECXwCK4B/s640/elemen
Relaciones
Los tipos más importantes de relaciones entre clases son los siguientes:
Asociación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/6
2/7/2020 2.1.2. UML Diagrama de clases | Tema 2: Modelamiento de clases y objetos
Cada asociación puede presentar elementos adicionales que doten de mayor detalle al
tipo de relación:
Herencia
Agregación
Composición
Dependencia
Una relación de dependencia se utiliza entre dos clases o entre una clase y una interfaz e
indica que una clase requiere de otra para proporcionar alguno de sus servicios.
Interfaces
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 2/6
2/7/2020 2.1.2. UML Diagrama de clases | Tema 2: Modelamiento de clases y objetos
Paquetes
Los paquetes se usan para dividir el modelo de clases del sistema de información,
agrupando clases u otros paquetes según los criterios que sean oportunos. Las
dependencias entre ellos se definen a partir de las relaciones establecidas entre los distintos
elementos que se agrupan en estos paquetes.
Notación general
Fuente: https://manuel.cillero.es/wp-content/uploads/2013/11/asociacion.png
Notaciones específicas
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 3/6
2/7/2020 2.1.2. UML Diagrama de clases | Tema 2: Modelamiento de clases y objetos
Fuente: https://manuel.cillero.es/wp-content/uploads/2013/11/tipos-asociacion.png
Interfaces
Una interfaz se representa como una caja con compartimentos, igual que las clases. En la
zona superior se incluye el nombre y el estereotipo <>. La lista de operaciones se coloca en
la zona inferior, igual que en las representaciones de clases. La zona en la que se listan los
atributos estará vacía o puede omitirse.
Existe una representación más simple para la interfaz: un círculo pequeño asociado a una
clase con el nombre de la interfaz debajo. Las operaciones de la interfaz no aparecen en esta
representación; si se quiere que aparezcan, debe usarse la primera notación.
Entre una clase que implementa las operaciones que una interfaz ofrece y esa interfaz se
establece una relación de realización que, dependiendo de la notación elegida, se
representará con una línea continua entre ellas cuando la interfaz se representa como un
círculo y con una flecha hueca discontinua apuntando a la interfaz cuando se represente
como una clase.
Fuente: https://manuel.cillero.es/wp-content/uploads/2013/11/clase-interfaz.png
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 4/6
2/7/2020 2.1.2. UML Diagrama de clases | Tema 2: Modelamiento de clases y objetos
Paquetes
Los paquetes se representan mediante un icono con forma de carpeta y las dependencias
con flechas discontinuas entre los paquetes dependientes.
Ejemplo
Solución
2. Tras identificar todas las posibles clases que se extraen de forma directa del enunciado
pasamos a eliminar aquella que no aporta nada para modelar el problema.
a. En la clase reproducción vemos que tenemos reproducir (), detener (), adelantar (),
retroceder.
b. A diferencia de los atributos, se ubica el símbolo + que significa público y el tipo de
método va a hacer y en el CD obtener duración total ().
c. A continuación, ubicamos las diferentes relaciones entre las clases modeladas
dependiendo de cada enunciado y comportamiento del mundo real.
d. Luego, vemos cómo queda el respectivo diagrama de clases.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 5/6
2/7/2020 2.1.2. UML Diagrama de clases | Tema 2: Modelamiento de clases y objetos
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 6/6
2/7/2020 2.1.3. Identificar clases de un sistema. Uso correcto de identificadores | Tema 2: Modelamiento de clases y objetos
Identificadores
Son los nombres que pueden tener las clases, los métodos y las variables y no pueden
contener espacios ni caracteres especiales.
Tabla 1
Tipos de identificadores
Comienza con
Clase HolaMundoOO
mayúscula.
Fuente: http://www.cursodejava.com.mx/cursodejava105.html
Si el identificador está formado por más de un vocablo, a partir del segundo las iniciales
deben ser mayúsculas. Además, se recomienda que los nombres de las clases sean
sustantivos, los de los métodos verbos y que las variables expresen con claridad su
contenido.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/2
2/7/2020 2.1.3. Identificar clases de un sistema. Uso correcto de identificadores | Tema 2: Modelamiento de clases y objetos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 2/2
2/7/2020 2.1.4. Modificadores de acceso | Tema 2: Modelamiento de clases y objetos
Los modificadores de acceso nos permiten determinar desde qué clase o desde qué parte
de nuestro programa cierto elemento podrá ser accedido o utilizado como, por ejemplo, una
variable, un método o una clase.
1. Private. Es el más restrictivo de todos. Los elementos que hagan uso de él solo podrán
ser accedidos dentro de la misma clase. (Se aplica a los atributos o miembros de una
clase, interfaces y clases internas).
2. Protected. Los elementos podrán ser accedidos desde el mismo paquete y desde
cualquier clase que extienda o herede de la clase padre, independientemente si se
encuentran en el mismo paquete o no. (Se aplica a los miembros de una clase como
atributos, métodos, etc.).
Tabla 2
Modificadores de acceso
Private Sí No No No
Protected Sí Sí Sí No
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/2
2/7/2020 2.1.4. Modificadores de acceso | Tema 2: Modelamiento de clases y objetos
Public Sí Sí Sí Sí
Default Sí Sí No No
Fuente: http://unaprendizprogramacion.blogspot.com/2015/06/modificadores-de-acceso.html
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 2/2
2/7/2020 2.1.5. Implementación de clases | Tema 2: Modelamiento de clases y objetos
Debemos crear una clase antes de poder crear objetos (instancias) de esa clase. Al crear
un objeto de una clase, se dice que se crea una instancia de la clase o un objeto propiamente
dicho.
Ejercicio 1
Se desea crear una aplicación que permita jugar a dos jugadores, en la cual los usuarios
ingresan por teclado su userName, y cada jugador tiene un puntaje inicial de 100 puntos.
El programa termina cuando uno de los dos jugadores ingresa la raíz correcta o se queda
sin puntaje.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/2
2/7/2020 2.1.5. Implementación de clases | Tema 2: Modelamiento de clases y objetos
Ejercicio 2
Se necesita realizar el modelado de una aplicación para los Cevichochos del Sur que
solicita realizar una aplicación que le permita conocer cuántos cevichochos puede preparar si
se conoce la cantidad de materia prima que dispone. Para preparar se conoce lo siguiente:
Que por cada tres platos de cevichochos necesita: 0,250 gramos de chochos, 0,100
gramos de especies (curtido, jugo tomates, chifles, cueros).
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 2/2
2/7/2020 Anexos | Tema 2: Modelamiento de clases y objetos
Anexos
Anexos
Apache NetBeans
https://sourceforge.net/projects/plantumlnb/
Luego, en nuestro IDE se dirige a la opción "Tools > Plugins", como se observa en la
figura 19.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 1/5
2/7/2020 Anexos | Tema 2: Modelamiento de clases y objetos
Haz clic en "Install". Confirma todas las ventanas que vienen después y se reinicia.
Instalación de graphviz
Este plugin necesita del graficador para que muestre lo procesado en nuestro IDE. Este
graficador se lo puede descargar desde http://www.graphviz.org/Download..php y en el
margen izquierdo está el listado del instalador para el respectivo sistema operativo.
Se descarga, se instala como cualquier otro aplicativo, y listo. Ahora, debes buscar dónde
está el ejecutable dot.exe. En Windows es posible que se encuentre aquí: c:\Program Files
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 2/5
2/7/2020 Anexos | Tema 2: Modelamiento de clases y objetos
(x86)\GraphvizX.X\bin
Ahora, teniendo la ubicación del dot.exe en claro, regresa al IDE, y ve a la opción: Tools >
Options > Miscellaneous > PlantUML, e indica la ubicación de dot.exe, como se observa en
la figura 22.
Diagramando en UML
Bien, todo listo para crear nuestro primer diagrama. Para comenzar, se debe tener
cualquier proyecto creado. Luego, seleccionar File > New File (o Ctrl+N) y en "Categorías"
seleccionar "PlantUML" y a la derecha "New PlantUML Diagram", como se observa en la
figura 23.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 3/5
2/7/2020 Anexos | Tema 2: Modelamiento de clases y objetos
Listo, ya tienes el IDE listo para poder crear nuestro diagrama, como se observa en la
figura 24.
Páginas web con más información sobre la creación de diagramas uml con PlantUML
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 4/5
2/7/2020 Anexos | Tema 2: Modelamiento de clases y objetos
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11560&wAccion=ver_scos 5/5
2/7/2020 Tema 3: Estructura de un programa
Estructura de un programa
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/1
2/7/2020 3.1. Introducción | Tema 3: Estructura de un programa
3.1. Introducción
3.1. Introducción
Un programa (sea informático o no) está compuesto por cuatro partes bien diferenciadas:
Memoria. Ofrece un espacio al programa para almacenar datos y recuperarlos más tarde.
Ejemplo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/2
2/7/2020 3.1. Introducción | Tema 3: Estructura de un programa
Figura 1. Lavadora.
Fuente: https://es.123rf.com/photo_95127144_lavadora-de-dibujos-animados-y-lavander%C3%ADa.html
El código son las distintas acciones que la lavadora lleva a cabo, que dependen, ni más ni
menos, del programa elegido y de las entradas (la cantidad de detergente, suavizante, lejía y
la ropa sucia). La salida, en este caso, está clara: la ropa lavada. Que esté más o menos
limpia dependerá del tipo de ropa, de cómo estaba de sucia, del programa que hayamos
escogido y de la cantidad de producto que hayamos usado, en fin, de las entradas. Por otro
lado, la lavadora también usa la memoria para saber en qué punto está dentro del programa
seleccionado, el tiempo que le queda para pasar al siguiente estadio de lavado, etc.
Para entender mejor el tema es necesario conocer una definición básica sobre Java.
Según el portal Definición, “Java es un lenguaje de programación orientado a objetos que se
incorporó al ámbito de la Informática en los años noventa. La idea de Java es que pueda
realizarse programas con la posibilidad de ejecutarse en cualquier contexto, en cualquier
ambiente, siendo así su portabilidad uno de sus principales logros…”.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/2
2/7/2020 3.1.1. Lenguajes de programación más utilizados | Tema 3: Estructura de un programa
Existen tres tipos de lenguajes claramente diferenciados: el lenguaje máquina, los lenguajes
de bajo nivel y los de alto nivel.
Fuente: https://codigoonclick.com/mejores-lenguajes-programacion-para-2018/
C++
Es un lenguaje orientado a objetos, aunque también tiene las mismas características que
C, como por ejemplo, su eficiencia y el uso de punteros.
Como es lógico, y debido a que se creó a partir de C, C++ cuenta con diversas mejoras y
avances respecto de C, lo que le hace un lenguaje más completo y es por ello que los
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/3
2/7/2020 3.1.1. Lenguajes de programación más utilizados | Tema 3: Estructura de un programa
Java
Java nace en 1991 con el nombre "OAK", posteriormente cambiado por Green por
problemas legales y finalmente con la denominación actual JAVA.
Posee modularidad que permite dividir los programas en pequeños módulos denominados
clases, para reducir la complejidad del problema y, en caso de producirse un fallo, este
solamente afecta al módulo donde se produjo y no a todo el programa.
Es dinámico, podemos compilar y ejecutar los programas en tiempo real, y seguro, ya que
elimina los accesos ilegales a memoria que realizan los punteros en C.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/3
2/7/2020 3.1.1. Lenguajes de programación más utilizados | Tema 3: Estructura de un programa
En definitiva, Java es uno de los lenguajes más utilizados actualmente ya que podemos
reutilizar el código de los programas y su arquitectura neutral nos permite utilizarlo en
cualquier arquitectura y sistema operativo independientemente de la máquina en que se
realizó el programa. Es un lenguaje fácil de aprender lo que reduce los tiempos de formación
y aprendizaje de las personas que lo vayan a utilizar.
Python
Python fue creado a finales de los ochenta por Guido van Rossum en CWI en los Países
Bajos como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e
interactuar con el sistema operativo Amoeba. Van Rossum es el principal autor de Python, y
su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como
Benevolente dictador vitalicio o Benevolent Dictator for Life (BDFL).
Es un lenguaje tipificado que cuenta con un gran número de librerías, tipos de datos y
funciones que sirven de mucha ayuda al programador y simplifican su trabajo.
Uno de los aspectos más importantes es que se trata de un lenguaje libre y gratuito por lo
que se pueden realizar copias del software y modificarlo como se quiera con tal de mejorarlo.
Como consecuencia de ello existen diversas versiones de Python.
Se utiliza con mucha frecuencia gracias a que es un lenguaje de propósito general que nos
permite realizar desde cualquier tipo de programa hasta desarrollar páginas web.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 3/3
2/7/2020 3.2. Estructura de un programa | Tema 3: Estructura de un programa
Una sentencia es una unidad ejecutable más pequeña de un programa. En otras palabras,
una línea de código escrita es una sentencia. Especifica y controla el flujo y orden de
ejecución del programa. Una sentencia consta de palabras clave o reservadas como cout,
cin, for, while, if ... else, etc., expresiones, declaraciones o llamadas a funciones. Si no existen
sentencias específicas de selección o salto, el programa se ejecuta de forma secuencial en el
mismo orden en que se ha escrito el código fuente (es el que podríamos considerar orden
"natural" de ejecución).
De etiqueta
De expresión
Compuestas
De selección
De iteración
De salto
De declaración
Bloques de intento
Sentencias de pre proceso
Sentencias ensamblador
Sentencias de etiqueta
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/5
2/7/2020 3.2. Estructura de un programa | Tema 3: Estructura de un programa
Existen tres clases de sentencias etiquetadas: las etiquetas directas, las sentencias case y
las default, estas últimas se utilizan en conjunción con las sentencias switch.
Sentencias de expresión
Podríamos decir que son las que no pertenecen a ninguno de los otros grupos y que, en la
práctica, son las más abundantes. Generalmente son asignaciones o invocaciones de
funciones. Ejemplo:
Figura 3. Sentencias.
Fuente: https://www.ecured.cu/Sentencias_(Programaci%C3%B3n)
Sentencias compuestas
Figura 4. Sentencias.
Fuente: https://www.ecured.cu/Sentencias_(Programaci%C3%B3n)
En caso de cumplirse la condición hay que incrementar x, lo que puede hacerse en una
sola sentencia, pero si la condición resulta falsa, se precisan dos computaciones. Para que
se comporten como una sola frente a else, se recurre a englobarlas en un bloque entre llaves
{ ... }. Las sentencias dentro del bloque se comportan como una sola y constituyen un ámbito
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/5
2/7/2020 3.2. Estructura de un programa | Tema 3: Estructura de un programa
léxico. Los identificadores definidos en su interior eclipsan a los exteriores y las variables
automáticas creadas en él son destruidas al salir del ámbito.
Sentencias de iteración
Figura 5. Sentencias.
Fuente: https://www.ecured.cu/Sentencias_(Programaci%C3%B3n)
Sentencias de salto
Las sentencias de salto permiten transferir el control del programa de forma incondicional.
Existen cuatro de estas sentencias: break, goto start, continue y return. Ejemplo:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 3/5
2/7/2020 3.2. Estructura de un programa | Tema 3: Estructura de un programa
Figura 6. Sentencias.
Fuente: https://www.ecured.cu/Sentencias_(Programaci%C3%B3n)
Sentencias de declaración
Figura 7. Sentencias.
Fuente: https://www.ecured.cu/Sentencias_(Programaci%C3%B3n)
Bloques de intento
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 4/5
2/7/2020 3.2. Estructura de un programa | Tema 3: Estructura de un programa
Estas sentencias deben estar seguidas de una sentencia catch y tienen la forma:
Figura 8. Sentencias.
Fuente: https://www.ecured.cu/Sentencias_(Programaci%C3%B3n)
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 5/5
3/7/2020 3.2.1. El lenguaje de programación Java | Tema 3: Estructura de un programa
Fuente:
http://downloads.gvsig.org/download/documents/learning/collaborations/ce_1104_01/Programacion_personalizac
En la figura 9, el código define una clase (class) llamada “Programa” con una función
“main”, que será la que se ejecutará al iniciar el programa. El nombre de la clase ha sido
escogido arbitrariamente (es decir, puede cambiarse); no así el nombre de la función, que
siempre deberá llamarse “main”. Las funciones son simples agrupaciones (funcionales) de
código. Este programa deberá guardarse en un fichero que se llame como la clase más el
sufijo .java; en este caso, “Programa.java”. El código del programa deberá ir entre las llaves
de la función “main”.
En el siguiente programa:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/2
3/7/2020 3.2.1. El lenguaje de programación Java | Tema 3: Estructura de un programa
Fuente:
http://downloads.gvsig.org/download/documents/learning/collaborations/ce_1104_01/Programacion_personalizac
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/2
3/7/2020 3.2.2.Sintaxis de Java | Tema 3: Estructura de un programa
3.2.2.Sintaxis de Java
Java cumple con la sintaxis general que fue mencionada anteriormente, sin embargo,
posee una cierta estructura que no veremos en otro lenguaje de programación.
Declaración de variables
Las variables son unidades básicas de almacenamiento en Java. Una variable se define
por la combinación de un identificador, un tipo y un inicializador opcional. Además, las
variables tienen un ámbito que define su visibilidad y una duración.
Modificaciones de variables
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/7
3/7/2020 3.2.2.Sintaxis de Java | Tema 3: Estructura de un programa
Static. La variable es una variable de clase, compartida entre todos los objetos instancia de
una clase.
Volatile. Se necesita a veces cuando se utiliza una variable instancia por ¿¿ para prevenir al
compilador de su optimización.
Expresiones
Las expresiones se utilizan para buscar, calcular y asignar valores. Excepto para una
llamada a un método con un tipo de retorno void, todas las expresiones devuelvan un valor,
permitiendo a las expresiones combinarse en más expresiones complejas. Las expresiones
principales traen o crean valores y son las siguientes:
Un valor literal.
(expresión)
Identificador
Paquete. Identificador
Término [expresionValorentero]
Impresión básica
El flujo de salida estándar permite acceder a los métodos básicos de impresión; print () y
println(), de la clase PrintStream. Proporciona una referencia a un objeto de printStream que
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/7
3/7/2020 3.2.2.Sintaxis de Java | Tema 3: Estructura de un programa
Otro método es el printIn( ) el cual es similar al método print( ) excepto un carácter fin de
línea o secuencia se añade al final. Su sintaxis es la siguiente:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 3/7
3/7/2020 3.2.2.Sintaxis de Java | Tema 3: Estructura de un programa
Fuente: https://www.studocu.com/es/document/universidad-rey-juan-carlos/programacion-orientada-a-
objetos/resumenes/sintaxis-del-lenguaje-java/411416/view
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 4/7
3/7/2020 3.2.2.Sintaxis de Java | Tema 3: Estructura de un programa
Fuente: https://www.studocu.com/es/document/universidad-rey-juan-carlos/programacion-orientada-a-
objetos/resumenes/sintaxis-del-lenguaje-java/411416/view
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 5/7
3/7/2020 3.2.2.Sintaxis de Java | Tema 3: Estructura de un programa
Fuente: https://www.studocu.com/es/document/universidad-rey-juan-carlos/programacion-orientada-a-
objetos/resumenes/sintaxis-del-lenguaje-java/411416/view
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 6/7
3/7/2020 3.2.2.Sintaxis de Java | Tema 3: Estructura de un programa
Fuente: https://www.studocu.com/es/document/universidad-rey-juan-carlos/programacion-orientada-a-
objetos/resumenes/sintaxis-del-lenguaje-java/411416/view
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 7/7
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Los entornos de desarrollo son aplicaciones que permiten al programador implementar las
abstracciones del mundo real en un aplicación concreta mediante la introducción de
secuencias de código con sus estructuras de programación.
Actualmente existen dos entornos de desarrollo Java de amplio uso en el sector profesional.
Estos entornos de desarrollo Java: son NetBeans y Eclipse.
Para poder programar en Java, antes que nada, es imprescindible que el Java Development
Kit o JDK que, entre otras muchas cosas, incluye el compilador de Java, el depurador, las
bibliotecas de servicios y la JVM (Java Virtual Machine), permita convertir el código fuente en
bytecode y ejecutarlo.
Para poder instalar el JDK lo primero que debemos hacer es, lógicamente, descargar el
correspondiente paquete. Ya sabemos que podemos elegir entre distintos orígenes: Oracle,
OpenJDK, IBM, etc., así como entre múltiples versiones. Lo habitual es que obtengamos un
ejecutable (.exe para Windows), una imagen (.dmg para OS X) o un paquete (tar.gz para
GNU/Linux) comprimido. Almacenaremos dicho archivo temporalmente en el sistema donde
se quiere realizar la instalación.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Fuente: https://www.campusmvp.es/recursos/post/Paso-a-paso-como-instalar-el-JDK-de-Java-para-empezar-a-
programar.aspx
En el siguiente link, el tutor Francisco Charte muestra paso a paso cómo instalar y
configurar la versión 9 del JDK en Windows, Mac y Linux:
https://youtu.be/Ja6PvoTw_oQ
Verificación
A fin de verificar que el JDK está instalado correctamente, y conocer la versión exacta de
que se dispone, podemos usar los comandos java -versión y/o javac -versión.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Fuente: https://www.campusmvp.es/recursos/post/Paso-a-paso-como-instalar-el-JDK-de-Java-para-empezar-a-
programar.aspx
IDE de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 3/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Para poder utilizar el NetBeans primero debemos instalar el JDK (proceso anteriormente
detallado).
En la página oficial de Java damos clic en Java Platform y en la pantalla que aparezca
debemos dar clic en “Accept License Agreement” y seleccionar la descarga de acuerdo con el
tipo de computadora que se tenga (32 o 64 bits y el tipo de sistema operativo):
Se abre una nueva pestaña donde debemos crear una cuenta: Llenamos los datos que
soliciten. Se recomienda escribir en “Cargo: Estudiante” y en “Nombre de empresa: ESPE”:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 4/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Damos clic en “Crear una cuenta” y debemos ingresar al correo electrónico que dimos
como referencia para la verificación del correo, damos clic en la pestaña de “Verificación” y
deberá aparecer este mensaje:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 5/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Luego de haber instalado el JDK procederemos a instalar el NetBeans y para ello nos
dirigimos a la siguiente página: https://netbeans.org/downloads/8.0.2/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 6/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 7/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Damos clic en “Finish” y listo, NeatBeans estaría instalado con éxito para ya poder ser
utilizado:
Para que el kit de desarrollo (Java Development Kit) funcione correctamente se procede a
realizar la configuración de las variables de ambiente y a probar la versión instalada.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 8/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Lo primero que se debe hacer es copiar la ruta donde se instaló el JDK. Ejemplo:
“C:JavaCursojdk1.8.0_151”.
Con esta navegación muestra las variables de entorno que existen en el PC.
Tabla 1
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 9/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
No Nombre Valor
2 CLASSPATH (Nueva) .
Variable JAVA_HOME. Esta variable contiene la ruta donde se instaló nuestro JDK.
Variable CLASSPATH
Esta variable va a contener un punto “.”, esto para poder compilar programas Java desde
cualquier directorio en nuestro sistema operativo.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 10/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
Variable PATH
Esta es una variable del sistema muy importante, esta variable solo se va a modificar
porque ya se encuentra creada y con valor. Es una variable muy delicada, así que se hace la
modificación con mucho cuidado, ya que si se borra algún carácter se dejará inhabilitado
algún programa.
Ahora se posiciona al inicio de todo el contenido del campo Valor, después se escribe
“%JAVA_HOME%bin;”.
Lo que se está realizando con esto es decirle al sistema operativo que reconozca todos
los programas que se encuentran en nuestro directorio de instalación de Java en la carpeta
BIN.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 11/12
3/7/2020 3.3. Entorno de desarrollo | Tema 3: Estructura de un programa
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 12/12
3/7/2020 3.3.1. Probando la instalación | Tema 3: Estructura de un programa
Para esto se debe abrir una terminal de MS-DOS y se ejecuta el siguiente comando:
java -versión.
La ejecución del comando regresa la versión instalada del JDK, esto quiere decir que la
instalación y configuración fue correcta.
En este punto se instala un programa para que se pueda realizar los programas que se
desea en Java.
Para este fin hay muchos editores de código Java como son: JDdeveloper, NetBeans,
Eclipse, entre otros.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/1
3/7/2020 3.4. Creación de un programa básico O.O. | Tema 3: Estructura de un programa
Ejemplo
Empezaremos con el ejemplo de sumar dos números con Java pidiendo dichos números
por consola. Nos apoyaremos en la clase Scanner para realizar esta tarea. Es por ello que
instanciaremos el Scanner sobre la consola, la cual es representada mediante la clase
System.in
Para leer cada uno de los números nos apoyamos en el método .nextInt(). Ejecutaremos
este método dos veces (una por cada número) y almacenaremos el resultado en sendas
variables de tipo int.
Fuente: http://lineadecodigo.com/java/sumar-dos-numeros-con-java/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/6
3/7/2020 3.4. Creación de un programa básico O.O. | Tema 3: Estructura de un programa
Ya solo nos quedará la parte más sencilla del código, la suma de los números. El
resultado de la suma lo almacenaremos en otra variable.
Fuente: http://lineadecodigo.com/java/sumar-dos-numeros-con-java/
Solo nos quedará mostrar el resultado por pantalla. En este caso nos apoyamos en
System.out
Fuente: http://lineadecodigo.com/java/sumar-dos-numeros-con-java/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/6
3/7/2020 3.4. Creación de un programa básico O.O. | Tema 3: Estructura de un programa
De igual manera que la anterior se desplegará otra ventana y en la sección que dice
Project name se pondrá el nombre con el cual irá nuestro nuevo programa. Cabe recalcar
que al iniciar un nuevo proyecto la primera letra debe ser mayúscula y la que continúa de
igual manera como en la figura 41. Ademas si da clic en Browse se puede seleccionar dónde
quiere que se guarde el proyecto que crea NetBeans.
Una vez creado nuestro proyecto procedemos a realizar el hola mundo. En Java cuando
se compila el programa primero lee el main, es decir, el programa principal. Para hacer una
impresión en pantalla pondremos en el main System.out.println (“Hola mundo”).
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 3/6
3/7/2020 3.4. Creación de un programa básico O.O. | Tema 3: Estructura de un programa
Una vez puesto el Hola mundo se dará clic en el icono que se indica en la flecha, este
icono compilará y ejecutará el programa y en la parte inferior indicará nuestro Hola mundo
como se ve en la figura 42.
Otro ejemplo para un mejor entendimiento será el de sumar dos números con Java
pidiendo dichos números por consola. Se usará la clase Scanner para realizar esta tarea. Es
por ello que se instancia el Scanner sobre la consola, la cual es representada mediante la
clase System.in.
Para leer cada uno de los números también usaremos el método nextInt (). Ahora se
ejecuta este método dos veces, una por cada número y se almacena el resultado en las
variables de tipo int. Ya solo queda la parte más sencilla del código: la suma de los números.
El resultado de la suma será almacenado en otra variable. Para indicar el resultado por
pantalla en este caso nos apoyamos en System.out el cual nos ayudará a indicar el resultado
de la suma realizada.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 4/6
3/7/2020 3.4. Creación de un programa básico O.O. | Tema 3: Estructura de un programa
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 5/6
3/7/2020 3.4. Creación de un programa básico O.O. | Tema 3: Estructura de un programa
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 6/6
3/7/2020 3.5. Tipos de datos, primitivos y referenciados | Tema 3: Estructura de un programa
Cuando se utilizan tipos entre los objetos estos no pueden intercambiarse, bueno, o al
menos no totalmente ya que pueden lograrse intercambiar de formas muy limitadas.
Un tipo de dato es una característica de datos que especifica cómo debe trabajarse el
mismo dentro de un entorno, esto incluye si se deben aplicar restricciones o alguna
operación específica para este tipo de dato.
Se debe tener en cuenta que la buena comprobación de tipos impide que se mezclen
abstracciones.
Tipo estático
Los datos de tipo estático son expresados en tiempo de compilación con esto se dice
que mediante un análisis de compilación puede determinarse el tipo de dato.
El tipo de dato estático puede llegar a ser muy restrictivo, pero detecta anomalías en
tiempo de compilación.
Los lenguajes que utilizan un tipado estático son C++, Java, C#.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 1/5
3/7/2020 3.5. Tipos de datos, primitivos y referenciados | Tema 3: Estructura de un programa
Fuente: https://laraveles.com/series/poo/tipos-datos-programacion-orientada-objetos/
El tipo estático permite que los errores sean detectados antes de la ejecución,
haciendo así la aplicación más eficiente.
Tipo estricto
Consistencia
La consistencia es una cualidad que tiene un objeto que resiste sin corromperse
fácilmente.
Restricción de declaración. Indica que todas las entidades deben tener un tipo
declarado.
Restricción de compatibilidad: El tipo fuente debe ser compatible con el tipo de
destino.
Restricción de llamada a característica. Para poder llamar a un atributo o método X
desde la clase Y, X tiene que estar definida en la clase Y o en sus antecesores.
Pesimismo
Se llama así cuando se tienen operaciones con tipos las cuales creemos estar seguros
que funcionaran o serán válidas siempre, pero si no se está seguro es preferible que no
se permita.
Tipo dinámico
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 2/5
3/7/2020 3.5. Tipos de datos, primitivos y referenciados | Tema 3: Estructura de un programa
Fuente: https://laraveles.com/series/poo/tipos-datos-programacion-orientada-objetos/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 3/5
3/7/2020 3.5. Tipos de datos, primitivos y referenciados | Tema 3: Estructura de un programa
Fuente: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=419:tipos-de-
datos-java-tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-cu00621b&catid=68&Itemid=188
Tipo referenciado
Los tipos de datos referencia o referenciados indican que vamos a trabajar con
instancias de clases, no con tipos primitivos. De esta manera, una variable de tipo
referencia establece una conexión hacia un objeto, y a través de esta conexión podemos
acceder a sus métodos y atributos.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 4/5
3/7/2020 3.5. Tipos de datos, primitivos y referenciados | Tema 3: Estructura de un programa
Las variables de tipo primitivo nos permiten almacenar valores primitivos como
números o caracteres. Las variables de tipo referencia NO almacenan valores, sino que
nos permiten acceder a métodos y atributos de un objeto.
Además, algo importante a tener en cuenta es que el tipo de referencia debe ser
compatible al tipo de objeto al que se refiere.
Fuente: http://ayudasprogramacionweb.blogspot.com/2012/12/tipos-de-datos-referencia-y-ejemplos-java.html
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11561&wAccion=ver_scos 5/5
3/7/2020 Tema 4: Constructores y métodos encapsulados
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/1
3/7/2020 4.1. Introducción | Tema 4: Constructores y métodos encapsulados
4.1. Introducción
4.1. Introducción
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/1
3/7/2020 4.2. Constructores | Tema 4: Constructores y métodos encapsulados
4.2. Constructores
4.2. Constructores
Los constructores son métodos públicos especiales en Java que sirven para inicializar
valores en instancias de objetos que llevan el mismo nombre de la clase, se invocan
automáticamente al momento de crear o instanciar el objeto de la clase. Las principales
características de los constructores son:
La función es de asignar memoria al objeto que se está creando e inicializar sus datos
como se muestra en la figura 1.
Figura 1. Constructores.
Es conveniente que haya al menos un constructor, si no existen se crea por Default o por
defecto sin parámetros que inicializan los atributos por defecto.
Nota. Se puede usar para establecer valores iniciales para los atributos de objeto.
Pueden existir varios tipos de constructores en una clase, si tienen diferentes listas de
parámetros que se indicarán a continuación.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/2
3/7/2020 4.2. Constructores | Tema 4: Constructores y métodos encapsulados
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 2/2
3/7/2020 4.3. Tipos de constructores | Tema 4: Constructores y métodos encapsulados
Una clase puede contener uno o varios constructores, es decir, definir algunos constructores
diferentes por el número o tipo de parámetros que reciben.
Los constructores pueden ser: vacío o por defecto, común o con parámetros y de copia.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/1
3/7/2020 4.3.1. Constructor vacío o por defecto | Tema 4: Constructores y métodos encapsulados
Nota. La palabra reservada this hace referencia al objeto que realiza la operación cuya
implementación especifica el método.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/1
3/7/2020 4.3.2. Constructor común o con parámetros | Tema 4: Constructores y métodos encapsulados
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/1
3/7/2020 4.3.3. Constructor de copia | Tema 4: Constructores y métodos encapsulados
El constructor de copia es aquel que recibe como parámetros un objeto de la misma clase
del cual se realiza una copia exacta de sus datos. (Calva & Asanza, 2015).
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/1
3/7/2020 4.3.4. Operador “this” | Tema 4: Constructores y métodos encapsulados
Un método miembro de un objeto está asociado al objeto. Cuando este se está ejecutando
se debe usar this, para conseguir una referencia al objeto asociado.
Dentro del método constructor, se usará this para acceder al nombre del objeto asociado.
La palabra clave this funciona igual dentro de un constructor como se presenta en el
siguiente ejemplo en la figura 6.
Fuente:http://www.edu4java.com/es/java/constructores-palabra-clave-this.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/3
3/7/2020 4.3.4. Operador “this” | Tema 4: Constructores y métodos encapsulados
En el método toString se usará this para acceder al campo nombre. En realidad, no es tan
necesario como se puede observar en la misma línea cuando se accede al campo. Por
defecto, el compilador entiende que es el campo del objeto asociado.
Fuente: http://www.edu4java.com/es/java/constructores-palabra-clave-this.html
Donde sí es necesario usar this es en Persona (String nombres, String apellido, String
dirección), donde existe un parámetro llamado nombre. Si se escribe solo “nombre”, el
compilador entiende que se refiere al parámetro y no al campo. Por eso se utiliza this
nombre=nombre inicializando el atributo como se indica en figura 8.
Fuente: http://www.edu4java.com/es/java/constructores-palabra-clave-this.html
Otro caso interesante donde usar this es en el constructor Persona (String nombre). Aquí
se llama al constructor informando solo el nombre. Lo que se quiere obtener es que los
demás campos tengan el contenido por defecto dado por el constructor vacío "No informado".
Se usa this () para llamar al constructor vacío public Persona (), desde el constructor
Persona (String nombre). Esto rellena todos los campos con "No informado” y luego
actualiza el nombre con el parámetro (Edu4, 2017). En la figura 9, presentamos la
introducción a la instanciación o creación de un objeto con o sin parámetros.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 2/3
3/7/2020 4.3.4. Operador “this” | Tema 4: Constructores y métodos encapsulados
Fuente: http://www.edu4java.com/es/java/constructores-palabra-clave-this.html
En el método main (principal), se puede ver cómo se crean tres objetos personas, usando
los diferentes constructores y después se imprime cada uno de los objetos, usando el método
toString ().
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 3/3
3/7/2020 4.4. Instanciación | Tema 4: Constructores y métodos encapsulados
4.4. Instanciación
4.4. Instanciación
La instanciación de una clase tiene por objetivo la creación de un objeto. Crear un objeto
significa reservar espacio de memoria para el mismo y establecer una ligadura con una
variable referencia. por lo que se puede concluir que instancia es la estrecha relación entre el
objeto y la clase.
Fuente: http://profejavaoramas.blogspot.com/2010/04/instancia.html
Clase
- Atributos
Se los denomina por lo general datos miembros, esto es los datos que se refieren al
estado del objeto como se puede observar en el figura 11.
- Métodos
Se los denomina por lo general funciones miembros, aquellos que pueden aplicarse al
objeto, el comportamiento de estos objetos que pueden contener o no parámetros.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/3
3/7/2020 4.4. Instanciación | Tema 4: Constructores y métodos encapsulados
Objeto
Un objeto está compuesto y al igual que los objetos del mundo real comparte siempre
características que son: estado (atributos) y comportamiento (funciones o métodos).
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 2/3
3/7/2020 4.4. Instanciación | Tema 4: Constructores y métodos encapsulados
Fuente: https://www.albertopalmer.com/2017/08/02/que-es-una-clase-que-es-un-objeto/
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 3/3
3/7/2020 4.4.1. Instanciar | Tema 4: Constructores y métodos encapsulados
4.4.1. Instanciar
4.4.1. Instanciar
Para instanciar(crear) objetos de una determinada clase se puede encontrar con distintas
formas que se deberá aplicar. Lo más habitual de ellas es utilizar la palabra reservada, la cual
nos proporciona la invocación de un constructor para crear objetos en Java siguiendo el
siguiente formato:
Fuente: https://javiergarciaescobedo.es/programacion-en-java/2-clases-y-objetos/218-instanciacion-de-objetos
Lo cual sería una llamada al método constructor (con o sin parámetros) de la clase. El
tipo de llamada nos devuelve una instancia u objeto de dicha clase. Una vez creado el objeto,
se podrá guardarlo en una variable dentro de cualquier expresión compatible con la clase del
objeto creado.
El proceso de declarar una variable que pueda contener el objeto de una determinada
clase se actúa de forma similar a la declaración de las variables habituales, es decir,
siguiendo la estructura como se muestra en la figura 15.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/2
3/7/2020 4.4.1. Instanciar | Tema 4: Constructores y métodos encapsulados
Fuente: https://javiergarciaescobedo.es/programacion-en-java/2-clases-y-objetos/218-instanciacion-de-objetos
Es habitual que a la vez que se declara una variable, se cree el objeto de la misma clase y
se le asigne a dicha variable, formando una sentencia completa de la siguiente forma:
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 2/2
3/7/2020 4.5. Métodos Getters y Setters | Tema 4: Constructores y métodos encapsulados
Los sets y gets son la forma de acceder a atributos de una clase. Generalmente, se usan
con los atributos privados, ya que a los públicos se puede acceder directamente sin tener que
acudir a ellos.
Conceptos generales
Getters. Del inglés Get, que significa obtener, nos sirve para obtener (recuperar o acceder) el
valor ya asignado a un atributo y utilizarlo para cierto método. Un tipo de dato representa un
conjunto de valores que significa lo mismo, un atributo el cual representa la clase de datos
que se está utilizando, sin embargo, hay algunos tipos que no representan valores en la
aplicación que se ejecutan.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 1/5
3/7/2020 4.5. Métodos Getters y Setters | Tema 4: Constructores y métodos encapsulados
Setters. Del inglés set, que significa establecer, nos sirve para asignar un valor inicial a un
atributo, pero de forma explícita, además el setter nunca retorna nada (siempre es void) y
solo nos permite dar acceso público a ciertos atributos que se desee que el usuario pueda
modificar.
Ejemplo práctico
Aquí se realizará un ejemplo práctico de la vida real que nos ayuda a entender mejor los
conceptos getters y setters.
Programa
Realizar una aplicación que dado dos números enteros realice las cuatro operaciones
básicas:
Suma
Resta
Producto
División
Clase 1: Número
Como se puede observar ahí, los métodos lo único que hacen es proporcionar un acceso a
unos atributos que son privados y que no serían accesibles desde otras clases si no es por
otros métodos.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 2/5
3/7/2020 4.5. Métodos Getters y Setters | Tema 4: Constructores y métodos encapsulados
Como se puede observar en la imagen, se creó atributos del objeto, que en este caso solo
tiene uno el cual es el atributo valor, además se colocó los getters y setters de dicho
atributo (clic Izq + insertarcodigo+getters y setters).
Clase 2: Operaciones
En esta clase se realizará los métodos necesarios para la solución del problema, a
continuación se detallará un método para la mejor comprensión.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 3/5
3/7/2020 4.5. Métodos Getters y Setters | Tema 4: Constructores y métodos encapsulados
En la figura 24 se crea el método Suma con sus dos parámetros de tipo Número; en la
siguiente línea se crea un objeto de tipo Número que a su vez llevará una variable del objeto;
en la línea siguiente se observa la utilización del setters ya que va a modificar el valor de la
variable con la operación suma de dos parámetros de tipo Número utilizando los getters para
cada parámetro, porque lo que se quiere es mostrar el valor de dichos parámetros y realizar
la operación.
Clase 3: Principal
Figura 24. Clase main() para ejecutar en programa. Fuente: Pablo Parra
Esta clase principal llevará a cabo el llamado de las otras clases ya creadas anteriormente
con todos sus atributos y métodos respectivos que le pedirán los datos al usuario.
En la figura 25 se observa la ejecución del programa con todos los datos de la solución del
problema.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 4/5
3/7/2020 4.5. Métodos Getters y Setters | Tema 4: Constructores y métodos encapsulados
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11562&wAccion=ver_scos 5/5
3/7/2020 Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 1/1
3/7/2020 5.1. Lectura y escritura de datos por consola | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
La clase Scanner de la librería java.util es también muy sencilla para obtener datos de
entrada del usuario, a diferencia de BufferedReader, Scanner sí posee un método para la
lectura de números y para la lectura de texto que nos ayudará a facilitar un poco las cosas.
Veamos:
import java.util.Scanner;
int numero;
if(numero%2==0)
System.out.println(“Numero Par“);
else
System.out.println(“Numero Impar“);
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 1/4
3/7/2020 5.1. Lectura y escritura de datos por consola | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
Con este código hemos podido realizar la lectura de datos del usuario muy fácil, pues ya
no nos tuvimos que preocupar por el tipo de dato, solo debemos usar el método adecuado
según sea entero, String, float, etc.
System.out.print
También se puede incluir una cadena de texto más el valor de una variable, para ello
escribimos la cadena con comillas dobles, un signo + y el nombre de la variable, recuerda
poner un espacio entre una variable y una cadena de texto. Por
ejemplo, System.out.println(“El valor de la variable num es
“+num); o System.out.println(“El precio final es “+precio+” euros”);
Streams de bytes
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 2/4
3/7/2020 5.1. Lectura y escritura de datos por consola | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
A través de un stream, podemos enviar y recibir todo tipo de datos. Desde bytes hasta
objetos.
Streams bufferizados
Java provee clases que permiten almacenar temporalmente en memoria los datos que
quieres enviar o leer a través de un stream. El uso de estas clases incrementa el rendimiento
de nuestro programa porque ayuda a minimizar el overhead generado por el uso de recursos
como accesos a disco, actividad de red, etc.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
int c=br.read();
while{
bw.write(c);
c=br.read();
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 3/4
3/7/2020 5.1. Lectura y escritura de datos por consola | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
bw.close();
br.close();
Cuadro de diálogo
Se podrá ver en cualquier sitio que lo ejecutemos. Antes de escribir la linea de código,
debemos importar el paquete necesario para poder utilizar la clase necesaria para el cuadro
de diálogo.
Resultado
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 4/4
3/7/2020 5.2. Arreglos | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
5.2. Arreglos
5.2. Arreglos
Finita. Todo arreglo tiene un límite, es decir, debe determinarse cuál será el número
máximo de elementos que podrá formar parte del arreglo.
Homogénea. Todos los elementos de un arreglo son del mismo tipo o naturaleza (todos
enteros, todos booleanos, etc.), pero nunca una combinación de distintos tipos.
Ordenada. Se debe determinar cuál es el primer elemento, el segundo, el tercero… y el
n-ésimo elemento.
Características
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 1/6
3/7/2020 5.2. Arreglos | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
Concepto de multidimensionales
En Java es posible crear arrays con más de una dimensión, pasando de la idea de lista,
vector o matriz de una sola fila a la idea de matriz de m x n elementos, estructuras
tridimensionales, tetradimensionales, etc. La sintaxis será:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 2/6
3/7/2020 5.2. Arreglos | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
Figura 7. https://i2.wp.com/dcodingames.com/wp-content/uploads/2017/02/matrices1.fw_.png?
resize=1005%2C485
Arreglos primitivos
Los primeros lenguajes de programación no usaban objetos, solo variables. Una variable
podríamos decir que es un espacio de la memoria del ordenador a la que asignamos un
contenido que puede ser un valor numérico (solo números, con su valor de cálculo) o de tipo
carácter o cadena de caracteres (valor alfanumérico que constará solo de texto o de texto
mezclado con números).
Tabla 1
RANGO
NOMBRE TIPO OCUPA
APROXIMADO
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 3/6
3/7/2020 5.2. Arreglos | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
Decimal
oat 4 bytes Muy grande
simple
Decimal
double 8 bytes Muy grande
doble
Carácter
char 2 bytes ---
simple
Valor true
boolean 1 byte ---
o false
Fuente.https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=419:tipos-de-
datos-java-tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-cu00621b&catid=68&Itemid=188
Ejemplo
cochesHorasDelDia = new int [24]; // Creamos un arreglo de enteros con índices entre el 0 y
el 23
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 4/6
3/7/2020 5.2. Arreglos | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
Ejemplo con ingreso y entrada de salida de datos empleando un bucle for para saber
cu{antos datos ingresados son pares y cuantos impares.
import java.util.Scanner;
int numero,contadorPares=0,contadorImpares=0;
for(int i=0;i<5;i++){
numero[i]=sc.nextInt();
if(numero[i]%2==0)
contadorPares++;
else
contadorImpares++;
}
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 5/6
3/7/2020 5.2. Arreglos | Tema 5: Lectura y escritura de datos por consola y arreglos primitivos
Figura 8. https://www.discoduroderoer.es/formas-de-ordenar-un-array-en-java/
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11563&wAccion=ver_scos 6/6
3/7/2020 Tema 6: Manejo de excepciones
Manejo de excepciones
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 1/1
3/7/2020 6.1. Definición | Tema 6: Manejo de excepciones
6.1. Definición
6.1. Definición
Fuente: https://magicplsql.blogspot.com/2016/10/manejo-de-excepciones.html
Un ejemplo es cuando se realiza un programa que permita dividir dos números. Tengamos
en cuenta que la división para cero nos genera un error y es ahí donde se utiliza el manejo de
errores. Vamos a restringir que cuando se realice la división para cero se genere un mensaje
diciendo “Error: No se puede dividir para cero”.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 1/4
3/7/2020 6.1. Definición | Tema 6: Manejo de excepciones
Fuente: http://www.buscaminegocio.com/cursos-de-java/capturar-excepciones-java.html
Fuente: https://www.redeszone.net/2018/06/15/anadir-excepciones-windows-defender-windows-10/
Ejemplos
Jerarquía de clases
Jerarquía de clases
La clase java.lang. Throwable describe cualquier clase que pueda ser lanzada como
excepción.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 3/4
3/7/2020 6.1. Definición | Tema 6: Manejo de excepciones
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 4/4
3/7/2020 6.2. Excepciones y errores | Tema 6: Manejo de excepciones
No siempre los programas que escribiremos están correctos. Existen muchos tipos de
errores que pueden estar presentes en un programa.
No todos los errores pueden ser detectados por el computador. Los errores más comunes
son:
Error de sintaxis
Un error de sintaxis ocurre cuando el programa no cumple las reglas del lenguaje. Cuando
ocurre este error, significa que el programa está mal escrito. El nombre del error es
SyntaxError.
Los errores de sintaxis siempre ocurren antes de que el programa sea ejecutado. Es decir,
un programa mal escrito no logra ejecutar ninguna instrucción. Por lo mismo, el error de
sintaxis no es una excepción.
Fuente: https://slideplayer.es/slide/166428/
Error de nombre
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 1/4
3/7/2020 6.2. Excepciones y errores | Tema 6: Manejo de excepciones
Un error de nombre ocurre al usar una variable que no ha sido creada con anterioridad.
Error de tipo
En general, todas las operaciones en un programa pueden ser aplicadas sobre valores de
tipos bien específicos. Un error de tipo ocurre al aplicar una operación sobre operandos de
tipo incorrecto.
Fuente: http://minubeinformatica.com/cursos/excel-por-modulos/mensajes-de-error-en-calculos
Error de valor
El error de valor ocurre cuando los operandos son del tipo correcto, pero la operación no
tiene sentido para ese valor.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 2/4
3/7/2020 6.2. Excepciones y errores | Tema 6: Manejo de excepciones
Fuente: https://www.gerencie.com/tipos-de-errores-en-excel.html
Fuente: https://exceltotal.com/evitar-errores-de-division-entre-cero-en-excel/
Error de desborde
El error de desborde ocurre cuando el resultado de una operación es tan grande que el
computador no puede representarlo internamente.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 3/4
3/7/2020 6.2. Excepciones y errores | Tema 6: Manejo de excepciones
Fuente: http://www.forosdelweb.com/f69/error-6-desbordamiento-visual-basic-954306/
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 4/4
3/7/2020 6.3. Clases de excepciones | Tema 6: Manejo de excepciones
1. Error
Excepciones que indican problemas muy graves, que suelen ser no recuperables y no
deben casi nunca ser capturadas. Este tipo de error tiene sus propias derivadas que son:
2. IOException
Excepciones no definitivas, pero que se detectan fuera del tiempo de ejecución. Este tipo
de error tiene sus propias derivadas que son:
3. RuntimeException
Excepciones que se dan durante la ejecución del programa. Este tipo de error tiene sus
propias derivadas que son:
- Excepciones verificadas
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 1/2
3/7/2020 6.3. Clases de excepciones | Tema 6: Manejo de excepciones
Excepciones no verificadas
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 2/2
3/7/2020 6.4. Lanzamiento de excepciones | Tema 6: Manejo de excepciones
La cláusula Throws
Barnes, D. dice: El primer requerimiento del compilador es que un método que lanza una
excepción comprobada debe declarar que lo hace mediante una cláusula throws que se
agrega en su encabezado. Por ejemplo, un método que lanza una IOException comprobada
del paquete java.io debe tener el siguiente encabezado:
Fuente: Barnes, D (2007): Programación orientada a objetos con Java. Madrid: Pearson Educación, S. A.
Parte del tratamiento de una excepción puede incluir la propagación de la misma para que
también la traten los métodos llamantes. También puede suceder que queramos que nuestro
código lance una excepción en una situación determinada. En ambos casos es necesario
decir que el método puede lanzar una excepción.
Una función miembro que lanza una excepción tiene la declaración habitual que cualquier
otro método, pero se le añade a continuación la palabra reservada throws seguida de la
excepción o excepciones que pueden lanzar.
Throw
La sentencia throw se utiliza para lanzar explícitamente una excepción. En primer lugar, se
debe obtener un descriptor de un objeto Throwable, bien mediante un parámetro en una
cláusula catch o se puede crear utilizando el operador new. La forma general de la
sentencia throw es:
throw ObjetoThrowable;
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 1/5
3/7/2020 6.4. Lanzamiento de excepciones | Tema 6: Manejo de excepciones
Fuente: http://dis.um.es/~bmoros/Tutorial/parte9/cap9-3.html
La sentencia Try
El try viene del inglés ‘Tratar’ y es donde se encapsula el código donde posiblemente puede
llamarse una excepción por ejecuciones fuera del flujo esperado. Si una cierta cantidad de
código está fuera de un TRY, este código está libre de que llame una excepción.
Según Barnes, D., el segundo requerimiento es que el invocador de un método que lanza
una excepción comprobada debe proveer un tratamiento para dicha excepción. Esto
generalmente implica escribir un manejador de excepción bajo la forma de una sentencia try.
Fuente: Barnes, D (2007): Programación orientada a objetos con Java. Madrid: Pearson Educación, S. A.
La sentencia Catch
El Catch es el lugar donde se listan las excepciones que se van a ‘tratar’ (try) junto con las
órdenes de cada excepción. Las excepciones se listan de la más específica a las más
generales.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 2/5
3/7/2020 6.4. Lanzamiento de excepciones | Tema 6: Manejo de excepciones
Fuente: Barnes, D (2007): Programación orientada a objetos con Java. Madrid: Pearson Educación, S. A.
Fuente: https://www.fdi.ucm.es/profesor/jpavon/poo/2.12.Excepciones.pdf
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 3/5
3/7/2020 6.4. Lanzamiento de excepciones | Tema 6: Manejo de excepciones
En esencia, un bloque try es el contexto para decir cuáles son los manejadores que se
invocan cuando se levanta una excepción. El orden en que se definen los manejadores
determina el orden en que se prueban los mismos para una excepción levantada coincidente
en tipos. De un modo más detallado, el bloque try se asocia siempre con catch.
Múltiples catch
Por ejemplo, si se incluyen dos bloques catch, uno que capture Exception y otro que
capture NullPointerException, este último deberá colocarse el primero porque de lo contrario
nunca podría llegar a ejecutarse.
La sentencia Finally:
El Finally viene del inglés ‘Finalmente’, es cuando un código fue tratado (try) y captado las
excepciones (catch), con FINALLY va a hacer una serie de instrucciones independientes si se
llama una excepción o no. Usualmente se usa esta cláusula para finalizar conexiones o cerrar
archivos.
Según Barnes, D., una sentencia try puede incluir un tercer componente que es
opcional. La cláusula finally se proporciona para sentencias que se deben ejecutar
cuando se lanza una excepción desde sentencias protegidas o desde sentencias no
protegidas. Si el control alcanza el final del bloque try entonces se saltea el bloque catch
y se ejecuta la cláusula finally. Recíprocamente, si se lanza una excepción a partir del
bloque try, entonces se ejecuta el bloque catch apropiado y luego se sigue con la
ejecución de la cláusula finally.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 4/5
3/7/2020 6.4. Lanzamiento de excepciones | Tema 6: Manejo de excepciones
Fuente: Barnes, D (2007): Programación orientada a objetos con Java. Madrid: Pearson Educación, S. A.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 5/5
3/7/2020 6.5. Métodos para el control de excepciones | Tema 6: Manejo de excepciones
Imprime por la salida la pila (stack) de llamadas incluyendo los números de línea y ficheros
donde se ha producido la excepción.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 1/1
3/7/2020 6.6. Creación de excepciones personalizadas | Tema 6: Manejo de excepciones
Antes de empezar a crear excepciones tenemos que saber los términos aprendidos
anteriormente.
Palabras
Descripción
clave
Siempre es posible lanzar alguna excepción de las ya definidas en Java (IOException, por
ejemplo). También se pueden definir nuevas excepciones creando clases derivadas de las
clases Error o Exception.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 1/6
3/7/2020 6.6. Creación de excepciones personalizadas | Tema 6: Manejo de excepciones
Para la creación de las excepciones utilizamos cualquier software que permita realizar la
programación orientada a objetos.
Veamos un ejemplo.
La sentencia throw (lanzar) se usa en los métodos para lanzar una excepción que será
revisada por el compilador
Un método que llama a otro que lanza una excepción, se debe declarar de la siguiente
forma:
El método que lanza una excepción tiene la declaración habitual que cualquier otro
método, pero se le añade a continuación la palabra reservada throws seguido de la
excepción o excepciones que puede lanzar.
Ejemplo
Realizar un programa que permita adivinar la raíz cuadrada de un número, ingresado por
consola donde el usuario digite el número de la raíz que él considere que es el resultado de
la misma, el programa le devolverá más o menos el valor que debe volver a ingresar, el
ejercicio debe manejar excepciones al momento de ingresar números negativos e ingreso de
caracteres al momento de ingresar los valores.
Solución
Creamos la clase que maneje las excepciones de número negativo, y también para
controlar que no se ingrese caracteres.
Creamos la clase para instanciar el número que necesitamos encontrar la raíz cuadrada.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 2/6
3/7/2020 6.6. Creación de excepciones personalizadas | Tema 6: Manejo de excepciones
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 3/6
3/7/2020 6.6. Creación de excepciones personalizadas | Tema 6: Manejo de excepciones
Luego comenzamos a crear la clase “juego", donde va todo lo que queremos hacer.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 4/6
3/7/2020 6.6. Creación de excepciones personalizadas | Tema 6: Manejo de excepciones
28
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 5/6
3/7/2020 6.6. Creación de excepciones personalizadas | Tema 6: Manejo de excepciones
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11564&wAccion=ver_scos 6/6
3/7/2020 Tema 7: Arreglos estáticos y dinámicos
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 1/1
3/7/2020 7.1. Introducción | Tema 7: Arreglos estáticos y dinámicos
7.1. Introducción
7.1. Introducción
Algunas clases que hemos citado, como ArrayList o LinkedList, se denominan colecciones
de tamaño flexible porque permiten modificar dinámicamente el número de ítems que
contienen, es decir, ampliarlo o reducirlo. A veces nos referiremos a estas colecciones como
arrays dinámicos porque son similares a los arrays dinámicos que se emplean en otros
lenguajes de programación.
Los arrays dinámicos son muy potentes porque permiten crear colecciones de tamaño
variable que podemos agrandar o empequeñecer en función de nuestras necesidades.
Sin embargo, cuando se conoce el número de elementos en una colección y este va a
ser invariable (por ejemplo, los doce meses del año), será más eficiente utilizar una
colección de tamaño fijo a la que denominamos array estático, arreglo estático,
formación o vector. Si utilizamos el término array o arreglo, a secas, entenderemos que
hacemos alusión a un array estático.
Tabla 1
Ventajas Inconvenientes
Fuente. https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=635:arrays-o-
arreglos-java-ejemplos-de-objetos-y-tipos-primitivos-length-tipos-de-colecciones-
cu00669b&catid=68&Itemid=188
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 1/2
3/7/2020 7.1. Introducción | Tema 7: Arreglos estáticos y dinámicos
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 2/2
3/7/2020 7.2. Arreglos estáticos | Tema 7: Arreglos estáticos y dinámicos
Paso 1
Figura 1. http://www.cs.umss.edu.bo/doc/material/mat_gral_33/ArreglosEstaticos.pdf
Creación de arreglos
Los arreglos ocupan espacio en memoria. En Java se usa el operador new para asignar
espacio de almacenamiento al número de elementos requerido por cada arreglo.
Paso 2
Figura 2. http://www.cs.umss.edu.bo/doc/material/mat_gral_33/ArreglosEstaticos.pdf
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 1/4
3/7/2020 7.2. Arreglos estáticos | Tema 7: Arreglos estáticos y dinámicos
Inicialización de arreglos
Una vez creado el arreglo, se puede proceder a llenar con elementos dispuestos en cada
posición. Ejemplo:
numeros[j] = j++;
El arreglo en Java empieza en la posición 0, es decir, el primer elemento del arreglo ocupa
la posición de 0, de ahí que el for comienza en 0.
Arreglos de objetos
Figura 3. https://jagonzalez.org/wp-content/uploads/2013/04/Diferencia-Arreglo-de-Objetos-y-Arreglo-de-datos-
Primitivos.png
Tabla 2
Byte
Short
Integer
Double
Character
Boolean
Fuente. https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=419:tipos-de-
datos-java-tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-cu00621b&catid=68&Itemid=188
Grupo3A = new Persona [50]; //Creamos un arreglo de objetos Persona con índices entre el
0 y el 49
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 4/4
3/7/2020 7.3. Arreglos dinámicos | Tema 7: Arreglos estáticos y dinámicos
Listas
Hay varias implementaciones de List, siendo ArrayList la que debería ser la elección por
defecto, en caso de no tener que utilizar las características que proporcionan las demás
implementaciones.
Map
La interface Map (java.io.Map) en Java nos permite representar una estructura de datos
para almacenar pares "clave/valor"; de tal manera que para una clave solamente tenemos un
valor.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 1/2
3/7/2020 7.3. Arreglos dinámicos | Tema 7: Arreglos estáticos y dinámicos
Iterator
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 2/2
3/7/2020 7.3.1. Arraylist | Tema 7: Arreglos estáticos y dinámicos
7.3.1. Arraylist
7.3.1. Arraylist
Por ejemplo:
a.add("Lenguaje");
a.add(3);
a.add('a');
a.add(23.5);
Es decir, un ArrayList puede contener objetos de tipos distintos. En este ejemplo, el primer
objeto que se añade es el String “Lenguaje”. El resto no son objetos. Son datos de tipos
básicos pero el compilador los convierte automáticamente en objetos de su clase
envolvente (clase contenedora o wrapper) antes de añadirlos al array.
Un array al que se le pueden asignar elementos distintos puede tener alguna complicación
a la hora de trabajar con él. Por eso, una alternativa a esta declaración es indicar el tipo de
objetos que contiene. En este caso, el array solo podrá contener objetos de ese tipo.
De forma general:
Tipo debe ser una clase. Indica el tipo de objetos que contendrá el array.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 1/6
3/7/2020 7.3.1. Arraylist | Tema 7: Arreglos estáticos y dinámicos
No se pueden usar tipos primitivos. Para un tipo primitivo se debe utilizar su clase
envolvente.
Características propias
Similar a un arreglo.
Provee métodos para manejar los datos.
Su tamaño crece dinámicamente.
Más lento en ejecución que un arreglo, dado el proceso dinámico de administración de
la memoria del compilador.
Se debe declarar una librería especializada para poder utilizarlo: java.util.ArrayList
Por ejemplo:
Métodos de Arraylist
Tabla 3
Método Descripción
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 2/6
3/7/2020 7.3.1. Arraylist | Tema 7: Arreglos estáticos y dinámicos
Fuente: http://docs.oracle.com/javase/9/docs/api/java/util/ArrayList.html
Figura 4. https://medium.com/@Emmanuel.A/data-structures-arraylist-239a5b39cd7e
Recorrer un Arraylist
System.out.println(array.get(i));
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 3/6
3/7/2020 7.3.1. Arraylist | Tema 7: Arreglos estáticos y dinámicos
for(Integer i: numeros){
System.out.println(i);
for(Object o: nombreArray){
System.out.println(o);
Ejemplo
…..
.....
Copiar un Arraylist
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 4/6
3/7/2020 7.3.1. Arraylist | Tema 7: Arreglos estáticos y dinámicos
Figura 5. http://puntocomnoesunlenguaje.blogspot.com/2012/12/arraylist-en-java.html
La instrucción:
No copia el array ventas en el nuevo array ventas1 sino que crea un alias:
Figura 6. http://puntocomnoesunlenguaje.blogspot.com/2012/12/arraylist-en-java.html
Para hacer una copia podemos hacerlo de forma manual, elemento a elemento, o se
puede pasar la referencia del ArrayList original al constructor del nuevo:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 5/6
3/7/2020 7.3.1. Arraylist | Tema 7: Arreglos estáticos y dinámicos
Figura 7. http://puntocomnoesunlenguaje.blogspot.com/2012/12/arraylist-en-java.html
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 6/6
3/7/2020 7.3.2. Hashmaps | Tema 7: Arreglos estáticos y dinámicos
7.3.2. Hashmaps
7.3.2. Hashmaps
Un HashMap es una colección de objetos, (como los Arrays), pero estos no tienen orden.
¿De qué se trata?
Cada objeto se identifica mediante algún identificador apropiado, por ejemplo un "uuid”.
Por ejemplo:
La biblioteca estándar de Java tiene dos tipos diferentes de objetos Map (que es una
interfaz con cierta funcionalidad): HashMap y TreeMap. Ambos tienen la misma interfaz (dado
que implementan Map), pero difieren claramente en la eficiencia.
Si se observa lo que hace un get(), parecerá bastante lento hacerlo buscando a través de
la clave, por ejemplo de un ArrayList. Es aquí donde un HashMap acelera considerablemente
las cosas. En vez de hacer una búsqueda lenta de la clave, usa un valor especial
denominado "código de tipo hash". Esta es una manera de tomar cierta información del objeto
en cuestión y convertirlo en un entero "relativamente único" para ese objeto.
Todos los objetos de Java pueden producir un código de tipo hash y HashCode() es un
método de la clase raíz Object. Un HashMap toma un hashCode() del objeto y lo utiliza para
localizar rápidamente la clave. Esto redunda en una mejora dramática de rendimiento.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 1/3
3/7/2020 7.3.2. Hashmaps | Tema 7: Arreglos estáticos y dinámicos
Figura 8. https://guru99.es/working-with-hashmaps/
Ejemplo
Ambas estructuras de datos almacenan Objects y por defecto en Java todas las clases
heredan de Object. Es decir, puedes guardar cualquier objeto en cada una de ellas.
Por ejemplo, usas un ArrayList cuando necesitas acceder al n-avo elemento. Haz cuenta
de que un ArrayList es una columna de objetos en línea y que un HashMap es algo así como
una sala llena de objetos dispersos a los que llamas por su nombre (clave-valor).
En lo personal suelo usar más un TreeMap para almacenar miles de objetos, pues el
tiempo de recorrido es mucho menor al de un ArrayList, las listas las utilizo para manejar no
más de 500 elementos.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 2/3
3/7/2020 7.3.2. Hashmaps | Tema 7: Arreglos estáticos y dinámicos
De más está decir que esas no son las únicas estructuras de datos que existen en Java.
Tienes además Vector, LinkedList, TreeSet, TreeMap... etc, y cada una de ellas tiene
características que las diferencian del resto y que por ende son más óptimas que cualquier
otra en cada caso.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178299&id_pkg=11565&wAccion=ver_scos 3/3
20/8/2020 Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 1/1
20/8/2020 8.1. Asociación | Tema 8: Relaciones entre clases
8.1. Asociación
Es una conexión entre clases, que implica la existencia de una relación estructural
entre objetos de esas clases.
Diremos que dos o más clases tienen una relación de asociación cuando una de
ellas tenga que requerir o utilizar alguno de los otros atributos o métodos de las otras
clases.
No requieren que creemos un objeto nuevo a partir de otros objetos, sino únicamente
que los objetos interactúen entre sí. La creación o desaparición de uno de ellos
implica únicamente la creación o destrucción de la relación entre ellos y nunca la
creación o destrucción del otro.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 1/3
20/8/2020 8.1. Asociación | Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 2/3
20/8/2020 8.1. Asociación | Tema 8: Relaciones entre clases
Fuente: http://www.ciberaula.com/articulo/uml
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 3/3
20/8/2020 8.2. Agregación | Tema 8: Relaciones entre clases
8.2. Agregación
Los componentes pueden ser compartidos por varios compuestos (de la misma
asociación de agregación o de varias asociaciones de agregación distintas). La
destrucción del compuesto no conlleva la destrucción de los componentes.
Creación de la clase DatosP, que almacenará los datos personales de cada persona.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 1/4
20/8/2020 8.2. Agregación | Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 2/4
20/8/2020 8.2. Agregación | Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 3/4
20/8/2020 8.2. Agregación | Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 4/4
20/8/2020 8.3. Composición | Tema 8: Relaciones entre clases
8.3. Composición
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 1/4
20/8/2020 8.3. Composición | Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 2/4
20/8/2020 8.3. Composición | Tema 8: Relaciones entre clases
Tabla 4
Rombo
Representación Rombo negro
transparente
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 3/4
20/8/2020 8.3. Composición | Tema 8: Relaciones entre clases
Fuente:https://www.seas.es/blog/informatica/agregacion-vs-composicion-en-diagramas-de-clases-uml/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 4/4
20/8/2020 8.4. Modelado e implementación | Tema 8: Relaciones entre clases
Asociación
Para comprender de una mejor manera cómo se comporta o trabaja esta clase, es
necesario darle sentido a la frase que va a contener a la agregación “Usa un”.
Código
Composición
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 1/2
20/8/2020 8.4. Modelado e implementación | Tema 8: Relaciones entre clases
Código
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 2/2
20/8/2020 8.5. Dependencia: implementación | Tema 8: Relaciones entre clases
Es una relación de uso entre dos clases (una usa a la otra). Esta relación es las más
básica entre clases y comparada con los demás tipos de relación, la más débil.
Representación UML
Se representa con una flecha discontinua que parte desde una clase y apunta a otra.
El sentido de la flecha nos indica quién usa a quién.
Una clase A usa una clase B cuando no contiene atributos de la clase B pero, o bien
utiliza alguna instancia de la clase B como parámetro en alguno de sus métodos para
realizar una operación, o bien accede a sus atributos (clases con métodos amigos).
En la práctica este tipo de relación se interpreta como que la Persona hace uso de
la Cédula ya sea instanciándola directamente, o bien, recibiéndola como parámetro de
entrada en uno de sus métodos.
Modelamiento e implementación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 1/3
20/8/2020 8.5. Dependencia: implementación | Tema 8: Relaciones entre clases
Supongamos lo siguiente:
Clase Cedula
Clase Persona
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 2/3
20/8/2020 8.5. Dependencia: implementación | Tema 8: Relaciones entre clases
En funcionamiento
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 3/3
20/8/2020 Recursos complementarios | Tema 8: Relaciones entre clases
Recursos complementarios
* Video sobre los tipos de relaciones entre clases.
https://www.youtube.com/embed/6oXZSnaAxEg
https://www.youtube.com/watch?v=6oXZSnaAxEg
http://www.ciberaula.com/articulo/uml
https://es.coursera.org/lecture/introduccion-programacion-java/asociaciones-
22Ub9
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 1/3
20/8/2020 Recursos complementarios | Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 2/3
20/8/2020 Recursos complementarios | Tema 8: Relaciones entre clases
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14755&wAccion=ver_scos 3/3
20/8/2020 Tema 9 : Generalización/especialización y código limpio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/1
20/8/2020 9.1. Generalización/especialización | Tema 9 : Generalización/especialización y código limpio
9.1. Generalización/especialización
9.1.1. Herencia
9.1.5. Modelado
9.1.6. Implementación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/1
20/8/2020 9.1.1. Herencia | Tema 9 : Generalización/especialización y código limpio
9.1.1. Herencia
Fuente: https://www.google.com/url?
sa=i&source=images&cd=&ved=2ahUKEwi_3MHWq4DkAhUOxVkKHaoZBnsQjRx6BAgBEAQ
&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dz2Se29mcocw&psig=AOvVaw3CzwJVoD
Ventajas
Nomenclatura
Partiendo del siguiente ejemplo se procederá a explicar cómo funcionan las palabras
clave para reconocer cuando se habla de una herencia. Si definimos la clase Coche
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/2
20/8/2020 9.1.1. Herencia | Tema 9 : Generalización/especialización y código limpio
Visibilidad
Reglas
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 2/2
20/8/2020 9.1.2. Tipos de Herencia | Tema 9 : Generalización/especialización y código limpio
Herencia simple
La herencia simple consiste en que una clase hereda a una clase hijo, y a solo una le
hereda sus atributos. Es igual al concepto general de herencia, con la limitante de
solo poder heredar de una clase padre a una clase hijo, y solo a una clase hijo.
Figura 2. Herencia.
Fuente: https://rua.ua.es/dspace/bitstream/10045/15995/1/POO-3-Herencia-10-11.pdf
Ejemplo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/4
20/8/2020 9.1.2. Tipos de Herencia | Tema 9 : Generalización/especialización y código limpio
Figura 3. Herencia.
Fuente: https://rua.ua.es/dspace/bitstream/10045/15995/1/POO-3-Herencia-10-11.pdf
Refinamiento
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 2/4
20/8/2020 9.1.2. Tipos de Herencia | Tema 9 : Generalización/especialización y código limpio
Esto implica que la clase derivada aplica una política de refinamiento: añadir
comportamiento al constructor de la clase base.
Figura 4. Herencia.
Fuente: https://rua.ua.es/dspace/bitstream/10045/15995/1/POO-3-Herencia-10-11.pdf
Herencia múltiple
Consiste en la utilización de las propiedades de una clase a varias clases más, lo que
significa que en esta propiedad una sola clase padre puede heredarle atributos u
objetos de esta a varias clases hijo sin ninguna limitación entre ellas.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 3/4
20/8/2020 9.1.2. Tipos de Herencia | Tema 9 : Generalización/especialización y código limpio
Figura 5. Herencia.
Fuente: https://rua.ua.es/dspace/bitstream/10045/15995/1/POO-3-Herencia-10-11.pdf
Nota
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 4/4
20/8/2020 9.1.3. Constructores super () y this () | Tema 9 : Generalización/especialización y código limpio
super ()
Las dudas con los constructores aparecen ligadas a las jerarquías de clases y a la
palabra super(). Supongamos que tenemos la siguiente jerarquía:
Fuente: https://www.arquitecturajava.com/wp-content/uploads/herencia.png
En este caso podemos tener dos clases con el siguiente código por simplificar al
máximo:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/5
20/8/2020 9.1.3. Constructores super () y this () | Tema 9 : Generalización/especialización y código limpio
Fuente: https://www.arquitecturajava.com/java-constructores-y-super/
Como podemos ver, todos los constructores llaman por defecto al constructor de la
clase superior a través de una llamada a super() (en este caso al constructor por
defecto). Esto es debido a que los constructores no se heredan entre jerarquías de
clases; por lo tanto, la palabra super() siempre es la primera línea de un constructor e
invoca al constructor de la clase superior que comparta el mismo tipo de
parametrización.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 2/5
20/8/2020 9.1.3. Constructores super () y this () | Tema 9 : Generalización/especialización y código limpio
Fuente: https://www.arquitecturajava.com/wp-content/uploads/super.png
Aunque nosotros no pongamos la palabra super() esta siempre será añadida salvo
que nosotros la añadamos. Por ejemplo, si nuestros constructores tienen parámetros,
las cláusulas super que deberemos construir serán las siguientes entre Persona y
Deportista para que el código compile:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 3/5
20/8/2020 9.1.3. Constructores super () y this () | Tema 9 : Generalización/especialización y código limpio
Fuente: https://www.arquitecturajava.com/java-constructores-y-super/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 4/5
20/8/2020 9.1.3. Constructores super () y this () | Tema 9 : Generalización/especialización y código limpio
this ()
Fuente: https://www.arquitecturajava.com/java-constructores-y-super/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 5/5
20/8/2020 9.1.4. Ventajas de la herencia | Tema 9 : Generalización/especialización y código limpio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/1
20/8/2020 9.1.5. Modelado | Tema 9 : Generalización/especialización y código limpio
9.1.5. Modelado
Dentro de UML se representa a la herencia con una flecha que va desde el hijo hacia
el padre, como se puede ver en el siguiente ejemplo:
Fuente: https://maritzacondori.wordpress.com/2016/04/23/analisis-y-diseno-orientado-a-objetos-parte-
2-de-2/
Donde se puede ver que tanto CANINO como FELINO al ser hijos, su relación de
herencia (en este caso con el método rugir), se ve expresada con una flecha que sale
desde ellos y termina en el padre que es la clase Animal.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/1
20/8/2020 9.1.6. Implementación | Tema 9 : Generalización/especialización y código limpio
9.1.6. Implementación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/1
20/8/2020 9.2. Código limpio | Tema 9 : Generalización/especialización y código limpio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/1
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Para que un código sea fácil de cambiar, se debe tener en cuenta: que las clases y los
métodos sean pequeños y tengan una única responsabilidad, que las clases tengan
una API concisa y clara, que las clases y los métodos sean predecibles y trabajen
como lo esperado, un código fácil de testear y tenga pruebas unitarias, que los test
sean fáciles de entender y cambiar, etc.
Solid es un acrónimo inventado por Robert C. Martin para establecer los cinco
principios básicos de la programación orientada a objetos y diseño. Este acrónimo
tiene bastante relación con los patrones de diseño, en especial, con la alta cohesión y
el bajo acoplamiento.
Fuente: http://meridadesignblog.com/solid-principios-de-programacion-orientada-a-objetos-principio-de-
la-responsabilidad-unica/
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Este principio trata de destinar cada clase a una finalidad sencilla y concreta. En
muchas ocasiones estamos tentados a poner un método reutilizable que no tiene
nada que ver con la clase, simplemente porque lo utiliza y nos pilla más a mano. El
problema surge cuando tenemos la necesidad de utilizar ese mismo método desde
otra clase. Si no se refactoriza en ese momento y se crea una clase destinada para
la finalidad del método, nos toparemos a largo plazo con que las clases realizan
tareas que no deberían ser de su responsabilidad.
Ejemplo
Modo incorrecto
Modo correcto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 2/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
O - Abierto/Cerrado (Open/Closed)
Principio atribuido a Bertrand Meyer quien habla de crear clases extensibles sin
necesidad de entrar al código fuente a modificarlo. Es decir, el diseño debe ser abierto
para poderse extender pero cerrado para poderse modificar. Lo complicado es
predecir por dónde se debe extender y que no tengamos que modificarlo.
Ejemplo
Modo incorrecto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 3/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Modo correcto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 4/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 5/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Este principio fue creado por Barbara Liskov y habla de la importancia de crear todas
las clases derivadas para que también puedan ser tratadas como la propia clase
base. Cuando creamos clases derivadas debemos asegurarnos de no reimplementar
métodos que hagan que los métodos de la clase base no funcionasen si se tratasen
como un objeto de esa clase base.
Ejemplo
Modo incorrecto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 6/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Modo correcto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 7/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Este principio fue formulado por Robert C. Martin. Cuando se definen interfaces
estos deben ser específicos a una finalidad concreta. Por ello, si tenemos que definir
una serie de métodos abstractos que debe utilizar una clase a través de interfaces, es
preferible tener muchos interfaces que definan pocos métodos que tener una interface
con muchos métodos.
Ejemplo
Modo incorrecto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 8/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Figuras 30, 31 y 32. Interface Producto, clase Zapatos y clase Chaqueta implementadas
incorrectamente.
Modo correcto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 9/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 10/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
También fue definido por Robert C. Martin. El objetivo de este principio es conseguir
desacoplar las clases. En todo diseño siempre debe existir un acoplamiento, pero hay
que evitarlo en la medida de lo posible. Un sistema no acoplado no hace nada, pero
un sistema altamente acoplado es muy difícil de mantener.
El objetivo de este principio es el uso de abstracciones para conseguir que una clase
interactúe con otras clases sin que las conozca directamente. Es decir, las clases de
nivel superior no deben conocer las clases de nivel inferior. Dicho de otro modo, no
debe conocer los detalles.
Un código limpio debería cumplir con la regla DRY (Don't Repeat Yourself, o No Te
Repitas). Cuando se aplica correctamente el principio DRY, la modificación de un
único elemento del sistema no requiere cambios en otros elementos que no tengan
relación lógica.
Ejemplo
Modo incorrecto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 11/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 12/13
20/8/2020 9.2.1. Estándares de implementación, buenas prácticas de programación | Tema 9 : Generalización/especialización y código limpio
Modo correcto
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 13/13
20/8/2020 9.2.2. Atributos de calidad de código | Tema 9 : Generalización/especialización y código limpio
mypackage, com.company.application.ui
2. Los nombres que representan tipos deben ser sustantivos y escribirse con
mayúsculas y minúsculas, iniciando con mayúscula.
Line, AudioSystem
line, audioSystem
4. Los nombres que representan constantes (variables finales) deben estar totalmente
en mayúsculas utilizando subrayados (guion bajo) para separar las palabras.
MAX_ITERATIONS, COLOR_RED
5. Los nombres que representan métodos deben ser verbos y escribirse con
mayúsculas y minúsculas iniciando con minúscula.
getName(), computeTotalWidth()
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/2
20/8/2020 9.2.2. Atributos de calidad de código | Tema 9 : Generalización/especialización y código limpio
Utilizar todo en mayúsculas para el nombre base entraría en conflicto con las
convenciones anteriores. Una variable de este tipo debería nombrarse dVD, hTML,
etc., lo cual obviamente no es legible. Otro problema se ilustra en el ejemplo anterior.
Cuando el nombre se conecta a otro, se reduce seriamente la legibilidad. La palabra a
continuación del acrónimo no queda como debería.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 2/2
20/8/2020 9.2.3. Buenas prácticas de programación para tener un código limpio | Tema 9 : Generalización/especialización y código limpio
Fuente: http://www.decodigo.com/2013/04/mejores-practicas.html
Fuente: http://www.decodigo.com/2013/04/mejores-practicas.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/3
20/8/2020 9.2.3. Buenas prácticas de programación para tener un código limpio | Tema 9 : Generalización/especialización y código limpio
Para hacer una clase inmutable se puede definir su constructor de forma privada y
luego crear un método estático para inicializar al objeto y devolverlo.
Fuente: http://www.decodigo.com/2013/04/mejores-practicas.html
Siempre que sea posible trata de usar tipos primitivos en lugar de las clases
Wrapper
Las clases Wrapper son buenas, pero también son lentas. Los tipos primitivos son
como clases, sin embargo, las clases wrapper almacenan la información completa
acerca de una clase. Algunas veces un programador puede agregar un error en el
código usando una wrapper por un descuido. Por ejemplo:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 2/3
20/8/2020 9.2.3. Buenas prácticas de programación para tener un código limpio | Tema 9 : Generalización/especialización y código limpio
Fuente: http://www.decodigo.com/2013/04/mejores-practicas.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 3/3
20/8/2020 Recursos complementarios | Tema 9 : Generalización/especialización y código limpio
Recursos complementarios
http://www.it.uc3m.es/java/git-gisc/units/oo-herencia/slides/ProgramacionOrientadaAObjetos.pdf
http://www.youtube.com/embed/LZPafq9Ve_Q
https://www.youtube.com/watch?v=LZPafq9Ve_Q
* Video sobre las características del principio SOLID para un código limpio
http://www.youtube.com/embed/lOg2IuQIp-s
https://www.youtube.com/watch?v=lOg2IuQIp-s
* Enlace sobre las diez mejores prácticas en Java para crear un código entendible
http://www.decodigo.com/2013/04/mejores-practicas.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 1/2
20/8/2020 Recursos complementarios | Tema 9 : Generalización/especialización y código limpio
https://dosideas.com/noticias/desarrollo-de-software/965-las-9-cualidades-del-
codigo-limpio
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14756&wAccion=ver_scos 2/2
20/8/2020 Tema 10: Gestion de defectos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.1. Definición | Tema 10: Gestion de defectos
10.1. Definición
El testing es una actividad desarrollada para evaluar la calidad del producto y para
mejorarlo al identificar defectos y problemas.
Fuente: Ian Sommerville. Software engineering (5th ed.). Addison Wesley Longman Publishing
Como sugiere la figura 1, un sistema complejo suele testearse en varias etapas que
por lo general se ejecutan siguiendo una estrategia bottom-up, aunque el proceso
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/2
20/8/2020 10.1. Definición | Tema 10: Gestion de defectos
general es iterativo. Se debe volver a las fases anteriores cada vez que se encuentra
un error en la fase que está siendo ejecutada.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 2/2
20/8/2020 10.2. Verificación y validación | Tema 10: Gestion de defectos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.2.1. Verificación | Tema 10: Gestion de defectos
10.2.1. Verificación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.2.2. Validación | Tema 10: Gestion de defectos
10.2.2. Validación
En la figura 1 se muestra el lugar que ocupan las inspecciones y las pruebas dentro
del proceso de desarrollo de software. Las flechas indican las fases del proceso en las
que se utilizan las técnicas. Las inspecciones de software se pueden utilizar en todas
las etapas del proceso, mientras que las técnicas de prueba solo cuando está
disponible un prototipo o código ejecutable.
Fuente:
https://www.ctr.unican.es/asignaturas/Ingenieria_Software_4_F/Doc/M7_09_VerificacionValidacion-
A2011.pdf
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/2
20/8/2020 10.2.2. Validación | Tema 10: Gestion de defectos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 2/2
20/8/2020 10.3. Pruebas vs. depuración | Tema 10: Gestion de defectos
10.3.1. Pruebas
10.3.2. Depuración
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.3.1. Pruebas | Tema 10: Gestion de defectos
10.3.1. Pruebas
La lógica del programa está bien, pero hay errores sencillos, los cuales los
corregimos eliminando o modificando algunas instrucciones o incluyendo
nuevas.
Hay errores ocasionados por fallas en la lógica, lo que nos obliga a regresar a
las fases de Diseño y Codificación para revisión y modificación del diagrama.
Hay errores muy graves y lo más aconsejable es que regresemos a la fase 2
para analizar nuevamente el problema y repetir todo el proceso.
No hay errores y los resultados son los esperados. En este caso, guardamos el
programa permanentemente en un medio de almacenamiento.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.3.2. Depuración | Tema 10: Gestion de defectos
10.3.2. Depuración
Fuente:
https://www.ctr.unican.es/asignaturas/Ingenieria_Software_4_F/Doc/M7_09_VerificacionValidacion-
2011.pdf
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.4. Pruebas de unidad | Tema 10: Gestion de defectos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.4.1. Instalación de JUNIT | Tema 10: Gestion de defectos
3. No se necesita hacer ninguna otra modificación, se hace clic a Finish para concluir
la agregación del jUnit.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/2
20/8/2020 10.4.1. Instalación de JUNIT | Tema 10: Gestion de defectos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 2/2
20/8/2020 10.4.2. El proyecto | Tema 10: Gestion de defectos
10.4.2. El proyecto
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/1
20/8/2020 10.4.3. El código | Tema 10: Gestion de defectos
10.4.3. El código
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/2
20/8/2020 10.4.3. El código | Tema 10: Gestion de defectos
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 2/2
20/8/2020 10.4.4. Paquete de prueba | Tema 10: Gestion de defectos
Ya que tenemos nuestra clase de prueba lista, procedemos a crear las clases de
prueba. Clic derecho sobre nuestro proyecto -> New -> Other… En Categoría
seleccionamos «Unit Tests» y en File Types, seleccionamos «Test for Existing Class»
y presionamos el botón siguiente.
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/2
20/8/2020 10.4.4. Paquete de prueba | Tema 10: Gestion de defectos
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 2/2
20/8/2020 10.4.5. JUnit | Tema 10: Gestion de defectos
10.4.5. JUnit
Antes de realizar la prueba con JUnit, debemos estudiar un poco el código generado.
En la parte inferior de la clase MiClaseTest encontramos el siguiente método:
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
Donde:
1) @Test: Los métodos marcados con esta anotación, le indican a JUnit que es
código que queremos que se ejecute. Son estos métodos donde se implementa el
código de pruebas.
6) assertEquals: Es uno de varios métodos con los que cuenta JUnit. Este método
en particular compara si dos objetos son iguales, de no ser así, lanzará una
excepción y la prueba se detiene.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/4
20/8/2020 10.4.5. JUnit | Tema 10: Gestion de defectos
Como vimos en un post anterior [Caja blanca: Prueba del camino básico], este
algoritmo consta de cuatro caminos posibles, eso quiere decir que debemos
implementar cuatro métodos de prueba.
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 2/4
20/8/2020 10.4.5. JUnit | Tema 10: Gestion de defectos
Fuente: https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
Para ejecutar el test con JUnit, damos clic derecho sobre la clase MiClaseTest.java
-> run file
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 3/4
20/8/2020 10.4.5. JUnit | Tema 10: Gestion de defectos
Fuente https://www.jc-mouse.net/java/ejemplo-de-pruebas-unitarias-en-java
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 4/4
20/8/2020 Ejemplo | Tema 10: Gestion de defectos
Ejemplo
Realice una calculadora básica y haga todos los test de prueba necesarios para tener
una cobertura del 100 % del programa.
Creamos clases de los objetos que existan. En este caso creamos una clase (figura
17) del objeto principal, un número.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 1/4
20/8/2020 Ejemplo | Tema 10: Gestion de defectos
Una vez creados los métodos, vamos a testearlos con ayuda de jUnit como se ve en
las figuras 19 y 20.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 2/4
20/8/2020 Ejemplo | Tema 10: Gestion de defectos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 3/4
20/8/2020 Ejemplo | Tema 10: Gestion de defectos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14757&wAccion=ver_scos 4/4
20/8/2020 Tema 11: Encapsulamiento
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 1/1
20/8/2020 11.1. Definición | Tema 11: Encapsulamiento
11.1. Definición
Fuente: https://www.researchgate.net/figure/228773129_fig30_Figura-38-Destilacion-y-
encapsulamiento
Encapsulamiento significa que los datos y las acciones se combinan en una sola
entidad (es decir, un objeto de la clase) y se ocultan los detalles de la implementación.
La programación orientada a objetos (POO) encapsula datos (atributos) y métodos
(comportamientos) en objetos. Los objetos tienen la propiedad de ocultación de la
información. Esta propiedad significa que, aunque los objetos pueden conocer cómo
comunicarse unos con otros a través de interfaces bien definidas, no pueden conocer
cómo están implementados otros objetos (los detalles de la implementación están
ocultos dentro de los propios objetos).
Esta es una situación muy frecuente del mundo real. Es posible conducir con eficacia
un automóvil sin conocer los detalles internos de cómo funciona el motor, el tren de
engranajes o el sistema de frenos. En Java se tiene un gran control sobre el
encapsulamiento de una clase y un objeto. Se consigue aplicando modificadores a
clases, variables de instancia y de clases, y métodos. Algunos de estos modificadores
se refieren al concepto de paquete, que se puede considerar básicamente como un
grupo de clases asociadas.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 1/4
20/8/2020 11.1. Definición | Tema 11: Encapsulamiento
Fuente: https://juanjavierrg.com/java-basico-encapsulamiento/
Modificadores
Clases
Variables
Métodos
1. Modificadores de clase
Una clase pública se define dentro de su propio archivo y es visible en cualquier parte.
Una clase que es local a un paquete específico no tiene modificador y se puede
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 2/4
20/8/2020 11.1. Definición | Tema 11: Encapsulamiento
definir dentro de un archivo que contiene otras clases. Como máximo, una de las
clases de un archivo puede ser una clase pública.
2. Modificadores de variables
Normalmente es una buena idea imponer tanto encapsulamiento como sea posible.
En consecuencia, debe ocultarse todo lo que se pueda, excepto lo que se desea
hacer visible a otras clases, en cuyo caso se debe permitir la cantidad mínima de
visibilidad.
Nota
3. Modificadores de métodos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 3/4
20/8/2020 11.1. Definición | Tema 11: Encapsulamiento
Se puede limitar también el acceso de otras clases a métodos. Esta acción se realiza
utilizando una palabra reservada (modificador), antes del tipo de retorno del método.
Los modificadores son los mismos que para las variables.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 4/4
20/8/2020 11.2. Clases internas | Tema 11: Encapsulamiento
Una clase que no se anida dentro de otra se denomina clase de nivel superior. Esto
significa que prácticamente todas las clases utilizadas hasta ahora son clases de nivel
superior.
Las clases internas se definen dentro del ámbito de una clase externa (o de nivel
superior). Estas clases internas se pueden definir dentro de un bloque de sentencias o
(anónimamente) dentro de una expresión.
Figura 7. sambayredes.
Fuente:
http://sambayredes.pbworks.com/w/page/127511381/04_4%20Clases%20internas%20y%20herencia%2
Ejemplos
La clase Empleado tiene dos clases internas que representan una dirección y un
sueldo. El código fuente de la clase Empleado y sus dos clases internas Dirección y
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 1/5
20/8/2020 11.2. Clases internas | Tema 11: Encapsulamiento
Sueldo son:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 2/5
20/8/2020 11.2. Clases internas | Tema 11: Encapsulamiento
Las clases internas no se pueden utilizar fuera del ámbito. Por consiguiente, las
clases externas de la clase Empleado no pueden acceder a la clase interna (a menos
que sean subclases o estén en el mismo paquete, dependiendo de la visibilidad en la
definición de la clase).
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 3/5
20/8/2020 11.2. Clases internas | Tema 11: Encapsulamiento
Estáticas Internas
Clase Interna Miembro
Clases Internas de Método
Clases Internas Anónimas
Estáticas Internas
Se declaran igual que una clase normal, con la diferencia de que le añadimos la
palabra reservada "static" a la clase.
ClaseExterna.ClaseEstaticaInterna nombre=new
ClaseExterna.ClaseEstaticaInterna();
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 4/5
20/8/2020 11.2. Clases internas | Tema 11: Encapsulamiento
class ClaseInterna{};
Para acceder a métodos y atributos de esta clase interna desde la clase externa
deberemos de instanciar la clase Interna.
ClaseExterna.ClaseEstaticaInterna nombre=new
ClaseExterna.ClaseEstaticaInterna();
Para seguir el funcionamiento de este tipo de clase seguiremos las siguientes normas:
Siempre debe ser una subclase de otra clase ya existente o bien implementar
alguna interfaz.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 5/5
20/8/2020 11.3. Paquetes | Tema 11: Encapsulamiento
11.3. Paquetes
Los paquetes son una forma de organizar grupos de clases. Un paquete contiene un
conjunto de clases relacionadas bien por finalidad, por ámbito o por herencia.
Los paquetes resuelven el problema del conflicto entre los nombres de las clases. Al
crecer el número de clases crece la probabilidad de designar con el mismo nombre a
dos clases diferentes.
Las clases tienen ciertos privilegios de acceso a los miembros dato y a las funciones
miembro de otras clases dentro de un mismo paquete. En el Entorno Integrado de
Desarrollo (IDE) JBuilder de Borland, un proyecto nuevo se crea en un subdirectorio
que tiene el nombre del proyecto. A continuación, se crea la aplicación, un archivo
.java que contiene el código de una clase cuyo nombre es el mismo que el del
archivo. Se pueden agregar nuevas clases al proyecto, todas ellas contenidas en
archivos .java situadas en el mismo subdirectorio. La primera sentencia que
encontramos en el código fuente de las distintas clases que forman el proyecto es
package o el nombre del paquete.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 1/5
20/8/2020 11.3. Paquetes | Tema 11: Encapsulamiento
Fuente: http://lenguajejava.com/producto/acceso-al-curso-de-fundamentos-de-programacion-orientada-
a-objetos-con-java/
Para importar clases de un paquete se usa el comando import. Se puede importar una
clase individual import java.awt.Font; o bien, se puede importar las clases
declaradas públicas de un paquete completo, utilizando un asterisco (*) para
reemplazar los nombres de clase individuales import java.awt.*;
Para crear un objeto fuente de la clase Font podemos seguir dos alternativas
1. import java.awt.Font;
import java.awt.*;
//...
Panel es una clase que está en el paquete java.awt, y Serializable es una interface
que está en el paquete java.io (2).
Paquete Descripción
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 2/5
20/8/2020 11.3. Paquetes | Tema 11: Encapsulamiento
Entrada/Salida. Clases
java.io que definen distintos
flujos de datos.
Contiene clases
esenciales, se importa
java.lang implícitamente sin
necesidad de una
sentencia import.
Se usa en combinación
con las clases del
java.net paquete java.io para
leer y escribir datos en
la red.
Declaración de un paquete
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 3/5
20/8/2020 11.3. Paquetes | Tema 11: Encapsulamiento
Los nombres de los paquetes deben ser únicos para asegurar que no haya conflictos
de nombres. Java impone un convenio de nombres por el que un nombre de paquete
se construye por un número de componentes separados por un punto (separador).
Estos componentes corresponden a la posición de los archivos.
En el caso siguiente,
Por otra parte, si los archivos de un paquete específico están en un directorio llamado
concurso, dentro de un directorio llamado pruebas, el nombre del paquete es:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 4/5
20/8/2020 11.3. Paquetes | Tema 11: Encapsulamiento
Observe que esto supone que todos los archivos asociados con un único paquete
están en el mismo directorio. Cualquier número de archivos se puede convertir en
parte de un paquete, sin embargo, un archivo solo se puede especificar en un único
paquete.
Nota
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14758&wAccion=ver_scos 5/5
20/8/2020 Tema 12: Polimorfismo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 1/1
20/8/2020 12.1. Definición y ventajas | Tema 12: Polimorfismo
Definición
Polimorfismo quiere decir "un objeto y muchas formas". Esta propiedad permite que
un objeto presente diferentes comportamientos en función del contexto en que se
encuentre. Por ejemplo, un método puede presentar diferentes implementaciones en
función de los argumentos que recibe, recibir diferentes números de parámetros para
realizar una misma operación y realizar diferentes acciones dependiendo del nivel de
abstracción en que sea llamado.
Fuente: http://mapaches.itz.edu.mx/~mbarajas/pooisc/poo6.pdf
Ventajas
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 1/5
20/8/2020 12.1. Definición y ventajas | Tema 12: Polimorfismo
Las ventajas del polimorfismo son evidentes, pero hay una importante limitación: el
tipo de la referencia (clase abstracta, clase base o interface) limita los métodos que se
pueden utilizar y las variables miembro a las que se pueden acceder.
Tipos de polimorfismo
Fuente: https://img-
17.ccm2.net/5SQA8xe_1ML1o78keIH88ZCnf8I=/349x/24b04c1ad9174a11a882c852107a9a0b/ccm-
encyclopedia/poo-images-polymorphisme.gif
Polimorfismo de sobrecarga.
Ocurre cuando las funciones del mismo nombre existen, con función similar, en
clases que son completamente independientes unas de otras.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 2/5
20/8/2020 12.1. Definición y ventajas | Tema 12: Polimorfismo
Fuente: http://mapaches.itz.edu.mx/~mbarajas/pooisc/poo6.pdf
Polimorfismo paramétrico
Capacidad para definir varias funciones utilizando el mismo nombre, pero usando
parámetros diferentes (nombre y/o tipo). El polimorfismo paramétrico selecciona
automáticamente el método correcto a aplicar en función del tipo de datos
pasados en el parámetro.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 3/5
20/8/2020 12.1. Definición y ventajas | Tema 12: Polimorfismo
Fuente: http://mapaches.itz.edu.mx/~mbarajas/pooisc/poo6.pdf
Polimorfismo de subtipado
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 4/5
20/8/2020 12.1. Definición y ventajas | Tema 12: Polimorfismo
Fuente: http://mapaches.itz.edu.mx/~mbarajas/pooisc/poo6.pdf
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 5/5
20/8/2020 12.2. Sobrecarga de métodos | Tema 12: Polimorfismo
Es una herramienta que nos ofrece la programación orientada a objetos, ya que nos
permite modelar y definir el comportamiento de los objetos como queramos, es decir,
de acuerdo con unos parámetros de entrada, ejecutar uno u otro método.
Figura 6. Ejemplo.
Fuente: Recuperado de: Vílchez, F. J. (2012). Programación en Java. Fundación Universitaria Andaluza
Inca Garcilaso para eumed.net
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 1/2
20/8/2020 12.2. Sobrecarga de métodos | Tema 12: Polimorfismo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 2/2
20/8/2020 12.3. Sobrecarga escritura de métodos | Tema 12: Polimorfismo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 1/2
20/8/2020 12.3. Sobrecarga escritura de métodos | Tema 12: Polimorfismo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 2/2
20/8/2020 12.3.1. Conceptos relacionados | Tema 12: Polimorfismo
Sobrecarga
Ejemplo
Herencia
Una clase se dice que hereda o extiende a otra clase antecesora. La palabra
reservada extends sirve para indicar que una clase extiende a otra. La clase que
extiende a otra hereda todos los atributos y métodos de la clase antecesora que no
sean privados (private). La clase antecesora puede extender a su vez otra clase.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 1/3
20/8/2020 12.3.1. Conceptos relacionados | Tema 12: Polimorfismo
Sobreescritura
Ejemplo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 2/3
20/8/2020 12.3.1. Conceptos relacionados | Tema 12: Polimorfismo
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 3/3
20/8/2020 Recursos complementarios | Tema 12: Polimorfismo
Recursos complementarios
https://www.youtube.com/embed/MD8QAyJpXhc
http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/POO/Apuntes/04.-Polimorfismo.pdf?
fbclid=IwAR3Ck4Jc44plJizDf32VrITmdH34YaQRbuzsXfQytaM4fAUupicWffpWQdA
https://www.youtube.com/embed/qHyw-9CxXVs
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 1/2
20/8/2020 Recursos complementarios | Tema 12: Polimorfismo
https://www.youtube.com/embed/vQZ4RY_4l-A
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14759&wAccion=ver_scos 2/2
20/8/2020 Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/1
20/8/2020 13.1. ¿Qué es abstracción? | Tema 13: Abstracción, interfaces de programación
Clase abstracta
Una clase abstracta es aquella que contiene métodos, pero al menos uno de
ellos debe ser abstracto, es decir, no tiene cuerpo y su implementación está en
otra clase. (Martin Sierra, 2008)
No puede instanciar objetos.
Se utiliza solo como superclases.
Sirve para proporcionar una superclase apropiada a partir de la cual heredan
otras clases.
Método abstracto
Es un método sin cuerpo. El método abstracto nunca será definitivo porque la clase
abstracta debe implementar todos los métodos abstractos. (SlideShare, 2012).
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/2
20/8/2020 13.1. ¿Qué es abstracción? | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 2/2
20/8/2020 13.1.1. Sintaxis de un método y una clase abstracta | Tema 13: Abstracción, interfaces de programación
Según Martin Sierra (2008), la sintaxis para la creación de un método y una clase
abstracta es la siguiente:
//otros método
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/1
20/8/2020 13.1.2. Ventajas de la abstracción | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/1
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
Ejemplo
Se requiere modelar con clases y métodos abstractos un ser vivo y sus métodos
serán lo más generales posibles, en este caso se desea modelar la función de
alimentación de los seres vivos.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
En el siguiente ejercicio se requiere modelar una clase abstracta para ser vivo y su
método alimentarse().
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 2/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
Dar clic en el icono semejante a una taza que lleva por etiqueta JavaApplication y
nombrar el proyecto, dar clic en“finish” y ya se puede trabajar en el código.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 3/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 4/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 5/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
Figura 10. Corrección del Error típico al trabajar con clases y métodos abstractos.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 6/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 7/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
Figura 14. Aviso por sobre escritura en el método de la superclase desde una clase hija. Autoría
Propia.
Figura 15. Corrección de aviso por sobreescritura en el método de la superclase desde una clase hija.
De la misma forma se implementan los demás métodos abstractos de las clases que
hereden de la superclase.
Creamos una clase principal donde instanciaremos nuestros objetos:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 8/9
20/8/2020 13.1.3. Modelado de la abstracción | Tema 13: Abstracción, interfaces de programación
Corrida
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 9/9
20/8/2020 13.2. ¿Qué es la interfaz? | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/1
20/8/2020 13.2.1. Sintaxis de una interfaz | Tema 13: Abstracción, interfaces de programación
Según Martin Sierra (2008), la sintaxis para una interfaz se define mediante la palabra
interface, utilizando la siguiente sintaxis:
//otros métodos
Ejemplo
void rotar ( );
String serializar();
//otros métodos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/1
20/8/2020 13.2.2. Ventajas de la interfaz | Tema 13: Abstracción, interfaces de programación
El principal beneficio de usar una clase abstracta es que permite agrupar varias
clases relacionadas.
La abstracción ayuda a reducir la complejidad del diseño y el proceso de
implementación del software. (Guru99.com, 2019)
Obligar a que ciertas clases utilicen los mismos métodos (nombres y
parámetros).
Establecer relaciones entre clases que no estén relacionadas.
Al diseñar por interfaces se garantiza un mínimo de acoplamiento y un máximo
re-uso.
El principal uso de las interfaces es que puedes SIMULAR la herencia múltiple;
recuerda que Java solo soporta herencia simple.(Scribd, 2019)
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/1
20/8/2020 13.2.3. Modelado de la interfaz | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/1
20/8/2020 13.2.4. Ejercicio con una interfaz | Tema 13: Abstracción, interfaces de programación
Utilizando como IDE el Netbeans, realizar un programa en Java que permita imprimir
los datos del usuario para lo cual se utilizará una interface denominada Impresión,
como se muestra en el Diagrama de Clases UML, figura 19, además utilizar POO.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/7
20/8/2020 13.2.4. Ejercicio con una interfaz | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 2/7
20/8/2020 13.2.4. Ejercicio con una interfaz | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 3/7
20/8/2020 13.2.4. Ejercicio con una interfaz | Tema 13: Abstracción, interfaces de programación
Para el método imprimir declarado en la interface Impresión, se crea otra clase que lo
contenga.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 4/7
20/8/2020 13.2.4. Ejercicio con una interfaz | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 5/7
20/8/2020 13.2.4. Ejercicio con una interfaz | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 6/7
20/8/2020 13.2.4. Ejercicio con una interfaz | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 7/7
20/8/2020 13.2.5. Resumen de una interfaz | Tema 13: Abstracción, interfaces de programación
Tabla 1
Interface Clase a
Una interfaz contiene solo miembros incompletos. Una clase abstracta contiene mi
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 1/2
20/8/2020 13.2.5. Resumen de una interfaz | Tema 13: Abstracción, interfaces de programación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14760&wAccion=ver_scos 2/2
20/8/2020 Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 1/1
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 1/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
Bibliotecas Widget
Dos bibliotecas comunes son la biblioteca Swing y la biblioteca SWT. La librería Swing
se origina a partir de Sun, el desarrollador que creó Java, como un constructor de
interfaz gráfica de usuario funcional completa con una biblioteca de widgets.
Fuente: https://www.ntu.edu.sg/home/ehchua/programming/java/J4a_GUI.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 2/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
Los componentes de AWT están en el paquete awt, mientras que los de Swing
los encontramos en javax.swing.
Fuente: https://guru99.es/java-swing-gui/
Las clases de contenedor son clases que pueden tener otros componentes. Entonces,
para crear una GUI, se necesita al menos un objeto contenedor. Hay tres tipos de
contenedores.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 3/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
JButton
A continuación, esta clase de Java puede instanciar la variable JButton dentro del
método constructor como se muestra a continuación:
Fuente: https://www.javatpoint.com/java-jbutton
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 4/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
JTextField
Esto nos crea un campo de texto con un texto especificado y el número de columnas.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 5/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
Fuente: https://www.javatpoint.com/java-jtextfield
String getText (); Se utiliza para devolver el texto del campo de texto.
JLabel
Un Label o etiqueta puede mostrar texto plano, una imagen o una imagen con un
texto. A continuación, se muestra cómo se crea un JLabel.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 6/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
Esto crea una etiqueta con imagen y texto especificado con una alineación horizontal.
String getText (); Se utiliza para devolver el texto del campo de texto.
JPanel
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 7/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
Fuente: https://jagonzalez.org/mostrar-y-ocultar-jpanel-en-java/
void updateUI (); Restablece la propiedad UI con un valor del aspecto actual.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 8/9
20/8/2020 14.1. Widgets (componentes gráficos) | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 9/9
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
14.2. Formularios
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 1/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
Ahora se podrá ver en la ventana "Projects" que el formulario fue creado; sin
embargo, se puede observar que automáticamente el IDE Netbeans abre
el formulario creado en la ventana central.
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 2/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
Ahora se podrá dar clic sobre el elemento que se quiera colocar en el formulario, y
luego dirigir el puntero del mouse al JFrame o formulario, y dar clic en este en la
parte donde se desea colocar el elemento.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 3/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
Luego de colocar todos los elementos que se dese al formulario, se tendrá algo como
lo siguiente:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 4/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 5/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
Luego de modificar cada uno de los elementos del formulario, se obtendrá el siguiente
resultado:
Fuente: https://uh-tis.blogspot.com/2012/07/curso-de-java-como-hacer-un-proyecto-un.html
Ejemplo de aplicación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 6/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
Para el siguiente ejemplo, se solicita crear tres formularios: el primer formulario tendrá
dos botones, cada botón permitirá moverse entre los distintos formularios que se
crearán; el segundo formulario permitirá ingresar un estudiante, en donde se pedirá el
número de cédula del estudiante, sus nombres, apellidos y en qué curso se
encuentra; en el tercer formulario, se deberá ingresar el número de cédula de un
estudiante y, por medio de un botón, se desplegará toda la información almacenada
de dicho estudiante.
El problema será resuelto en el IDE NetBeans para Java y se seguirán los siguientes
pasos:
1. Previa a la creación del nuevo proyecto, se creará un nuevo paquete con el nombre
“Ventanas”, y en este se crearán los formularios con los siguientes nombres:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 7/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 8/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 9/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 10/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
6. Una vez creados los formularios, crearemos una clase llamada Estudiante en el
paquete principal. En esta clase, crearemos el objeto de tipo Estudiante que quedará
de la siguiente manera (se recuerda al estudiante agregar los métodos getter y
setter).
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 11/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
7. Para este ejemplo, se creará una clase llamada Alumnado que tendrá las
siguientes características:
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 12/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 13/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 14/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 15/16
20/8/2020 14.2. Formularios | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 16/16
20/8/2020 14.3. Menús y tablas | Tema 14: Componentes y objetos gráficos
Menús
JMenuBar
JMenu
JMenuItem
JCheckBoxMenuItem
JRadioButtonMenuItem
Un JFrame o JApplet puede guardar una barra de menú donde se cuelgan menús
desplegables.
Las barras de menús se pueden contemplar como una estructura que soporta menús.
Una ventana (frame) solo puede tener una barra de menús (objeto MenuBar), que se
sitúa en la parte de arriba del mismo.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 1/5
20/8/2020 14.3. Menús y tablas | Tema 14: Componentes y objetos gráficos
Fuente: https://www.fdi.ucm.es/profesor/jpavon/poo/Tema6resumido.pdf
Ejemplo
Fuente: https://www.fdi.ucm.es/profesor/jpavon/poo/Tema6resumido.pdf
Código
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 2/5
20/8/2020 14.3. Menús y tablas | Tema 14: Componentes y objetos gráficos
Fuente: https://www.fdi.ucm.es/profesor/jpavon/poo/Tema6resumido.pdf
Fuente: https://www.fdi.ucm.es/profesor/jpavon/poo/Tema6resumido.pdf
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 3/5
20/8/2020 14.3. Menús y tablas | Tema 14: Componentes y objetos gráficos
Tablas
Las tablas son uno de los elementos más utilizados dentro de cualquier lenguaje de
programación, se las puede utilizar para desplegar una lista de datos similares
ordenados de una forma específica. Su uso es amplio pues es bastante versátil.
Tablas en Java
Dentro de Java tenemos el componente gráfico conocido como jTable. Es una clase
que permite organizar una determinada información en tabla, esta difiere de una base
de datos normal porque al utilizar jTable se puede visualizar esta tabla, brindándole al
usuario organización de información, oportunidades de editar y cambiar el tamaño de
las columnas entre otras.
Inicios
En principio se creó la clase Jtable para constituir una interfaz ligada a bases de
datos a través de "Java Database Connectivity" (JDBC), y así evita la
complejidad que existía para el manejo de datos, dando así al programador
mucha más facilidad a la hora de trabajar con este tipo de información.
Edición
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 4/5
20/8/2020 14.3. Menús y tablas | Tema 14: Componentes y objetos gráficos
Implementación
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 5/5
20/8/2020 14.4. Gestión de eventos | Tema 14: Componentes y objetos gráficos
Cuando el usuario interactúa sobre los diversos componentes del awt, estos generan
eventos. La siguiente tabla muestra los eventos que cada tipo de componente puede
generar y cuándo los genera.
Tabla 1
Componentes de interacción
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 1/5
20/8/2020 14.4. Gestión de eventos | Tema 14: Componentes y objetos gráficos
KeyEvent
El usuario pulsa o suelta una
MouseEvent
El usuario pulsa o suelta un b
del ratón, el cursor del ratón e
sale o el usuario mueve o arra
ratón.
List
El usuario selecciona un el
Menultem ActionEvent
del menú.
El usuario mueve la ba
Scrollbar AdjustmentEvent
desplazamiento.
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 2/5
20/8/2020 14.4. Gestión de eventos | Tema 14: Componentes y objetos gráficos
Fuente: http://arquimedes.matem.unam.mx/pasados/java_profundizacion/index4.htm
Para facilitar la tarea del programador se ha creado una serie de interfaces que deben
implementarse cuando se quieren procesar algunos de estos eventos. La siguiente
tabla presenta estas interfaces con sus métodos.
Tabla 2
Interfaces
Interfaz Métodos
ActionListener actionPerformed(ActionEvent)
AdjustmentListener adjustmentValueChanged(AdjustementEvent)
componentHidden(ComponentEvent)
componentMoved(ComponentEvent)
ComponentListener
componentResized(ComponentEvent)
componentShown(ComponentEvent)
componentAdded(ContainerEvent)
ContainerListener
componentRemoved(ContainerEvent)
focusGained(FocusEvent)
FocusListener
focusLost(FocusEvent)
ItemListener itemStateChanged(ItemEvent)
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 3/5
20/8/2020 14.4. Gestión de eventos | Tema 14: Componentes y objetos gráficos
keyPressed(KeyEvent)
KeyListener keyReleased(KeyEvent)
keyTyped(KeyEvent)
mouseClicked(MouseEvent)
mouseEntered(MouseEvent)
MouseListener mouseExited(MouseEvent)
mousePressed(MouseEvent)
mouseReleased(MouseEvent)
mouseDragged(MouseEvent)
MouseMotionListener
mouseMoved(MouseEvent)
TextListener textValueChanged(TextEvent)
windowActivated(WindowEvent)
windowClosed(WindowEvent)
windowClosing(WindowEvent)
WindowListener windowDeactivated(WindowEvent)
windowDeiconified(WindowEvent)
windowIconified(WindowEvent)
windowOpened(WindowEvent)
Fuente: http://arquimedes.matem.unam.mx/pasados/java_profundizacion/index4.htm
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 4/5
20/8/2020 14.4. Gestión de eventos | Tema 14: Componentes y objetos gráficos
https://evirtual.espe.edu.ec/programas_scorm.cgi?id_curso=16725&id_unidad=178300&id_pkg=14761&wAccion=ver_scos 5/5