Sei sulla pagina 1di 23

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.

GreysonAlberca

CAPTULO6:INTRODUCCINALAPROGRAMACINORIENTADAA OBJETOS
Hasta el captulo anterior cubrimos los conceptos fundamentales de dos tcnicas de programacin, conocidas como programacin estructurada (por que existen estructuras de control) y modular (debido a que se puede dividir un programa en mdulos). En este ltimo tema desarrollaremos los principios bsicos de otra tcnica de programacin, denomina Programacin Orientada a Objetos o POO segn sus siglas y que actualmente se utiliza en la mayora de proyectos de desarrollo de software. Por lo tanto, se estudiaran los fundamentos de la programacin orientada a objetos y comprender algunos de los conceptos que se mencionaron en captulos anteriores, como por ejemplo los modificadores de acceso y la creacin de objetos. Adems reuniremos bajo un nuevo esquema los conceptos que ya hemos visto, como variables globales y mtodos. El presente captulo se basa en los captulos 10 Programacin orientada a objetos usando el diagrama de clases y 11 Programacin orientada a objetos aplicando la estructura de seleccin del texto bsico. El captulo 10 expone la base terica, mientras el 11 la parte prctica. Ambos captulos son de gran importancia, as que revselos haciendo una lectura comprensiva, analizando detalladamente los ejercicios y sus explicaciones. Conviene recalcar que desarrollemos algunas explicaciones tericas que son necesarias comprender y que fundamentaran los ejercicios que revisaremos ms adelante, empecemos con la definicin de la POO.

6.1Definicionesbsicas
Provase de su texto bsico y realice una lectura comprensiva de las pginas 242, 243 y 249 que corresponden al Captulo 10 Programacin orientada a objetos usando el diagrama de clases. Revise detenidamente las figuras que ah se muestran con el afn 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, pgina 242 del texto bsico la POO es una metodologa (un conjunto de pasos sistemticos) 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Esta metodologa, como cualquier otra, tiene un conjunto de principios o pilares fundamentales sobre los cules fundamenta toda su estructura de trabajo, estos conceptos son: Objetos, clases, encapsulamiento, herencia y polimorfismo. Todo lenguaje de programacin que sea orientado a objetos deben soportar de alguna manera todos estos conceptos. Ponga atencin a la figura que se muestra en la pgina 242 y a su explicacin que se encuentra al final de la misma pgina. En ella puede ver el uso de grficos 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 prrafo anterior, el UML representa los conceptos de la POO a travs de elementos grficos y de una serie de diagramas. En la pgina 243 puede ver la estructura general de un objeto expresado como un elemento grfico del UML, mientras que en la pgina 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.2Objetos
Acuda nuevamente al texto bsico y revise las pginas 243 y 245 como se indica a continuacin. Recuerde realizar una lectura comprensiva y el anlisis de los ejercicios que ah se encuentran. En la pgina 243 se hace la definicin formal de un objeto, se muestra como se forma un objeto, su representacin grfica en UML y en el acpite 10.1.3 Cundo y cmo identificar los objetos. Como pudo haber ledo en el apartado 10.1.2 Cmo estn formados los objetos, una de las partes de un objeto son los datos, le recomiendo usar el trmino atributos en lugar de datos ya que es difundido ms ampliamente en la literatura POO. Recuerde que los atributos determinan la estructura del objeto, mientras que los mtodos determinan el comportamiento del objeto. La identificacin de objetos es algo primordial que debe tener presente desde aqu en adelante, ya que siempre que resuelva problemas con la metodologa POO har esta tarea una y otra vez. La identificacin de objetos pertenece a la etapa de anlisis de un problema. Para finalizar con este tema lea la explicacin que se muestra en la pgina 245 y las notas 1 y 2 de la misma pgina.

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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

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 minscula, en caso de estar compuesto por ms de una palabra, cada palabra empezar con una letra en mayscula. 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.3Clases
Apoymonos una vez ms en el bsico, esta vez para y leer las pginas desde la 245 a la 247 como se indica a continuacin. Recuerde realizar una lectura comprensiva y el anlisis de los ejercicios que ah se encuentran. En el acpite 10.2 Clase y su relacin con los objetos se habla del concepto de clase, como representacin abstracta de un grupo de objetos que tienen una estructura y un comportamiento comn. Por lo tanto: Recuerde que una clase es un molde para definir objetos y un objeto es una instancia de una clase. Tambin se explica que el disear una clase es parte del proceso de diseo de un programa y se nos muestra cmo encontrar clases. En la pgina 246 revise el subtema 10.2.2 Representacin de las clases y sus instancias para entender la relacin entre una clase y los objetos o sus instancias. Dentro de la definicin de la estructura de una clase es importante definir los atributos (estructura de la clase) y los mtodos (el comportamiento), una explicacin de las consideraciones a tener en cuenta, se describen en la pgina 247 en el acpite 10.3 Mtodos y encapsulamiento. Conviene tener presente que: Los nombres de las clases inician con la primera letra en mayscula, en caso de estar formada por ms de una palabra, la primera letra de cada palabra lleva su primera letra en mayscula. 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

