Robles Robles Mario
1. Programacin en lenguaje orientado a objetos.
Vivimos en un mundo lleno de objetos: aviones, trenes, automviles, telfonos,
libros, computadoras, etc. Sin embargo hasta hace poco, las tcnicas de
programacin no reflejaban esto.
Es muy importante destacar que cuando se hace referencia a la programacin
orientada a objetos, no se habla de unas cuantas caractersticas nuevas aadidas
a un lenguaje de programacin. La programacin orientada a objetos (POO)
implica una nueva forma de pensar acerca del proceso de descomposicin de
problemas y de desarrollo de programas que dan solucin virtualmente a
cualquier problema planteado y susceptible a ser resuelto mediante la
implementacin de software.
1.1 Desarrollo histrico de lenguaje orientado a objetos
Cuando las computadoras fueron desarrolladas en la dcada de 1940, eran
usadas por los matemticos con propsitos militares, para calcular la trayectoria
de las bombas y descifrar las ordenes y transmisiones diplomticas del enemigo.
Despus de la segunda guerra mundial, aun eran utilizadas sobre todo por
matemticos para hacer clculos. Esta realidad se reflej en el nombre del primer
lenguaje de alto nivel disponible en forma comercial en 1957. El nombre era
FORTRAN, el cual era un acrnimo de FORmula TRANslation (traduccin de
formulas).
Esta situacin ha cambiado de manera considerable, sobre todo por ciertas
razones. Una de las razones del desencanto por los programas orientados a
procedimientos ha sido el fracaso de los lenguajes tradicionales de
procedimientos para proporcionar un medio adecuado para limitar los costos del
software.
La
POO
surge
en
la
historia
como
un
intento
para
dominar
la
complejidad
y
abstraccin
que,
de
forma
innata
posee
el
software.
Tradicionalmente
la
manera
de
enfrentar
esta
complejidad
ha
sido
usando
lo
que
se
llama
programacin
estructurada,
que
consiste
en
descomponer
el
programa
en
subproblemas
y
mas
subproblemas
hasta
llegar
a
acciones
muy
simples
y
fciles
de
codicar,
por
ejemplo,
un
programa
que
resuelve
ecuaciones
de
segundo
grado
se
descompone
en
una
secuencia
de
acciones:
primero
pedir
el
valor
de
los
coecientes
a.
b.
y
c;
despus,
calcular
el
valor
del
discriminante;
y
por
ultimo
en
funcin
del
signo
del
discriminante
calcular
ninguna,
una
o
dos
races.
Se
observa
que
esta
metodologa
de
programacin
implica
convertir
el
programa
en
acciones
mas
simples,
que
pueden
observarse
directamente
como
verbos
como
pedir,
comprobar,
calcular
La
programacin
orientada
a
objetos
es
otra
forma
de
abordar
los
problemas.
Este
nuevo
mtodo
de
descomposicin
es
la
descomposicin
en
objetos.
Robles Robles Mario
Dentro
de
la
losofa
de
la
POO
no
es
primario
el
qu
hay
que
hacer
en
el
problema,
sino
en
cual
es
el
escenario
real
del
mismo,
y
se
intenta
simular
ese
escenario
en
el
programa.
Los
lenguajes
de
programacin
tradicionales
no
orientados
a
objetos
como
C
o
Basic
basan
su
funcionamiento
en
el
concepto
de
procedimiento
o
funcin,
que
es
simplemente
un
conjunto
de
instrucciones
que
operan
sobre
argumentos
y
producen
un
resultado.
De
este
modo
un
programa
estructurado
no
es
mas
que
una
sucesin
de
llamadas
a
funciones,
ya
sean
estas
del
sistema
operativo
o
proporcionadas
por
el
propio
lenguaje,
o
desarrolladas
por
el
mismo
usuario.
En
el
caso
de
los
lenguajes
orientados
a
objetos
como
es
el
caso
de
C++
y
Java,
el
elemento
bsico
no
es
la
funcin,
sino
un
elemento
denominado
precisamente
objeto.
Un
objeto
es
una
representacin
en
un
programa
de
un
concepto,
y
contiene
toda
la
informacin
necesaria
para
abstraerlo:
datos
que
describen
sus
atributos
y
operaciones
que
pueden
realizarse
sobre
los
mismos.
Con
este
nuevo
enfoque,
la
POO
es
una
nueva
forma
de
pensar,
una
manera
distinta
de
enfocar
los
problemas.
Ah
radica
la
dicultad
de
aprender
un
lenguaje
totalmente
orientado
a
objetos,
como
es
Java
o
C++,
sin
conocer
previamente
los
pilares
de
la
programacin
orientada
a
objetos.
1.2 Clases y objetos
Es fundamental para la orientacin a objetos el concepto de un tipo de datos
abstracto, el cual es definido por el programador. La construccin en un tipo de
datos se basa tanto en variables como en funciones; las variables proporcionan
el medio para crear configuraciones de datos nuevas y las funciones
proporcionan el medio para ejecutar operaciones en estas estructuras.
La
programacin
orientada
a
objetos
es
otra
forma
de
abordar
los
problemas.
Este
nuevo
mtodo
de
descomposicin
es
la
descomposicin
en
objetos.
Dentro
de
la
losofa
de
la
POO
no
es
primario
el
qu
hay
que
hacer
en
el
problema,
sino
en
cual
es
el
escenario
real
del
mismo,
y
se
intenta
simular
ese
escenario
en
el
programa.
Si
se
analiza
cmo
se
plantea
un
problema
cualquiera
en
la
realidad,
se
observa
que
lo
que
hay
en
la
realidad
son
identidades
(otro
nombre
que
se
podra
usar
para
describir
lo
que
se
llama
objetos).
Estas
entidades
u
objetos
poseen
un
conjunto
de
propiedades
o
atributos,
y
un
conjunto
de
mtodos,
mediante
los
cuales
muestran
su
comportamiento.
Y
no
solo
eso,
a
medida
que
se
avanza
en
la
POO,
se
puede
descubrir
poco
a
poco,
todo
un
conjunto
de
interpelaciones
entre
las
entidades,
guiadas
por
el
intercambio
de
mensajes:
los
objetos
del
programa
responden
a
estos
mensajes
mediante
la
ejecucin
de
ciertas
acciones.
Robles Robles Mario
Una
forma
de
ejemplicar
lo
anterior
es
mediante
la
siguiente
situacin:
[Un
domingo
por
la
tarde
estn
en
casa
una
madre
y
su
hijo
viendo
la
televisin,
y
de
repente
la
madre
siente
un
fuerte
dolor
de
cabeza;
como
es
natural,
lo
primero
que
hace
el
hijo
es
tratar
de
encontrar
una
caja
de
aspirinas.]
Esta
situacin
no
extraa
para
toda
persona
puede
ser
analizada
en
clave
de
objetos:
el
objeto
hijo
ha
recibido
un
mensaje
procedente
del
objeto
madre.
El
objeto
hijo
responde
al
mensaje
o
evento
ocurrido
mediante
una
accin:
buscar
aspirinas.
La
madre
no
tiene
que
decirle
al
hijo
donde
debe
buscar,
es
responsabilidad
del
hijo
resolver
el
problema
como
considere
mas
oportuno.
Al
objeto
madre
le
basta
con
haber
emitido
un
mensaje.
[El
hijo
no
encuentra
aspirinas
en
el
botiqun
y
decide
acudir
a
la
farmacia
para
comprar
aspirinas.
En
la
farmacia
es
atendido
por
una
persona
que
le
pregunta
qu
desea,
a
lo
que
el
hijo
responde:
una
caja
de
aspirinas,
por
favor.
La
farmacutica
desaparece
para
regresar
al
poco
tiempo
con
una
caja
de
aspirinas
en
la
mano.
El
hijo
paga
el
importe,
se
despide
y
vuelve
a
su
casa.
All
le
da
un
comprimido
a
su
madre,
la
cual
al
cabo
de
un
rato
comienza
a
experimentar
una
notable
mejora
hasta
la
completa
desaparicin
del
dolor
de
cabeza.]
El
hijo
como
responsable
de
un
cometido,
sabe
lo
que
debe
hacer
hasta
conseguir
una
aspirina.
Para
ello
entra
en
relacin
con
un
nuevo
objeto,
la
farmacutica,
quien
responde
al
mensaje
o
evento
de
peticin
del
objeto
hijo
con
la
bsqueda
de
la
aspirina.
El
objeto
farmacutica
es
ahora
el
responsable
de
la
bsqueda
de
la
aspirina.
El
objeto
farmacutica
lanza
un
mensaje
al
objeto
hijo
solicitando
el
pago
del
importe,
y
el
objeto
hijo
responde
a
tal
evento
con
la
accin
de
pagar.
Es
evidente
ahora
en
esta
situacin
la
existencia
de
objetos
que
se
diferenciaban
de
los
dems
por
un
conjunto
de
caractersticas
o
propiedades,
y
por
un
conjunto
de
acciones
que
realizaban
en
respuesta
a
unos
eventos
que
se
originaban
en
otros
objetos
o
en
el
entorno.
Tambin
es
claro
que
aunque
todos
los
objetos
tienen
propiedades
distintas
como
el
color
del
cabello,
el
grado
de
simpata
o
el
peso,
todos
tienen
un
conjunto
de
atributos
en
comn
por
ser
ejemplos
de
una
entidad
superior
llamada
ser
humano.
A
este
patrn
de
objetos
(en
nuestro
caso
ser
humano
lo
llamaremos
clase).
Con
este
ejemplo
se
explica
que
los
objetos
son
instancias
o
casos
concretos
de
las
clases,
que
no
son
mas
que
plantillas
que
denen
las
variables
y
los
mtodos
comunes
a
todos
los
objetos
de
un
cierto
tipo.
La
clase
ser
humano
tendr
entre
sus
muchas
variables
miembro
o
variables
que
la
componen:
color
de
cabello,
color
de
ojos,
estatura,
peso,
fecha
de
nacimiento,
etc.
A
partir
de
una
clase
se
podrn
generar
todos
los
objetos
que
se
deseen
especicando
valores
particulares
para
cada
una
de
las
variables
denida
por
la
clase.
As
encontraremos
el
objeto
farmacutica,
cuyo
color
Robles Robles Mario
de
cabello
es
rubio,
color
de
ojos
azul,
estatura
175
cm,
peso
50Kg,
y
as
sucesivamente.
Formalmente
un
objeto
no
es
mas
que
un
conjunto
de
variables
(o
datos)
y
mtodos
(o
funciones)
relacionados
entre
si.
Los
objetos
en
programacin
se
usan
para
modelar
objetos
o
entidades
del
mundo
real.
Un
objeto
es,
por
tanto,
la
representacin
en
un
programa
de
un
concepto
y
contiene
toda
la
informacin
necesaria:
datos
que
describen
sus
atributos
y
operaciones
que
pueden
realizarse
sobre
los
mismos.
Normalmente
en
el
mundo
real
existen
varios
objetos
de
un
mismo
tipo,
o
como
diremos
enseguida,
de
una
misma
clase.
Por
ejemplo,
mi
bicicleta
es
una
de
las
muchas
bicicletas
que
existen
en
el
mundo.
Usando
la
terminologa
de
la
POO,
diremos
que
mi
bicicleta
es
una
instancia
de
la
clase
de
objetos
conocida
como
bicicletas.
Todas
las
bicicletas
tienen
algunos
estados
o
atributos
(color,
marcha
actual,
cadencia
actual,
dos
ruedas)
y
algunos
mtodos
(cambiar
de
marcha,
frenar)
en
comn.
Sin
embargo,
el
estado
particular
de
cada
bicicleta
es
independiente
del
estado
de
las
dems
bicicletas.
La
particularizaron
de
estos
atributos
puede
ser
diferente.
Es
decir,
una
bicicleta
podra
ser
azul
y
otra
roja
pero
ambas
tienen
el
comn
el
hecho
de
tener
una
variable
color.
De
ese
modo
podemos
denir
una
plantilla
de
variables
y
mtodos
para
todas
las
bicicletas.
Las
plantillas
para
crear
objetos
son
denominadas
clases.
Una
clase
es
una
plantilla
que
dene
las
variables
y
los
mtodos
que
son
comunes
para
todos
los
objetos
de
un
cierto
tipo
En
el
ejemplo,
la
clase
bicicleta
denira
variables
miembro
comunes
a
todas
las
bicicletas,
como
la
marcha
actual,
la
cadencia
actual,
etc.
Esta
clase
tambin
debe
declarar
e
implementar
los
mtodos
o
funciones
miembro
que
permiten
al
ciclista
cambiar
de
marcha,
frenar
y
cambiar
la
cadencia
de
pedaleo.
1.3 Mtodos.
Los
atributos
del
objeto
(estado)
y
lo
que
el
objeto
puede
hacer
(comportamiento)
estn
expresados
por
las
variables
y
los
mtodos
que
componen
el
objeto
respectivamente.
Por
ejemplo,
un
objeto
que
modelase
una
bicicleta
en
el
mundo
real
tendra
variables
que
indicaran
el
estado
actual
de
la
bicicleta:
su
velocidad
es
de
20km/h,
su
cadencia
de
pedaleo
90rpm
y
su
marcha
actual
es
la
5a.
Estas
variables
se
conocen
formalmente
como
variables
instancia
o
variables
miembro
porque
contienen
el
estado
de
un
objeto
bicicleta
particular
y,
en
POO,
un
objeto
particular
se
denomina
instancia.
Ademas
de
estas
variables
el
objeto
bicicleta
podra
tener
mtodos
para
frenar,
cambiar
la
cadencia
de
pedaleo
y
cambiar
de
marcha
(la
bicicleta
no
tendra
que
tener
un
mtodo
para
cambiar
su
velocidad
pues
esta
es
funcin
de
la
cadencia
de
pedaleo,
la
marcha
en
la
que
est
y
de
si
los
frenos
estn
Robles Robles Mario
siendo
utilizados
o
no,
entre
otros
muchos
factores).
Estos
mtodos
se
denominan
formalmente
mtodos
instancia
o
mtodos
miembro,
ya
que
cambia
el
estado
de
una
instancia
u
objeto
bicicleta
particular.
La
siguiente
gura
muestra
una
bicicleta
modelada
como
un
objeto.
Cambiar
Marcha
Bicicleta modelada
como objeto:
20
km/h
90
rpm
Frenar
5a
marcha
Cambiar
Cadencia
Atributos:
Velocidad
Cadencia
Marcha
Metodos:
Cambiar Marcha
Frenar
Cambiar cadencia
El
diagrama
del
objeto
bicicleta
muestra
las
variables
objeto
en
el
ncleo
o
centro
del
objeto
y
los
mtodos
rodeando
el
ncleo
y
protegindolo
de
otros
objetos
del
programa.
Este
hecho
de
empaquetar
o
proteger
las
variables
miembro
con
los
mtodos
miembro
se
denomina
encapsulamiento.
Este
dibujo
conceptual
que
muestra
el
ncleo
de
variables
miembro
del
objeto
protegido
por
una
membrana
protectora
de
mtodos
o
funciones
miembro
es
la
representacin
ideal
de
un
objeto
y
es
el
ideal
que
los
programadores
de
objetos
suelen
buscar.
Sin
embargo
a
menudo,
por
razones
practicas
es
posible
que
un
objeto
desee
exponer
alguna
de
sus
variables
miembro,
o
proteger
otras
de
sus
propios
mtodos
o
funciones
miembro.
Por
ejemplo
Java
permite
establecer
4
niveles
de
proteccin
de
las
variables
y
de
las
funciones
miembro
para
casos
como
este.
Los
niveles
de
proteccin
determinan
que
objetos
y
clases
pueden
acceder
a
que
variables
o
a
que
mtodos.
De
cualquier
forma,
el
hecho
de
encapsular
las
variables
y
las
funciones
miembro
relacionadas
proporciona
dos
importantes
benecios
a
los
programadores
de
aplicaciones:
Capacidad
de
crear
mdulos:
El
cdigo
fuente
de
un
objeto
puede
escribirse
y
mantenerse
independientemente
del
cdigo
fuente
del
resto
de
los
objetos.
De
esta
forma,
un
objeto
puede
pasarse
fatuamente
de
una
parte
a
otra
del
programa.
Podemos
dejar
nuestra
bicicleta
a
un
amigo
y
sta
seguir
funcionando.
Robles Robles Mario
Proteccin
de
informacin:
Un
objeto
tendr
una
interfaz
publica
perfectamente
denida
que
otros
objetos
podrn
usar
para
comunicarse
con
el.
De
esta
forma,
los
objetos
pueden
mantener
informacin
privada
y
pueden
cambiar
el
modo
de
operar
de
sus
funciones
miembros
sin
que
esto
afecte
a
otros
objetos
que
usen
estas
funciones
miembro.
Es
decir,
no
necesitamos
entender
como
funciona
el
mecanismo
de
cambio
de
marcha
para
hacer
uso
de
el.
1.3 Mensajes.
Normalmente
un
nico
objeto
por
si
solo
no
es
muy
til.
En
general,
un
objeto
aparece
como
un
componente
mas
de
un
programa
o
una
aplicacin
que
contiene
otros
muchos
objetos.
Es
precisamente
haciendo
uso
de
esta
interaccin
como
programadores
consiguen
una
funcionalidad
de
mayor
orden
y
modelar
comportamientos
mucho
mas
complejos.
Una
bicicleta
(a
partir
de
ahora
se
puede
particularizar)
colgada
de
un
gancho
en
el
garaje
no
es
mas
que
una
estructura
de
aleacin
de
titanio
y
un
poco
de
goma.
Por
si
sola,
la
bicicleta
(por
poner
una
bicicleta
en
concreto)
es
incapaz
de
desarrollar
ninguna
actividad.
La
bicicleta
es
realmente
til
encanto
que
otro
objeto
(una
persona)
interacta
con
ella
(pedalea).
Los
objetos
de
un
programa
interactuar
y
se
comunican
entre
ellos
por
medio
de
mensajes.
Cuando
un
objeto
A
quiere
que
otro
objeto
B
ejecute
una
de
sus
funciones
miembro
(mtodos
de
B),
el
objeto
A
manda
un
mensaje
al
objeto
B.
En
ocasiones,
el
objeto
que
recibe
el
mensaje
necesita
mas
informacin
para
saber
exactamente
lo
que
tiene
que
hacer;
por
ejemplo,
cuando
se
desea
cambiar
la
marcha
de
una
bicicleta,
se
debe
indicar
la
marcha
a
la
que
se
quiere
cambiar.
Esta
informacin
se
pasa
junto
con
el
mensaje
en
forma
de
parmetro.
La
siguiente
gura
muestra
las
tres
partes
que
componen
un
mensaje:
1.-
El
objeto
al
cual
se
manda
el
mensaje
(La
Bicicleta)
2.-
El
mtodo
o
funcin
miembro
que
debe
ejecutar
(Cambiar
de
Marcha)
3.-
Los
parmetros
que
necesita
ese
mtodo
(Marcha)
Estas
tres
partes
del
mensaje
(objeto
destinatario,
mtodo
y
parmetros)
son
suciente
informacin
para
que
el
objeto
que
recibe
el
mensaje
ejecute
el
mtodo
o
la
funcin
miembro
solicitada.
Los
mensajes
proporcionan
dos
ventajas
importantes:
1.-
El
comportamiento
de
un
objeto
esta
completamente
determinado
(a
excepcin
del
acceso
directo
a
variables
miembro
publicas)
por
sus
mtodos,
as
que
los
mensajes
representan
todas
las
posibles
interacciones
que
pueden
realizarse
entre
objetos.
Robles Robles Mario
2.-
Los
objetos
no
necesitan
formar
parte
del
mismo
proceso,
ni
siquiera
residir
en
un
mismo
ordenador
para
mandarse
mensajes
entre
ellos
(y
de
esta
manera
interactuar).
1.4 Herencia.
Una
vez
que
hemos
visto
el
concepto
de
clase
y
de
objeto,
estamos
en
condiciones
de
introducir
otra
de
las
caractersticas
bsicas
de
la
programacin
orientada
a
objetos:
el
uso
de
la
herencia.
El
mecanismo
de
herencia
permite
denir
nuevas
clases
partiendo
de
otras
ya
existentes.
Las
clases
que
derivan
de
otras
heredan
automticamente
todo
su
comportamiento,
pero
ademas
pueden
introducir
caractersticas
particulares
propias
que
las
diferencian.
Como
se
ha
visto,
los
objetos
se
denen
a
partir
de
clases.
Con
el
mero
hecho
de
conocer
a
que
clase
pertenece
un
objeto,
ya
se
sabe
bastante
sobre
el.
Puede
que
no
sepamos
lo
que
es
la
espada,
pero
si
nos
dicen
que
es
una
bicicleta,
ya
sabremos
que
tiene
dos
ruedas,
manillar,
pedales
La
POO
va
mas
all,
permitiendo
denir
clases
a
partir
de
otras
clases
ya
construidas.
Por
ejemplo,
las
bicicletas
de
montaa,
las
de
carretera
y
los
tndems
son
todos,
en
denitiva,
bicicletas.
En
trminos
de
POO,
son
subclases
o
clases
derivadas
de
la
clase
bicicleta.
Anlogamente,
la
clase
bicicleta
es
la
clase
base
o
superase
de
las
bicicletas
de
montaa,
las
de
carretera
y
los
tndems.
Cada
subclase
hereda
los
estados
(en
forma
de
declaracin
de
variables)
de
la
superase
de
la
cual
deriva.
Las
bicicletas
de
montaa,
las
de
carretera
y
los
tndems
comparten
algunos
estados:
cadencia,
velocidad
ademas,
cada
subclase
hereda
los
mtodos
de
su
superclase.
Las
bicicletas
de
montaa,
las
de
carretera
y
los
tndems
comparten
algunos
comportamientos:
frenar
y
cambiar
la
cadencia
de
pedaleo,
por
ejemplo.
Sin
embargo,
las
clases
derivadas
no
se
encuentran
limitadas
por
los
estados
y
sus
comportamientos
que
heredan
de
su
superclase.
Muy
al
contrario,
estas
subclases
pueden
aadir
variables
y
mtodos
a
aquellas
que
han
heredado.
Los
tandeos
tienen
dos
asientos
y
dos
manillares;
algunas
bicicletas
de
montaa
tienen
una
catalina
adicional
con
un
conjunto
de
marchas
con
relaciones
de
transmisin
mucho
mas
cortas.
Las
clases
derivadas
pueden
incluso
sobreescribir
los
mtodos
heredados
y
proporcionar
implementaciones
mas
especializadas
para
esos
mtodos.
Por
ejemplo,
si
nuestra
bicicleta
de
montaa
tuviera
una
catalina
extra,
podramos
sobreescribir
el
mtodo
CambiarDeMarcha
para
poder
usas
esas
nuevas
marchas.
Ademas,
no
estamos
limitados
a
un
nico
nivel
de
herencia.
El
rbol
de
herencias
o
jerarqua
de
clases
puede
ser
tan
extenso
como
necesitemos.
Los
Robles Robles Mario
mtodos
y
las
variables
miembro
se
heredaran
hacia
abajo
a
travs
de
todos
los
niveles
de
la
jerarqua.
Normalmente,
cuanto
mas
abajo
esta
una
clase
en
la
jerarqua
de
clases,
mas
especializado
es
su
comportamiento.
En
nuestro
ejemplo,
podramos
hacer
que
la
clase
bicicleta
derivase
de
una
superclase
de
vehculos.
La
capacidad
para
crear
clases
nuevas
a
partir
de
otras
existentes
es
la
motivacin
y
poder
subyacente
detrs
de
las
tcnicas
de
programacin
orientadas
a
clases
y
a
objetos.
Hacer
esto
facilita
reutilizar
el
cdigo
existente
en
formas
nuevas
sin
necesidad
de
volver
a
hacer
los
procesos
de
prueba
y
validacin.
Permite
a
los
diseadores
de
una
clase
ponerla
a
disposicin
de
otros
para
adiciones
y
extensiones
sin
renunciar
al
control
sobre
las
caractersticas
existentes
de
la
clase.
La
herencia
es
la
capacidad
de
derivar
una
clase
a
partir
de
otra.
La
clase
inicial
usada
como
base
para
la
clase
derivada
se
conoce
como
base,
padre
o
superclase.
La
clase
derivada
se
conoce
como
derivada,
hija
o
subclase,
y
esto
proporciona
las
siguientes
ventajas:
1.-
Las
clases
derivadas
o
subclases
proporcionan
comportamientos
especializados
a
partir
de
los
elementos
comunes
que
hereda
de
la
clase
base.
A
travs
del
mecanismo
de
herencia
los
programadores
pueden
reutilizar
el
cdigo
de
la
superclase
tantas
veces
como
sea
necesario.
2.-
Los
programadores
pueden
implementar
las
llamadas
superases
abstractas,
que
denen
comportamientos
genricos.
Las
clases
abstractas
denen
e
implementan
parcialmente
comportamientos,
pero
en
gran
parte
de
estos
comportamientos
no
se
denen
ni
se
implementan
totalmente.
De
esta
forma,
otros
programadores
pueden
hacer
uso
de
estas
superases
detallando
esos
comportamientos
con
subclases
especializadas.
El
propsito
de
una
clase
abstracta
es
servir
de
modelo
base
para
la
creacin
de
otras
clases
derivadas,
pero
cuya
implementacin
depende
de
las
caractersticas
particulares
de
cada
una
de
ellas.
Un
ejemplo
de
clase
abstracta
podra
ser
en
nuestro
caso
la
clase
vehculos.
Esta
clase
seria
una
clase
base
genrica,
a
partir
de
la
cual
podramos
ir
creando
todo
tipo
de
clases
derivadas.
1.4 Polimorfismo.
Construir
una
clase
a
partir
de
otra
se
logra
usando
una
capacidad
llamada
herencia.
Relacionada
con
esta
capacidad
hay
una
caracterstica
igual
de
importante
llamada
polimorsmo.
El
polimorsmo
proporciona
la
capacidad
de
redenir
la
forma
en
que
operan
las
funciones
miembro
de
clases
relacionadas
basada
en
el
objeto
de
la
clase
al
que
se
esta
haciendo
referencia.
De
hecho,
para
que
un
lenguaje
de
programacin
sea
clasicado
como
un
lenguaje
orientado
a
objetos
debe
proporcionar
las
caractersticas
de
clases,
herencia
y
polimorsmo.
El
polimorsmo
permite
que
el
mismo
nombre
de
funcin
invoque
una
respuesta
en
objetos
de
una
clase
base
y
otra
respuesta
en
objetos
de
una
clase
derivada.
Robles Robles Mario
2. Programacin Visual
Por mucho tiempo los desarrolladores de software han hecho su trabajo usando
lenguajes textuales de programacin, pero eso est cambiando. La
programacin visual es una alternativa de programacin que mejora la
produccin de aplicaciones de software.
El
concepto
de
programacin
visual
es
un
poco
confuso,
ya
que
actualmente
se
le
considera
programacin
visual
a
los
lenguajes
de
programacin
textual
que
tienen
una
interfaz
grca
para
poder
visualizar
lo
que
uno
est
desarrollando.
El
concepto
programacin
visual
de
igual
forma
se
usa
para
denotar
una
metodologa
de
programacin,
en
la
cual
por
medio
de
iconos
se
permite
ir
creando
programas
sin
tener
un
lenguaje
textual
detrs.
La
programacin
visual
se
reere
al
desarrollo
de
software
donde
las
notaciones
grcas
y
los
componentes
de
software
manipulables
interactivamente
son
usados
principalmente
para
denir
y
componer
programas.
La
programacin
visual
se
dene
comnmente
como
el
uso
de
expresiones
visuales
(tales
como
grcos,
animacin
o
iconos)
en
el
proceso
de
la
programacin,
pueden
ser
utilizadas
para
formar
la
sintaxis
de
los
nuevos
lenguajes
de
programacin
visuales
que
conducen
a
los
nuevos
paradigmas
tales
como
programacin
por
la
demostracin,
o
pueden
ser
utilizados
en
la
presentaciones
grcas
del
comportamiento
o
de
la
estructura
del
programa.
El
objetivo
de
la
programacin
visual
es
mejorar
la
comprensin
de
los
programas
y
simplicar
la
programacin
en
si.
Mas
all,
la
programacin
visual
deber
fomentar
a
los
usuarios
nales
a
construir
sus
propios
programas,
que
de
otra
forma
deben
ser
escritos
por
programadores
profesionales.
2.1 Paradigma de la programacin visual
La
programacin
visual
ofrece
el
potencial
de
mejorar
la
habilidad
de
los
usuarios
(mas
que
de
los
programadores
profesionales)
para
comunicar
y
resolver
problemas,
mediante
el
uso
de
medios
grcos.
Para
lograr
esto
se
requiere
que
se
entornos
de
desarrollo
amigables
y
fciles
de
utilizar
por
los
usuarios
programadores.
2.2 Lenguajes de programacin visual y orientada a eventos
La
programacin
visual
se
basa
en
el
uso
de
lenguajes
visuales,
los
cuales
se
denen
de
la
siguiente
manera:
Robles Robles Mario
Un
lenguaje
de
programacin
que
usa
una
representacin
visual
(tal
como
grcos,
dibujos,
animaciones
o
iconos,
parcial
o
completamente).
Un
lenguaje
visual
manipula
informacin
visual
o
soporta
interaccin
visual,
o
permite
programar
con
expresiones
visuales.
Un
lenguaje
visual
es
un
conjunto
de
arreglos
espaciales
de
smbolos
de
texto
y
grcos
con
una
interpretacin
semntica
que
es
usada
para
comunicar
acciones
en
un
ambiente.
Los
lenguajes
de
programacin
visual
son
lenguajes
donde
se
usan
tcnicas
visuales
para
expresar
relaciones
o
transformaciones
en
la
informacin.
Como
el
nombre
lo
indica,
una
gran
parte
de
la
programacin
visual
se
realiza
visualmente.
Esto
signica
que
durante
el
tiempo
de
diseo,
el
programador
tiene
la
capacidad
de
ver
la
forma
en
que
el
programa
se
ver
al
ejecutarse.
Esta
es
una
gran
ventaja
sobre
otros
lenguajes
de
programacin
debido
a
que
se
tiene
la
posibilidad
de
cambiar
y
experimentar
con
el
diseo
hasta
que
se
est
satisfecho
con
los
colores,
proporciones
e
imgenes
que
se
incluyan
en
el
programa.
Los
lenguajes
visuales
y
orientados
a
eventos
dan
al
usuario
que
no
cuenta
con
mucha
experiencia
en
desarrollo,
pa
posibilidad
de
construir
sus
propias
aplicaciones
utilizando
interfaces
grcas
sobre
la
base
de
ocurrencia
de
eventos.
Para
soportar
este
tipo
de
desarrollo,
interactan
dos
tipos
de
herramientas,
una
que
permite
realizar
diseos
grcos
y,
un
lenguaje
de
alto
novel
que
permite
codicar
los
eventos.
Con
dichas
herramientas
es
posible
desarrollar
cualquier
tipo
de
aplicaciones
basadas
en
el
entorno.
Visual
Basic
es
uno
de
los
lenguajes
de
programacin
visual
y
con
enfoque
orientado
a
eventos
que
mas
entusiasmo
despiertan
entre
los
programadores
de
computadoras,
tanto
expertos
como
novatos.
En
el
caso
de
los
programadores
expertos
por
la
facilidad
con
la
que
se
desarrollan
aplicaciones
complejas
en
poqusimo
tiempo
(comparado
con
lo
que
cuesta
programar
en
visual
C++,
por
ejemplo).
En
el
caso
de
los
programadores
novatos
por
el
hecho
de
ver
de
lo
que
son
capaces
a
los
pocos
minutos
de
empezar
su
aprendizaje.
El
precio
que
hay
que
pagar
por
utilizar
Visual
Basic
es
una
menor
velocidad
o
eciencia
en
las
aplicaciones.
Visual
Basic
es
un
lenguaje
de
programacin
visual,
tambin
llamado
lenguaje
de
cuarta
generacin.
Esto
quiere
decir
que
un
gran
numero
de
tareas
se
realizan
sin
escribir
cdigo,
simplemente
con
operaciones
grcas
realizadas
con
el
ratn
sobre
la
pantalla.
Visual
Basic
tambin
se
basa
en
objetos,
aunque
no
es
orientado
a
objetos
como
Visual
C++.
La
diferencia
esta
en
que
Visual
Basic
utiliza
objetos
con
propiedades
y
mtodos,
pero
carece
de
los
mecanismos
de
herencia
y
polimorsmo
propios
de
los
verdaderos
lenguajes
orientados
a
objetos
como
Java
y
C++.
Robles Robles Mario
Los
programas
orientados
a
eventos
son
programas
tpicos
de
Windows,
como
Word,
Excel,
PowerPoint
y
otros.
Cuando
uno
de
estos
programas
ha
iniciado,
lo
nico
que
hace
es
quedarse
a
la
espera
de
las
acciones
del
usuario,
que
en
este
caso
son
llamadas
a
eventos.
El
usuario
dice
si
quiere
abrir
y
modicar
un
dichero
existente,
o
bien
comenzar
a
crear
un
chero
desde
el
principio.
Estos
programas
pasan
la
mayor
parte
del
tiempo
esperando
las
acciones
del
usuario
(eventos)
y
respondiendo
a
ellas.
Las
acciones
que
el
usuario
puede
realizar
en
un
momento
determinado
son
variadsimas,
y
exigen
un
tipo
especial
de
programacin:
la
programacin
orientada
a
eventos.
Este
tipo
de
programacin
es
sensiblemente
mas
complicada
que
la
secuencial,
pero
con
los
lenguajes
visuales
de
hoy,
se
hace
mas
sencilla
y
agradable.
Ya
se
ha
dicho
que
las
acciones
del
usuario
sobre
el
programa
se
llaman
eventos.
Son
eventos
tpicos
el
click
sobre
un
botn,
el
hacer
doble
click
sobre
el
nombre
de
un
chero
para
abrirlo,
el
arrastrar
un
icono,
el
pulsar
una
tecla
o
combinacin
de
teclas,
el
elegir
una
opcin
de
un
men,
el
escribir
en
una
caja
de
texto,
o
simplemente
mover
el
ratn.
Ademas
de
los
eventos,
la
mayor
parte
de
los
objetos,
como
los
formularios
y
los
controles,
son
suministrados
con
propiedades
y
mtodos.
Una
propiedad
es
una
signaron
que
describe
algo
sobre
un
objeto
como
un
formulario.
Los
mtodos
son
funciones
que
tambin
son
llamadas
desde
programa,
pero
a
diferencia
de
los
procedimientos
no
son
programadas
por
el
usuario,
sino
que
vienen
ya
pre-programadas
con
el
lenguaje.
Los
mtodos
realizan
tareas
tpicas,
previsibles
y
comunes
para
todas
las
aplicaciones.
De
ah
que
vengan
con
el
lenguaje
y
que
se
libere
al
usuario
de
la
tarea
de
programarlos.
Cada
tipo
de
objeto
o
de
control
tiene
sus
propios
mtodos.
En
general
solo
pueden
ser
ejecutados
en
tiempos
de
ejecucin
no
en
tiempo
de
diseo.
Algunos
ejemplos
de
mtodos
de
formularios
son
el
mtodo
MOVE,
que
mueve
un
formulario
en
un
espacio
de
dos
dimensiones
en
la
pantalla,
y
el
mtodo
ZORDER
que
sita
el
formulario
delante
o
detrs
de
otras
ventanas.
Los
mtodos
son
invocados
dando
nombres
al
objeto
y
cuyo
mtodo
se
esta
llamando,
listando
el
operador
punto
(.)
y
despus
listando
el
nombre
del
mtodo.
Como
cualquier
rutina
los
mtodos
pueden
incorporar
argumentos.
2.3 Diseo de interfaces visuales
Human-Computer
Interaction.
Es
as
como
se
denomina
al
estudio
de
cmo
los
humanos
interactan
con
los
sistemas
computarizados.
Muchas
disciplinas
contribuyen
a
esta
rama
de
estudio
y
desarrollo,
incluyendo
las
ciencias
de
la
computacin,
psicologa,
ergonoma,
ingeniera,
diseo
grco,
y
un
largo
y
eclctico
etctera.
Cuando
la
gente
interacta
con
los
sistemas
computarizados,
lo
hacen
por
medio
de
lo
que
se
denomina
Interfaz
Visual
o
Interfaz
de
Usuario
(GUI)
esto
es
la
parte
de
un
sistema
computacional
con
el
cual
el
usuario
interactuar
para
emprender
sus
Robles Robles Mario
acciones
y
alcanzar
sus
metas
en
trminos
de
manejo
de
informacin,
o
creacin
de
contenidos
mediante
software.
Las
interfaces
grcas
son
el
principal
elemento
que
el
usuario
percibe
en
los
programas
diseados
usualmente
mediante
la
metodologa
de
programacin
orientada
a
eventos.
La
interfaz
visual
o
interfaz
de
usuario
es
un
conjunto
de
elementos
a
travs
de
los
cuales
un
usuario
interacta
con
un
ordenador,
concretamente
con
un
programa
de
computadora,
y
la
informacin
que
el
software
manipula
o
los
contenidos
que
este
crea.
El
ser
humano
al
interactuar
con
los
objetos
que
le
rodean,
tiene
unas
expectativas
de
como
stos
deben
comportarse,
basado
en
experiencias
anteriores
con
ellos.
Debido
a
que
el
usuario
tiene
su
propia
forma
de
ver
las
cosas,
y
espera
de
ellas
un
comportamiento
predecible,
es
importante
hacer
uso
de
metforas
que
permitan
crear
interfaces
visuales
buenas,
en
trminos
de
usabilidad
y
capacidad
de
intuicin
por
parte
del
usuario
para
el
manejo
de
la
interfaz.
La
usabilidad
se
dene
en
la
parte
11
del
estndar
USO
9241
como
la
medida
en
la
que
un
producto
puede
ser
usado
por
usuarios
especcos
para
alcanzar
metas
especicas
con
efectividad,
eciencia
y
satisfaccin
en
un
contexto
de
uso
especico.
Efectividad
es
la
precisin
e
integridad
con
la
que
usuarios
especcos
pueden
alcanzar
metas
en
ambientes
particulares.
Por
otro
lado,
la
eciencia
se
dene
como
una
medida
en
funcin
de
la
cantidad
de
recursos
gastados
y
la
precisin
e
integridad
de
las
metas
alcanzadas.
La
satisfaccin
es
la
comodidad
y
y
aceptabilidad
del
sistema
de
trabajo
para
sus
usuarios
y
otra
gente
afectada
por
su
uso.
Una
interfaz
de
usuario
que
es
efectiva
en
un
contexto,
puede
no
ser
igualmente
efectiva
en
otro.
Como
diseadores
de
interfaces
visuales,
los
programadores
deben
considerar
el
contexto
en
el
que
el
sistema
ser
usado.
Las
interfaces
visuales
tienen
tanta
importancia,
que
impactan
directamente
en
la
productividad
de
la
gente
que
usa
los
programas.
Por
ejemplo
los
usuarios
que
disfrutan
de
usar
un
sistema
son
mas
productivos,
en
trminos
de
que
mejora
la
usabilidad,
y
la
efectividad
de
los
mismos
al
usar
un
sistema
cuya
interfaz
visual
es
agradable
y
eciente.
2.4 Aplicaciones
Una
aplicacin
es
simplemente
un
programa
informtico
creado
para
llevar
a
cabo
o
facilitar
una
tarea
especica
en
un
dispositivo
informtico
que
puede
ser
un
ordenador,
o
un
dispositivo
mvil.
Cabe
destacar
que
aunque
todas
las
aplicaciones
son
programas,
no
todos
los
programas
son
aplicaciones.
Existe
multitud
de
software,
pero
solo
se
le
denomina
as
a
aquel
que
ha
sido
creado
con
un
n
determinado,
para
realizar
tareas
concretas.
No
se
considerar
una
aplicacin
por
ejemplo
un
sistema
operativo,
ni
una
suite;
pues
su
propsito
es
general.
Robles Robles Mario
Las
aplicaciones
nacen
de
alguna
necesidad
concreta
de
los
usuarios,
y
tambin
pueden
responder
a
necesidades
ldicas
o
laborales.
Se
suele
decir
que
para
cada
problema
hay
una
solucin,
y
en
informtica
para
cada
problema
hay
una
aplicacin.
Naturalmente,
el
campo
de
las
aplicaciones
es
tan
extenso,
y
las
funciones
tan
dispares,
que
se
han
creado
numerosas
clasicaciones,
segn
varios
criterios.
As,
por
ejemplo,
dependiendo
del
uso
que
se
le
vaya
a
dar,
podemos
tener
aplicaciones
profesionales
o
personales.
Tambin
podemos
hablar
de
aplicaciones
para
Windows,
Linux,
Android,
Apple,
PC,
mvil,
segn
el
sistema
operativo
o
la
plataforma
que
vayamos
a
usar.
Segn
su
nalidad,
pueden
ser
de
entretenimiento,
de
negocios,
empresariales,
de
sonido,
grcas,
de
edicin,
web,
didcticas...
e
incluso
segn
la
rama
de
las
ciencias
en
el
que
se
usen
podemos
decir
que
hay
aplicaciones
de
ingeniera,
de
telecomunicaciones,
matemticas...
y
un
largo
etctera.
Referencias:
C++
Para
Ingeniera
y
Ciencias,
Segunda
Edicin.
Gary
J.
Bronson.
Programming
for
Humans:
A
New
Paradigm
for
Domain-Specic
Languages.
University
Of
Cambridge.
Introduccin
a
la
Programacin
Orientada
a
Objetos.
Luis
R.
Izquierdo.
Principles
of
Software
Driven
User
Interface
Design
for
Business
and
Industrial
Applications.
Robert
Japenga.