Anda di halaman 1dari 16

Programacin orientada a objetos I

Programa desarrollado

Ingeniera en Desarrollo de software CUATRIMESTRE: 04

Programa de la asignatura: Programacin orientada a objetos I Unidad 3. Caractersticas de POO y Excepciones

Clave: 160920414 / 150920414

1 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 1

Programacin orientada a objetos I


Programa desarrollado

ndice
Unidad 3. Caractersticas de POO y Excepciones ...................................................................... 3 Presentacin de la unidad........................................................................................................... 3 Propsito ........................................................................................................................................ 3 Competencia especfica .............................................................................................................. 3 Consideraciones especficas de la unidad ............................................................................... 3 3.1. Herencia ................................................................................................................................. 3 3.1.1. Subclases y superclases .................................................................................................. 4 3.1.2. Jerarqua de la herencia ................................................................................................... 6 3.1.3. Clases y mtodos abstractos .......................................................................................... 6 3.2. Polimorfismo .......................................................................................................................... 7 3.2.1. Clases y mtodos finales ................................................................................................. 8 3.2.2. Interfaces ............................................................................................................................ 8 3.2.3. Sobrecarga de mtodos ................................................................................................... 9 3.2.4. Sobrecarga de operadores .............................................................................................. 9 Actividad 1. Herencia y polimorfismo ...................................................................................... 10 Actividad 2. Cuadro sinptico ................................................................................................... 10 3.3. Excepciones ........................................................................................................................ 11 3.1.1. Sentencia Try-catch ........................................................................................................ 11 3.1.2. Tipos de errores............................................................................................................... 12 3.1.3. Jerarqua de las excepciones ........................................................................................ 12 Actividad 3. Manejo de excepciones ....................................................................................... 13 Autoevaluacin ........................................................................................................................... 14 Evidencia de aprendizaje. Implementacin de clases abstractas ...................................... 14 Para saber ms........................................................................................................................... 16 Fuentes de consulta ................................................................................................................... 16

2 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 2

Programacin orientada a objetos I


Programa desarrollado

Unidad 3. Caractersticas de POO y Excepciones Presentacin de la unidad


En esta tercera unidad de Programacin orientada a objetos I (POO I), aprenders el concepto de herencia y polimorfismo, as como el manejo de excepciones y la sintaxis JAVA para su aplicacin.

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.

Consideraciones especficas de la unidad


Es muy importante que captures todos los programas de ejemplo, para que analices su sintaxis y puedas comprender mejor los temas vistos.

3.1. Herencia

3 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 3

Programacin orientada a objetos I


Programa desarrollado

En la definicin del lenguaje Java se pens en una de sus caractersticas ms sobresalientes: la herencia. 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.

3.1.1. Subclases y superclases


En el lenguaje Java existen dos categoras en las cuales puede agruparse las clases: superclase, que es la clase existente y subclase, que es la clase derivada de la primera. Otro trmino usado comnmente para la superclase es clase padre y la subclase tambin se le conoce como clase hija. Para entender mejor la clase derivada se dir que es aquella que aade variables de instancia y mtodos a partir de los heredados (obtenidos) desde la clase padre. En la siguiente figura se ejemplifica el modo en que se heredan sus mtodos y atributos entre las clases. La clase padre es Persona y sus subclases son Estudiante y Profesor, debe notarse de igual manera que la clase Profesor a su vez funge con dos roles distintos: es subclase de la superclase Persona y es superclase de las subclases Asignatura y Base.

Figura 3.1. Ejemplo de herencia En un ejemplo ms sobre la herencia de la superclase hacia la subclase debe imaginarse que se cuenta con la clase circulo que es perfecta para hacer algunas operaciones y abstracciones matemticas y por supuesto nos servir para ms de un propsito y ms de una aplicacin donde se utilice un crculo y las operaciones bsicas inherentes a l. Para algunas otras aplicaciones tal vez se precise manipular la clase crculo (con sus mtodos y atributos bsicos) de otra manera y se necesite imprimirlo a pantalla. Para no modificar 4 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 4

Programacin orientada a objetos I


Programa desarrollado

por completo la clase crculo, que ya es usada por cientos de aplicativos ms y resultaran seriamente perjudicados, se crear una subclase de la clase padre circulo, se llamar Dibujacirculo que tendr la misma funcionalidad que su clase padre, ms un mtodo aadido: imprimeCirculo. Una manera de hacerlo es como sigue:

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