realizar los pasos que se muestran a continuacin.

6.4Diseodeldiagramadeclases
En este momento es necesario revisar las pginas desde la 245, 249, 253 a la 255 del texto bsico como se indica a continuacin. Recuerde realizar una lectura comprensiva y el anlisis de los ejercicios que ah se encuentran. Tal y como se menciona en la pgina 245 del texto bsico para disear un programa POO el algoritmo tiene 2 pasos, el primero es disear el diagrama de clases, que lo podemos encontrar en la pgina 249 del texto bsico y el segundo paso es el diseo de la lgica de las clases en pseudocdigo, tarea que la hemos venido haciendo desde el captulo 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 mtodos, como en atributos (o datos). Para entender la diferencia entre una clase y un objeto vea la figura que se muestra en la pgina 253. Fjese 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, pgina 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 pgina 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 interaccin con el usuario. Todo lo anterior lo entenderemos en el siguiente punto. Una vez estudiados los conceptos de clases y objetos debemos analizar el pseudocdigo y entender como se soportan los nuevos conceptos estudiados. Para ello revise detalladamente el siguiente subtema.

6.5Diseodelalgicadelasclasesenpseudocdigo
Para desarrollar esta temtica revise las pginas desde la 258 a la 271 del Captulo 11 Programacin orientada a objetos aplicando la estructura de secuenciacin del texto bsico como se indica a continuacin. Recuerde realizar una lectura comprensiva y el anlisis 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

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 captulo 11 del texto bsico y empezar a leer el punto 11.1 Nuestro primer problema en la pgina 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 Diseo de algoritmos OO usando la secuenciacin en pseudocdigo y fjese como se ampla las capacidades de un algoritmo para soportar ms de una clase. Tambin revise el ejercicio de la pgina 261 y su explicacin en las pgina 262 a la 270. Antes de pasar con la implementacin en Java, revise los trminos Constructor y Destructor que se muestran en las pginas 270 y 271. Qu le pareci la lectura? Comprendi? Si es as continuemos con: La implementacin 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Ilustracin 1 Clase empleado 5 que hace las veces de Modelo

