CAPÍTULO 6: INTRODUCCIÓN A LA PROGRAMACIÓN

Anuncio
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca CAPÍTULO 6: INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Hasta el capítulo anterior cubrimos los conceptos fundamentales de dos
técnicas de programación, conocidas como programación estructurada (por que
existen estructuras de control) y modular (debido a que se puede dividir un
programa en módulos). En este último tema desarrollaremos los principios
básicos de otra técnica de programación, denomina Programación Orientada a
Objetos o POO según sus siglas y que actualmente se utiliza en la mayoría de
proyectos de desarrollo de software.
Por lo tanto, se estudiaran los fundamentos de la programación orientada a
objetos y comprenderá algunos de los conceptos que se mencionaron en
capítulos anteriores, como por ejemplo los modificadores de acceso y la
creación de objetos. Además reuniremos bajo un nuevo esquema los conceptos
que ya hemos visto, como variables globales y métodos.
El presente capítulo se basa en los capítulos 10 “Programación orientada a
objetos usando el diagrama de clases” y 11 “Programación orientada a objetos
aplicando la estructura de selección” del texto básico. El capítulo 10 expone la
base teórica, mientras el 11 la parte práctica. Ambos capítulos son de gran
importancia, así que revíselos haciendo una lectura comprensiva, analizando
detalladamente los ejercicios y sus explicaciones.
Conviene recalcar que desarrollemos algunas explicaciones teóricas que son
necesarias comprender y que fundamentaran los ejercicios que revisaremos
más adelante, empecemos con la definición de la POO.
6.1 Definiciones básicas Provéase de su texto básico y realice una lectura comprensiva
de las páginas 242, 243 y 249 que corresponden al Capítulo
10 “Programación orientada a objetos usando el diagrama de
clases”. Revise detenidamente las figuras que ahí se muestran
con el afán de que comprenda los conceptos que ahí se
expresan.
¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos
ciertos elementos de la lectura anterior.
Como se menciona en el apartado 10.1 “Objetos”, página 242 del texto básico
la POO es una metodología (un conjunto de pasos sistemáticos) para plantear,
analizar y resolver problemas.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Esta metodología, como cualquier otra, tiene un conjunto de principios o pilares
fundamentales sobre los cuáles fundamenta toda su estructura de trabajo,
estos conceptos son: Objetos, clases, encapsulamiento, herencia y
polimorfismo. Todo lenguaje de programación que sea orientado a objetos
deben soportar de alguna manera todos estos conceptos.
Ponga atención a la figura que se muestra en la página 242 y a su explicación
que se encuentra al final de la misma página. En ella puede ver el uso de
gráficos para describir las clases que son parte de un programa. A la figura se
la denomina “Diagrama de Clases” y fue elaborada usando el Lenguaje de
Modelado Unificado (UML).
Como se menciona en el párrafo anterior, el UML representa los conceptos de la
POO a través de elementos gráficos y de una serie de diagramas. En la página
243 puede ver la estructura general de un objeto expresado como un elemento
gráfico del UML, mientras que en la página 249 puede ver el diagrama de una
clase.
Vamos a iniciar el estudio de algunos de los conceptos fundamentales de la
POO. Comencemos revisan los objetos.
6.2 Objetos Acuda nuevamente al texto básico y revise las páginas 243 y
245 como se indica a continuación. Recuerde realizar una
lectura comprensiva y el análisis de los ejercicios que ahí se
encuentran.
En la página 243 se hace la definición formal de un objeto, se muestra como se
forma un objeto, su representación gráfica en UML y en el acápite 10.1.3
“Cuándo y cómo identificar los objetos”.
Como pudo haber leído en el apartado 10.1.2 “Cómo están formados los
objetos”, una de las partes de un objeto son los datos, le recomiendo usar el
término atributos en lugar de datos ya que es difundido más ampliamente en la
literatura POO. Recuerde que los atributos determinan la estructura del objeto,
mientras que los métodos determinan el comportamiento del objeto.
La identificación de objetos es algo primordial que debe tener presente desde
aquí en adelante, ya que siempre que resuelva problemas con la metodología
POO hará esta tarea una y otra vez. La identificación de objetos pertenece a la
etapa de análisis de un problema.
Para finalizar con este tema lea la explicación que se muestra en la página 245
y las notas 1 y 2 de la misma página.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Antes de continuar es necesario recordar que generalmente se suele emplear
de manera indistinta la palabra objeto con la palabra instancia, así que
recuerde que una instancia es un objeto y viceversa.
Los nombres de los atributos inician con una letra en minúscula, en caso de
estar compuesto por más de una palabra, cada palabra empezará con una letra
en mayúscula.
Ahora estudiemos otro concepto que al igual que el anterior es un concepto
fundamental que lo hemos utilizado desde el primer algoritmo y programa Java.
6.3 Clases Apoyémonos una vez más en el básico, esta vez para y leer las
páginas desde la 245 a la 247 como se indica a continuación.
Recuerde realizar una lectura comprensiva y el análisis de los
ejercicios que ahí se encuentran.
En el acápite 10.2 “Clase y su relación con los objetos” se habla del concepto de
clase, como representación abstracta de un grupo de objetos que tienen una
estructura y un comportamiento común.
Por lo tanto:
Recuerde que una clase es un molde para definir objetos y un objeto es una
instancia de una clase.
También se explica que el diseñar una clase es parte del proceso de diseño de
un programa y se nos muestra cómo encontrar clases.
En la página 246 revise el subtema 10.2.2 “Representación de las clases y sus
instancias” para entender la relación entre una clase y los objetos o sus
instancias.
Dentro de la definición de la estructura de una clase es importante definir los
atributos (estructura de la clase) y los métodos (el comportamiento), una
explicación de las consideraciones a tener en cuenta, se describen en la página
247 en el acápite 10.3 “Métodos y encapsulamiento”.
Conviene tener presente que:
Los nombres de las clases inician con la primera letra en mayúscula, en caso de
estar formada por más de una palabra, la primera letra de cada palabra lleva su
primera letra en mayúscula.
Para poder empezar a escribir programas orientada a objetos es necesario
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca realizar los pasos que se muestran a continuación.
6.4 Diseño del diagrama de clases En este momento es necesario revisar las páginas desde la
245, 249, 253 a la 255 del texto básico como se indica a
continuación. Recuerde realizar una lectura comprensiva y el
análisis de los ejercicios que ahí se encuentran.
Tal y como se menciona en la página 245 del texto básico para diseñar un
programa POO el algoritmo tiene 2 pasos, el primero es diseñar el diagrama de
clases, que lo podemos encontrar en la página 249 del texto básico y el
segundo paso es el diseño de la lógica de las clases en pseudocódigo, tarea que
la hemos venido haciendo desde el capítulo 1.
Lea detenidamente el apartado 10.4.1 “Modificadores de acceso (visibilidad)” ya
que aquí se explican los modificadores de acceso (que vimos en los programas
Java) tanto en métodos, como en atributos (o datos).
Para entender la diferencia entre una clase y un objeto vea la figura que se
muestra en la página 253. Fíjese como la clase define los atributos, pero no es
posible asignarle valores a esos atributos de la clase; cosa que no sucede con
un objeto que posee valores para los atributos.
Finalmente se explica la arquitectura modelo-vista-controlador (lea el subtema
10.6 “Arquitectura modelo-vista-controlador”, página 254). Debido a la sencillez
de los programas que elaboraremos la arquitectura modelo-vista-controlador se
simplifica hasta convertirse en modelo-controlador. En pocas palabras para los
problemas de POO crearemos 2 clases, como muestra el ejemplo de la página
255, una clase Empleado que representa el modelo y soluciona el problema
planteado. Otra clase (EjecutaEmpleado) que es el controlador, y usa la clase
empleado para controlar la interacción con el usuario. Todo lo anterior lo
entenderemos en el siguiente punto.
Una vez estudiados los conceptos de clases y objetos debemos analizar el
pseudocódigo y entender como se soportan los nuevos conceptos estudiados.
Para ello revise detalladamente el siguiente subtema.
6.5 Diseño de la lógica de las clases en pseudocódigo Para desarrollar esta temática revise las páginas desde la 258
a la 271 del Capítulo 11 “Programación orientada a objetos
aplicando la estructura de secuenciación” del texto básico
como se indica a continuación. Recuerde realizar una lectura
comprensiva y el análisis de los ejercicios que ahí se
encuentran.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca ¿Qué le pareció la lectura? ¿Comprendió? Si es así avancemos y repasemos
ciertos elementos de la lectura anterior.
Para desarrollar este tema es necesario ubicarnos en el capítulo 11 del texto
básico y empezar a leer el punto 11.1 “Nuestro primer problema” en la página
258. Ahí se vuelve a hablar de los pasos que se necesitan para resolver un
problema aplicando la POO. El primer paso lo vimos en el punto anterior;
mientras que el segundo es materia de este punto.
Lea detenidamente el punto 11.2 “Diseño de algoritmos OO usando la
secuenciación en pseudocódigo” y fíjese como se amplía las capacidades de un
algoritmo para soportar más de una clase. También revise el ejercicio de la
página 261 y su explicación en las página 262 a la 270.
Antes de pasar con la implementación en Java, revise los términos Constructor
y Destructor que se muestran en las páginas 270 y 271.
¿Qué le pareció la lectura? ¿Comprendió? Si es así continuemos con:
La implementación en Java se muestra en las siguientes ilustraciones
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 1 Clase empleado 5 que hace las veces de Modelo
Observe como esta clase no define el método principal, es decir que no puede
ejecutarse por si sola. Además y tal como se dice en la página 251 del texto
básico los atributos son privados y los métodos son públicos.
Los atributos se definen desde la línea 13 a la 16 de la Ilustración 81 y todo lo
demás son métodos.
Generalmente se suele definir por cada atributo los métodos establecer y
obtener además de otros métodos útiles que tienen la lógica del problema
(como por ejemplo calcularSueldo). Los métodos establecer sirven para
configurar el valor de un atributo, mientras que los métodos obtener sirven
para consultar el valor de atributo. De ahí la forma estándar de cada uno de
ellos.
Una buena práctica de programación es usar:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Los nombres de los métodos suelen ser verbos, que inician con una letra
minúscula, en caso de estar compuesto por más de una palabra, la segunda
palabra inicia con la primera letra mayúscula.
Fíjese en la diferencia con los programas que se desarrollaron en el capítulo
anterior. En el capítulo 5 los métodos y atributos se declararon como estáticos
por que iban a ser invocados sin la creación de objetos. No así en los ejemplos
de este capítulo en donde los atributos y métodos no tienen la palabra static,
ya que se crea por lo menos un objeto (Vea la Ilustración 82 en la línea 22).
La siguiente imagen muestra la clase controlador
Ilustración 2 Clase controlador
La Ilustración 82 muestra el controlador del ejemplo que estamos desarrollando,
aquí vemos como se crea un objeto (línea 22) y como se invoca a los métodos
(líneas 30-32, 34 y 37), este proceso de invocación a métodos también se
llama envío de mensajes. Siempre que trabajemos con ejercicios de POO la
clase controlador tendrá el método principal y creará objetos o instancias del
modelo; interactuará con el usuario y manipulará las instancias creadas.
En la clase controlador se pueden crear más de un objeto y manipularlos según
sean las necesidades del programa que estamos elaborando.
Los ejercicios que se desarrollaran en esta sección serán sencillos y en el
mismo estilo que lo muestran las imágenes anteriores.
Finalmente en la página 270 del texto básico se habla de constructores y
destructores, mientras que en la página 271 se muestra un ejemplo de un
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca constructor. Recuerde que la función principal de un constructor es dar valores
iniciales a uno o varios atributos de la clase, sino existe ningún constructor los
atributos toman valores por defecto según sus tipos de datos; cero para los
números y nulo para los datos texto.
Un constructor tendrá el mismo nombre de la clase (coincidiendo hasta en las
mayúsculas y minúsculas), nunca tendrá tipo de dato de retorno y puede tener
parámetros o no. Los parámetros se usan para asignar valores a los atributos.
En Java un constructor tiene la siguiente forma:
Ilustración 3 Constructor de la clase Empleado5
Dentro de los lenguajes de programación, como Java y C#, es posible crear una
clase que tenga más de un constructor, a lo que se llama sobrecarga de
constructores.
Es inusual crear un programa que trabaje con algún destructor, tanto a nivel se
pseudocódigo, como a nivel de Java, razón por la cual no se cubren ni en la
presente guía didáctica ni en el texto básico.
Estudiemos con ejemplos los conceptos que se presentaron en este capítulo.
Revise detalladamente el análisis que se hace a cada uno de los ejercicios.
6.6 Ejercicios Es necesario tener presente que: en el análisis de los ejercicios
desarrollados se utiliza números para referirse a líneas de código de los
programas Java. Mientras que, para los algoritmos escritos en pseudocódigo se
utiliza letras del alfabeto y a veces la combinación de letras y números.
1. Elabore un algoritmo y un programa en Java que cree una clase que
represente a una cuenta de ahorros. La cuenta debe tener su saldo y
debe permitir realizar operaciones como depósitos, retiros y consulta de
saldo.
Algoritmo CUENTA AHORROS
Clase Cuenta
1. Declaraciones
Datos
saldo : Real
2. Método Cuenta (saldoInicial : Real)
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca a. saldo = saldoInicial
3. Fin Método Cuenta
4. Método obtenerSaldo () : Real
a. return saldo
5. Fin Método obtenerSaldo
6. Método depositar (monto : Real)
a. saldo = saldo + monto
7. Fin Método depositar
8. Método retirar (monto : Real)
a. IF monto < saldo THEN
1. saldo = saldo – monto
b. ENDIF
9. Fin Método retirar
Fin Clase
Fin
Algoritmo EJECUTA CUENTA AHORROS
Clase EjecutaCuenta
1. Método Principal
a. Declaraciones
Variables
saldoActual : Real
b. Declarar, crear e iniciar objeto
Cuenta cta = new Cuenta(210.8);
c. saldoActual = cta.obtenerSaldo()
d. Imprimir saldoActual
e. cta.depositar(20)
f. saldoActual = cta.obtenerSaldo()
g. Imprimir saldoActual
h. cta.retirar(100)
i. saldoActual = cta.obtenerSaldo()
j. Imprimir saldoActual
2. Fin Método Principal
Fin Clase
Fin
Los programas en Java se muestran a continuación:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 4 Clase Cuenta
Ilustración 5 Ejecuta Cuenta
La salida del programa anterior se muestra a continuación:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 6 Salida de la clase EjecutaCuenta
Análisis:
No olvide que: para el análisis del código Java todas los números de
líneas hacen referencia a la Ilustración 84.
Analicemos la clase Cuenta, esa clase tiene un atributo que se llama
saldo (Vea el punto 1. ó la línea 13) Recuerde que en Java los atributos
son privados y los métodos públicos. Uno de los métodos es un
constructor (El método del punto 2 del algoritmo o la línea 15 Java). Los
constructores sirven para inicializar los atributos, en este caso el único
atributo (saldo) se inicializa con el parámetro del constructor. Los otros
métodos son obtenerSaldo, que lo único que hace es devolver el valor
del atributo saldo, el método depositar, incrementa el saldo de la
cuenta, por tal motivo recibe un parámetro que se agrega al valor actual
del saldo. El método retirar, disminuye el saldo en una cantidad
(monto), antes de la disminución del saldo se debe verificar que es
posible realizar la transacción, para ello se usa el IF (punto 8.a del
algoritmo o la línea 28 Java).
La clase EjecutaCuenta, tiene el método principal (es una clase
ejecutable) que declara una variable que tendrá el valor del saldo. Se
crea un objeto (cta) que es del tipo Cuenta (Vea la línea bajo el punto
b. del algoritmo o la línea 16 Java). Cuando se crea un objeto se invoca
por defecto al constructor, por lo que se ejecutaría el único constructor
que recibe un parámetro que es el saldo inicial de la cuenta. Luego se
aplican los métodos obtenerSaldo (puntos c., f., e i. ó líneas 18, 22 y
26), depositar (punto e. o línea 20), retirar (punto h. o línea 25) para
observar el comportamiento de la clase.
2. Crear un algoritmo y luego una clase en Java que represente el
comportamiento de un contador (así como aquellos contadores que
tienen las páginas Web) Cuando se cree el contador se inicializa en 0 y
se debe incrementar en una unidad su valor a través de un método.
Algoritmo CONTADOR
Clase Contador
1. Declaraciones
Datos
contador : Entero
2. Método obtenerContador () : Entero
a. return contador
3. Fin Método obtenerContador
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca 4. Método incrementar()
a. contador = contador + 1
5. Fin Método incrementar
Fin Clase Contador
Fin
El programa en Java se muestra a continuación
Ilustración 7 Clase contador
Ilustración 8 Ejecuta la clase Contador
La siguiente ilustración muestra la salida del programa de la Ilustración 88
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 9 Salida del programa EjecutaContador
Análisis:
Tenga presente que: para el análisis del código Java todas los números
de líneas hacen referencia a la Ilustración 88.
La clase Contador es bastante sencilla, posee un atributo y dos
métodos, uno para obtener el valor del atributo contador y otro para
incrementar el atributo contador.
Posiblemente la clase que aporta con algunos detalles es la clase
EjecutaContador, en donde se crean 3 objetos del tipo Contador
(líneas de la 14 a la 16) y se invoca 2 veces al método incrementar
para el objeto c1 (líneas 18 y 19) y una vez para los objetos c2 y c3.
Finalmente se muestra el valor que posee cada uno de los objetos en las
líneas de la 24 a la 27.
3. Elabore un algoritmo y luego un programa en Java, que represente el
funcionamiento de un contador de llamadas entrantes y salientes de un
celular. El contador de llamadas de un celular nos muestra el tiempo (en
horas:minutos:segundos) la cantidad total de tiempo empleado en las
llamadas que hayan realizado (llamadas salientes) y el tiempo total de
las llamadas recibidas (llamadas entrantes). Muchos sistemas almacenan
los tiempos (horas, minutos y segundos) como una cantidad expresada
en segundos. Es así como se almacenará la información de este contador
de llamadas. Después de una llamada (entrante o saliente) el respectivo
contador debe incrementarse, según los segundos que duró la llamada.
Cuando el usuario consulte alguno de los contadores debe visualizar la
información en horas, minutos y segundos. Mientras que la
representación en segundos queda para uso interno. Es posible también
que el usuario reinicie los contadores.
El algoritmo:
Algoritmo CONTADOR LLAMADAS
Clase ContadorLlamadas
1. Datos
entrantes : Entero
salientes : Entero
2. Método ContadorLlamadas()
a. entrantes = 0
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca b. salientes = 0
3. Fin Método ContadorLlamadas
4. Método incrementarEntrantes (cant : Entero)
a. entrantes = entrantes + cant
5. Fin Método incrementarEntrantes
6. Método incrementarSalientes (cant : Entero)
a. salientes = salientes + cant
7. Fin Métodos incrementarSalientes
8. Método obtenerEntrantes () : Texto
a. Declaraciones
Variables
salida : Texto
b. salida = convertirHHMMSS(entrantes)
c. return salida
9. Fin Método obtenerEntrantes
10. Método obtenerSalientes () : Texto
a. Declaraciones
Variables
salida : Texto
b. salida = convertirHHMMSS(salientes)
c. return salida
11. Fin Método obtenerSalientes
12. Método convertirHHMMSS (tiempo : Entero) : Texto
a. Declaraciones
Variables
horas, minutos, segundos : Entero
b. Calcular horas = tiempo \ 3600
c. Calcular tiempo = tiempo MOD 3600
d. Calcular minutos = tiempo \ 60
e. Calcular tiempo = tiempo MOD 60
f. segundos = tiempo
g. salida = concatenar(horas + “:” + minutos + “:” + segundos)
h. return salida
13. Fin Método convertirHHMMSS
14. Método reiniciarContadores()
a. entrantes = 0
b. salientes = 0
15. Fin Método reiniciarContadores
Fin Clase ContadorLlamdas
Fin
A continuación se muestran los programas Java:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 10 Programa Contador de Llamadas
Ilustración 11 Clase que ejecuta el contador de llamadas
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca La salida de la ejecución de la clase EjecutaContadorLlamadas es la
siguiente:
Ilustración 12 Salida del programa EjecutaContadorLlamadas
Análisis:
Recuerde que: para el análisis del código Java todas los números de
líneas hacen referencia a la Ilustración 90.
La clase ContadorLlamadas tiene dos atributos (entrantes y
salientes) que se muestran en el punto 1 o en las líneas 13 y 14. Posee
un constructor (puntos 2 al 3 o líneas 16 a la 19). Además existen dos
métodos incrementar, uno incrementa el contador de llamadas entrantes
(puntos desde el 4 hasta el 5 o líneas desde la 21 hasta la 23) y el
segundo las salientes (puntos desde el 6 hasta el 7 o líneas desde la 25
hasta la 27). Tanto el método obtenerEntrantes, como el método
obtenerSalientes devuelve sus valores en formatos horas, minutos y
segundos; para ello deben invocar al método convertiHHMMSS (puntos
8.b y 10.b o líneas 32 y 40) enviando los valores de sus respectivos
atributos.
El método convertirHHMMSS es el que realiza la mayor cantidad de
tareas; lo que hace es convertir la cantidad de segundos en horas (punto
12.b o línea 48), el valor sobrante (punto 12.c o línea 49), se transforma
en minutos (punto 12.d o línea 50), el sobrante (punto 12.e o línea 51),
se transforma en segundos. Finalmente los valores de horas, minutos y
segundos se concatenan para cumplir con el formato requerido. El
último método reiniciarContadores encera los atributos a 0.
El método EjecutaContadorLlamadas crea un objeto de la clase
ContadorLlamadas se incrementa los minutos (líneas 16 y 17) se
presentan los valores (líneas 19 y 20), nuevamente se incrementan los
contadores (líneas 22 y 23) se presentan los contadores (líneas 25 y 26)
y finalmente se reinician los contadores (línea 28) y se presentan los
mismos (líneas 29 y 30).
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca 4. Construir una clase calculadora, que permita realizar las cuatro
operaciones matemáticas: suma, resta, división y multiplicación.
Algoritmo CALCULADORA
Clase Calculador
1. Datos
num1 : Entero
num2 : Entero
resultado: Entero
2. Método Sumar()
a. resultado= num1+num2;
3. Fin Método Sumar
4. Método Restar()
a. resultado= num1-num2;
5. Fin Método Restar
6. Método Dividir()
a. resultado= num1/num2;
7. Fin Método Dividir
8. Método Multiplicar()
a. resultado= num1*num2;
9. Fin Método Multiplicar
10. Método asignarNum1(numero: entero)
a. num1= numero
11. Fin Método asignarNum1
12. Método asignarNum2(numero: entero)
a. num2= numero
13. Fin Método asignarNum2
14. Método obtenerResultado(): entero
a. return resultado
15. Fin Método obtenerResultado
Fin Clase Calculador
Fin
El programa en Java es el siguiente:
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca Ilustración 13 Clase Calculador
Ilustración 14 Clase de prueba de la Clase Calculador
Análisis:
Tenga presente que: para el análisis del código Java todas los números
de líneas hacen referencia a la Ilustración 93.
La clase Calculador tiene tres atributos que se muestran en las líneas
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca 37,38 y 39. La clase no cuenta con un constructor definido, pero si
cuenta con cuatro métodos sumar, restar, dividir, multiplicar (línea
40, 43, 46 y 49 del código Java) todos los métodos realizan las
operaciones indicadas y almacenan el resultado en la variable de salida
resultado.
La clase Objeto6 permite crear instancias de la clase Calculador e
invocar a sus diferentes operaciones, en la línea 12 del código Java se
instancia la clase en un objeto denominado objCalculador,. En las
líneas 18 y 19 del código Java se asigna valor a los atributos de la clase
num1 y num2, mediante los métodos del objeto asignarNum1 y
asignarNum2 con los valores ingresados por el usuario. Posteriormente
se solicita que el usuario ingrese la operación a realizar que es evaluada
mediante una estructura de control switch , que dependiendo de la
entrada ser realizan las llamadas a los métodos de la clase como se
realiza en las líneas 25, 26, 27 y 28 del código Java de la Ilustración 94.
Finalmente se presenta el resultado de la operación, realizando una
invocación al método obtenerResultado del objeto objCalculador en
la línea 33 del código Java.
5. Construir una clase Numero que tenga atributos cantidad formateada y
cantidad no formateada, y un método que permita cambiar una cantidad
sin formato a otra con formato de comas cada tres cifras.
Algoritmo NUMERO
Clase Numero
1. Datos
numSinFormato : Entero
numConFormato : Cadena
2. Método CambiarNumero()
a. numConFormato=insertarComas(numeroSinFormato)
b. Fin Método CambiarNumero
3. Método asignarNumSinFormato( numero: entero)
a. numSinFormato=numero
b. Fin Método AsginarNumSInFormato
4. Método obtenerNumConFormato( ): Cadena
a. return numConFormato
b. Fin Método obtenerNumConFormato
5. Método insertarComas (cantidad: Entero): Cadena
a. Declaraciones
Contador, i: Entero
cadena, tresCifras,cadenaComas: Cadena
b. posición: arreglo[numPalabras] Entero
c. Cadena=Cambiar a cadena cantidad
d. Posición= cadena.longitud
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca e. numComas=cadena.longitud/3
f. IF cadena.longitud %3!=0) THEN
1. numComas=numComas+1;
g. ENDIF
h. FOR i=0 ; i<numComas; i++
1. IF posicion>3 THEN
a. tresCifras=cadena.subcadena(posicion-3, posicion);
b. cadenaComas=","+tresCifras+cadenaComas;
c. posicion=posicion-3
2. ELSE
a. tresCifras=cadena.subcadena(0, posicion);
b. cadenaComas=tresCifras+cadenaComas;
2. ENDIF
i. ENDFOR
j. Return cadenaComas;
k. Fin de Método insertarComas
Fin de la clase
Los programas Java se muestran a continuación
Ilustración 15 Clase Numero
Análisis:
Tenga presente que: para el análisis del código Java todas los números
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca de líneas hacen referencia a la Ilustración 95.
La clase Numero contiene dos atributos que son numSinFormato y
numConFormato (línea 23 y 24 del código Java). El primero contiene
un numero entero que nos servirá como entrada en el método
insertarComas que tienen como salida una cadena de un número con
una coma cada tres cifras.
Otros elementos a destacar son que: la clase contiene dos métodos
cambiarNumero e insertarComas. El primero hace una llamada a
insertarComas y asigna el resultado a la variable numConFormato
(línea 26 del código Java). El segundo método recibe como parámetro un
entero sin formato y devuelve una cadena. El proceso utiliza algunas
variables: cadena (línea 30 del código Java) que almacenará el numero
en cadena sin formato, tresCifras (línea 31 del código Java) que
temporalmente permitirá agregar una coma cada tres cifras,
cadenaComas(línea 32 del programa Java) que contiene la cadena final
ya con el formato requerido, posición (línea 34 del programa Java) con
la posición de el último indice de la cadena con el fin de iniciar a insertar
de derecha a izquierda, numComas (línea 35 del programa Java) que
contiene el número de cifras a recorrer para insertar las comas. El
proceso en si inicia en la línea 37 con una estructura for, recorriendo
toda la cadena. Cada tres cifras se inserta la coma y se corre toda la
cadena hacia la izquierda (línea 38 a la 46 del código Java). Seguido se
retorna la cadena ya formateada con comas.
Finalmente tenemos los métodos para asignar (línea 50)
(línea 53) los valores a los atributos.
y obtener
Hemos llegado al final del presente capítulo, en el cual analizamos los
conceptos fundamentales de la POO, estudiamos la manera de como
implementar a través de pseudocódigo programas desarrollados bajo esta
metodología. También analizamos la forma de representar en Java este tipo de
problemas y finalmente revisamos los constructores y su implementación en
Java.
Con el afán de que amplié sus conocimientos sobre este tema y su
representación en Java le proponemos que lea detenidamente el siguiente
material adicional.
Material adicional:
En el CD que se adjuntó en la guía, puede revisar (programación-enjava-i\Contenidos\LecturaObligatoria\) los archivos:
9-objetosyclases.pdf
13-constructores.pdf
Una vez concluido el capítulo es el momento de que determine el nivel de
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Escuela de Ciencias de la Computación – UTPL Fundamentos de la Programación Autores: Ing. Jorge López, Ing. Greyson Alberca comprensión que alcanzó del mismo, para lo cual le planteamos una serie de
preguntas sobre el tema. Recuerde, trate de resolver usted mismo cada una de
las preguntas, para luego comparar sus respuestas con las que proponemos al
final de la presente guía didáctica.
Esta obra ha sido licenciada con Creative Commons Ecuador 3.0 de Reconocimiento - No comercial –
Compartir igual (http://creativecommons.org/licenses/by-nc-sa/3.0/ec/).
Descargar