Professional Documents
Culture Documents
La programacin orientada a objetos mira los fenmenos de la vida real de diferente perspectiva. PROGRAMACIN ESTRUCTURADA Tenemos la programacin estructurada, en la que se trabaja a travs de mdulos y procesos, dentro de los cuales se especifica lo que el usuario necesita. Por esto se la llama Programacin Modular. Consista en llenar lneas y lneas de cdigo, con el fin de encontrar solucin a los problemas. Sin embargo, sta soluciona muchas de las interrogantes que se presentan a menudo. La verdadera desventaja de este tipo de programacin es que se convierte en un cdigo no reutilizable, y con el ajetreo de hoy en da se requiere no slo un solucionador de problemas sino tambin una herramienta adecuada y rpida. PROGRAMACIN ORIENTADA A OBJETOS La programacin orientada a objetos (POO), a diferencia de la estructurada, trabaja con Divisin por mdulos (llamados mdulos a entidades u objetos). Ahora, la visin de la realidad se torna distinta, el programador visualiza la realidad a travs de objetos. Cada parte importante de algo es un objeto. Por ejemplo, piense en usted mismo y sus caractersticas que lo identifican: USTED es ya un objeto, que contiene objetos ms pequeos como su nombre, su direccin, su nmero de cdula, su edad, tu talla, su color, etc. La gran ventaja de este tipo de programacin es que, por su forma de ver las cosas, se convierte en una herramienta reutilizable para todos los casos. Piense en un rector de una universidad X. l posee caractersticas propias y adems sabe administrar dicha universidad. Cuando necesitemos analizar otro rector en una universidad Y, podremos utilizar al rector en X para simular uno en Y, lgicamente con diferente forma de administrar. MODELADO DE ENTIDADES DEL MUNDO REAL Antes de saber cmo modelar con entidades del mundo real, se debe entender de qu se trata una entidad del mundo real. Entidad del mundo real: Es un objeto que tiene funcionalidad y caractersticas propias. Objeto: Es una entidad del mundo real que tiene funcionalidad y caractersticas propias. Funcionalidad: Todo lo que un objeto es capaz de hacer. Nos referimos a una entidad como a cualquier ser propio del mundo real, que puede ser diferenciado uno de otro por sus atributos y funciones que puede desempear. Por ejemplo, un rbol, que es identificado por su tamao, especie, edad, y que adems cumple con varias funciones, tales como: dar fruto, alojar nidos de pjaros, proporcionar sombra, purificar el aire, etc. Una solicitud de ingreso posee atributos tales como: Nmero de folio, datos del aplicante, y cumple las funciones de devolver los datos en l ingresados, a la persona que autoriza dicho documento. Para que un objeto manifieste su funcionalidad, necesita ser invocado a travs de mensajes emitidos por otros objetos.
Manual de POO
Identificacin de Objetos: Se trata de indicar los objetos que van a interactuar en la utilizacin de un sistema determinado. Dentro de este subproceso se encuentra el anlisis de las caractersticas de dicho objeto y de las funcionalidades requeridas para el efecto. Abstraccin: Consiste en agrupar los objetos identificados por funcionalidad y caractersticas comunes. Esta agrupacin ser denominada de ahora en adelante como: CLASE. As, definiremos Clase como la abstraccin de un conjunto de objetos. Respecto a la clase a la que pertenece, se define a un objeto como una variable o instancia perteneciente a una clase definida. Encapsulamiento: Consiste en esquematizar cada una de las abstracciones definidas previamente, luego de agrupar sus caractersticas y funcionalidades. Esto permite la realizacin de un diagrama de clases. Diagrama de clases: Representacin grfica de las clases o abstracciones previamente definidas. Estas sern expresadas como rectngulos que contengan el nombre de la clase. Relacionar clases: Definir las interacciones entre clases, luego de determinar la dependencia entre ellas. Por ejemplo, una clase llamada Alumno, se relaciona automticamente con una clase Curso y sta a su vez, con una clase Materia, ya que un alumno se inscribe un curso determinado para recibir una o varias materias en dicho curso. Ejercicio Resuelto Realice el diagrama de clases para un Sistema de Inventario para una farmacia.
Manual de POO
Proveedor
Medicamento
CatalogoMed
CatalogoTipoMed
CatalogoArt
CatalogoEqu
SISTEMA DE INVENTARIO
Ejercicios Propuestos 1.- Realice el diagrama de clases especificando las funcionalidades de cada clase, para un local de venta de computadores. 2.- Realice el diagrama de clases especificando las funcionalidades de cada clase, para una gasolinera. 3.- Realice el diagrama de clases especificando las funcionalidades de cada clase, para un sistema de facturacin. 4.- Realice el diagrama de clases especificando las funcionalidades de cada clase, para un sistema de biblioteca. UML (Lenguaje de Modelado Unificado) El UML es un lenguaje grfico que nos permite representar clases, atributos, funciones y relaciones entre clases. Se trata de una sntesis de la abstraccin. Se tiene como estndar el siguiente: Clase - atributoPrivado: tipo + atributoPblico: tipo - metodoPrivado(nombreVariable: tipo): tipoDelMetodo + metodoPblico(nombreVariable: tipo): tipoDelMetodo Firma de mtodo: Cada lnea en la definicin de la clase que establece cada mtodo se denomina firma o declaracin del mtodo. Tipos de Atributos: Existen atributos privados y pblicos. Son atributos privados aquellos que son propios de una clase y no pueden ser compartidos para las dems.
Manual de POO
Manual de POO
PACKAGE Crculo
Punto
Esfera
PACKAGE
Clases
Clases
Ejercicio Propuesto 1.- Complete el ejemplo con los mtodos que se refieran al atributo, tanto selectores, como modificadores. Wrapper Classes.- Clases de envoltura que permiten manipular datos y vienen incorporadas en el lenguaje programador (p.ej. Java) String clase formada por chars. Integer clase formada por ints. Atributos propios, muy propios e invariantes, como el nombre de un Estudiante o su nmero de cdula, pueden no tener accesorio set, y otro tipo de atributos como el nmero de folio en una Solicitud, puede no tener accesorio get. Ejercicio propuesto Modele las clases Estudiante, Curso y Fecha, con los atributos y mtodos que usted considere necesarios para acceder y modificar su informacin.
Nota: Es ms eficiente modelar al nmero de cdula y al nmero nico como String, ya que modelarlos como double o float ocupa mucho ms espacio, p.ej. un double ocupa 64 bytes, mientras que un String de 10 caracteres ocupa 10 bytes.
MTODOS CONSTRUCTORES.En programacin estructurada se requera reservar memoria, para poder crear variables en tiempo de ejecucin, y luego borrar esa porcin de memoria. En la Programacin Orientada a Objetos el Garbage Collector (recolector de basura) se encarga de eliminar la memoria que ya no ser necesaria en el futuro de manera automtica.
Manual de POO
res
Memoria
c se elimina y queda res, as no se ocupa espacio con la misma variable. Constructores.- Mtodos que sirven para inicializar los valores de los atributos de un objeto al momento de crearlos (instanciarlos). Se ejecutan una sola vez por cada objeto, y no retorna valores. Su retorno no es void, ya que void ya es un tipo de retorno. Los mtodos constructores deben tener el mismo nombre de la clase a la que pertenecen, para crear el objeto de dicha clase. Adems se puede tener ms de un constructor para una clase, es decir que en programacin orientada a objetos se puede tener ms de un mtodo con el mismo nombre, con la condicin que los parmetros a ingresar en los mtodos no sean del mismo tipo, ni en el mismo nmero. Se debe escribir la clase tal como est en su definicin, empezando por una letra mayscula, ya que Java es sensible a maysculas. As una clase Estudiante puede definir varios mtodos, por ejemplo: Estudiante ( ): Se llama constructor por default, no tiene parmetros y crea objetos con todos los valores de sus atributos nulos. Siempre es bueno definir un constructor por default, para facilidad en tiempo de programacin.
Manual de POO
Aqu se da un ejemplo del uso de los constructores: Estudiante a Se hace una referencia a un Estudiante. Estudiante b = new Estudiante() Se crea un objeto de clase Estudiante, de nombre b, con sus atributos de valor nulo. Estudiante c = new Estudiante(200510236,Carolina,1986/09/26) Se crea un objeto de clase Estudiante, de nombre c, con valores para sus atributos. Estudiante d = new Estudiante(c) Se crea un objeto de clase Estudiante, de nombre d, con los valores de sus atributos iguales a los del objeto c. USO DE LOS MTODOS.En programacin orientada a objetos se declaran mtodos, para usarlos y especificar a qu objeto corresponde cada uno de ellos se utiliza la notacin Punto. En la notacin punto se sigue la siguiente estructura: objeto.Metodo(Parametros) Por ejemplo se definen las siguientes clases: Punto Circulo - x: double - centro: Punto - y: double - radio: double + setX(valueX: double): void + setCentro(valueCentro: Punto): void + getX( ): double + getRadio( ): double + setY(valueY: double):void + setRadio(valueRadio : double):void + getY( ): double + getCentro( ): Punto + moverX(newX: double): void + Circulo(initialCentro:Punto,initialRadio: + moverY(newY: double): void double) + Punto(initialX: double,initially: Se crea un objeto Punto de nombre q: double) Punto q = new Punto(3,4) Se crea un objeto Crculo de nombre z: Circulo z = new Circulo(q,5) Se desea que el radio del crculo z cambie a 10 z.setRadio(10) Se desea que cambie la coordenada x del centro de z a 20 z.getCentro().setX(20) El momento que escribimos z.getCentro() estamos manipulando a un objeto de tipo punto en este caso el punto q, y se puede utilizar cualquiera de los mtodos definidos para la clase Punto
Manual de POO
Fecha - dia: int - mes: int - anio: int + getDia(): int + setDia (valorDia:int):void
En este caso fecha no es un tipo de dato comn y corriente, que es asignado a un atributo, razonando con respecto a objetos, es otra clase, pues contiene un da, un mes determinado, y un ao, por lo que no puede ser del tipo String, ni int, ni tampoco es un nmero como double. En este caso se dice que existe una referencia entre las clases Alumno y Fecha, cuando se habla de referencia, nos estamos refiriendo a clases, ms no objetos. Cuando se habla de atributos, se habla de objetos, ya que un objeto contiene a otro objeto de otra clase. Como en el caso de dia: int. Un constructor solo se ejecuta 1 vez en 1 objeto y se puede tener varios constructores en1 clase. Es aconsejable tener un constructor por default. CONVENCIONES EN JAVA Para programar en lenguaje java, se deben seguir ciertas convenciones o reglas previstas con anterioridad. Entre estas tenemos: El archivo .java dentro del cual se almacena el contenido de la programacin de una clase Nombre, se llamar Nombre. Java. Si dentro del archivo se programa varias clases, se tomar en cuenta el nombre de la clase pblica o principal. Se puede definir
Manual de POO
Para las aplicaciones, es decir la clase donde se ejecuta el programa, Aplicacin.Java, contiene la sentencia public static void main(String []args) y a partir de sta se va construyendo el cdigo en la aplicacin. Y slo sta clase es la principal, lo contrario de las otras clases donde hay ms clases principales sin embargo la clase toma el nombre de la clase pblica. IMPLEMENTACIN Consiste en traducir a lenguaje java el diagrama UML del modelo orientado a objetos que escojamos. Implementemos la clase Punto:
package figuras; // Guarda este archivo .java en el package figuras public class Punto { private double x; // declara como variable privada de tipo double a x private double y; //El anterior se llama Bloque de Declaraciones // Declaracin de Funciones //Constructores public Punto() { // Funcin por default x = 0; y = 0; } public Punto (double initialX, double initialY) { //Funcin con parmetros x = initialX; y = initialY;
Manual de POO
As, pueden haber varias funciones con un mismo nombre, cuya diferencia ser solamente sus argumentos. Este es el caso de SOBRECARGA DE FUNCIONES. Tambin, se puede manipular objetos desde una nueva clase, si es preciso, misma que, para este ejemplo, declararemos como clase de aplicacin o principal.
public class AplicaPunto { public static void main (String [ ]args ) { //Declaracin de una funcin main Punto a = new Punto(); Punto b = new Punto(10,20); b.moverPunto (10,10); //Mueve el punto b en (10,10) b.setX(0); //Asigna a la coordenada x el valor de 0 b.imprimir(); //Imprime las coordenadas del punto b double valor = a.getX(); //Devuelve en la variable valor la coordenada en x del punto a b.moverPunto(a); //Mueve las coord. del punto b en a (Increm. en a) b.moverY(a.getX()); //Mueve la coord. Y de b en X de a Punto c = new Punto (a); //Crea un nuevo punto c con atributos de a System.out.println(c.getX()); //Imprime la coord. X del punto c.
Para hacer explcito el package en el que deseo que est contenido Punto, utilizo:
Manual de POO
10
Manual de POO
11
Los mtodos anteriormente implementados incluyen la definicin de datos, las funciones constructoras y accesorias para cada atributo, funciones definidas por el usuario, tales como la de imprimir datos en dos o ms formatos, sumar complejos devolviendo un complejo, imprimir datos bajo ciertas condiciones, etc. CLASE APLICACOMPLEJO
package complejos; public class AplicaComplejo { /** * @param args */ public static void main(String[] args) { Complejo a = new Complejo(10,20); //Creacin de nuevos complejos Complejo b = new Complejo(); b.setReal(100); //Asignacin del valor 100 a la parte real del complejo b b.imprimirDatos(); //Impresin de los datos del complejo b a.incrementarEnUno(); //Incremento en uno al complejo a a.imprimirDatos(); Complejo c = new Complejo(); c.setReal(10); c.setImag(15); //Asignacin del valor 15 a la parte imag. del complejo c //Suma del complejo b al a e impresin de resultados a.sumaComplejos(b).imprimirDatos(); a.sumaComplejos(b).imprimirDatos(); //Impresin de datos con diferente formato a.imprimirFormaCompleja(); b.imprimirFormaCompleja(); c.imprimirFormaCompleja(); a.setImag(-100); a.imprimirFormaCompleja();
Manual de POO
12
Como podemos notar, la clase AplicaComplejo, trabaja con objetos, realizando llamadas o invocando a los mtodos de la clase Complejo de acuerdo con lo que necesite. Esto permite que la manipulacin de los mtodos y atributos sea mucho ms fcil y rpida.
Nota: Una operacin binaria siempre tendr 1 parmetro cuando retorna algo. Una operacin binaria que no retorna algo tiene 2 parmetros. Una operacin unaria no necesita parmetros. a.incrementoUno() { public void incrementoUno() { x++; y++; }
ASIGNACIN DE MEMORIA En el caso de asignacin de memoria, en el ejemplo anterior la variable c es una referencia de res. Cuando se termina la funcin se elimina res y queda el nombre c. Esto se realiza mediante el garbage colector. c se elimina y queda res, as no se ocupa espacio con la misma variable.
Ejercicio Resuelto: 1.- Implemente una clase Carta que valide que las cartas que se ingresen estn dentro del rango determinado.
public class Carta { private String palo; private String numero; private String[] palos = {"C","D","T","E"}; private String[] numeros = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; public Carta() { palo = null; numero = null; } public Carta( String initialNumero, String initialPalo) { numero = initialNumero;
Manual de POO
13
Como otra convencin de Java, se debe saber que cuando se trabaja con objetos no se utiliza (==) para comparar, sino equals y el objeto. EXCEPCIONES Es un error inesperado en tiempo de ejecucin.
Manual de POO
14
Exception
ArithmeticException
NumberFormatException
IOException
ArgIndezOrtof
Try: Sabe el error Catch: Captura el error Ejemplo: Try { int n = 5; int d = 0; int r = n/d; System.out.println(RES r); } Catch (ArithmeticException) { System.out.println(ERROR div 0); } El catch evita que se caiga el programa capturando el objeto se puede tomar medidas sobre el error. Tambin funcionara la excepcin escribiendo Exception ArithmeticException, pero no se sabra el detalle del error. en lugar de //captura el error
El error debe capturarse en la fundn porque si se captura en el main, y se vuelve a usar el main se tendra que usar el capturador en cada main.
Manual de POO
15
Throw new ArithmeticException, realiza casi la misma funcin que el try y catch con la diferencia de que el error no se captura. El throws exception se utiliza en la funcin para que llame y capture. Y de esta manera en cierta forma acta como un aviso dentro de la funcin advirtiendo que existe una excepcin. CARDINALIDAD La cardinalidad hace referencia a un conjunto de objetos que son contenidos por otro. Entre los conceptos ms importantes dentro de este tema tenemos: Coleccin: Conjunto de objetos de un mismo tipo. Como ejemplo: Alumno Curso
De esta manera se representa la cardinalidad entre dos clases. En este caso demuestra que un CURSO TIENE VARIOS ALUMNOS. De esta manera CURSO se constituye como una COLECCIN DE ALUMNOS. Al ser una coleccin de alumnos, Curso debe tener un arreglo que contenga objetos tipo Alumno. Estos e consigue implementando un arreglo de alumnos, que sera un array de referencias.
Manual de POO
16
Referencia a un objeto
Para la implementacin: Alumno alumnos[] = new Alumno[ 10 ] // De esta manera se crea un objeto arreglo Nmero de posiciones del arreglo alumno[0] = new Alumno() ; // Coloco un objeto en el arreglo Como se puede ver, primero se debe instanciar el objeto, para luego poder usar el arreglo como desee. Ejercicio Propuesto 1.- Implemente una clase Curso que contenga un nmero mximo de alumnos, que sume su edad, imprima sus datos. Adems aada funciones para realizar lo siguiente: Aadir un alumno Buscar un alumno Eliminar un alumno Cambiar o modificar los datos de un alumno Funcin que devuelva un arreglo que contenga todos los nombres de los alumnos del curso. Funcin que calcule el promedio de iras de los alumnos del curso Funcin que devuelva un arreglo con el nmero nico, nombre e IRA de todos los alumnos del curso. Funcin que imprima todos loa alumnos de un curso. HERENCIA Es una relacin que se da entre dos clases de la misma ndole que permite compartir atributos y funciones entre ellas. Nos permite crear clases a partir de otras ya creadas. Si quisiramos implementar una clase Alumno, pero existen alumnos de tecnologa, de ingeniera, de costura, etc., para cada una de las clases tendramos que digitar el cdigo con todos los atributos y a su vez, los mtodos accesorios para cada uno de ellos.
Alumno
Manual de POO
AlumnoTecnol
AlumnoIng
AlumnoCostura
Con una relacin de herencia podremos evitar este inconveniente, reduciendo el cdigo de manera notoria. Las clases AlumnoIng, AlumnoTecnol y AlumnoCostura heredaran de la clase Alumno todos sus atributos ya dems cada una de ellas tendra algunos extras que son especficos para cada clase. Para esto aplicamos implcitamente el concepto de GENERALIZACIN, que consiste en partir desde lo especfico e ir a lo general, como es abreviar las clases e implementar solamente una clase Alumno que tenga los atributos y funciones en comn para todas las dems, y luego heredarlos a las dems clases. As:
Alumno
AlumnoTecnol
AlumnoIng
AlumnoCostura
Esta sera la representacin en UML de una relacin de herencia. Alumno constituye la Clase Base o Superclase y Las dems se llamarn Clases Derivadas o Subclases. En este momento las clases heredadas comparten todos los miembros de Alumno excepto los MIEMBROS PRIVADOS. stos podrn ser vistos de forma indirecta, por medio de los mtodos get() y set(). Condicin de Herencia: Una clase puede ser herencia de otra siempre y cuando cumpla con la afirmacin: ClaseHeredada ES UN /A ClaseBase Tipos de proteccin de Atributos Como sabemos, los tipos de proteccin que se han utilizado hasta hoy han sido privado y pblico. Sin embargo, se han ocasionado insuficiencias en la seguridad interna de los sistemas, de modo que se necesitaba tener una proteccin que permita compartir miembros completamente a las subclases y mantener totalmente privados los miembros para las clases enlazadas por asociacin.
Manual de POO
18
Animal
Mamfero
Ave
Pez
Perro
Ballena
guila
Cndor
Tiburn
BallenaGris
BallebaJorobada
Ejercicio Propuesto 1.- Considere una empresa de contenedores. Se tiene contenedores rectangulares y cilndricos. Cada contenedor tiene una placa, color, profundidad. El contenedor rectangular tiene largo, ancho y profundidad, mientras que el cilndrico tiene radio y profundidad. Calcular el volumen, rea y permetro de los contenedores. Para el contenedor cuadrado se requiere un nmero de autorizacin municipal y para el cilndrico un nmero de patente del material (tipo enteros). Implemente el ejemplo. STRING TOKENIZER Son objetos que se pueden separar en Strings ms pequeos, conocidos como tokens. Por ejemplo si se tiene la cadena DISK_40_1970 se la puede separar en DISK, 40 Y 1970. Para emplear los StringTokenizer es necesario separar los tokens mediante un guin - o un subguin _. Mtodos: StringTokenizer(cadena, -) este constructor indica que el carcter que separa los tokens es el guin. void nextToken() apunta hacia el siguiente token dentro de un objeto StringTokenizer.
Manual de POO
19
Manual de POO
20
Manual de POO
21
nuevoCliente.setNombre(cadena[0]); nuevoCliente.setSueldo(Double.parseDouble(cadena[2])); verif++; cls(); System.out.println("Cliente ingresado exitosamente"); }else { cls(); System.out.println("El sueldo es incorrecto"); } } else{ cls(); System.out.println("La edad es incorrecta"); }
Manual de POO
22
"+numFinal);
System.out.println("\n"); } } }
Manual de POO
23
MTODOS DEL ARRAYLIST A continuacin se muestran los mtodos que sirven para manipular objetos ArrayList: int size() boolean isEmpty() boolean contains(Object o) void add(E o) void add(int index, e O) E get(int index) public E set() public boolean remove(Object o) E remove(int index) OBJETO ITERADOR Para manejar ArrayList se puede crear un objeto Iterador que permite recorrer de principio a fin la lista, para poder eliminar o insertar un elemento en cualquier lugar determinado. Este objeto iterador devuelve la direccin del primer elemento del ArrayList. Mtodos: Iterator<E>: Devuelve el primer elemento de la lista boolean hasNext(): devuelve true si hay un elemento siguiente en la lista E next(): retorna el siguiente elemento de la iteracin void remove: Elimina el elemento en el que se encuentra el iterador en ese momento Ejercicio Resuelto: Devolver lo que se encuentra en el arreglo:
ArrayList<String> arreglo = new ArrayList<String>(); arreglo.add("HOLA"); arreglo.add("COMO");
Manual de POO
24
POLIMORFISMO Definicin: Son mtodos iguales pero con distinta implementacin en una relacin de herencia. La principal caracterstica del polimorfismo es que el mtodo que est en la superclase obliga a la subclase a que tambin lo implemente; de esta manera se tiene mayor seguridad en cuanto al sistema ya que la subclase necesariamente necesita implementar el mtodo de la subclase, por que de lo contrario existe un error y la subclase se atiene a las condiciones que la superclase tenga. En el caso de que se aada otra clase al package esta nueva clase tiene calcular precio por defecto. Ejemplo:
PRODUCTO
Producto de Lujo
Clase abstracta: Una clase es abstracta si tiene al menos un mtodo abstracto. Mtodo Abstracto: Es un mtodo sin cuerpo. Supongamos que se desea implementar una aplicacin para manipular empleados de una institucin educativa. Existen empleados a tiempo completo y a tiempo parcial, todos los empleados registran cdula y sueldo base. Los empleados a tiempo completo tienen como atributo sueldo de ingreso y una bonificacin. Los empleados a tiempo parcial registran el nmero de horas trabajadas y un sueldo por hora. Cabe indicar que todos los empleados tendrn un clculo de sueldo. Para el empleado a tiempo completo el sueldo ser su sueldo base + bonificacin. Mientras que para el empleado de tiempo parcial ser el sueldo base + nro de horas trabajadas * sueldo/hora.
Manual de POO
25
INSTITUCIN EDUCATIVA
EMPLEADO
TiempoCompleto
TiempoParcial
Nos encontramos con la siguiente incgnita: qu tipo de implementacin deber tener el mtodo calcularSueldo() de la clase Empleado? Existe la opcin (no recomendada) de no incluir el mtodo en la clase empleado, lo que conllevara al error de permitir que si se agrega un nuevo tipo de empleado, ste no tenga un mtodo calcularSueldo() lo que es incoherente, puesto que todos los empleados deben tener un sueldo. Existe otra opcin tampoco recomendada de implementar el mtodo calcularSueldo() en Empleado con una programacin arbitraria para dar lugar al Polimorfismo en las subclases de empleado. Hacer esto sera otro error, puesto que no es lgico dar lugar a implementaciones arbitrarias. La opcin recomendada es la de utilizar mtodos abstractos. As, en Empleado, se declarara el mtodo calcularSueldo() como un mtodo abstracto, obteniendo as las siguientes ventajas: Convertir a la clase Empleado en abstracta al declarar el mtodo como abstracto, y con esto no permitir instanciar objetos de tipo Empleado, lo que se ajusta a la realidad, debido a que no existen empleados que no sean de tiempo parcial ni de tiempo completo. Obligar a las subclases de Empleado a implementar el mtodo calcularSueldo(), a menos que se defina a la subclase como abstracta tambin. Una clase abstracta s puede tener constructores, atributos y accesorios. INTERFACES Definicin: Se llama interface a la clase que consta todos sus mtodos abstractos. La interfaz nicamente consta de constantes ms no de atributos. En el caso de: Empleado implements SRI, SRI es una interfaz y Empleado es una clase normal. Una ventaja de las interfaces, es que si puede haber una relacin de herencia mltiple. Para la implementacin de una interfaz:
Manual de POO
26
Aunque para la implementacin de las clases no es necesario escribir abstract. En la interfaz, las constantes generalmente son pblicas. Importante: Una interfaz no puede instanciar objetos. Ejemplo:
public abstract class Empleado implements Sri,Iess,MinisTrabajo { private String cedula; private double sueldoBase; public Empleado(String cedula, double sueldoBase) { this.cedula = cedula; this.sueldoBase = sueldoBase; } public Empleado() { this.cedula = ""; this.sueldoBase = 0.0; } public String getCedula() { return cedula; } public void setCedula(String cedula) { this.cedula = cedula; } public double getSueldoBase() { return sueldoBase; } public void setSueldoBase(double sueldoBase) { this.sueldoBase = sueldoBase; } public abstract double calcularSueldo(); public double aporte() { return 0.05 * this.getSueldoBase(); } public double aporteMedico() {
Manual de POO
27
Se debe importar la librera java.io para manejar los objetos de manipulacin de archivos. BIBLIOGRAFA http://www.monografias.com/trabajos7/impu/impu.shtml http://es.wikipedia.org/wiki/Programacin_orientada_a_objetos
Manual de POO
28