Observe como esta clase no define el mtodo principal, es decir que no puede ejecutarse por si sola. Adems y tal como se dice en la pgina 251 del texto bsico los atributos son privados y los mtodos son pblicos. Los atributos se definen desde la lnea 13 a la 16 de la Ilustracin 81 y todo lo dems son mtodos. Generalmente se suele definir por cada atributo los mtodos establecer y obtener adems de otros mtodos tiles que tienen la lgica del problema (como por ejemplo calcularSueldo). Los mtodos establecer sirven para configurar el valor de un atributo, mientras que los mtodos obtener sirven para consultar el valor de atributo. De ah la forma estndar de cada uno de ellos. Una buena prctica de programacin 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Los nombres de los mtodos suelen ser verbos, que inician con una letra minscula, en caso de estar compuesto por ms de una palabra, la segunda palabra inicia con la primera letra mayscula. Fjese en la diferencia con los programas que se desarrollaron en el captulo anterior. En el captulo 5 los mtodos y atributos se declararon como estticos por que iban a ser invocados sin la creacin de objetos. No as en los ejemplos de este captulo en donde los atributos y mtodos no tienen la palabra static, ya que se crea por lo menos un objeto (Vea la Ilustracin 82 en la lnea 22). La siguiente imagen muestra la clase controlador

Ilustracin 2 Clase controlador

La Ilustracin 82 muestra el controlador del ejemplo que estamos desarrollando, aqu vemos como se crea un objeto (lnea 22) y como se invoca a los mtodos (lneas 30-32, 34 y 37), este proceso de invocacin a mtodos tambin se llama envo de mensajes. Siempre que trabajemos con ejercicios de POO la clase controlador tendr el mtodo principal y crear objetos o instancias del modelo; interactuar con el usuario y manipular las instancias creadas. En la clase controlador se pueden crear ms de un objeto y manipularlos segn sean las necesidades del programa que estamos elaborando. Los ejercicios que se desarrollaran en esta seccin sern sencillos y en el mismo estilo que lo muestran las imgenes anteriores. Finalmente en la pgina 270 del texto bsico se habla de constructores y destructores, mientras que en la pgina 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

constructor. Recuerde que la funcin principal de un constructor es dar valores iniciales a uno o varios atributos de la clase, sino existe ningn constructor los atributos toman valores por defecto segn sus tipos de datos; cero para los nmeros y nulo para los datos texto. Un constructor tendr el mismo nombre de la clase (coincidiendo hasta en las maysculas y minsculas), nunca tendr tipo de dato de retorno y puede tener parmetros o no. Los parmetros se usan para asignar valores a los atributos. En Java un constructor tiene la siguiente forma:

Ilustracin 3 Constructor de la clase Empleado5

Dentro de los lenguajes de programacin, como Java y C#, es posible crear una clase que tenga ms de un constructor, a lo que se llama sobrecarga de constructores. Es inusual crear un programa que trabaje con algn destructor, tanto a nivel se pseudocdigo, como a nivel de Java, razn por la cual no se cubren ni en la presente gua didctica ni en el texto bsico. Estudiemos con ejemplos los conceptos que se presentaron en este captulo. Revise detalladamente el anlisis que se hace a cada uno de los ejercicios.

6.6Ejercicios
Es necesario tener presente que: en el anlisis de los ejercicios desarrollados se utiliza nmeros para referirse a lneas de cdigo de los programas Java. Mientras que, para los algoritmos escritos en pseudocdigo se utiliza letras del alfabeto y a veces la combinacin de letras y nmeros. 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 depsitos, retiros y consulta de saldo.
Algoritmo CUENTA AHORROS Clase Cuenta 1. Declaraciones Datos saldo : Real 2. Mtodo 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

a. saldo = saldoInicial 3. Fin Mtodo Cuenta 4. Mtodo obtenerSaldo () : Real a. return saldo 5. Fin Mtodo obtenerSaldo 6. Mtodo depositar (monto : Real) a. saldo = saldo + monto 7. Fin Mtodo depositar 8. Mtodo retirar (monto : Real) a. IF monto < saldo THEN 1. saldo = saldo monto b. ENDIF 9. Fin Mtodo retirar Fin Clase Fin Algoritmo EJECUTA CUENTA AHORROS Clase EjecutaCuenta 1. Mtodo 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 Mtodo Principal Fin Clase Fin

Los programas en Java se muestran a continuacin:

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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Ilustracin 4 Clase Cuenta

