Modelos de Programación 1
Modelos de Programación 1
978-958-5459-34-2
Edición:
Fondo editorial Areandino
Fundación Universitaria del Área Andina
Calle 71 11-14, Bogotá D.C., Colombia
Tel.: (57-1) 7 42 19 64 ext. 1228
E-mail: [email protected]
http://www.areandina.edu.co
Hecho en Colombia
Made in Colombia
Todos los derechos reservados. Queda prohibida la reproducción total o parcial de esta
obra y su tratamiento o transmisión por cualquier medio o método sin autorización escrita
de la Fundación Universitaria del Área Andina y sus autores.
Modelos de programación 1
Metodología 8
Desarrollo temático 9
Metodología 21
Desarrollo temático 22
Metodología 31
Desarrollo temático 32
Metodología 44
Desarrollo temático 45
i
Índice
UNIDAD 3 Herencia
Introducción 59
Metodología 60
Desarrollo temático 61
Metodología 71
Desarrollo temático 72
Metodología 83
Desarrollo temático 84
Metodología 95
Desarrollo temático 96
Bibliografía 108
1
UNIDAD
1Unidad 1
Paradigmas de
programacion
Modelos de programación I
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 7
3
U1 Metodología
Como preámbulo del módulo se encontrará: el mapa conceptual, la ficha técnica, la línea de
tiempo, el video de presentación, el glosario y la bibliografía.
En la primera semana se presentará una evaluación diagnóstica, cuyo fin es verificar los con-
ceptos previos que tienen los estudiantes antes de iniciar con el tema.
Para cada unidad el estudiante contará con un documento que se conoce como guía de
actividades, el cual semana a semana le informará qué actividades tiene y qué debe hacer.
Asimismo, le indicará las actividades calificables en su módulo. En dicho texto se incluirán
los objetivos de aprendizaje de la unidad.
La cartilla le permitirá abordar los temas desde la introducción hasta conocer los paradigmas
y el concepto de la programación. Se recomienda leer cuidadosamente y en forma secuen-
cial la información para tener una compresión adecuada de los temas.
Paradigmas de programación
La evolución tecnológica que sufre el software, está sometido a cambios constantes cada
vez más exigentes.Desde sus comienzos el código de máquina y la programación en len-
guaje ensamblador, han tenido una transformación trascendental, pasando por varios
momentos, dando la importancia siempre a la forma de pensar en la solución de problemas
e implementando alguno de los siguientes paradigmas:
■ Programación modular.
■ Programación procedural.
■ Programación estructurada.
■ Programación imperativa.
■ Programación declarativa.
■ Programación funcional.
■ Programación Orientada a Objetos.
Programación modular
Procesar nomina
SS IRPF
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 9
5
Se compone de bloques separados llamados módulos, los cuales están de forma indepen-
dientes, se pueden relacionar por medio de interfaces que estén bien definidas.
Programación procedural
Procedimiento A
Instrucción 1
Instrucción 2
....
Procedimiento principal Fin procedimiento
Instrucción 1
Llamar_A
Instrucción 2
Llamar_B
Instrucción 3
Fin procedimiento
Procedimiento B
Instrucción 1
Instrucción 2
....
Fin procedimiento
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 10
6
Programación estructurada
Programación imperativa
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 11
7
Programación declarativa
Padres
Hermanos
Esposos
Programación funcional
Función
+
Suma Args x1, x2,…
Cuerpo: x1+2x2+…
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 12
8
Programación orientada a objetos
Usuario
Obtener petición
Ver mensaje
Sistema
Procesar petición
Documento Indice
Nombre Nombre
Clasificar Mostrar
Recuperar Borrar entrada
Archivar Añadir entrada
Destruir
Es un paradigma que consiste en la abstracción del mundo real mediante el uso de objetos.
Dichos objetos poseen propiedades (atributos) que dan su definición y le permiten realizar
operaciones e interactuar con otros objetos mediante el intercambio de mensajes. Es el re-
sultado evolutivo de los paradigmas de la programación Procedural, Estructurada y Modular.
Como ejemplo de esta programación están los lenguajes JAVA, SMALLTALK, PYTHON, C++.
Diseño: después del análisis anterior, viene el diseño de la solución del problema, donde se
define la estructura, los módulos, algoritmos, etc.; que van a complementar la solución.Estas
dos etapas son la mayor parte de la ejecución del proyecto.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 13
9
Pruebas: son las evaluaciones y mediciones a las que se lleva el programa para terminar de
ajustar el software.
Mantenimiento: son las adaptaciones que se llevan a cabo para su correcto funcionamiento
operativo y tecnológico.
La figura No 8, muestra de forma resumida cómo los lenguajes de programación han tenido
una evolución altamente considerable a través de los tiempos, donde el lenguaje es más
compacto y eficiente. Se presenta desde sus inicios con el lenguaje ensamblador de un nivel
muy bajo de abstracción y llega hasta los lenguajes de alto nivel de abstracción y los orienta-
dos a objetos. En el centro de la figura se muestran los lenguajes más representativos en am-
bos niveles de abstracción; al lado izquierdo están las características novedosas de dichos
lenguajes en la abstracción funcional y a la derecha se muestran los detalles más relativos a
la abstracción de datos.
Encapsulado
Tipos abstrac-
Ocult. Inform Modula 2 ADA tos de datos
Espect.vs. Impl
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 14
10
Lenguajes de programación de El intérprete traduce las instrucciones del
alto nivel lenguaje y favorece la interactividad, la de-
puración y ejecución del programa; entre
Los lenguajes de alto nivel facilitan a los los lenguajes interpretes se tienen: BASIC,
programadores poder escribir programas LOGO, etc.
mediante el uso de expresiones sintácticas
del idioma inglés, como: prinft, while, for, A continuación se analizan algunos lengua-
public, if, case, etc.; y lograr construir líneas jes que surgieron para facilitar la comunica-
de código en un programa: ción entre los usuarios y las computadoras:
if( valor > 0) FORTRAN: Se dio al comienzo de la década
de los años 50, el informático y programa-
printf(“El valor numérico es positi- dor Jhon Backus trabajaba con SSEC (Selec-
vo”); tiveSequenceElectronicCalculator), en 1956
Si interpretamos la instrucción se valida una se terminó de crear el compilador (FORmu-
condición que puede ser verdadera o falsa; laTRANslator), el cual estaba destinado a la
si la condición evaluada es verdadera se eje- resolución de problemas científicos-técni-
cuta la siguiente instrucción que indica que cos fácilmente de aprender.
se debe imprimir unmensaje por pantalla: El COBOL (Common Business OrientedLan-
valor numérico es positivo. En caso contra- guage): en los años 50 se creó un lenguaje
rio no pasa nada. orientado a funciones administrativas, su
Se les considera lenguajes de alto nivel a la evolución fue muy rápida logrando la crea-
forma de poder interactuar con la computa- ción de nuevas actualizaciones, en la actua-
dora en un lenguaje normal y comprensivo lidad se usa en entidades bancarias.
para los usuarios. Entre los lenguajes de alto BASIC: creado por los profesores Jhon G.
nivel están:Basic, Fortran, Cobol, Java, C. Kemeny y Thomas E. Kurt en 1964, crearon
Los lenguajes de bajo nivel son aquellos que un lenguaje para facilitar la comunicación
tienen una comunicación más directa con la compartida entre los estudiantes, fácil de
máquina, bajo un lenguaje de máquina. aprender y de gran efectividad en las tareas
científicas. Tuvo una gran aceptación por su
fácil manejo y poco consumo de memoria
Evolución de los lenguajes de pro- pero no era un lenguaje muy potente.
gramación
C: Los creadores del sistema operativo UNIX
Antes de mencionar los lenguajes de pro- en 1969, Kenneth Thompson y Dennis Rit-
gramación es importante saber el modo chie trabajando en los laboratorios BELL
de comunicación y las ordenes que recibe se dio la creación del lenguaje de progra-
el computador en un código binario total- mación C.,siendo uno de los lenguajes más
mente legible para él, ya que es el único len- portables del mercado y de gran uso en los
guaje entendible para su unidad de proce- programas actuales con C++ enfocado a la
samiento.Esta labor es llevada a cabo por un programación orientada a objetos.
intérprete o compilador.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 15
11
JAVA: Es un lenguaje de programación completamente orientado a objetos, los creadores
de lenguaje son Sun Microsystems en los años 90. Hoy en día se encuentra el lenguaje de
programación en múltiples equipos con la tecnología Java en redes, Internet, grandes orde-
nadores, equipos móviles, portátiles, juegos, simuladores, cards, etc.
Los objetos
Modelo. Acelerar.
Marca. Desacelerar.
Color. Apagar.
Velocidad. Arrancar.
Los objetos en programación consisten en dividir en clases los objetos. Partiendo del con-
cepto objeto se puede observar en el mundo actual variedad de objetos que tienen rasgos
comunes o pueden ser completamente diferentes. Se pueden agrupar o relacionar de acuer-
do a sus características y comportamientos del mundo real, como: tamaño, color, forma, etc.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 16
12
que almacenan la información. televisión, y de repente mi madre siente un
fuerte dolor de cabeza; como es natural, lo
Métodos: son procedimientos o funciones primero que hago es tratar de encontrar
que determinan las acciones que pueden una caja de aspirinas.
realizar los objetos, ya sea sobre sí mismos
o sobre otros objetos. Lo que acabo de describir es una situación
que probablemente no resulte muy extra-
Abstracción ña a muchos de nosotros. Vamos a verla en
clave de objetos: el objeto hijo ha recibido
El nivel de abstracción está relacionado un mensaje procedente del objeto madre.
con la capacidad que tiene el ser humano El objeto hijo responde al mensaje o evento
para identificar los atributos de un objeto y ocurrido mediante una acción: buscar aspi-
abstraer del problema las variables que rinas. La madre no tiene que decirle al hijo
intervienen para ser usadas en la construc- dónde debe buscar, es responsabilidad del
ción del algoritmo. hijo resolver el problema como considere
más oportuno. Al objeto madre le basta con
Cuando se habla de la programación orien- haber emitido un mensaje. Continuemos
tada a objetos no es una mejora de progra- con la historia.
mación a los lenguajes existentes, sino un
cambio a la forma de pensar en la abstrac- El hijo no encuentra aspirinas en el botiquín
ción para la solución de un problema. y decide acudir a la farmacia de guardia
más cercana para comprar aspirinas. En la
La programación orientada a objetos es un farmacia es atendido por una señorita que
paradigma que abstrae las propiedades de le pregunta qué desea, a lo que el hijo res-
un objeto adaptándolas a un software. ponde: “una caja de aspirinas, por favor”. La
farmacéutica desaparece para regresar al
Analicemos un ejemplo poco tiempo con una caja de aspirinas en la
mano. El hijo paga el importe, se despide y
Cuando nos detenemos a pensar cómo vuelve a su casa. Allí le da un comprimido
abordar un problema, debemos reflexionar a su madre, la cual al cabo de un rato co-
sobre los objetos que interactúan en él, de mienza a experimentar una notable mejoría
forma que podamos comprender sus rela- hasta la completa desaparición del dolor de
ciones y la integridad en el planteamiento cabeza.
del mismo.
El hijo, como objeto responsable de un
Identificar los atributos y métodos para de- cometido, sabe lo que debe hacer hasta
finir sus comportamientos, es el objetivo del conseguir una aspirina. Para ello entra en
siguiente ejemplo, donde se plantea una si- relación con un nuevo objeto, la farmacéu-
tuación en la que se debe realizar una abs- tica, quien responde al mensaje o evento de
tracción cuando se da una solución pensada petición del objeto hijo con la búsqueda de
en objetos. la aspirina. El objeto farmacéutica es ahora
el responsable de la búsqueda de la aspiri-
Imaginemos la siguiente situación: un do- na. El objeto farmacéutica lanza un mensaje
mingo por la tarde estoy en casa viendo la al objeto hijo solicitando el pago del impor-
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 17
13
te, y el objeto hijo responde a tal evento con de forma dinámica el modelo orientado a
la acción de pagar. objetos, creando un sistema que se adapta
fácilmente a las especificaciones definidas.
Como hemos podido ver, en esta situación
nos hemos encontrado con objetos que se Cuando se crea una aplicación web donde el
diferenciaban de los demás por un conjun- usuario ingresa datos a través de un formu-
to de características o propiedades, y por lario y este da una respuesta sencilla, pues
un conjunto de acciones que realizaban en se trata de un proceso simple, pero cuan-
respuesta a unos eventos que se originaban do la aplicación crece y se requiere cubrir
en otros objetos o en el entorno. otros requisitos secundarios, la aplicación
no se hace necesario tener en cuenta estos
También podemos darnos cuenta de que, aspectos pues su función principal es reci-
aunque todos los objetos tienen propieda- bir información a través de una entrada y
des distintas, como el color del cabello, el procesarla. La programación orientada a
grado de simpatía o el peso, todos tienen aspectos permite modificar el modelo
un conjunto de atributos en común por ser estático incluyendo nuevo código que im-
ejemplos de una entidad superior llamada plemente los requerimientos necesarios sin
“ser humano”. A este patrón de objetos (en modificar el modelo fuente original. (More-
nuestro caso “ser humano”) lo llamaremos no, 2014).
clase. (Izquierdo, 2007).
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 18
14
1
UNIDAD
1 Unidad 1
Programación
estructurada
Modelos de programación I
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 20
3
U1 Metodología
Para cada unidad el estudiante cuenta con un documento que le describirá las actividades
a realizar para la semana; dicho documento se denomina Guía de actividades. Asimismo le
informa las actividades calificables e incluye los objetivos de aprendizaje. Antes de iniciar
usted debe leerlo muy atentamente.
La cartilla le permitirá abordar los temas a tratar en cada semana. Se recomienda leer cuida-
dosamente y en forma secuencial la información para tener una compresión adecuada de
ellos.
De otro lado, cada semana cuenta con lecturas complementarias, recursos para el aprendi-
zaje, actividades de repaso y videoconferencias que le permitirán aclarar dudas y/o profun-
dizar en la temática semanal.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 22
5
instrucción1,else instrucción2.
Iteración: Los ciclos o bucles condicionales “for”, “while” y “do while”, que ejecutan las ins-
trucciones el ciclos repetitivos mientras la condición se cumpla.
Se obtiene un único bloque del programa que puede resultar ser muy grande y puede ser
problemático y complejo en la interpretación del código fuente.
Las instrucciones se ejecutan una a una en orden secuencial, llevando el orden con el que
aparece en el programa.
Gráficamente es un proceso seguido de otro, con una sola entrada y una única salida.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 23
6
En la figura se observa una secuencia del proceso A al proceso B, llevando un orden en la
definición de los bloques del programa, ejecutando una instrucción o programa completa-
mente.
Leer (a,b)
S <- a + b
Escribir (s)
En el ejemplo es necesario los valores iniciales de a,b para luego realizar el cálculo corres-
pondiente y dar como salida el resultado.
Estructura selectiva
Esta estructura está basada en la evaluación de una condición verdadera y falsa, planteando
una solución posible entre dos alternativas de acuerdo al resultado de una evaluación. En los
lenguajes de programación es conocido con la instrucción IF.
Ejemplo:
V F
A
X Y
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 24
7
En la figura se representa un diagrama con la estructura selectiva, donde la variable A repre-
senta la condición que se evalúa, tiene una sola entrada, el resultado que genere la condi-
ción verdadera o falsa solo se ejecuta una operación. Si se ejecuta la operación X es porque
la condición que se evaluó arrojo verdadero, de lo contrario es porque la condición que se
evaluó arrojo falso. Dentro de la operación X, se puede ejecutar múltiples operaciones.
Si
A!=0
X <- b / a
No
Escribir (x)
En código:
Si (a!=0 ) entonces
X <- b / a
Escribir x
Fin_si
Estructura repetitiva
Esta estructura se basa en la ejecución de ciclos repetitivos (iterativos) conocidos como: Ha-
cer, Mientras, Ejecute mientras. Consisten en ejecutar repetidas instrucciones mientras se
esté cumpliendo la condición.
Ejemplo:
v
A
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 25
8
La estructura repite el proceso X mientras la condición sea verdadera. El proceso X tiene una
sola entrada, puede contener múltiples instrucciones y genera una salida.
Leer n
num<- 1
Num<- num + 1
No
num<= n
Escribir num
Si
La solución en programación estructurada es:
Leer n
num<-1
mientrasnum<= n hacer
Escribir num
num<- + 1
fin_mientras
Haciendo unaprueba de escritorio observamos que el diagrama realiza los siguientes pasos:
1. Lee el valor de n.
2. La estructura repetitiva “mientras” evalúa la condición inicial y si ésta es verdadera, entra
al ciclo.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 26
9
3. Escribe el valor de num y suma 1 a la va- ción del código altamente legible.
riable num.
4. El ciclo “mientras” evalúa nuevamente Ejemplo de aplicación de la Programa-
la condición y si se cumple entra nueva- ción Estructurada
mente al ciclo. Escribir un procedimiento para calcular el
5. Se repite los pasos 3 y 4. área de cualquier triángulo rectángulo;en
él se debe pedir al usuario que ingrese los
El ciclo termina hasta que la condición arro- valores de la altura y la base del triángulo.
je falso.
Análisis del problema
Aplicaciones de la programación estruc- Formular el problema: Ya está claramente
turada planteado.
La programación estructurada, la forma de
construir programas, requiere creatividad, Resultados esperados: Un procedimiento
habilidad y destreza por parte del progra- que permita calcular el área de cualquier
mador. Algunas ventajas que podemos lo- triángulo rectángulo.
grar a través de esta programación es: Datos disponibles: base y altura del trián-
a. El código que forma el programa es más gulo (se deben solicitar al usuario). El estu-
fácil de entender, este puede ser inter- diante debe preguntarse si sus conocimien-
pretado de forma secuencial, de línea a tos actuales de matemáticas le permiten
línea sin realizar salto entre ellas, hasta resolver este problema; de no ser así, debe
recorrer el código y entender su lógica. plantear una estrategia para obtener los co-
b. Cada instrucción está muy relacionada o nocimientos requeridos.
dependiente de la anterior durante todo Restricciones: Los valores de base y altura
el código de la aplicación. son variables y se deben solicitar al usuario.
c. Los errores se pueden detectar y corregir
de forma fácil ya que estos se logran de- Procesos necesarios: definir variables;
tectar por la estructura y son más visibles. asignar el valor 2 a la constante div; solicitar
al usuario el valor de la altura del triángulo;
d. El proceso de mantenimiento del soft- solicitar al usuario el valor de la base; aplicar
ware de programas estructurados es más la fórmula de área; mostrar el resultado.
fácil y por ende, tienen un menor costo.
e. Los programas son sencillos y rápidos
por su estructura.
f. La documentación es sencilla y clara de-
bido a que el programa está dividido en
bloques.
g. Los programas que están bajo este para-
digma, presentan una estructura sencilla,
una organización clara y una presenta-
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 27
10
Diseño del algoritmo
Inicio
Declarar div,base,
altura y área como
locales
div_2
Altura, base
Área
Fin
Tanto en la utilización de la estructura secuencial, como en las dos que se verán más adelan-
te, es muy importante que los estudiantes reflexionen y determinen el orden de ejecución
de las instrucciones (posición), ya que la conmutatividad no es una propiedad aplicable a
los algoritmos. El lenguaje algorítmico, al igual que el lenguaje formal de las matemáticas,
tiene carácter gráfico y posicional; busca la precisión, el rigor, la abreviación y la universali-
dad; y, su finalidad fundamental consiste en obtener resultados internamente consistentes
(Onrubia&Rochera&Barbarà, 2001).
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 28
11
1
UNIDAD
2 Unidad 2
Programación
orientada a objetos
Modelos de programación I
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 30
3
U2 Metodología
Para cada unidad el estudiante cuenta con un documento texto, el cual le describe las acti-
vidades a realizar para la semana; dicho documento se denomina Guía de actividades. Asi-
mismo le informa las actividades calificables e incluye los objetivos de aprendizaje. Antes de
iniciar usted debe leerlo muy atentamente.
La cartilla le permitirá abordar los temas a tratar en cada semana. Se recomienda leer cuida-
dosamente y en forma secuencial la información para tener una compresión adecuada de
ellos.
De otro lado, cada semana cuenta con lecturas complementarias, recursos para el aprendi-
zaje, actividades de repaso y videoconferencias que le permitirán aclarar dudas y/o profun-
dizar en la temática semanal.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 31
4
U2 Desarrollo temático
Persona new
Objetos
Clase auto
Características:
Números de motor.
Color.
Tamaño.
Modelo.
Número de ruedas.
Auto new
Objetos
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 33
6
Los objetos se comunican entre sí, mediante el intercambio de mensajes, y contienen datos
y operaciones.
En forma general podemos tener una gran jerarquía de clases tal y como vemos en el si-
guiente gráfico. (Saco, 2014).
Figura 3.
Fuente: http://www.ciberaula.com/articulo/tecnologia_orientada_objetos/
Para encapsular las características y los comportamientos que los objetos presentan, lo ha-
remos a través de la estructura “clase”.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 34
7
qué sirve. Es una plantilla que permite definir atributos / variables y métodos / funciones.
Pública: todos los datos y métodos de la clase podrán ser accesibles por otras clases.
Protegida: Solo la propia clase puede acceder a los datos y métodos definidos, y las demás
clases solo pueden acceder cuando son derivadas o subclases de la clase protegida.
Ejemplo de una clase en los tres estados publica, protegida y privada, definida en el lenguaje
java.
} } }
Figura 4. Clase en java en sus tres estados pública, privada y protegida
Fuente: Propia.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 35
8
Abstracción: Es la propiedad de la POO, bles que almacenan la información.
para tener en cuenta los aspectos más im-
portantes de una situación y descarta los Métodos: son procedimientos o funciones
detalles mínimos, para así extraer los datos que determinan las acciones que pueden
y métodos generales entre los objetos. realizar los objetos, ya sea sobre sí mismos
o sobre otros objetos.
El nivel de abstracción está relacionado
con la capacidad de interpretación que Lenguajes de programación orien-
tiene el desarrollador para identificaren tados a objetos
un problema las variables y objetos que
intervienen,para posteriormente construir Son los lenguajes que implementan los con-
el algoritmo que da la solución al problema. ceptos y técnicas de programación orien-
tada a objetos.En esta unidad trabajare-
Encapsulado: Es la agrupación de datos y mos con Java como lenguaje de referencia
métodos que una misma clase, los objetos y ejemplos de sintaxis. En la siguiente lista
que contengan la misma características y se mencionan algunos lenguajes de progra-
comportamientos se agrupan en una clase. mación que soportan este paradigma.
Herencia: Es una propiedad que permite ■ ABAP
crear objetos derivando todas o algunas ca- ■ ABL Lenguaje de programación de Ope-
racterísticas y métodos o comportamientos nEdge de Progress Software
definidos, en otras clases. Logrando así ex-
tender su funcionalidad. ■ ActionScript
■ ActionScript 3
Polimorfismo: Es lapropiedad que tienen
los objetos de responder a un mensaje o un ■ Ada
evento invocado; es la sobrecarga de pará- ■ C++
metros, debido a que los objetos en sus ca-
racterísticas permiten sobrecargar diferen-
■ C#
tes parámetros para un solo método. ■ Clarion
Los objetos en programación consisten en
■ Clipper (lenguaje de programación) (Ver-
sión 5.x con librería de objetos Class(y))
dividir en clases los objetos. Partiendo del
concepto objeto se puede observar en el ■D
mundo actual variedad de objetos que tie- ■ Object Pascal (Delphi)
nen rasgos comunes o pueden ser comple-
tamente diferentes. Se pueden agrupar o ■ Gambas
relacionar de acuerdo a sus características ■ Harbour
y comportamientos del mundo real, como:
tamaño, color, forma, etc.
■ Eiffel
■ Java
Características de los objetos ■ JavaScript (la herencia se realiza por me-
Atributos:son las características propias de dio de la programación basada en proto-
un objeto, estos se definen a través de varia- tipos)
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 36
9
■ Lexico (en castellano) Nombre de objeto.nombre del método que
■ Objective-C se invoca.
■ Ocaml Auto.acelerar();
■ Oz Atuo.frenar();
■R
Auto.girar();
■ Perl (soporta herenciamúltiple. La re-
solución se realiza en preorden, pero El método permite desarrollar a través del
puede modificarse al algoritmo li- código las sentencias que manipulan los
nearization C3 por medio del módu- datos. Desarrollar la lógica de programación
lo Class::C3 en CPAN) permite invocar e intercambiar mensajes de
■ PHP (a partir de su versión 5) un método a otro.
■ PowerBuilder Cuando se define un método en java, su
■ Python sintaxis consiste en: la forma de acceso, el
nombre del método abre y cierra paréntesis
■ Ruby y entre llaves “{}” se define el cuerpo o códi-
■ Smalltalk (Proyecto investigativo. In- go del método. Ejemplo:
fluenció a Java.)
public acelerar (){
■ Magik (SmallWorld)
■ Vala cuerpo o código del método;
■ VB.NET Cuando definimos la clase Auto, con los mé-
■ Visual FoxPro (en su versión 6) todos acelerar, frenar y girar, en los métodos
se desarrolla el código que le permite a un
■ Visual Basic 6.0 Auto el proceso de acelerar.
■ Visual Objects
Los métodos para la clase Auto se definen
■ XBase++ de la siguiente forma:
■ Lenguaje DRP Tomado del sitio web:
(González, 2014) publicclass Auto
numeros de motor
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 37
10
código_del_metodo_acelarar;
frenar(){
código_del_metodo_acelarar;
girar(){
código_del_metodo_acelarar;
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 38
11
Programa: System.out.print (nombre+” es femenino.”);
importjava.util.Scanner; }
persona1.inicio();
System.out.print(“Ingrese nombre:”); }
nombre=teclado.next(); }
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 39
12
private String nombre; System.out.println(“Nombre :”+nombre);
nombre=teclado.next(); }
System.out.print(“IngreseGenero:”); }
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 40
13
}
Persona persona1 se declara el objeto para su creación con la palabra reservada new.
Acelerar()
clase o plantilla publicvoid acelerar() {
Frenar() }
Girar()
public void grenar() {
} }
public void girar() {
}
public static void main(String[] arg) {
{
}
Retomamos el ejemplo inicial de esta semana de la clase Auto, con los atributos número de
motor, color, tamaño, modelo, número de ruedas; los cuales son variables y deben pertene-
cer a un tipo de dato. l
Al observar la clase Auto, contiene cinco atributos comunes de cualquier auto, los cuales se
deben definir dentro de la clase, sin espacios, sin tildes, ni ñ; cumpliendo así con los reglas
para la definición de variables. Para conocer un poco más de cómo definir variables puede
ampliar con el siguiente documento. 2-tiposdatoslenguajec.pdf que está en los recursos del
programa.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 41
14
1
UNIDAD
2 Unidad 2
Características de la
programación
orientada a objetos Modelos de programación I
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 43
3
U2 Metodología
Para cada unidad el estudiante cuenta con un documento, el cual le describe las actividades
a realizar para la semana; dicho documento se denomina guía de actividades. Asimismo le
informa las tareas calificables e incluye los objetivos de aprendizaje. Antes de iniciar usted
debe leerlo muy atentamente.
La cartilla le permitirá abordar los temas a tratar en cada semana. Se recomienda leer cuida-
dosamente y en forma secuencial la información para tener una compresión adecuada de
ellos.
De otro lado, cada semana cuenta con lecturas complementarias, recursos para el aprendi-
zaje, actividades de repaso y videoconferencias que le permitirán aclarar dudas y/o profun-
dizar en la temática semanal.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 45
5
Privados: son los elementos que pueden ser accedidos solamente por la clase que los defi-
ne, al ser privados pertenecen y son usados por la clase. La palabra reservada con la que se
definen es private, en el lenguaje Java.
Protegidos: sus elementos pueden ser accedidos desde la clase que los define y de sus sub-
clases.La palabra reservada para definirlas es protected en el lenguaje Java.
Públicas: sn elementos totalmente libres, y pueden ser accedidos por la clases que los defi-
ne y las demás clases y métodos de la aplicación.La palabra reservada con la que se definen
es public, en el lenguaje Java.
En el ejemplo anterior se puede ver que el dato miembro private int privx, es privado y solo
puede ser accedido por la clase A.
El dato miembro protected int protb, es protegido por solo poder ser accedido por la clase A
y sus métodos, y por las subclases que se definan de la clase A.
Los datos miembros public int pubc son públicos y pueden ser usados por toda la aplicación,
el dato miembro int paqd, aunque no se definió como público, tomó el estado público.
El siguiente caso de forma más cotidiana nos muestra los estados de privado, protegido y
público:
Datos miembros
privados
publicintpubc; protectedi
intpaqd; ntprotb;
privat
eintpri
vx;
Datos miembros
privados
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 46
6
En una familia, un individuo tiene una infor- se pueden acceder directamente por me-
mación que solo la puede saber esa persona dio de una instancia de la clase Uno, esto
y es utilizada por él y nadie más. Este es caso no presenta ningún error al momento de
de privado. compilar, ¿qué sucedería si ingresamos un
dato en la variable valor que sea diferente?,
La misma persona adicional tiene una infor- lo podríamos hacer sin ningún problema.
mación que solo la puede compartir con los Cuando protegemos el código, en este caso
miembros de la familia y nadie más la puede las variables, debemos crear un método
saber por fuera del núcleo familiar, este es el que nos controle los valores que una varia-
caso de protegido. ble pueda tener, y no tener acceso a ellas de
forma directa. Aquí es donde aplicamos el
Y hay una información que la puede saber encapsulamiento.
cualquier amigo o persona por fuera de la
familia sin ninguna restricción, este es el Para que un programa en java pueda tener
caso de público. flexibilidad y se pueda realizar un mante-
nimiento eficiente, el código desarrollado
Veamos en ejemplo práctico en lenguaje debe tener encapsulamiento de la siguiente
java: forma:
Se tiene el siguiente código, donde se crea ■ Se debe mantener las variables que se
una clase con un dato público, las cuales definan en la clase protegidas con priva-
son accesibles desde fuera de la clase. te.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 47
7
} de forma correcta.
Systema.out.print(“El dato de
valor es”+obj.getValor()); Programa
}
} Objeto 1 Objeto 1
datos datos
Principios de Modularidad
“Propiedad que tiene un sistema que ha
sido descompuesto en un conjunto de mó-
dulos cohesivos y débilmente acoplados”
Objeto 1
(Booch, 1996). datos
Objeto 1
El principio de modularidad entre objetos datos
consiste en dividir la aplicación en módu-
los más pequeños, donde cada uno debe
presentar un comportamiento tan inde- Figura 2. Modularidad y relación entre clases.
pendiente como sea necesario en toda la Fuente: Propia.
aplicación. La compilación de cada módulo
se puede hacer por separado, pero depen-
diendo a través de conexiones con otros
módulos, similar que en la encapsulación.
En la programación orientada a objetos los
lenguajes soportan la modularidad en mu-
chas formas.
Características de la Modularidad
Alta cohesión: es un módulo que tiene responsabilidades altamente definidas y se relacio-
na con otros, sin hacer mayor protagonismo.
Bajo acoplamiento: es un módulo que tiene poca dependencia de otros módulos. Facilita
la comprensión modular: se puede entender un módulo con facilidad sin conocer los otros.
return radio; }
this.radio = radio; }
JOptionPane.showMessageDialog(null, “El
area es” + area);
public float getPerimetro() {
}
return perimetro;
}
public void imprimePerimetro() {
public void setPerimetro(float perimetro) {
JOptionPane.showMessageDialog(null, “El
this.perimetro = perimetro; perimetro es” + perimetro);
} }
public float getArea() { public void lee() {
return area; radio = Float.parseFloat(JOptionPane.
showInputDialog(null, “Radio :”));
}
}
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 50
10
En el código anterior se ha definido una tengan. Los métodos getters y setters, son
clase pública llamada Circulo1, con tres métodos definidos en java para interactuar
datos privados: radio, perímetro, área, y con las variables privadas de una clase.
unos métodos getRadio(), SetRadio(), get-
Perimetro(), setPerimetro(), getArea(), que Un método get retorna el valor de una pro-
nos permitirán manipular mediante varia- piedad de un objeto sobre la variable miem-
bles locales los datos privados de la clase, y bro de un objeto.
no acceder directamente a ellos.
Un método set tiene la función void como
La clase AplicaciónCirculo se ha define un tipo de retorno, tomando un parámetro
como una clase public con un solo método sobre una variable para luego asignársela a
main, donde se instancia la clase Circulo1 la variable miembro de la clase.
para crear el objeto c1, y así poder acceder a
los métodos que tiene la clase Circulo1. Dentro de las convenciones en java, los mé-
todos set y get son utilizados por los méto-
public class AplicacionCirculo { dos externos, y por lo cual, estos se crean
como métodos públicos, totalmente visi-
public static void main(String[] args) { bles.La convención definida es definir mé-
todos get y set para las variables miembros
Circulo1 c1; asociadas. Ejemplo getCodigo, y setCodigo,
asociado a la variable Código. No todas las
c1 = new Circulo1(); variables miembros van a tener definidos
los métodos get y set como acceso asocia-
do. Solo se definen estos métodos para las
c1.lee(); variables que van a ser accesadas externa-
mente. En la figura se muestra la creación
c1.calculeArea(); de los métodos get y set a través del IDE de
desarrollo eclipse.
c1.imprimeArea();
c1.calculePerimetro();
c1.imprimePerimetro();
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 51
11
Figura 4. Creación de métodos get y set, para tres variables miembros de la clase.
Fuente: Propia.
private boolean genero; //Tomaremos que el valor verdadero para Masculino, y el falso Feme-
nino.
this.edad= edad;
} }
} }
} persona.setNombre(“Carlos”);
persona.setApellidos(“Torres”);
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 53
13
Con este código, se estarían pasando datos Interfaces
a los métodos para ser asignados a los datos
miembros privados de la clase. Interfaz: incluye Clase que implemen-
todos los elementos ta la interfaz.
Ejercicio: realizar una aplicación donde se que el objeto debería
evidencie el encapsulamiento, modulari- ser capaz de ofrecer.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 54
14
<<Interface>> TestInterface
Figura
float PI = 3.1416f; // Por defecto public static final. La f final indica que el número es float
} //Cierre de la interface
public class Cuadrado implements Figura { // La clase implementa la interface Figura
}
public Rectangulo (float lado, float altura) { this.lado = lado; this.altura = altura; }
Figura cuad1 = new Cuadrado (3.5f); Figura cuad2 = new Cuadrado (2.2f); Figura cuad3 = new
Cuadrado (8.9f);
Figura circ1 = new Circulo (3.5f); Figura circ2 = new Circulo (4f);
Figura rect1 = new Rectangulo (2.25f, 2.55f); Figura rect2 = new Rectangulo (12f, 3f);
for (Figura tmp: serieDeFiguras) { areaTotal = areaTotal + tmp.area(); }
La instanciación y parametrización: es
poder llegar a tener clases que sean reu-
tilizables.Relación que se da entre clases
y objetos.En la aplicación las clases son
completamente estáticas, hacen parte del
programa y no presentan ningún cambio
durante su ejecución.Por el contrario, los
objetos son dinámicos, pues estos se crean,
cambian de estado durante su ejecución y
al final se destruyen.
Clasificación
Forma de ordenar el conocimiento. No exis-
ten reglas simples que permitan la mejor se-
lección de clases y objetos para generar una
clasificación. Clasificar es agrupar cosas que
tienen estructura común o comportamien-
to similar. La clasificación es un proceso di-
fícil, por lo que conviene hacerlo de manera
incremental iterativa.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 57
17
1
UNIDAD
3Unidad 3
Herencia
Modelos de programación I
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 59
3
U3 Metodología
Para cada unidad el estudiante cuenta con un documento texto, el cual le describe las activi-
dades a realizar para la semana; dicho documento se denomina Guía de actividades. Asimis-
mo le informa las tareas calificables e incluye los objetivos de aprendizaje. Antes de iniciar
usted debe leerlo muy atentamente.
De otro lado, cada semana cuenta con lecturas complementarias, recursos para el aprendi-
zaje, actividades de repaso y videoconferencias que le permitirán aclarar dudas y/o profun-
dizar en la temática semanal.
Para esta semana hay un material de apoyo videocápsula, videodiapositiva, que le permitirá
afianzar los conceptos y comprender la herencia que se da en la programación orientada a
objetos.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 4
60
U3 Desarrollo temático
Herencia
Dos o más clases pueden estar relacionadas por la colaboración entre clases, otro tipo de
relación que se da en la programación orientada a objetos es la herencia entre objetos.
La herencia ordena las clases formando estructuras jerárquicas, logrando una jerarquía entre
las clases de varios niveles. Ejemplo:
PUBLICACIÓN FIGURA
La clase “LIBRO” puede incluir cambios y adaptaciones a su clase. “LIBRO” puede añadir nue-
vos atributos, nuevos métodos, y redefinir métodos.
La herencia es la característica que más se presenta en la POO, método por el cual se puede
reutilizar el código.
La herencia permite hacer uso de atributos y métodos de la clase superior que la deriva,
como si las dos fueran una sola clase.
Ejemplo:
Herencia simple: se creará una clase padre que heredará el apellido y otra clase hija donde
packageherencia;
String Apellido;
this.Apellido = Datos;
Una vez creada la clase padre, procedemos a crear la clase hijo con el nombre de la persona:
package herencia;
String Nombre;
super(Texto);
this.Nombre = NombrePer+this.Apellido;
returnNombre;
La palabra extends indica el programa que se está heredando de la clase “Padre” en donde
está el apellido. La palabra super se usa para instanciar al constructor de la clase que está
heredando, con los métodos setPersona y getPersona, son los métodos para capturar y pos-
teriormente mostrar el resultado.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 62
6
Luego se proceda instanciar la clase para ha-
A
cer uso de los atributos y métodos de la cla-
se “Padre”, en el siguiente código se muestra
como se instancia la clase:
B C
X.setPersona(“Carlos Torrez”);
System.out.println(X.getPersona());
D E
internamente al constructor el apellido, el
cual lo pasará a la clase principal “ClaseHe-
redada”, le asignamos el nombre haciendo
uso de su método setPersona, lo mostramos
por pantalla a través de la función System.
out.println y el método getPersona. (Figue- Figura 2.
roa, 2012). Fuente: Propia.
Tipos de herencia
Herencia Simple
Cuando una clase puede heredar de una
única clase. Como muestra la figura.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 63
7
ClaseP
SubClase
D
Figura 3.
Fuente: Propia.
Las subclases heredan de forma automática los atributos y métodos de la superclases, adi-
cionalmente una subclase puede adicionar atributos propios y métodos propios para su fun-
cionalidad que la superclase no tiene.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 64
8
En java para crear una subclase se usa la pa- El método operación es diferente para las
labra “extends” en la creación de la clase. clases “Suma” y “Resta”, por lo tanto, no po-
Ejemplo: demos disponer de la clase “Operación”. Los
métodos que permiten asignar un valor a
Classnombresubclaseextendsnombresuper- los atributos asignar1, asignar2, y mostrar
clase{ resultados, serán iguales en las dos clases,
esto nos permite que podamos accederlos
} en la clase “Operaciones”. Igualmente los
atributos de dato1 y dato2 y resultado, lo
Extends: significa que la subclase extiende
definiremos en la clase padre “Operacion”.
de la superclase, cuando una clase no tiene
una clase padre para heredar, por defecto En el IDE de desarrollo crea un proyecto con
en java la clase global es la clase object. cuatro clases: Operacion, Sumar, Restar y
Ejecucion.
Jerarquía de herencia
■ Generalización: se da cuando se detec- import java.util.*
tan o existen clases con un comporta-
miento en común. Por ejemplo, un libro y public class Operacion {
una revista ambas son publicaciones, en
esta jerarquía vemos la factorización. protected Scanner teclado;
■ Especialización: se da cuando una clase protectedint dato1;
es un caso especial de otra. Por ejemplo,
un rectángulo es un tipo de polígono, en protectedint dato2;
esta jerarquía vemos la abstracción:
protectedintresultado;
■ Ejemplo de herencia en Java: mediante
el siguiente ejercicio, se aplicará el con- publicOperacion(){
cepto de herencia.
teclado = new Scanner(System.in);
}
Operación
publicvoid asignar1(){
System.out.println(“Ingresar el primer
dato : ”);
Suma Resta
dato1 = teclado.nextInt();
}
Figura 4.
Fuente: Propia. publicvoid asignar2(){
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 65
9
valor2 = teclado.nextInt(); Resta restar = new Resta();
} restar.asignar1();
publicvoidmostrarresultados(){ restar.asignar2();
System.out.printl(resultado); restar.realizar();
} Restar.mostrarresultado();
publicvoid realizar(){ }
sumar.asignar2(); publicOperacion(){
Sumar.mostrarresultado();
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 66
10
publicvoid asignar1(){ La clase “Suma” tiene su propio método que
es único para su clase, el cual es llamado:
System.out.println(“Ingresar el primer
dato : ”); publicvoid realizar (){
} }
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 67
11
restar.realizar(); En la figura se representa la subclase A, que
hereda de la superclase B y la superclase C,
Systema.out.println(“La resta es: ”); heredando de dos clases sus atributos y sus
métodos, aplicando herencia múltiple. La
Restar.mostrarresultado(); subclase A tiene además sus propios atribu-
} tos y métodos únicos de su clase.
Herencia múltiple
Cuando una clase hereda de varias clases.
Formando un grafo dirigido a cíclico.
B C
A Figura 5.
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 68
12
1
UNIDAD
3 Unidad 3
Interfaces en java
Modelos de programación I
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 70
3
U3 Metodología
Para cada unidad el estudiante cuenta con un documento, el cual le describe las actividades
a realizar para la semana; dicho documento se denomina Guía de actividades. Asimismo le
informa las tareas calificables e incluye los objetivos de aprendizaje. Antes de iniciar usted
debe leerlo muy atentamente.
Se recomienda seguir en un orden secuencial la lectura y estar muy atento al código que
se utiliza para su desarrollo. En cada ejercicio que se expone en la semana, encontrará la
explicación detallada para una mayor comprensión del tema. Se recomienda realizar ejerci-
cios con base en los ejemplos que están desarrollados para comprender mucho más fácil el
concepto de interface en java.
De otro lado, cada semana cuenta con lecturas complementarias, recursos para el aprendi-
zaje, actividades de repaso y videoconferencias; que le permitirán aclarar dudas y/o profun-
dizar en la temática semanal.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina 71
Andina 4
U3 Desarrollo temático
Interfaces
Una interfaz en java es una agrupación de métodos abstractos y de propiedades. En las in-
terfaces no se define la implementación de los métodos; para tal efecto, se hace a través de
clases que describen la lógica de los métodos.
Cuando se trabaja con interfaces en java se soluciona de cierta forma la debilidad que pre-
senta java al implementar la herencia múltiple. Al definir interfaces se definen variables po-
limórficas y la ejecución de métodos polimórficos.
<<interface>>
List
ArrayList LinkedList
Figura 1. Interfaz List, que es implementada por las clases ArrayList y LinkedList.
Fuente: Propia.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 72
5
Ejemplo de la implementación de una interfaz en java
En el siguiente ejemplo se usará la interfaces en java. En el diagrama se muestra las clases y
sus relaciones:
<<Interface>> TestInterface
Figura
Figura 1.
Fuente: Propia.
Ejercicio 1
public interface Figura{
float PI = 3.1416f;
float área();
privatefloat lado;
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 73
6
privatefloatdiametro;
privatefloatdiametro;
this.lado = lado;
this.altura = altura;}
returnlado*altura;}
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 74
7
Figura circ1 = new Circulo (3.5f);
floatareaTotal = 0;
float PI = 3.1416f;
float área();
Se crea una interface llamada Figura que define una constante PI y un atributo, ambos de
tipo float.
privatefloat lado;
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 75
8
publicfloat área(){ return lado*lado:}
Se crea una clase Llamada Cuadrado que implementa la interfaz Figura que se ha creado
anteriormente.
En la clase Cuadrado se crea el constructor que tiene el mismo nombre de la clase con un
parámetro de tipo float para el lado. Igualmente se crean las clases de Círculo y Rectángulo
con los parámetros correspondientes a cada clase. En la clase Círculo se define el atributo de
diámetro y en la clase Rectangulo se define los atributos de lado y altura.
Permite la creación del objeto de tipo Figura de las clases Cuadrado, Circulo, Rectangulo, con
los valores de los parámetros que se han definido en cada clase.
Ejercicio 2
En el siguiente ejercicio, se implementará una clase que permita desarrollar una interface
comparable en java.
publicintdni, edad;
this.dni = d;
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 76
9
this.edad = e; this.edad = e;
} }
} publicintcompareTo(Persona p){
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 77
10
iguales por la edad, se compare sus dni para definir qué persona es mayor a otra.
El siguiente paso es crear la clase “Programa”, que se encargará de crear personas y compa-
rarlas para mostrar un mensaje de cuál es la mayor.
Vamos a realizar un ejercicio donde tendremos un formulario que le permita al usuario po-
der visualizar de forma gráfica la respuesta del programa. (Booch, 1996).
Programa:
importjavax.swing.*;
privateJLabel lbl1;
publicFormulario(){
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 78
11
setLayout(null); de la clase.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 79
12
lbl1 = new JLabel(“HolaMundo”);
jbl1.setBounds(10,20,200,30);
add(jbl1);
Finalmente hacemos uso del método “main”, para crear el objeto de la clase “Formulario”,
llamando al método “setBounds” con los parámetros indicados y una última instrucción para
hacer visible el texto en el “JFrame”, con “setVisible”.
Formu.setBounds(10,10,400,300);
Formu.setVisible(true);
Imagen 1.
Fuente: http://danha.tistory.com/990
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 80
13
1
UNIDAD
4Unidad 4
Polimorfismo en
java
Modelos de programación I
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 82
3
U4 Metodología
Para cada unidad el estudiante cuenta con un documento, en el que se describe las activida-
des a realizar para la semana; dicho documento se denomina guía de actividades. Asimismo
le informa las tareas calificables e incluye los objetivos de aprendizaje. Antes de iniciar usted
debe leerlo muy atentamente.
De otro lado, cada semana cuenta con lecturas complementaras, recursos para el aprendi-
zaje, actividades de repaso y videoconferencias; que le permitirán aclarar dudas y/o profun-
dizar en la temática semanal.
Polimorfismo y reutilización
Abrir()
La propiedad de polimorfismo permite que métodos que tienen el mismo nombre dentro
de una aplicación y funcionalidad, den respuestas de forma diferente cuando son invocados
por objetos, y su comportamiento dependerá de la naturaleza del objeto dentro del cual
actúan.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina 84
Andina 5
Veamos un ejemplo, una instancia de la clase Figura podrá referenciar a atributos y métodos
definidos en la clase “Circulo” y “Rectangulo”. Veamos un ejemplo tomado de la página pro-
gramación orientada a objetos con java. (Pizarro, 2010):
Figura 2. Figura.
Fuente: propia.
Tomemos como ejemplo que las clases “Circulo” y “Rectangulo” implementan un método
llamado “Perimetro” encargado de calcular el perímetro de la figura.
Figura 3 Figura.
Fuente: propia.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 85
6
La referencia que se hace a la clase “MiFigura”, podrá llamar el método “Perimetro” de la cla-
se “Circulo” o al método “Perimetro” de la clase “Rectangulo”, todo está dependiendo, en el
momento de ejecución, si está referenciando a una instancia de la clase “Circulo” o si está
referenciando a una instancia de la clase “Rectangulo”. (Pizarro, 2010). Pendiente
Es muy importante tener en cuenta que la determinación del método “Perimetro” que se
desea invocar, ya sea de la clase “Circulo” o el de la clase “Rectangulo”, este no se realiza en
la compilación sino al momento de la ejecución, característica muy importante del polimor-
fismo.
En el cuadro se representa una clase Padre compartiendo métodos totalmente iguales a sus
subclases, y las subclases tienen sus propios métodos, pero las subclases pueden hacer uso
sin ninguna restricción de los métodos de la clase Padre.
Polimorfismo
/*
*/
abstractclassFiguraPadre {
void area(){
voidperimetro(){
void area() {
void perímetro(){
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 87
8
}
fig1.area();
fig1.perimetro();
fig1.area();
fig1.perimetro();
En el código podemos observar que está compuesto por varias clases llamadas
abstractvoidperimetro().
Tipos de polimorfismo
Sobrecarga: (Overloading, Polimorfismo ad-hoc) un solo método el cual tiene un nombre
definido y muchas respuestas distintas.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 88
9
La funcionalidad es el mismo reemplazo del método del padre, aunque los métodos se en-
cuentran en diferentes clases, se encuentran relacionados mediante la herencia.
Ejemplos:
Sobrecarga:
Factura::imprimir()
Factura::imprimir(intnumCopias)
ListaCompra::imprimir()
Sobreescritura
Cuenta::abonarInteres()
CuentaJoven::abonarInteres()
Valiables polimórficas
Genericidad
Lista<Cliente>
Lista<Articulo>
Lista<Alumno>
Lista<Habitación>
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 89
10
La sobrecarga
La sobre carga de métodos consiste a que un mismo nombre puede representar a varios
métodos distintos con diferentes tipo y número de parámetros, todos manejados dentro
en una sola clase. En la programación orientada a objetos, el tema de sobrecarga se refiere
a tener varios métodos con el mismo nombre pero con una funcionalidad diferente. El caso
más utilizado son los constructores que permiten tener el mismo nombre de la clase, pero su
función es diferente, pues este se encarga de inicializar atributos o métodos.
privatefloarprecio;
publicvoidsetPrecio(){
precio = 3.50;
publicvoidsetPrecio (floatnuevoPrecio){
precio = nuevoPrecio;
Como se puede observar en el ejemplo, se tiene una clase llamada “Producto” con tres méto-
dos, donde el primero no tiene parámetros, el segundo tiene un parámetro de tipo float lla-
mado “nuevoPrecio”, y el tercero tiene dos parámetros uno de tipo entero y otro de tipo float.
Ejemplo de sobreescritura: esta se aplica a los métodos, donde los métodos de la clase padre
se redefinen en las subclases. En la relación de herencia de la clase Figura tiene definido los
métodos “calcularArea” y “calcularPerimetro”, las subclases “Cuadrado”, “Circulo”, “Triangulo”
y “Rectangulo” que heredan de la clase “Figura”, estas redefinen estos métodos ya que sus
cálculos son diferentes.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 90
11
Veamos el ejemplo:
protecteddoubléárea;
protecteddoubléperímetro;
publicFigura(){
this.area = 0;
this.perimetro= 0;
returnárea;
return perimetro;
public Circulo() {
super();
return radio;
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 91
12
}
this.radio = radio;
this.area = Math.PI*Math.pow(this.radio,2.0);
this.perimetro = 2*Math.PI*this.radio;
Explicación de código:
protecteddoublé area;
protecteddoubléperímetro;
publicFigura(){
this.area = 0;
this.perimetro= 0;
Se crea una clase llamada “Figura” que tiene los atributos de “área” y “perímetro” y se define
el constructor Figura que se encarga de hacer una sobrecarga sobre los atributos inicializán-
dolos en cero “0”.
Se crean los métodos getArea(), getPerimetro(), calcularArea(), publicclass Circulo extends Fi-
gura que tendrán los comportamientos diferentes de los métodos, y pueden ser llamados
desde diferentes clases.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 92
13
1
UNIDAD
4 Unidad 4
Interfaces graficas
jframe
Modelos de programación I
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 94
3
U4 Metodología
Es importante llevar a cabo el desarrollo de la semana de una forma secuencial, para tener
claridad en el tema; se recomienda no saltar entre páginas, ya que el contenido está enfoca-
do al seguimiento paso a paso de una actividad.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 95
4
U4 Desarrollo temático
JFC y Swing.
Las interfaces pueden estar implementadas por varias clases, métodos y constantes.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina 96
Andina 5
■ Definir la disposición de los componentes, de los cuales existen dos tipos: contenedores
y componentes atómicos.
■ Los contenedores sirven para organizar los componentes contenidos en los mismos y la
organización se define como disposición (layout).
■ Definir el comportamiento de la interfaz: (Gestión de eventos).
■ Los controles: Permiten interactuar con el usuario ante reacciones de eventos, progra-
mando las respuestas que generan los elementos al momento de ser invocados.
■ Es conveniente mantener la interfaz de la lógica lo más independiente posible. (Mestras,
2004).
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 97
6
Ejemplo de código para la implementación sencilla de una interfaz gráfica.
setTitle(“INTERFAZ GRAFICA”);
privateJComponentcreaBotonera(){
botonera.add(hola);
botonera.add(adiós);
returnbotonera;
PrivatejComponentcreaEco(){
Eco = new JTextFlied(“Pulsa el botón”); //Se crea el campo de texto donde poner el eco.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 98
7
return eco;
A continuación se verá un ejemplo donde se explica cómo crear una interfaz en java con la
clase “JFrame”.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 99
8
Durante el desarrollo del ejercicio se realizará una calculadora haciendo uso de la interface
gráfica.
Crear una calculadora que permita sumar dos números, utilizando una interfaz gráfica gene-
rada en Netbeans.
Clic en File
Click en Next
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 100
9
ClassName: sumadora
Package: sumadora
ClickFinish
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 101
10
Se agregan los controles JLabel y TextField.
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 102
Fundación 11
Se cambian los textos de los campos usando el botón derecho del mouse.
Click en el objeto y luego click derecho del mouse sobre Edit Text.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 103
12
Se inicia la codificación de la aplicación con el botón Sumar
nro1 = Double.parseDouble(jTextField1.getText());
nro2 = Double.parseDouble(jTextField2.getText());
jTextField3.setText(String.valueOf(suma));
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 105
14
Click en el botón verde de ejecutar o presione F6
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 106
15
Escriba unos valores en los números 1 y 2 y click en el botón Sumar.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 107
16
Bibliografia
■■Azpitarte, R. (2009). Introducción a la programación orientada a objetos con Java. Espa-
ña: Departamento de sistemas informáticos y computación. Universidad Politécnica de
Valencia.
■■Cachero, C. & Ponce de León, P. (2014). Polimorfismo. Recuperado de http://rua.ua.es/ds-
pace/bitstream/10045/4013/1/4-Polimorfismo.pdf
■■González, G. (2014). Ciberaula. Recuperadode http://www.ciberaula.com/articulo/lista_
programas_que_usan_poo/
■■Mateu, L. ( 1996). Encapsulamiento de clases. Recuperado de http://dcc.uchile.cl/~lmateu/
Java/Apuntes/encapsu.htm
■■Onrubia, J. & Rochera, M. & Barberà, E. (2001). La enseñanza y el aprendizaje de las mate-
máticas: una perspectiva psicológica. Madrid: editorial Alianza.
■■Rodríguez, A. (2006). Concepto de interfase y herencia múltiple en Java. Recuperado de
http://aprenderaprogramar.com/index.php?option=com_attachments&task=download
&id=604
■■Booch, G. (1996). Análisis y diseño orientado a objetos. Mexico: Addison Wesley Longman.
■■Figueroa, K. (2012). Programación en Java. Recuperado de http://todoenjava.blogspot.
com/2012/01/herencia.html
■■Granada, U. (2014). Ciencias de la computación e inteligencia artificial. Recuperado de
http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap7/cap71.htm
■■Universidad tecnológica nacional. (2006). Modularidad. Recuperadode http://labsys.frc.
utn.edu.ar/aed-2005/Unidad%20II/Apunte/U2%20-%20Modularizaci%F3n.pdf
■■Pizarro, J. (2010). Programación orientada a objetos con Java. Recuperado de http://java-
jcp.blogspot.com/2010/04/unidad-6-polimorfismo-y-reutilizacion.html