5 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 5

Programacin orientada a objetos I


Programa desarrollado

completo sus mtodos y atributos con los modificadores de acceso que se le indicaron en la clase padre.

3.1.2. Jerarqua de la herencia


En el lenguaje Java cada clase que se escribe es una superclase por definicin. Si no se escribe especficamente la palabra reservada extends, la superclase ser la clase Object, que por muchas razones es un tipo especial de clase, se listan a continuacin: 1. Desde la definicin de Java, es la nica clase que no tiene superclases. 2. Los mtodos definidos en la clase Object pueden ser invocados desde cualquier clase Java. Por lo descrito anteriormente, todas las clases en java pueden ser superclases, se deber marcar una jerarqua de clases en Java donde su raz deber ser la clase Object, se presenta una imagen de su posible representacin con nuestro ejemplo citado de la clase crculo.

Figura 3.2 Ejemplo de la jerarqua de la herencia en la clase circulo

3.1.3. Clases y mtodos abstractos


Con la salida a la luz del paradigma de programacin orientado a objetos, de igual manera surgieron muchos problemas inherentes a la comprensin sobre la forma de representar cosas y ms an conceptos en forma de un objeto en lenguaje de programacin Java. 6 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 6

Programacin orientada a objetos I


Programa desarrollado

Por lo descrito, muchas ocasiones se desea representar conceptos abstractos en forma de una clase que pueda ser manejada por Java, pero por la misma definicin de su abstraccin no se pueden instanciar a partir de ellas un nuevo objeto. Consideremos por 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.

7 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 7

Programacin orientada a objetos I


Programa desarrollado

3.2.1. Clases y mtodos finales