Ilustracin 5 Ejecuta Cuenta

La salida del programa anterior se muestra a continuacin:

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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Ilustracin 6 Salida de la clase EjecutaCuenta

Anlisis: No olvide que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 84. Analicemos la clase Cuenta, esa clase tiene un atributo que se llama saldo (Vea el punto 1. la lnea 13) Recuerde que en Java los atributos son privados y los mtodos pblicos. Uno de los mtodos es un constructor (El mtodo del punto 2 del algoritmo o la lnea 15 Java). Los constructores sirven para inicializar los atributos, en este caso el nico atributo (saldo) se inicializa con el parmetro del constructor. Los otros mtodos son obtenerSaldo, que lo nico que hace es devolver el valor del atributo saldo, el mtodo depositar, incrementa el saldo de la cuenta, por tal motivo recibe un parmetro que se agrega al valor actual del saldo. El mtodo retirar, disminuye el saldo en una cantidad (monto), antes de la disminucin del saldo se debe verificar que es posible realizar la transaccin, para ello se usa el IF (punto 8.a del algoritmo o la lnea 28 Java). La clase EjecutaCuenta, tiene el mtodo 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 lnea bajo el punto b. del algoritmo o la lnea 16 Java). Cuando se crea un objeto se invoca por defecto al constructor, por lo que se ejecutara el nico constructor que recibe un parmetro que es el saldo inicial de la cuenta. Luego se aplican los mtodos obtenerSaldo (puntos c., f., e i. lneas 18, 22 y 26), depositar (punto e. o lnea 20), retirar (punto h. o lnea 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 pginas Web) Cuando se cree el contador se inicializa en 0 y se debe incrementar en una unidad su valor a travs de un mtodo.
Algoritmo CONTADOR Clase Contador 1. Declaraciones Datos contador : Entero 2. Mtodo obtenerContador () : Entero a. return contador 3. Fin Mtodo 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

4. Mtodo incrementar() a. contador = contador + 1 5. Fin Mtodo incrementar Fin Clase Contador Fin

El programa en Java se muestra a continuacin

Ilustracin 7 Clase contador

Ilustracin 8 Ejecuta la clase Contador

La siguiente ilustracin muestra la salida del programa de la Ilustracin 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Ilustracin 9 Salida del programa EjecutaContador

