Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación Orientada A Objetos
Programación Orientada A Objetos
Programa desarrollado
Programa de la asignatura:
Programacin Orientada a Objetos I
ndice
b. Descripcin
El ser humano siempre ha visto el mundo a travs de objetos, por ejemplo, al observar
algo simple como un zapato, nuestra mente lo asimila como un objeto, el cual tiene
caractersticas (atributos), como lo son: color, talla, tipo de suela, estilo, etctera; tambin
tiene acciones que pueden ser aplicadas sobre l (mtodos) como: bolearlo, limpiarlo,
abrocharlo, entre otros ms. Mientras nos imaginamos el objeto zapato, ste vara
dependiendo de sus caractersticas y el escenario, es decir, un zapato puede ser una
zapatilla, bota, tenis o huarache; sin embargo, contiene las mismas acciones ya
mencionadas. Considerando esto, se puede ver el alcance y las ventajas de la
programacin orientada a objetos (POO) para la portabilidad y reutilizacin de cdigo,
evitando programar varias veces lo mismo. Tomando el ejemplo mencionado con
anterioridad, solamente es necesario programar un mtodo bolear-zapato, en lugar de
bolear-zapatilla, bolear-bota, bolear-tenis y bolear-huarache. El desarrollo de programas
orientados a objetos implica la creacin de objetos del mundo real, y la construccin de
programas basados en el modelo orientado a objetos.
El lenguaje de programacin JAVA es un lenguaje basado en C, cuyo enfoque est
dirigido a la POO, por ello ser el utilizado en este curso. Una de las ventajas de utilizar
este lenguaje es que tambin encontramos su compilador de manera libre, como
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
c. Fundamentacin de la asignatura
Los fundamentos que justifican la asignatura son de carcter terico-prctico, dado que la
estructura de las unidades est diseada de una manera donde se combina la teora y la
prctica. En la unidad 1, se cubren los conceptos de la programacin orientada a objetos
y su diferencia con la programacin estructurada, as como las caractersticas del
lenguaje JAVA y la organizacin de un programa en JAVA, de modo tal que el estudiante
comprenda primero los conceptos, despus identifique la sintaxis (secuencia correcta de
los elementos de un lenguaje de programacin) que JAVA ofrece para implementar dichos
conceptos y despus logre aplicarlos en un programa. La unidad 2 muestra de la misma
manera que la anterior una combinacin de la teora y la prctica considerando las
generalidades de los mtodos, los que devuelven valor y los que no devuelven valor, as
como las estructuras de control selectivas y cclicas, donde se incluyen conceptos y
ejemplificacin prctica de los temas que se abordan. En la unidad 3 se abarcan temas
como la herencia, el polimorfismo y las excepciones se desarrolla igual que las anteriores
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
con una combinacin de teora y ejemplificacin prctica de todos los temas. Por ltimo la
unidad 4 contiene temas de arreglos unidimensionales y bidimensionales donde se
incluye los conceptos de estos temas, y se enfoca ms hacia la prctica de estos temas.
d. Propsito
Favorecer al logro del aprendizaje orientado a la generacin de aplicaciones de software.
As mismo su importancia radica en establecer las bases de la programacin para que el
alumno desarrolle habilidades para la implantacin de aplicaciones de software que
satisfagan las necesidades de las empresas.
e. Competencia(s) a desarrollar
Competencia general:
Construir programas modulares bajo el paradigma orientado a objetos para satisfacer
necesidades en el procesamiento de informacin mediante su anlisis y su codificacin en
lenguaje JAVA.
Competencias especficas:
Desarrollar un programa bsico para la solucin de problemas matemticos
simples tomando en cuenta el entorno, caractersticas y especificaciones de los
programas JAVA a travs de dicho lenguaje.
Desarrollar programas modulares para solucionar problemas diversos, mediante la
aplicacin de los diferentes tipos de variables, mtodos, y estructuras de control en
lenguaje JAVA.
Desarrollar programas modulares para solucionar problemas diversos, aplicando la
herencia, el polimorfismo y el manejo de excepciones mediante la sintaxis que
JAVA ofrece para su implementacin.
Construir programas para el manejo de datos del mismo tipo (carcter, cadena,
entero o decimal) a travs del uso de arreglos aplicados en problemas
matemticos simples.
f. Temario
En este apartado se desglosar el contenido de la asignatura a detalle.
Unidad 1. Introduccin a JAVA
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
1.1
1.2
1.3
10
3.1 Herencia
3.1.1 Subclases y superclases
3.1.2 Jerarqua de la herencia
3.1.3 Clases y mtodos abstractos
3.2 Polimorfismo
3.2.1 Clases y mtodos finales
3.2.2 Interfaces
3.2.3 Sobrecarga de mtodos
3.2.4 Sobrecarga de operadores
3.3 Excepciones
3.3.1 Sentencia Try catch
3.3.2 Tipos de errores
3.3.3 Jerarqua de las excepciones
Unidad 4. Arreglos
4.1 Arreglos unidimensionales
4.1.1 Declaracin
4.1.2 Recorrido
4.1.3 Operaciones
4.2 Arreglos multidimensionales
4.2.1 Declaracin
4.2.2 Recorrido
4.2.3 Operaciones
g. Metodologa de trabajo
Para el desarrollo de la presente asignatura se trabajar mediante el Aprendizaje Basado
en Resolucin de Problemas; ya que en esta materia se debe aprender a enfrentar
problemas dados y ofrecer una solucin a estos, de modo que primero se plantea el
problema, despus el alumno identificar los requerimientos de informacin para lograr
solucionar el problema planteado.
Tomando en cuenta que en esta materia se deben generar aplicaciones de software se ha
planteado al menos un ejercicio por cada unidad temtica ya que es importante que, ante
un problema dado se analice la informacin con la que se cuenta, y en base a esto se
logre dar una solucin mediante software para resolver la problemtica planteada en el
ejercicio, de manera que con las habilidades que se forjarn en cada una de las unidades
se logre el aprendizaje orientado a la generacin de aplicaciones de software.
11
h. Evaluacin
En el marco del Programa ESAD, la evaluacin se conceptualiza como un proceso
participativo, sistemtico y ordenado que inicia desde el momento en que el estudiante
ingresa al aula virtual. Por lo que se le considera desde un enfoque integral y continuo.
Por lo anterior, para aprobar la asignatura, se espera la participacin responsable y activa
del estudiante as como una comunicacin estrecha con su facilitador para que pueda
evaluar objetivamente su desempeo. Para lo cual es necesaria la recoleccin de
evidencias que permitan apreciar el proceso de aprendizaje de contenidos: declarativos,
procedimentales y actitudinales.
En este contexto la evaluacin es parte del proceso de aprendizaje, en el que la
retroalimentacin permanente es fundamental para promover el aprendizaje significativo y
reconocer el esfuerzo. Es requisito indispensable la entrega oportuna de cada una de las
tareas, actividades y evidencias as como la participacin en foros y dems actividades
programadas en cada una de las unidades, y conforme a las indicaciones dadas. La
calificacin se asignar de acuerdo con la rbrica establecida para cada actividad, por lo
que es importante que el estudiante la revise antes realizarla.
A continuacin presentamos el esquema general de evaluacin.
ESQUEMA DE EVALUACIN
Interacciones individuales y
Evaluacin
colaborativas
continua
Tareas
Evidencias
E-portafolio. 50%
Autorreflexiones
Examen
CALIFICACIN
10%
30%
40%
10%
10%
100%
12
FINAL
Cabe sealar que para aprobar la asignatura, se debe de obtener la calificacin mnima
indicada por ESAD.
Los trabajos que se tomarn en cuenta como evidencia del aprendizaje son:
Unidad 1: Programa en JAVA. Dados dos nmeros por el usuario, reste y multiplique
mostrando el resultado en pantalla.
Unidad 2: Programa en JAVA. 6 Realizar un programa que solicite un nmero, si este es
par, que calcule su factorial, si es impar, que muestre ese mismo nmero de elementos de
la serie de Fibonacci, utilizando mtodos que devuelven valor y que no devuelven.
Unidad 3: Programa en JAVA. Dada una serie de clases abstractas e interfaces
desarrollar un programa que los implemente utilizando excepciones.
Unidad 4: Programar una aplicacin que muestre en un men todos los programas vistos
en el curso.
Por otra parte la forma de evaluacin ser segn lo indicado a continuacin:
o Excelente: 100
o Bien: 80
o Regular: 60
o Insuficiente: 50
i. Fuentes de consulta
Bibliografa bsica
13
Bibliografa complementaria
14
Propsitos de la unidad
En esta unidad el estudiante lograr:
Distinguir entre programacin orientada a objetos y programacin estructurada.
Reconocer las caractersticas de la programacin orientada a objetos.
Determinar las caractersticas y especificaciones de la programacin en JAVA.
Identificar la organizacin de un programa en JAVA.
Desarrollar programas modulares.
Competencia especfica
Desarrollar un programa bsico para la solucin de problemas matemticos simples
tomando en cuenta el entorno, caractersticas y especificaciones de los programas JAVA
a travs de dicho lenguaje.
Actividad 1. Presentacin
Antes de comenzar el estudio de la asignatura, te invitamos a participar en un foro de
discusin general, creado para que comentes cualquier asunto relacionado con la
asignatura; en l, conocers a tus compaeros de grupo y entre todos podrn apoyarse
para resolver dudas, inquietudes, externar comentarios, etctera.
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
15
1.1.1. Abstraccin
De acuerdo a Joyanes, la abstraccin es:
La propiedad de los objetos que consiste en tener en cuenta slo los aspectos ms
importantes desde un punto de vista determinado y no tener en cuenta los restantes
aspectos que no son significativos. Durante el proceso de abstraccin es cuando se decide
qu caractersticas y comportamiento debe tener el modelo. Un medio de reducir la
complejidad es la abstraccin. Las caractersticas y los procesos se reducen a las
propiedades esenciales, dejando de lado los dems detalles no sustanciales. De este modo,
las caractersticas complejas se hacen ms manejables (Joyanes, 2001: 5).
La abstraccin como tal nos sirva para poder pasar del plano material al plano mental.
Ahora bien, cmo se relaciona la abstraccin con la POO? Imaginemos que tenemos un
grupo de tornillos y de dicho grupo un tornillo se podra manejar con un desarmador
especfico, pero tambin con cualquier otro desarmador aunque no sea nuestro, lo mismo
pasa en un sistema software, los mdulos son independientes, pero a la vez funcionan
16
como un gran modulo del software, es decir podemos partir un gran software para poder
hacerlo en mdulos, esto har ms fcil la identificacin de sus caractersticas bsicas.
1.1.2. Polimorfismo
La propiedad de polimorfismo es aquella en que una operacin tiene el mismo nombre en
diferentes clases, pero se ejecuta de diferentes formas en cada clase. (Joyanes, 2001:
6). Dicho de otro modo es la capacidad que tiene una clase para adaptarse a diferentes
usos sin necesidad de modificarla. As, por ejemplo, la operacin copiar puede darse en
diferentes clases: copiar un libro, copiar un archivo, copiar una actitud, copiar un
comportamiento, copiar en un examen, etc. Siempre se ejecuta una operacin distinta
pero con el mismo nombre copiar. Por tanto:
El polimorfismo es la propiedad de una operacin de ser interpretada
exclusivamente por el objeto al que corresponde.
1.1.3. Encapsulacin
Si bien externamente los objetos pueden parecer iguales, internamente pueden ser muy
distintos. Por ejemplo, si sabes manejar un reproductor de DVD, puedes manejar
cualquier otro reproductor como CD y BLUE RAY, esto es encapsular, los dos
reproductores pueden ser parecidos por fuera, pero por dentro funcionan de diferente
forma.
Esta propiedad permite intercambiar objetos en una operacin; retomando el ejemplo de
los reproductores puedes cambiar la carcasa por una ms moderna o llamativa sin que el
funcionamiento interno se vea afectado.
1.1.4. Herencia
La herencia en el paradigma de la POO es un mecanismo que se utiliza para efectuar la
reutilizacin del software, de modo tal que los programadores pueden crear clases nuevas
a partir de clases ya existentes, tomndolas como base y creando una jerarqua de
clases, de esta manera no se tiene que rehacer todo el cdigo de una clase.
17
18
19
20
usado como lenguaje de propsito general y esta idea le dio la principal caracterstica que
lo hizo popular y lo sigue manteniendo en el gusto generalizado; su capacidad
multiplataforma. Adems con APIs que dan soporte a acceso a base de datos, objetos
remotos y modelos de componentes de objetos, internacionalizacin, impresin y
reporteo, encriptacin, procesamiento de seales digitales y muchas otras tecnologas y
capacidades lo posicionan tomando gran parte de la tajada sobre los lenguajes de
programacin ms utilizados.
21
22
23
24
utilizando criptografa se oculta esta firma para que sea inaccesible e inmodificable por
cualquier persona. Si hay confianza en una persona especfica de alguna organizacin,
entonces el cdigo puede ser firmado digitalmente por dicha persona, dndonos la
seguridad que el resultado que recibimos sea de quien debe ser y no haya introduccin de
cdigo por terceras personas ajenas a l.
Por supuesto la seguridad no puede entenderse ni manejar como una cosa que es
totalmente blanca o totalmente negra, deben descubrirse los matices que pueda presentar
y verificar todas las posibles vertientes que puedan tomar los matices, as nos
aseguraremos que todo est controlado. Ningn programa puede dar al 100% la garanta
de la ausencia de errores, tampoco un ambiente de compilacin o interpretacin puede
dar esta garanta. Java no se centra en la correccin de seguridad, se basa en la
anticipacin de los posibles errores que se puedan presentar.
Alto Rendimiento. Java es un lenguaje interpretado, por eso no ser igual de veloz en la
ejecucin como un lenguaje compilado como C. En versiones tempranas de Java est
an decenas de veces ms abajo que la velocidad de ejecucin que proporciona C. Sin
embargo con el pasar del tiempo este aspecto ha ido mejorando sobre la base del
compilador JIT (just in time) que permite programas en Java de plataforma independiente
se ejecuten casi tan rpido como los lenguajes convencionales compilados.
Multihilo. Es fcil imaginar cmo funciona una aplicacin que hace mltiples cosas a la
vez, por ejemplo en un navegador web, donde, se hace la descarga al mismo tiempo del
texto, imgenes, videos y dems componentes de la pgina que visitamos, pero esta
descarga se hace por separado, donde una funcin especfica se hace cargo de
descargar las imgenes, otra el texto y as con cada uno de los compontes. Obviamente
lo hacen al mismo tiempo, por esto se dice que es multihilo. Java es un lenguaje multihilo
ya que soporta la ejecucin de mltiples tareas al mismo tiempo y cada uno de esos hilos
puede soportar la ejecucin de una tarea especfica diferente. Un beneficio importante de
esta caracterstica multihilo es el aporte que da a las aplicaciones basadas precisamente
en esto, ya que como se mencion, incrementa el rendimiento de la aplicacin, sobre todo
en aplicaciones basadas en interfaces grficas de usuario.
Aunado a lo anterior y haciendo referencia a la facilidad de Java, programar multihilo en
Java es muy fcil, ya que si se ha tratado trabajar con hilos en C o C++ se notar la
enorme dificultad que esto representa. La clase Thread da el soporte, la facilidad y los
mtodos para iniciar y terminar la ejecucin y hacer uso de los hilos, que a su vez se
encuentra contenida en el nombre de espacio java.lang. La sintaxis del lenguaje Java de
igual manera tiene soporte directo sobre la palabra reservada synchronized la cual hace
extremadamente fcil para marcar secciones de cdigo o mtodos completos que
necesitan ser ejecutados de uno en uno o dicho de mejor manera sincronizados.
25
26
27
Eclipse
Borland JBuilder
NetBeans
Dreamweaver
WebLogic Workshop
Oracle JDeveloper
IntelliJ Idea
JCreator
Nota: Todas las marcas o nombres de productos son propiedad de sus respectivos
dueos y slo se usan a manera de ilustrar el ejemplo expuesto.
Componentes del IDE
Los elementos bsicos de un IDE, pero no limitado a ellos, son:
28
Un editor de texto, que es el programa o parte del IDE que nos permitir crear,
abrir o modificar el archivo contenedor del cdigo fuente del lenguaje con el que
estemos trabajando. Puede proporcionarnos muchas ventajas sobre un editor de
texto separado del IDE, ya que por lo general cuentan con un resaltado de sintaxis
sobre las partes que conforman el cdigo fuente de la aplicacin que se est
construyendo.
Un compilador, que es el programa o parte del IDE que nos permitir traducir el
cdigo fuente escrito dentro del editor a lenguaje mquina (bytecode en el caso de
Java). De tal manera que el programador pueda disear y programar una
aplicacin utilizando palabras, frases o conceptos muy cercanos al lenguaje que
utiliza normalmente, y el compilador se encargar de traducir estas sentencias en
instrucciones comprensibles por el procesador de la computadora.
Un intrprete, que es el programa o parte del IDE que nos permitir hacer la
interpretacin del cdigo compilado (como en el caso de Java), en donde se
toma como entrada el bytecode y el resultado es la ejecucin de las instrucciones
de lenguaje mquina o cdigo objeto contenidas en esta estructura de clases. El
compilador e intrprete pueden trabajar en conjunto como se explica en este
apartado o ser procesos independientes para la ejecucin de un programa.
Un depurador, que es el programa o parte del IDE que nos permitir probar y
localizar errores dentro del cdigo de la aplicacin (mayormente de tipo lgico o de
omisin) haciendo una traza de la ejecucin completa del cdigo y sealando
dnde ser un posible error del cdigo o vulnerabilidad no considerada.
Un constructor de interfaces grficas, que es la parte del IDE que nos facilita una
serie de componentes nativos del lenguaje con el que trabajamos (swing en Java)
para poder ofrecer al usuario un ambiente amigable de tipo visual, en pocas
palabras nos permite crear interfaces grficas de usuario y complementarlas con el
cdigo fuente de nuestra aplicacin.
Opcionalmente la posibilidad de trabajar conectado a un servidor de control de
versiones, que nos permitir llevar un control preciso de cada versin de cada
archivo que comprenda nuestra aplicacin, particularmente til cuando se trabaja
con aplicaciones de tipo empresarial que conllevan, inclusive, miles de archivos de
cdigo fuente y al estar trabajando en grupo se vuelve indispensable esta
funcionalidad que ofrece el IDE.
29
Long
Tamao en bits
8-bit complemento
a2
16-bit
complemento a 2
32-bit
complemento a 2
64-bit
complemento a 2
Rango de valores
Descripcin
-128 a 127
Entero de un byte
-32,768 a 32,767
Entero corto
-2,147,483,648 a
Entero
2,147,483,647
9,223,372,036,854,775,808L
Entero largo
a
9,223,372,036,854,775,807L
Nmeros reales
Float
Doubl
+/- 3.4E+38F
+/- 1.8E+308
16-bit Carcter
Conjunto de caracteres
Unicode ISO
Verdadero o falo
Conjunto de caracteres
Otros tipos
Char
Booleano
String
true o false
Variable
Un solo carcter
Un valor booleano
Cadena de
caracteres.
30
Ejemplo de utilizacin
public class DataTypes
{
public static void main(String[] args)
{
int x;
31
Datos de
una casa
Tipo
Datos de
un auto
Tipo
Datos de
una
factura
Tipo
Datos de
un
zapato
Tipo
Datos de
una
computa
dora
Tipo
#_pisos
#_cuartos
#_ventanas
#_baos
Fondo
#_puertas
#_cilindros
#_hp
colorCarroceria
#_placas
#_folio
total
nombreCliente
nombreEmpresa
Iva
punto
material
Tacn
color
#_estilo
Marca
procesador
Memoria
pantalla
discoDuro
32
Asociatividad
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
33
Descripcin
Igual (comparacin de igualdad)
Mayor que
Menor que
Conjuncin lgica (and)
Distinto
Mayor o igual que
Menor o igual que
Disyuncin lgica (or)
34
int contador = 0;
Iniciando la variable contador con un valor de 0.
Adems de las facilidades ya descritas que nos proporciona el lenguaje Java, proporciona
una forma abreviada de representar este tipo de operadores, con la finalidad de agilizar la
escritura para los programadores. Se describen en la siguiente tabla:
Operador
+=
-=
*=
/=
%=
&=
Uso
a += b
a -= b
a *= b
a /= b
a %= b
a &= b
Equivalente a
a=a+b
a=ab
a=a*b
a=a/b
a=a%b
a=a&b
Operadores de bit
Dan la posibilidad de manipular los bits de los datos, especialmente el desplazamiento.
Operador
>>
Uso
a >> b
<<
a << b
>>>
a >>> b
Operacin
Desplaza los bits de a a la
derecha b veces
Desplaza los bits de a a la
izquierda b veces
Desplaza los bits de a a la
derecha b veces
(omitiendo el signo)
La funcin especfica de este tipo de operadores es desplazar los bits del operando
ubicado a la izquierda de la expresin el nmero de veces que indique el operador de la
derecha. La direccin del operador indica hacia donde corrern los bits. La siguiente
sentencia nos da a entender bien el concepto que se trata de implementar, al desplazar
los bits del entero 25 a la derecha de su posicin:
25 >> 2
El nmero entero 25 est representado por el nmero 11001 en notacin binaria, al
aplicarle el operador de desplazamiento el nmero 11001 ahora se convertir en 110 o el
nmero entero 6. El lector debe notar que los bits que se desplazan a la derecha se
pierden al efectuar esta operacin.
Precedencia de operadores
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
35
Java asigna (como se hace en las operaciones matemticas normales) una importancia
muy alta a la precedencia de los operadores. En la siguiente tabla se lista esta
precedencia y entre ms alta sea su posicin, ms importancia tendr:
Operadores
Operadores posfijos
Operadores unario
Creacin o conversin
Multiplicacin
Suma
Desplazamiento
Comparacin
Igualdad
AND a nivel de bit
OR a nivel de bit
XOR a nivel de bit
AND lgico
OR lgico
Condicional
Asignacin
Representacin
[], (), a++, a-++a, --a, +a, -a, ~, !
new(tipo) a
*, /, %
+, <<
==
==, !=
&
^
|
&&
||
?:
=, +=, -=, *=, /=, &=, ^=, |=, <<===
Actividad 5. Operadores
Durante esta actividad realizars un ejercicio donde recuperes lo que has aprendido
acerca de los operadores soportados por JAVA. Realiza lo siguiente:
1. En un archivo de texto, copia las operaciones dadas en la Tabla 2.
2. Completa los datos que se solicitan en las columnas vacas. Para ello, identifica
los operadores encontrados en cada operacin, su tipo de operador y el resultado
de dicha operacin.
3. Guarda la actividad con el nombre POO_U1_A4_XXYZ, sustituye las XX por las
dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z
por la inicial del apellido materno.
4. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.
Tabla 2
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
36
#
1
2
3
4
5
Operacin
Operadores
encontrados
Tipo de
operadores
Resultado
(3 + (2 *3) -12) / 3
P: Verdadero
Q: Falso
PyQ
10> 5 >6
(((200 +305)/56)*30)<12
P: 3+9<10
Q:30 -64 > - 40
PoQ
37
Pero si en el resultado es importante tomar en cuenta tambin los decimales para tener
un resultado ms preciso debemos convertir el entero a flotante, eso se realiza de la
siguiente manera.
float c= (float) di/dv;
Colocando el tipo de dato al que se convertir entre parntesis, ahora nuestro resultado
mostrar los decimales que necesitamos.
38
Durante esta unidad se sugiere que se realicen todos los ejemplos en el entorno de
desarrollo para que lo tengas instalado y funcional desde esta primera unidad, ya que se
estar utilizando a lo largo de toda la materia, adems se sugiere que escribas, compiles
y ejecutes los ejemplos de programas que se desarrollaron en esta unidad, para que se
comprenda mejor lo visto.
39
40
Adems en Java existe un tercer tipo de comentario que se le conoce como comentario
de documentacin y este tipo la funcin que tienes es que le indica al programa
generador de documentacin que lo incluya a l e ignore de los dems, por ejemplo:
/** Comentario de documentacin del programa */
El lector debe notar que la forma de comenzar el comentario es ligeramente diferente al
comentario multilnea, ya que ahora se incluye un asterisco ms, para quedar como /**.
La forma de terminarlo es la misma.
Como sugerencia sobre los comentarios se debe hacer notar que, la necesidad de escribir
comentarios es para la aclaracin de ciertas partes del cdigo que no estn muy claras,
por tanto si se exagera en el nmero de comentarios se entender que el cdigo no es
claro y se deber considerar la necesidad de reescribirlo para hacerlo comprensible.
Identificadores
Se entender al identificador como aquella palabra o nombre que el programador le
asigna a sus propias variables, mtodos e inclusive nombres de clases y tiene un mbito
de aplicacin e injerencia slo dentro del cdigo fuente, escrito por el programador
humano porque una vez que pasa por el proceso de compilacin, el compilador genera
sus propios identificadores ms acorde y ms ptimos para su propia interpretacin
dentro del bytecode. Como regla general del lenguaje Java se debe definir un identificador
antes de ser utilizado. Siguiendo las reglas que Java establece para la creacin de
identificadores se deber apegar a lo siguiente:
Un identificador comienza por una letra o utilizando el carcter de guin bajo (_) e
inclusive utilizando el smbolo de pesos ($) aunque esto ltimo no se recomienda
ya que, como se explic, el compilador lo utiliza de forma muy frecuente para
formar sus propios identificadores.
Se pueden utilizar a continuacin nmeros (0 al 9). Pero no dejar espacios en
blanco, signo de interrogacin (?) o smbolo de porcentaje (%).
Un identificador puede contener la longitud que el programador asigne
arbitrariamente o considere necesario para dejar perfectamente claro el propsito
del identificador y qu tipo de dato alojar.
En Java, al ser sensible al contexto, se distinguen los caracteres en mayscula y
minscula. As promedio, Promedio y PROMEDIO sern locaciones de memoria
completamente diferentes.
No se puede repetir el mismo identificador para dos variables o cualquier otra parte
del cdigo (nombres de mtodos o clases por ejemplo) ya que como se ha
mencionado, los identificadores hacen precisamente eso, identifican de manera
nica a cada parte del cdigo.
Aunque la escritura de identificadores no est normalizada en Java, se puede
apegar a las siguientes recomendaciones:
41
42
if ( condicin ){
Sentencia1;
}
else
{
Sentencia2;
}
Espaciado (Spacing): Colocar una sentencia por lnea, y usar de dos a cuatros
lneas vacas entre sentencias para hacer el cdigo legible. El nmero de espacios
puede depender mucho del estndar que se use.
Comentarios (Comments): Utilizar comentarios para explicar los segmentos de
cdigo que no son obvios. Utilizar // para comentar una sola lnea; para comentar
extensiones ms grandes de informacin encerrar entre los smbolos delimitadores
/* */. Utilizar los smbolos /** */ para documentar los comentarios para proveer
una entrada al javadoc y generar un HTML con el cdigo.
//Un comentario de una sola lnea
/*Comentarios que pueden abarcas ms de
una lnea*/
/**Un cometario para propsitos de documentacin
*@see otra clase para ms informacin
*/
Nota: la etiqueta @see es especial para javadoc para darle un efecto de
tambin ver a un link que referencia una clase o un mtodo.
Do
Doubl
Else
Extends
False
Final
Finally
Float
For
implements
import
instanceof
Int
interface
long
native
New
Null
protected
Public
Rest
return
Short
Static
strictftp
Super
switch
Throw
Throws
Transient
True
Try
Void
Volatile
While
43
continue
Default
goto*
If
package
private
synchronized
This
Aunque la definicin del lenguaje Java toma en cuenta todas estas palabras, en su
implementacin no se toman en cuenta todas, las que estn marcadas con un asterisco
an no tienen utilizacin.
Tambin existen palabras reservadas de empleo especfico para nombres de mtodos y
stas son:
Clone
Notify
Equals
notifyAll
finalize
toString
getClass
Wait
hashCode
Uso
Paquete
import si se requiere
44
declaracin de la clase
constructor
declaracin del mtodo
cuerpo del mtodo
cierre del mtodo
cierre de la clase
empleado
45
objetoE
=
New
empleado()
=new empleado();
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
primera unidad del curso, es necesario que resuelvas la autoevaluacin de la unidad.
Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y
elegir la opcin adecuada para cada uno.
Ingresa al aula para realizar la actividad.
46
Autorreflexiones
Adems de enviar tu trabajo de la Evidencia de aprendizaje, es importante que ingreses
al foro Preguntas de Autorreflexin y consultes las preguntas que tu Facilitador(a)
presente, a partir de ellas, debes elaborar tu Autorreflexin en un archivo de texto llamado
POO_U1_ATR_XXYZ. Posteriormente enva tu archivo mediante la herramienta
Autorreflexiones.
Cierre de la unidad
Has concluido la primera unidad del curso. A lo largo de sta te has introducido a la
programacin orientada a objetos y sus principales caractersticas como abstraccin,
polimorfismo, encapsulacin y herencia; tambin has estudiado la diferencia entre la
orientacin a objetos y la programacin estructurada. Posteriormente te involucraste en
las caractersticas del lenguaje JAVA, sus tipos de datos soportados, tipos de operadores
47
y conversin de tipos de datos. Estos temas han servido para que vayas conociendo el
ambiente de desarrollo de programas computacionales.
Al final de la unidad tambin vimos la estructura de un programa, palabras reservadas,
estructura de una clase, declaracin de objetos y constructores, cuyo propsito fue
proporcionarte un panorama general de programar.
Es aconsejable que revises nuevamente la unidad en caso de que los temas que se
acaban de mencionar no te sean familiares o no los recuerdes, de no ser este tu caso, ya
ests preparado(a) para seguir con la unidad dos, en donde continuars con la revisin de
los mtodos y las estructuras de control. Todo ello con el fin de obtener el conocimiento
necesario para comenzar a realizar pequeos programas computacionales al final de la
cuarta y ltima unidad del curso de Programacin Orientada a Objetos I.
Para saber ms
Es importante que instales un IDE en tu computadora personal para que pases todos los
ejemplos de cdigo y veas cmo funcionan, de esta manera podrs analizar el
funcionamiento de los cdigos presentados.
*Nota: se recomienda que instales NetBeans 7.0, como IDE, por su facilidad de uso, este
puede ser descargado gratuitamente de la siguiente liga:
http://netbeans.org/downloads/
Fuentes de consulta
Bibliografa bsica
48
Bibliografa complementaria
49
Propsito
En esta unidad logrars:
o Describir las generalidades de los mtodos.
o Distinguir los mtodos que devuelven valores contra los que no devuelven.
o Manejar las estructuras de control selectivas y cclicas.
Competencia especfica
Desarrollar programas modulares para solucionar problemas diversos, mediante la
aplicacin de los diferentes tipos de variables, mtodos, y estructuras de control en
lenguaje JAVA.
50
51
52
Integer z=new Integer(100); //declaracin de una variable de tipo objeto Integer, vlido en
Java.
53
Al compilar esta pequea clase de ejemplo, se notar que el compilador de Java lanza un
mensaje de error que indicar que la variable a la que se hace referencia (variable con
identificador a) no ha sido encontrada, en otras palabras, su declaracin no est dentro
del mbito en donde se pretende usar. El mensaje de error del compilador de Java tendr
un aspecto como se muestra en las siguientes imgenes.
54
Figura 1
Figura 2
Se puede notar claramente que en la primer imagen (Figura 1) el IDE nos est indicando
algn tipo de error en la lnea 21, sealando la variable con identificador a como la posible
causa. En la segunda imagen (Figura 2) nos da los detalles completos de la causa del
error, el programador deber entender que no se puede encontrar el smbolo (variable)
especificado.
Hay ms normas de mbito respecto a las variables miembro de una clase, donde
intervienen los modificadores de acceso public o private. Cuando una variable es
declarada con el modificador public se accede directamente a ellas a travs de
nombre_clase.nombre_variable y en el caso de que una variable sea declarada con el
modificador private slo se podr acceder a ella mediante los mtodos de la clase que lo
permitan.
55
La siguiente declaracin define la constante llamada PI cuyo valor est definido por el
nmero (3.1415927).
static final float PI = 3.1415927; //Constante que representa el nmero PI
Como ya se dijo, si se intenta modificar el valor contenido en la variable identificada como
PI, se dar un error de compilacin.
2.2.1. Caractersticas
El hecho de que un mtodo regrese valores o no es opcional. Cuando un mtodo no
retorna valores, se deber modificar la definicin de sus parmetros y quedar como
sigue:
void nombre_mtodo([parmetros]){
sentencia1;
sentencia2;
sentenciaN;
}
En donde se deber utilizar la palabra reservada void que le indica al compilador y al
mtodo que su valor de retorno ser vacio. Dentro del cuerpo de sus sentencias se
omite la sentencia return por no regresar valor alguno a donde fue llamado. Los
parmetros de igual manera son opcionales, aunque los parntesis van por obligacin.
56
57
}
Este mtodo recibe dos parmetros de tipo entero, cuyos identificadores son base y
potencia.
58
}
Como informacin al lector se debe aclarar que se omiten muchas partes de los mtodos,
slo son ejemplos ilustrativos de cada uno de los puntos.
Tambin como punto importantsimo, recordando los tipos de variables, se dir que en
Java los parmetros de tipo primitivo (int, long, double, ) siempre se pasan por valor. Las
variables de tipo objeto y arrays se pasan por referencia (referencia a su direccin de
memoria de alojamiento).
59
60
4. Guarda la actividad con el nombre POO1_U2_A2_XXYZ. Sustituye las XX por las dos primeras
letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido
materno.
5. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.
MTODO INCORRECTO
public void suma(int a int b){
int c=a+b;
return b;
}
public void area(int a, int b)
int c=a*b
return c;
}
public void divide(float a, float b){
int c=a/b;
return b;
}
public void resta(int a, int a){
imt c=a-b;
System.out.println(d);
}
public int areaCirculo(float r){
int b= 3.1416 * (r*r);
return;
}
61
2. Guarda la actividad con el nombre POO1_U2_A3_XXYZ. Sustituye las XX por las dos
primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del
apellido materno.
3. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.
2.4.1. If - else
La estructura de seleccin simple o if es aquella secuencia de un programa que se ve
afectada por una condicin, si la condicin es cumplida la secuencia del programa entrar
en el bloque de instrucciones de dicha estructura, de lo contrario la secuencia del
programa se saltar ese bloque de cdigo y entrar al bloque de instrucciones del else
dado que la condicin se cumpli. Esta estructura de control se conforma como sigue:
// Instrucciones previas a la condicin
if( condicin) {
Instrucciones a ejecutarse solo si la condicin se cumpli.
}
else{
Instrucciones a ejecutarse si la condicin NO se cumpli.
}
// Instrucciones a ejecutarse despus de la condicin
Las llaves se utilizan para agrupar las instrucciones que se han de ejecutar, si solo
quieres que se ejecute una instruccin puedes omitirlas.
Es importante mencionar que las instrucciones previas y posteriores al bloque if-else se
ejecutan de manera normal, se cumpla o no la condicin, por lo que solo se altera la
secuencia del programa en ese bloque.
A continuacin se muestra un ejemplo donde dada una calificacin, se decide si la
calificacin es aprobatoria o no y esto lo indica en un mensaje.
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
62
package ejemplos;
/**
* @author ESAD
*/
public class estructuraIF {
2.4.2. If anidado
Esta estructura es un agrandamiento de la estructura anterior, ya que se pueden evaluar
diferentes condiciones ligadas. Por ejemplo, en el tema anterior solo queramos que se
mostrara Aprobado o Reprobado segn su calificacin, pero ahora se quiere dar mayor
reconocimiento a los puntos obtenidos se realizara de la siguiente manera:
package ejemplos;
/**
* @author ESAD
*/
public class estructuraIF {
public static void main(String[] args) {
int calificacion=90;
if(calificacion> 90 && calificacion <= 100){
System.out.print("Excelente");
}
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
63
64
Una sentencia case es una opcin de los diferentes valores que puede tomar la expresin
que se evala, por cada valor permitido que la expresin pueda tomar representara una
sentencia case.
Las caractersticas ms relevantes de switch son las siguientes (Gosling, J., Holmes, D. &
Arnold, K., 2001):
1. Cada sentencia case se corresponde con un nico valor. No se pueden establecer
rangos o condiciones sino que se deben comparar con valores concretos.
2. Los valores no comprendidos en ninguna sentencia case se pueden gestionar en
default, que es opcional.
3. En la ausencia de break, cuando se ejecuta una sentencia case se ejecutan
tambin todas las case que van a continuacin, hasta que se llega a un break o
hasta que termina el switch.
Se muestra un ejemplo a continuacin:
package ejemplos;
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class ejemploSwitch {
public static void main(String[] args) {
int mes= Integer.parseInt(JOptionPane.showInputDialog("Cul es el nmero del
mes"));
switch(mes){
case 1: System.out.print("Enero");
break;
case 2: System.out.print("Febrero");
break;
case 3: System.out.print("Marzo");
break;
case 4: System.out.print("Abril");
break;
case 5: System.out.print("Mayo");
break;
case 6: System.out.print("Junio");
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
65
break;
case 7: System.out.print("Julio");
break;
case 8: System.out.print("Agosto");
break;
case 9: System.out.print("Septiembre");
break;
case 10: System.out.print("Octubre");
break;
case 11: System.out.print("Noviembre");
break;
case 12: System.out.print("Diciembre");
break;
default:System.out.print("Mes no vlido");
}
}
}
Este ejemplo muestra que al inicio del programa se crea una variable llamada mes, la cual
almacena el nmero del mes indicado por el usuario, y muestra en la pantalla el nombre
del mes correspondiente, para identificar el nombre de mes utilizamos la sentencia switch
que para este ejemplo tiene 12 casos que son el nmero de meses que existen, al
encontrar el valor correspondiente mostrar el nombre del mes, y en caso de que el
usuario ingrese un nmero no valido como 20, el programa mostrar un mensaje diciendo
Mes no vlido.
Entonces si requieres usar un programa donde las comparaciones sean muy especficas
puedes usar un switch, y en el caso de evaluar rangos, utiliza un if.
66
4. En caso de ser necesario, retroalimenta a tus compaeros para que modifiquen su programa.
2.5.1. While
El ciclo while tiene como caracterstica que primero evala la condicin y solo si se
cumple realiza las instrucciones, as es que si la condicin no es cumplida desde un inicio
el control del programa no entrar en el bloque de instrucciones que se encuentran dentro
del ciclo. Su declaracin es como se muestra a continuacin:
while (condicion){
Bloque de Instrucciones a repetir
}
La condicin que se d, deber ser evaluada verdadera para que el control del programa
ingrese al bloque de instrucciones y deber llegar en algn punto a que esa misma
condicin se evale falsa y salga del bloque repetitivo. Si planteas mal la condicin y sta
nunca se evala como falsa, el programa se repetir infinitamente, lo que provocar un
problema en la ejecucin.
Veamos el siguiente ejemplo.
package ejemplos;
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
67
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class ejemploWhile {
public static void main(String[] args) {
int n= Integer.parseInt(JOptionPane.showInputDialog("Ingresa el 9"));
while(n != 9){
n= Integer.parseInt(JOptionPane.showInputDialog("Ingresa el 9"));
}
}
}
En este ejemplo se pide al usuario ingresar el nmero 9, y el ciclo seguir mientras no
ingresen el 9, en el momento en que la condicin se deja de cumplir (precisamente al
ingresar el 9) el ciclo terminar y el programa tambin.
2.5.2. Do - while
Este ciclo permite la ejecucin del bloque repetitivo al menos una vez, se cumpla o no la
condicin, pues ejecuta primero el bloque do y al finalizarlo evala la condicin, si sta se
cumple regresa a ejecutar nuevamente el bloque do, de lo contrario termina la ejecucin.
do{
Bloque de instrucciones a repetir
}
While(condicion);
Veamos el siguiente ejemplo:
package ejemplos;
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class ejemploDoWhile {
public static void main(String[] args) {
int n;
do{
n= Integer.parseInt(JOptionPane.showInputDialog("Ingresa el 9"));
}
while(n != 9);
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
68
}
}
Como podemos observar el ciclo while es muy parecido al do-while, pero recordemos que
el while si desde un principio no se cumple la condicin no entra al ciclo, y el do-while
primero entra y despus evala.
Te pido compares los dos ejemplos, y veas que en el ciclo do-while la peticin del nmero
la hacemos dentro del bloque que conforma el do, pues tenemos la certeza de que
entrar a ejecutar esta porcin del programa, al menos una vez. Mientras que en el ciclo
while la peticin se hace fuera del bloque de instrucciones que lo conforman, pues la
evaluacin se realiza antes de entrar al ciclo.
2.5.3. For
Este ciclo es especialmente til cuando de antemano conoces el nmero de veces que
quieres que se ejecute el mismo bloque de instrucciones, su declaracin es como sigue:
for(inicio ; condicin; incremento){
Bloque de instrucciones repetitivas
}
Inicio: se debe colocar un valor numrico donde comenzar el conteo de ejecuciones.
Condicin: se coloca la condicin a evaluar en cada iteracin del ciclo para que se siga
ejecutando el nmero de veces que se cumpla esta condicin, pues el momento que la
condicin se evale como falsa el ciclo dejar de repetirse.
Incremento: esta instruccin se evala como si fuese la ltima del bloque de instrucciones
e indica el incremento o decremento de la variable numrica de inicio para reevaluar la
condicin en cada iteracin.
Veamos el ejemplo:
package ejemplos;
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class ejemploFor {
public static void main(String[] args) {
int n= Integer.parseInt(JOptionPane.showInputDialog("Cuntos nmeros quieres ver"));
for(int i=1; i<=n; i=i+1){
System.out.print(i);
}
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
69
}
}
Este ejemplo pide al usuario un nmero, y muestra ese mismo nmero de elementos,
veamos, el inicio empieza en 1, la condicin para seguir es que la variable i sea menor o
igual que el nmero dado por el usuario, y el incrementos ser de uno en uno, de esta
manera pues la salida del programa al ingresar un 5 sera como se muestra a
continuacin.
Otro punto importante respecto al ciclo for es que se puede anidar, esto se refiere a que
puedo utilizar un ciclo dentro de otro, a manera de explicacin observa el siguiente cdigo
y su salida.
package ejemplos;
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class forAnidado {
public static void main(String[] args) {
int n= Integer.parseInt(JOptionPane.showInputDialog("Cuantos temas son"));
int m= Integer.parseInt(JOptionPane.showInputDialog("Cuantos subtemas contiene
cada tema"));
for(int i=1; i<=n; i=i+1){
for(int j=1; j<=m; j=j+1){
System.out.print(i+","+j);
System.out.print("\n");
}
}
}
}
Como se puede ver tenemos un ciclo dentro de otro, su manera de funcionar es que entra
al primero, despus al segundo y hasta que el segundo termine sus repeticiones, el
primero volver a incrementar su valor y volver a entrar al segundo tomando sus valores
iniciales. Veamos la salida, en este ejemplo se indic que los temas eran 3 y subtemas 2,
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
70
entonces se coloca el primer tema y sus respectivos subtemas 1,1 y 1,2, ya que termina
ese tema se sigue con el 2,1 y 2,2.
package ejemplos;
import javax.swing.JOptionPane;
/**
* @author ESAD
*/
public class ejemploFor2 {
public static void main(String[] args) {
int n= Integer.parseInt(JOptionPane.showInputDialog("Cuntos nmeros quieres ver"));
for(int i=n; i>0; i=i-1){
System.out.print(i);
System.out.print("\n");
}
}
}
71
Al realizar los cambios comentados podemos observar que la salida nos muestra los 5
nmeros pero de manera descendente.
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
segunda unidad del curso, es necesario que resuelvas la autoevaluacin de la unidad.
72
Cierre de la unidad
Has concluido la unidad 2 del curso. A lo largo de sta has visto lo que es una variable,
su mbito y declaracin, as como las generalidades de los mtodos, sus caractersticas,
llamadas y tipos de parmetros que se manejan. Posteriormente te involucraste
conociendo las estructuras de control selectivas, como lo son el If-else, If anidado y
switch-case.
Al final de la unidad tambin se vieron las estructuras de control cclicas while, do-while y
for, cuyo propsito ha sido que obtengas conocimientos sobre estructuras de control y
logres aplicarlas en la resolucin de problemas y creacin de programas para dichas
soluciones.
73
Es aconsejable que revises nuevamente la unidad en caso de que los temas que se
acaban de mencionar no te sean familiares o no los recuerdes, de no ser este tu caso, ya
ests preparado(a) para seguir con la unidad 3, en donde continuars con la revisin de
herencia, polimorfismo y excepciones en un programa JAVA. Todo ello con el fin de
obtener el conocimiento necesario para comenzar a realizar pequeos programas
computacionales al final de la cuarta y ltima unidad del curso de Programacin Orientada
a Objetos I.
Para saber ms
Consulta la pgina oficial del lenguaje JAVA http://www.java.com/es/, donde podrs
encontrar manuales de referencia sobre los mtodos, variables, estructuras de control
selectivas y de repeticin.
Fuentes de consulta
Garca, J., Rodrguez, J., Mingo, I., Imaz, A., Brazlez, A., Larzabal, A. et al. (2000)
Aprenda JAVA como si estuviera en primero. Espaa: Escuela Superior de
Ingenieros, TECNUM. Recuperado el 1 de Marzo del 2011, de
http://www.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf
Gosling, J., Holmes, D. & Arnold, K. (2001) El lenguaje de programacin Java TM.
Madrid: Addison-Wesley. Recuperado el 1 de marzo del 2011, de
http://icesecurity.org/programacion/JAVA/Libro_Java-SP.pdf
74
Propsito
En esta unidad logrars:
1.
Reconocer el concepto y uso de la herencia.
2.
Reconocer el concepto y uso del polimorfismo.
3.
Identificar el uso de las excepciones.
4.
Identificar la sintaxis que JAVA ofrece para la implementacin de estos temas.
Competencia especfica
Desarrollar programas modulares para para solucionar problemas diversos, aplicando la
herencia, el polimorfismo y el manejo de excepciones mediante la sintaxis que JAVA
ofrece para su implementacin.
3.1. Herencia
En la definicin del lenguaje Java se pens en una de sus caractersticas ms
sobresalientes: la herencia.
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
75
La herencia es una propiedad del lenguaje que nos permite definir objetos en base a otros
ya existentes y as poder aadirles nuevas caractersticas (extenderlos). La nueva clase
es llamada subclase o clase extendida y la clase que hereda sus mtodos y atributos se
llama superclase.
76
La solucin descrita funciona, sin embargo no es una solucin ptima y siendo un poco
ms exigentes carece de elegancia. El problema que se presenta en esta solucin es el
doble trabajo que involucra escribir los mtodos presentados y que no tienen injerencia
en el dibujado del crculo.
Otra manera de poder resolver el problema es heredando (extendiendo) desde la clase
crculo a la subclase Dibujacirculo, como ya se haba explicado. Se presenta a
continuacin:
Debers notar que se obvia la declaracin de dos clases: Color y DrawWindow, se toma
slo como ejemplo ilustrativo. La palabra reservada extends le indica al compilador de
Java que Dibujacirculo es una subclase de circulo, lo que significa que sta heredar por
completo sus mtodos y atributos con los modificadores de acceso que se le indicaron en
la clase padre.
77
78
ejemplo, la comida en el mundo real. Se puede tener una instancia (un ejemplar) de
comida? No, aunque s se pueden tener instancias de manzanas, chocolates o cualquier
otro alimento. La comida representa el concepto abstracto de cosas que se pueden comer
y no tiene sentido que tenga instancias ya que no es un objeto concreto, slo una
abstraccin de un concepto ms amplio. Otro ejemplo puede ser la clase abstracta
FiguraTresDimensiones; de ella se pueden definir clases concretas, tales como Esfera,
Cilindro, Cono.
Bajo la definicin anterior no se puede comprender la utilidad de tener una clase abstracta
de manera pronta, sin embargo su utilidad se ve definida cuando sirven para heredar a
otras subclases caractersticas generales del concepto abstracto que representan, pero
de ellas no se puede instanciar objetos con el operador new. Las clases a partir de las
cuales se pueden crear instancias se denominan clases concretas (Niemeyer & Peck,
1997).
Una clase abstracta es una clase que contiene los nombres de los comportamientos sin
las implementaciones que ejecutan esos comportamientos. Los objetos no se pueden
instanciar de una clase abstracta.
Cuando se hace la definicin (declaracin) de una clase abstracta deber ser antecedida
por el modificador abstract. Este tipo de clases puede contener mtodos abstractos, que
como se podr imaginar son slo la declaracin de los mismos, pero sin la
implementacin de las instrucciones que se esperara para cumplir el propsito para los
cuales fueron escritos. La implementacin de dichos mtodos se hace en las subclases.
Para que un mtodo pueda declararse como abstracto debe cumplir con dos condiciones
bsicas:
1.
No ser mtodo privado.
2.
No ser mtodo esttico.
3.2. Polimorfismo
Esta capacidad, el polimorfismo, permite hacer diferentes implementaciones de los
mismos mtodos abstractos. Es decir, se pueden realizar diferentes implementaciones de
un mismo mtodo, para poder adaptarlo a las necesidades propias de cada clase.
79
3.2.2. Interfaces
Cuando se define o se pretende utilizar en Java una interface, en realidad se est
describiendo un comportamiento. De manera ms general las interfases lucen un tanto
parecidas a una clase abstracta, slo las diferencian el mtodo de declaracin:
1. En una clase abstracta se utiliza la palabra reservada abstract.
2. En una interface se utiliza la palabra reservada interface.
Tratando de entender la definicin general de interfase, se dir que es un sistema que
hace de puente para unir entidades no relacionadas entre s. Cuando se sigue el proceso
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
80
81
2.
Para realizar la operacin de unin, cuando uno de sus operando es una dato de
tipo String.
El compilador decide qu uso se le dar en base a los operando de los cuales est
acompaado.
82
2. Guarda la actividad con el nombre POO_U3_A2_XXYZ. Sustituye las XX por las dos
primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial
del apellido materno.
3.3. Excepciones
Cuando un programa Java viola las restricciones semnticas del lenguaje (se produce un
error), la mquina virtual Java comunica este hecho al programa mediante una excepcin.
Por tanto la manera ms simple de decirlo es que una excepcin es un error que ha
ocurrido en un programa en ejecucin.
Muchas clases de errores pueden provocar una excepcin, desde un desbordamiento de
memoria o un disco duro estropeado, un intento de dividir por cero o intentar acceder a un
arreglo fuera de sus lmites. Cuando esto ocurre, la mquina virtual Java crea un objeto
de la clase exception, se notifica el hecho al sistema de ejecucin y se dice que se ha
lanzado una excepcin.
83
Como se dijo anteriormente en el cdigo podemos ver que el bloque de sentencias que
pudiera tener un error se coloca dentro del try{}, y en el catch(){} se coloca el tipo de error
y su nombre dado, que por lo general siempre es e, entonces una vez que atrapa e error
lo imprime a pantalla para que el usuario conozca el error, todo esto sin provocar un cierre
inesperado del cdigo.
84
llegar al ltimo de ellos. En caso de que ninguno de los mtodos de la pila sea capaz de
tratar la excepcin, la mquina virtual Java muestra un mensaje de error y el programa
termina.
Por ejemplo si tengo un metodo1 que dentro hace una llamada al metodo2, y el metodo2
manda llamar al metodo3, y el metodo3 llama al metodo4, lo que pasa si ocurre un error
en el metodo1, es que se busca un manejo de excepciones en el metodo1, pero si no se
encuentra se va al metodo2 para ver si en este mtodo si se realiza el manejo de la
excepcin, pero si ah tampoco se hizo nada, se va al metodo3 en bsqueda del manejo
de la excepcin, por ltimo si tampoco en el metodo3 se hizo nada, se va al metodo4 a
buscar el manejo de la excepcin, a esto se refiere el texto de arriba sobre
, a ir
buscando en las llamadas hasta encontrar donde se pueda manejar la excepcin, pero si
en ninguno de los mtodos se realiz, entonces inevitablemente la excepcin har que el
sistema falle.
1. Elabora un ensayo donde plasmes tu percepcin sobre el uso y utilidad que brindan
las excepciones para un programador. No olvides incluir las fuentes que consultes.
2. Enva el archivo a travs de la seccin Base de datos.
85
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
primera unidad del curso, es necesario que resuelvas la autoevaluacin de la unidad.
Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y
elegir la opcin adecuada para cada uno.
Ingresa al aula para realizar la actividad.
86
Autorreflexiones
Adems de enviar tu trabajo de la Evidencia de aprendizaje, es importante que ingreses
al foro Preguntas de Autorreflexin y consultes las preguntas que tu Facilitador(a)
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
87
Para saber ms
Consulta la pgina oficial del lenguaje JAVA, donde podrs encontrar manuales de
referencia sobre el manejo de la herencia, el polimorfismo y las excepciones.
Java: http://www.java.com/es/
Fuentes de consulta
Flanagan, D. (1997) Java in a NutShell, The Java Reference Library, versin 1.2.
Mxico: O'Reilly & Associates.
Joyanes, L. & Fernndez, M. (2001) Java 2: manual de programacin. Mxico:
McGrawHill.
Niemeyer, P. & Peck, J. (1997) Exploring Java, The Java Reference Library,
versin 1.2. Mxico: O'Reilly & Associates.
88
Unidad 4. Arreglos
Presentacin de la unidad
En esta unidad de la materia Programacin orientada a objetos I (POOI), aprenders el
concepto arreglos, as como su manejo y recorrido.
En esta unidad de la materia de Programacin orientada a objetos I (POOI), aprenders
una de las estructuras de datos ms importante y bsica, que son los arreglos, conocers
su concepto, as como su declaracin, manipulacin y recorrido. De esta manera
aprenders a manejar varios datos unidos como un todo.
Esto te servir para el manejo de informacin obtenida de una base de datos, as como la
estructuracin de datos en tablas, que son temas que tratars en POO2.
En esta Unidad es necesario que t, como estudiante, captures todos los programas de
ejemplo, para que analices su sintaxis y as comprendas mejor los temas vistos.
Propsito
En esta unidad logrars:
o Distinguir los arreglos unidimensionales y multidimensionales
o Manejar las operaciones bsicas con arreglos
Competencia especfica
Construir programas para el manejo de datos del mismo tipo (carcter, cadena, entero o
decimal) a travs de arreglos aplicados en problemas matemticos simples.
89
Las variables contenidas en un arreglo, tambin llamados los elementos del arreglo, son
todos del mismo tipo, y este tipo se llama el tipo de elemento del arreglo. Un arreglo tiene
un rango que determina el nmero de ndices asociados a cada elemento del arreglo. El
rango de un arreglo tambin se conoce como las dimensiones del arreglo. Un arreglo
con un rango de 1 se denomina arreglo unidimensional. Un arreglo con un rango mayor
que 1 se llama un arreglo multidimensional. Los arreglos multidimensionales con un
tamao especfico se refieren a menudo como arreglos de dos dimensiones, los arreglos
de tres dimensiones, y as sucesivamente.
Cada dimensin de un arreglo tiene una longitud asociada que es un nmero entero
mayor o igual a cero. Las longitudes de las dimensiones no son parte del tipo del arreglo,
sino que se establecen cuando una instancia del tipo arreglo se crea en tiempo de
ejecucin. La longitud de una dimensin determina el rango de validez de los ndices de
esa dimensin: Por una dimensin de longitud N, los ndices pueden variar de 0 a N-1. El
nmero total de elementos de un arreglo es el producto de las longitudes de cada
dimensin del arreglo. Si una o ms de las dimensiones de un arreglo tienen una longitud
de cero, se dice que el arreglo est vaco. El tipo de elemento de un arreglo puede ser
cualquier tipo de dato, incluyendo l mismo (Hejlsberg, 2011: 626), es decir, en lugar de
cada posicin contenga un dato, puede contener un arreglo completo.
4.1.1. Declaracin
En Java hay que declarar un array antes de poder utilizarlo. Y en la declaracin es
necesario incluir el nombre del array y el tipo datos que se van a almacenar en l (Froufe,
2009: 35).
La sintaxis general para declarar e instanciar un array es:
Adems, como ya se mencion, se pueden usar en Java arrays de cualquier tipo de dato
soportado, incluso los definidos por el usuario:
90
91
Una vez que se ha instanciado un array, se puede acceder a los elementos de ste
utilizando un ndice, de forma similar a la que se accede en otros lenguajes de
programacin. Los ndices de un array siempre empiezan por 0 (cero) (Froufe, 2009: 35).
Actividad 1. Arreglos
El propsito de esta actividad es quereflexiones sobre las diferencias existentes entre los
diversos tipos de arreglos revisados en la asignatura.
3. Elabora un cuadro sinptico en el que identifiques los diferentes tipos de arreglos y
sus diferencias.
4. Ingresa al foro y genera una nueva entrada.
5.
Contribuye con algn comentario a por lo menos dos compaeros(as) sobre su
discernimiento del tema.
4. Elabora las diferencias entre los diversos tipos de arreglos, esto ser como conclusin
del foro; hazlo basndote en las aportaciones de los compaeros(as).
4.1.2. Recorrido
Los elementos contenidos en los arrays estn controlados por la posicin que ocupen
dentro del array. As, en el ejemplo anterior se tena una declaracin de un array de tipo
String que contendra 4 elementos, refirindose a los nombres propios de 4 personas:
92
Donde se indica al arreglo que se quiere imprimir el valor que est en la posicin i-sima,
esta instruccin se le indica al lenguaje Java cuando se pone el nombre del arreglo con el
cual se quiere trabajar, seguido de la posicin que se desea recuperar (para impresin,
operaciones, clculos, entre otros) encerrado entre corchetes([]). La salida de estas
instrucciones escritas en lenguaje Java, al compilar y ejecutar el programa (se obvian las
partes faltantes de la clase por cuestiones didcticas) sera la siguiente:
Imagina la cantidad de lneas necesarias para imprimir el nombre de todos los alumnos
que pertenecen a una universidad cuya matrcula es un total de 5,000 alumnos. Como se
podr deducir fcilmente se necesitaran 5,000 lneas como las anteriores.
Para solucionar la cuestin anterior de forma un tanto ms sencilla se utilizan ciclos, que
como ya se sabe, facilitan la ejecucin de operaciones secuenciales y repetitivas pero
necesarias, como en el caso de los arrays. Adems que los ciclos son controlados por
ndices (su comienzo y su fin) y sta es la misma forma de acceder a los elementos de un
array, como ya se haba explicado. A continuacin se presenta la misma impresin del
contenido del array nombres, pero utilizando un ciclo for:
93
Y la salida ser:
Segn las nuevas instrucciones, se introdujeron algunas variaciones para poder hacer el
recorrido funcional y se explica a continuacin: Cuando se declara un arreglo se indica el
total de elementos que contendr dentro de l (lmite del arreglo); este mismo lmite es el
total de repeticiones que deber ejecutar el ciclo for, indicado con i<4 (ya que si se indica
un nmero mayor, Java lanzar una excepcin indicando que se intenta acceder a una
locacin de memoria no reservada o inexistente). De igual manera el inicio del array debe
comenzar por el nmero 0 (cero) y esto se indica en el ciclo for al hacer la declaracin i=0
que indica que desde esa posicin comenzar a iterar.
Finalmente se le indica al arreglo que se quiere hacer el recorrido de sus elementos de
uno en uno (aunque podra ser diferente, de dos en dos por ejemplo) para poder obtener
el contenido total del array, en el ciclo for se le indica con la instruccin i++. As, a la hora
de colocar la lnea de impresin System.out.println(nombres[i]+ est en la posicin +i);
hacemos referencia al elemento i-simo indicado entre corchetes, pero en lugar de
indicarle un nmero fijo, se le indica la posicin que se desea imprimir con la variable i
que a voluntad del programador iniciar, terminar y se ir incrementando segn lo
explicado de las partes que conforman al ciclo for.
4.1.3. Operaciones
Al referirse a operaciones con arrays no es en el sentido clsico de operaciones
aritmticas sobre ellos (aunque se pueden hacer y se ejemplificar) sino a cmo se
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
94
obtienen sus elementos, haciendo un profundo nfasis en la importancia que tienen los
ndices para ello.
Imagina que tenemos 2 arreglos unidimensionales, como sigue:
y se quiere hacer una suma y multiplicacin punto a punto (posicin a posicin) de cada
uno de sus elementos, y almacenarlos en un tercer array para cada operacin sugerida,
luego imprimir el resultado de la acumulacin de las operaciones. Se ejemplifica con la
siguiente porcin de cdigo:
Ntese la importancia de los ndices para poder acceder a los elementos de los arrays y
de la misma manera para almacenar resultados.
Se puede utilizar un mismo contador para n arrays, siempre y cuando stos sean del
mismo tamao, como en el ejemplo anterior, donde se sum y multiplic en un mismo
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
95
ciclo. Solo en las impresiones, dado que se buscaba que el resultado se viera de manera
independiente, se utilizaron ms ciclos for, tantos como nmeros de resultados se quiera
mostrar.
6.
7. Dentro de la clase Main crea un mtodo, donde se solicite al usuario un nmero para
determinar el tamao de un arreglo, seguido a esto, se solicite al usuario ingrese
elementos para llenar el arreglo, y por ltimo se muestre ese mismo arreglo en una salida
pero con cada elemento elevado al cubo. La llamada a esto mtodo estar dada en el
mtodo main.
8. Guarda la actividad con el nombre POO_U4_A2_XXYZ.Sustituye las XX por las dos
primeras letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la
inicial de tu apellido materno.
9.
96
4.2.1. Declaracin
Los arreglos multidimensionales tienen ms de una dimensin. En Java, las dimensiones
se manejan por medio de corchetes (muy parecido a los arrays unidimensionales), dentro
de los cuales se escribe cada dimensin (cantidad de datos que guardar). Cada
dimensin ir dentro de un corchete. La sintaxis general para declarar e instanciar un array
es:
Adems, como ya se mencion, se pueden usar en Java arrays de cualquier tipo de dato
soportado, incluso los definidos por el usuario:
Ahora bien, la declaracin de los arrays en Java se hace mediante una variable
referenciada, es decir, no se guarda el valor del contenido del array, lo que se guarda es
una referencia de la locacin de memoria donde estn alojados dichos datos. Con lo que
se acaba de ver, fcilmente se puede deducir que los arrays son objetos.
Cuando se hace la declaracin de un array en Java se consideran dos posibles opciones:
Declararlo vaco o Declarar colocando valores.
Declararlo vaco.
97
La estructura general, si pudiera observarse la reserva de memoria que hace Java sobre
la memoria principal de la computadora, sera como sigue:
Observa que la estructura que se muestra, coincide perfectamente con las dimensiones
declaradas en el arreglo intnumeros[][] = new int[3][3]; donde el nmero contenido en el
primer corchete corresponde al nmero de filas que contendr el array, por ende, el
nmero contenido en el segundo corchete corresponde al nmero de columnas que
contendr el array, de esta manera se analizar una estructura diferente, como la que
sigue:
Quedara as:
98
Declararlo con valores iniciales es un poco diferente, como la declaracin para arrays
unidimensionales, pues se debe especificar explcitamente el contenido de cada
dimensin del array.
4.2.2. Recorrido
El recorrido de los elementos de un array multidimensional es de la misma manera que en
un arreglo unidimensional, slo agregando un corchete por cada dimensin que se aada,
considerando lo siguiente:
Se puede acceder a los valores de los elementos de un arreglo bidimensional a travs del
nombre del arreglo y dos subndices. Los subndices deben escribirse entre corchetes y
representan la posicin del elemento en el arreglo. As, es posible referirse a un elemento
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
99
del arreglo escribiendo el nombre del arreglo y los subndices del elemento entre
corchetes. Los valores de los subndices empiezan en cero para el primer elemento, hasta
el tamao del arreglo menos uno.
Tmese como ejemplo el siguiente cdigo, donde se recorre e imprime el array
bidimensional llamado nombres:
4.2.3. Operaciones
Como los arrays unidimensionales y multidimensionales son tan parecidos en su mtodo
de acceso (que de hecho es idntico), se ejemplifica los arrays multidimensionales de la
misma manera que se hizo con los arrays unidimensionales, slo modificando sus
dimensiones:
Imagina que tenemos 2 arreglos unidimensionales, como sigue:
100
Nota la importancia de los ndices para poder acceder a los elementos de los arrays y de
la misma manera para almacenar resultados.
Se puede utilizar un mismo contador para n arrays, siempre y cuando stos sean del
mismo tamao, como en el ejemplo anterior donde se sum y multiplic en un mismo
Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software
101
ciclo. Slo en las impresiones como se buscaba que el resultado se viera de manera
independiente, se utilizaron ms ciclos for, tantos como nmeros de resultados se quiera
mostrar.
1.
2. Dentro de la clase Main crea un mtodo, donde se soliciten al usuario dos nmeros X
y Y, y sean X el nmero de filas, Y el nmero de columnas de un arreglo, seguido a esto,
se solicite al usuario ingrese elementos para llenar el arreglo, y por ltimo se muestre ese
mismo arreglo en una salida pero en orden inverso. La llamada a esto mtodo estar
dada en el mtodo main.
3. Guarda la actividad con el nombre POO_U4_A3_XXYZ. Sustituye las XX por las dos
primeras letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por la
inicial de tu apellido materno.
4.
Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
primera unidad del curso, es necesario que resuelvas la Autoevaluacin de la unidad.
Recuerda que es muy importante leer cuidadosamente los planteamientos indicados y
elegir la opcin adecuada para cada uno.
Ingresa al aula para realizar la actividad.
102
Como parte de la evaluacin de esta unidad, debes realizar un programa cuyo propsito
es que logres identificar los componentes de un programa modular y puedas aplicarlos.
5. En NetBeans crea un nuevo proyecto, y crea tantas clases como ejercicios se han
realizado a lo largo del cuatrimestre, donde cada clase incluya cada programa. En la clase
Main se debe contar con un mensaje tipo men al usuario, y este podr elegir ejecutar
cualquier programa; en el mtodo main se debe tener un switch que tenga la llamada a
todos los mtodos en forma de men y que al elegir el usuario un nmero se ejecute ese
programa.
6. Consulta la Escala de evaluacin.
7. Guarda la evidencia con el nombre POO1_U3_EA_XXYZ. Sustituye las XX por las
dos primeras letras de tu primer nombre, la Y por la inicial de tu apellido paterno y la Z por
la inicial de tu apellido materno.
8. Enva la carpeta del proyecto a tu Facilitador(a) para recibir retroalimentacin.
* Recuerda que puedes volver a enviar tu archivo tomando en cuenta las observaciones
de tu Facilitador(a).
Autorreflexiones
Adems de enviar tu trabajo de la Evidencia de aprendizaje, es importante que ingreses
al foro Preguntas de Autorreflexin y consultes las preguntas que tu Facilitador(a)
presente, a partir de ellas, debes elaborar tu Autorreflexin en un archivo de texto llamado
POO_U4_ATR_XXYZ. Posteriormente enva tu archivo mediante la herramienta
Autorreflexiones.
Para saber ms
Consulta la pgina oficial del lenguaje Java, donde podrs encontrar manuales de
referencia sobre arreglos.
Java: http://www.java.com/es/
103
Fuentes de consulta
104