Las clases se declaran como finales cuando se pretende que no se pueda derivar de sta. Es decir si se crea una clase y se quiere que no se creen clases hijas de sta (que hereden), entonces la clase deber ser declarada como final, para indicar que no se pueden crear otras clases a partir de ella y que terminan con una cadena de herencia. Esto se declara de la siguiente manera: final class ClaseFinal { //aqu va el cuerpo de la clase } Que como se muestra solo hace falta aadir la palabra final al inicio de la declaracin de la clase. Por su parte los mtodos finales son aquellos que no pueden ser redefinidos, es decir que en ellos no se podr aplicar ni herencia ni polimorfismo. Su declaracin al igual que la clase final solo consta de anteponer la palabra reservada final a la declaracin de mtodo en cuestin. final public void metodoFinal(){ //...aqu va el cuerpo del mtodo } Entonces se usar la palabra final en las clases y mtodos que ya no se puedan heredar, ni redefinir, es decir, aquellos que no deban ser modificados en ninguna otra clase.

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 8 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 8

Programacin orientada a objetos I


Programa desarrollado

normal de compilacin, el compilador pone cada interface identificada en un archivo de bytecode por separado como si fuera una clase normal, adems como en las clases abstractas, slo tiene la definicin de mtodos pero no la implementacin de ellos. En esencia una interfase podra identificarse como lo mismo que una clase abstracta. El gran diferenciador entre ellas y lo que justifica la existencia de las interfaces es porque pueden emular el comportamiento de la herencia mltiple, que no lo soportan las clases abstractas. Una interfase se puede considerar una clase abstracta de hecho, y en ella se toma en cuenta lo siguiente (Flanagan, 1997): 1. 2. 3. Todos los miembros son pblicos. Todos los mtodos son abstractos. Todos los campos son static y final.

Una interfase consta de dos elementos bsicos: 1. 2. La declaracin que es donde se colocan los diversos atributos acerca de la interface como el nombre o si se extiende de otra interfase, y El cuerpo que contiene la declaracin de los mtodos y las constantes que conforman la propia interfase.

3.2.3. Sobrecarga de mtodos


Como se dijo en la definicin de polimorfismo, cuando se sobrecarga un mtodo se parte del concepto de la clase abstracta. Imaginemos que tenemos la clase abstracta identificada como fruta y dentro de esta clase est declarado el mtodo pelarFruta. De esta clase abstracta se hereda este mtodo (y otros tantos que conciernen a todas las frutas) hacia las subclases manzana y naranja; al tratar de utilizar el mtodo pelarFruta deber sobrecargarse porque la accin de pelar la fruta se hace de manera distinta entre una manzana y una naranja, que son las clases a donde se hered este mtodo. As pues en cada clase donde se herede el mtodo puede implementarse de manera diferente el mtodo, se dice que se sobrecargan sus funciones pues son diferentes para cada una de las subclases.

3.2.4. Sobrecarga de operadores


9 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 9

Programacin orientada a objetos I


Programa desarrollado

La sobrecarga de los operadores permite redefinir las funciones que se le asignan por definicin a un operador, por ejemplo el operador + (ms) y el operador . (punto), se pueden utilizar para realizar otras funciones que las regulares. Como ejemplo prctico y conocido, el operador + en el mundo Java sirve para dos cosas, al estar sobrecargado: 1. 2. Para realizar la operacin de suma, cuando se acompaa de datos numricos. 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.

Actividad 1. Herencia y polimorfismo


Esta actividad tiene como finalidad que reflexiones sobre el concepto y uso de la herencia y el polimorfismo. 1. Identifica el concepto de herencia y polimorfismo. 2. Ingresa al foro y genera una nueva entrada.

Actividad 2. Cuadro sinptico


El propsito de esta actividad es que identifiques los conceptos de herencia y polimorfismo, as como su aplicacin en JAVA.

1. En un archivo de texto, realiza el cuadro sinptico de herencia y polimorfismo, as como su aplicacin en JAVA. Usa tu imaginacin, puedes agregar imgenes y colores tantos como sea necesario.

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. 10 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 10

Programacin orientada a objetos I


Programa desarrollado

3. Enva el archivo a tu Facilitador(a) para recibir retroalimentacin.

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.

3.1.1. Sentencia Try-catch


La manera de controlar las excepciones es mediante una sentencia llamada try catch, que si lo traducimos a espaol sera algo como intenta atrapa, y realmente esto es lo que hace la sentencia, pues dentro del try se coloca el cdigo vulnerable a errores, para que el programa lo intente, y en caso de que ocurra un error lo atrape en la sentencia catch. Veamos el siguiente ejemplo:

11 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 11

Programacin orientada a objetos I


Programa desarrollado

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.

3.1.2. Tipos de errores


Esencialmente cuando se refiere a los tipos de errores en el lenguaje Java se clasifican dentro de dos tipos bsicos: 1. Aquellas generadas por el lenguaje Java. stas se generan cuando hay errores de ejecucin, como al tratar de acceder a mtodos de una referencia no asignada a un objeto, divisin por cero, etc. 2. Aquellas no generadas por el lenguaje, sino incluidas por el programador, como al tratar de leer un archivo o tratar de hacer conexin a una base de datos especfica.

3.1.3. Jerarqua de las excepciones


En el momento en que es lanzada una excepcin, la mquina virtual Java recorre la pila de llamadas de mtodos en busca de alguno que sea capaz de tratar la clase de excepcin lanzada. Para ello, comienza examinando el mtodo donde se ha producido la excepcin; si este mtodo no es capaz de tratarla, examina el mtodo desde el que se 12 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 12

Programacin orientada a objetos I


Programa desarrollado

realiz la llamada al mtodo donde se produjo la excepcin y as sucesivamente hasta 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.

Actividad 3. Manejo de excepciones


Con el fin de tener claro el tema de excepciones en JAVA, realiza un ensayo con las siguientes caractersticas:

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.

13 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 13

Programacin orientada a objetos I


Programa desarrollado

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.

Evidencia de aprendizaje. Implementacin de clases abstractas


Como parte de la evaluacin de esta unidad, realiza un programa cuyo propsito es organizar los conceptos abordados a lo largo de la unidad. 1. En NetBeans crea un nuevo proyecto, dentro de ste crea las clases abstractas e interfaces proporcionadas y elabora sus respectivas clases de implementacin. 2. Consulta la Escala de evaluacin. 3. Guardar la evidencia con el nombre POO1_U3_EA_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 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).

14 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 14

Programacin orientada a objetos I


Programa desarrollado

Autorreflexiones

15 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 15

Programacin orientada a objetos I


Programa desarrollado

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_U3_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 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.

16 Ciencias Exactas, Ingenieras y Tecnologa | Ingeniera en Desarrollo de Software 16

Anda mungkin juga menyukai