Anlisis: Tenga presente que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 88. La clase Contador es bastante sencilla, posee un atributo y dos mtodos, 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 (lneas de la 14 a la 16) y se invoca 2 veces al mtodo incrementar para el objeto c1 (lneas 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 lneas 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 informacin de este contador de llamadas. Despus de una llamada (entrante o saliente) el respectivo contador debe incrementarse, segn los segundos que dur la llamada. Cuando el usuario consulte alguno de los contadores debe visualizar la informacin en horas, minutos y segundos. Mientras que la representacin en segundos queda para uso interno. Es posible tambin que el usuario reinicie los contadores. El algoritmo:
Algoritmo CONTADOR LLAMADAS Clase ContadorLlamadas 1. Datos entrantes : Entero salientes : Entero 2. Mtodo 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

b. salientes = 0 3. Fin Mtodo ContadorLlamadas 4. Mtodo incrementarEntrantes (cant : Entero) a. entrantes = entrantes + cant 5. Fin Mtodo incrementarEntrantes 6. Mtodo incrementarSalientes (cant : Entero) a. salientes = salientes + cant 7. Fin Mtodos incrementarSalientes 8. Mtodo obtenerEntrantes () : Texto a. Declaraciones Variables salida : Texto b. salida = convertirHHMMSS(entrantes) c. return salida 9. Fin Mtodo obtenerEntrantes 10. Mtodo obtenerSalientes () : Texto a. Declaraciones Variables salida : Texto b. salida = convertirHHMMSS(salientes) c. return salida 11. Fin Mtodo obtenerSalientes 12. Mtodo 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 Mtodo convertirHHMMSS 14. Mtodo reiniciarContadores() a. entrantes = 0 b. salientes = 0 15. Fin Mtodo reiniciarContadores Fin Clase ContadorLlamdas Fin

A continuacin 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Ilustracin 10 Programa Contador de Llamadas

Ilustracin 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

La salida de la ejecucin de la clase EjecutaContadorLlamadas es la siguiente:

Ilustracin 12 Salida del programa EjecutaContadorLlamadas

Anlisis: Recuerde que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 90. La clase ContadorLlamadas tiene dos atributos (entrantes y salientes) que se muestran en el punto 1 o en las lneas 13 y 14. Posee un constructor (puntos 2 al 3 o lneas 16 a la 19). Adems existen dos mtodos incrementar, uno incrementa el contador de llamadas entrantes (puntos desde el 4 hasta el 5 o lneas desde la 21 hasta la 23) y el segundo las salientes (puntos desde el 6 hasta el 7 o lneas desde la 25 hasta la 27). Tanto el mtodo obtenerEntrantes, como el mtodo obtenerSalientes devuelve sus valores en formatos horas, minutos y segundos; para ello deben invocar al mtodo convertiHHMMSS (puntos 8.b y 10.b o lneas 32 y 40) enviando los valores de sus respectivos atributos. El mtodo 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 lnea 48), el valor sobrante (punto 12.c o lnea 49), se transforma en minutos (punto 12.d o lnea 50), el sobrante (punto 12.e o lnea 51), se transforma en segundos. Finalmente los valores de horas, minutos y segundos se concatenan para cumplir con el formato requerido. El ltimo mtodo reiniciarContadores encera los atributos a 0. El mtodo EjecutaContadorLlamadas crea un objeto de la clase ContadorLlamadas se incrementa los minutos (lneas 16 y 17) se presentan los valores (lneas 19 y 20), nuevamente se incrementan los contadores (lneas 22 y 23) se presentan los contadores (lneas 25 y 26) y finalmente se reinician los contadores (lnea 28) y se presentan los mismos (lneas 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

4. Construir una clase calculadora, que permita realizar las cuatro operaciones matemticas: suma, resta, divisin y multiplicacin.
Algoritmo CALCULADORA Clase Calculador 1. Datos num1 : Entero num2 : Entero resultado: Entero 2. Mtodo Sumar() a. resultado= num1+num2; 3. Fin Mtodo Sumar 4. Mtodo Restar() a. resultado= num1-num2; 5. Fin Mtodo Restar 6. Mtodo Dividir() a. resultado= num1/num2; 7. Fin Mtodo Dividir 8. Mtodo Multiplicar() a. resultado= num1*num2; 9. Fin Mtodo Multiplicar 10. Mtodo asignarNum1(numero: entero) a. num1= numero 11. Fin Mtodo asignarNum1 12. Mtodo asignarNum2(numero: entero) a. num2= numero 13. Fin Mtodo asignarNum2 14. Mtodo obtenerResultado(): entero a. return resultado 15. Fin Mtodo 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

Ilustracin 13 Clase Calculador

Ilustracin 14 Clase de prueba de la Clase Calculador

Anlisis: Tenga presente que: para el anlisis del cdigo Java todas los nmeros de lneas hacen referencia a la Ilustracin 93. La clase Calculador tiene tres atributos que se muestran en las lneas

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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

37,38 y 39. La clase no cuenta con un constructor definido, pero si cuenta con cuatro mtodos sumar, restar, dividir, multiplicar (lnea 40, 43, 46 y 49 del cdigo Java) todos los mtodos 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 lnea 12 del cdigo Java se instancia la clase en un objeto denominado objCalculador,. En las lneas 18 y 19 del cdigo Java se asigna valor a los atributos de la clase num1 y num2, mediante los mtodos del objeto asignarNum1 y asignarNum2 con los valores ingresados por el usuario. Posteriormente se solicita que el usuario ingrese la operacin a realizar que es evaluada mediante una estructura de control switch , que dependiendo de la entrada ser realizan las llamadas a los mtodos de la clase como se realiza en las lneas 25, 26, 27 y 28 del cdigo Java de la Ilustracin 94. Finalmente se presenta el resultado de la operacin, realizando una invocacin al mtodo obtenerResultado del objeto objCalculador en la lnea 33 del cdigo Java. 5. Construir una clase Numero que tenga atributos cantidad formateada y cantidad no formateada, y un mtodo 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. Mtodo CambiarNumero() a. numConFormato=insertarComas(numeroSinFormato) b. Fin Mtodo CambiarNumero 3. Mtodo asignarNumSinFormato( numero: entero) a. numSinFormato=numero b. Fin Mtodo AsginarNumSInFormato 4. Mtodo obtenerNumConFormato( ): Cadena a. return numConFormato b. Fin Mtodo obtenerNumConFormato 5. Mtodo insertarComas (cantidad: Entero): Cadena a. Declaraciones Contador, i: Entero cadena, tresCifras,cadenaComas: Cadena b. posicin: arreglo[numPalabras] Entero c. Cadena=Cambiar a cadena cantidad d. Posicin= 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

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 Mtodo insertarComas


Fin de la clase

Los programas Java se muestran a continuacin

Ilustracin 15 Clase Numero

Anlisis: Tenga presente que: para el anlisis del cdigo Java todas los nmeros

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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

de lneas hacen referencia a la Ilustracin 95. La clase Numero contiene dos atributos que son numSinFormato y numConFormato (lnea 23 y 24 del cdigo Java). El primero contiene un numero entero que nos servir como entrada en el mtodo insertarComas que tienen como salida una cadena de un nmero con una coma cada tres cifras. Otros elementos a destacar son que: la clase contiene dos mtodos cambiarNumero e insertarComas. El primero hace una llamada a insertarComas y asigna el resultado a la variable numConFormato (lnea 26 del cdigo Java). El segundo mtodo recibe como parmetro un entero sin formato y devuelve una cadena. El proceso utiliza algunas variables: cadena (lnea 30 del cdigo Java) que almacenar el numero en cadena sin formato, tresCifras (lnea 31 del cdigo Java) que temporalmente permitir agregar una coma cada tres cifras, cadenaComas(lnea 32 del programa Java) que contiene la cadena final ya con el formato requerido, posicin (lnea 34 del programa Java) con la posicin de el ltimo indice de la cadena con el fin de iniciar a insertar de derecha a izquierda, numComas (lnea 35 del programa Java) que contiene el nmero de cifras a recorrer para insertar las comas. El proceso en si inicia en la lnea 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 (lnea 38 a la 46 del cdigo Java). Seguido se retorna la cadena ya formateada con comas. Finalmente tenemos los mtodos para asignar (lnea 50) (lnea 53) los valores a los atributos. y obtener

Hemos llegado al final del presente captulo, en el cual analizamos los conceptos fundamentales de la POO, estudiamos la manera de como implementar a travs de pseudocdigo programas desarrollados bajo esta metodologa. Tambin analizamos la forma de representar en Java este tipo de problemas y finalmente revisamos los constructores y su implementacin en Java. Con el afn de que ampli sus conocimientos sobre este tema y su representacin en Java le proponemos que lea detenidamente el siguiente material adicional. Material adicional: En el CD que se adjunt en la gua, puede revisar (programacin-enjava-i\Contenidos\LecturaObligatoria\) los archivos: 9-objetosyclases.pdf 13-constructores.pdf

Una vez concluido el captulo 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/).

EscueladeCienciasdelaComputacinUTPL FundamentosdelaProgramacin Autores:Ing.JorgeLpez,Ing.GreysonAlberca

comprensin 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 gua didctica.

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/).

Potrebbero piacerti anche