Está en la página 1de 11

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

TIPOS DE HERENCIA DE CLASES


Existen dos tipos de herencia: Herencia por especializacin Herencia por generalizacin

En realidad la herencia es la misma, esta es una diferenciacin puramente conceptual sobre la forma en que se a llegado a ella. Una herencia por especializacin es la que se realiza cuando necesitamos crear una clase nueva que disponga de las mismas caractersticas que otra pero que le aada funcionalidades. Por ejemplo si tenemos una clase que genera un botn simple, y necesitamos crear un botn que sea igual que el anterior pero que adems aada un efecto al ser clicado. La herencia por generalizacin es la que realizamos cuando tenemos muchas clases que comparten unas mismas funcionalidades y por homogeneizar las partes comunes se decide crear una clase que implemente toda esa parte comn y se dejan solo las partes especificas en cada clase. Por ejemplo si tenemos clases para dibujar formas geomtricas todas ellas disponen de las mismas propiedades (un color de fondo, color de linea, etc..), todas estas caractersticas pueden estar en una clase general de la que hereden todas las clases concretas, evitando tener que escribir todo ese cdigo comn en todas ellas.

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

CLASES ABSTRACTAS
Una clase que declara la existencia de mtodos pero no la implementacin de dichos mtodos (o sea, las llaves { } y las sentencias entre ellas), se considera una clase abstracta. Una clase abstracta puede contener mtodos no-abstractos pero al menos uno de los mtodos debe ser declarado abstracto. Para declarar una clase o un metodo como abstractos, se utiliza la palabra reservada abstract. abstract class Drawing { abstract void miMetodo(int var1, int var2); String miOtroMetodo( ){ ... } }

Una clase abstracta no se puede instanciar pero si se puede heredar y las clases hijas sern las encargadas de agregar la funcionalidad a los mtodos abstractos. Si no lo hacen as, las clases hijas deben ser tambin abstractas.

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

MTODO ABSTRACTO
Un mtodo abstracto es un mtodo declarado pero no implementado, es decir, es un mtodo del que solo se escribe su nombre, parmetros y tipo devuelto pero no su cdigo. Los mtodos abstractos se escriben sin llaves {} y con ; al final de la declaracin. Por ejemplo: public abstract area(); Un mtodo se declara como abstracto porque en ese momento (en esa clase) no se conoce cmo va a ser su implementacin. Por ejemplo: A partir de una clase Polgono se pueden derivar las clases Rectngulo y Tringulo. Ambas clases derivadas usarn un mtodo rea. Podemos declararlo en Figura como abstracto y dejar que cada clase lo implemente segn sus necesidades. Al incluir el mtodo abstracto en la clase base se obliga a que todas las clases derivadas lo sobrescriban con el mismo formato utilizado en la declaracin. Si una clase contiene un mtodo abstracto se convierte en clase abstracta y debe ser declarada como tal. La forma general de declarar un mtodo abstracto en Java es: [modificador] abstract tipoDevuelto nombreMetodo([parmetros]);

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

CLASIFICADORES
Cuando se modela, se descubren abstracciones que representan cosas del mundo real y cosas de la solucin. Por ejemplo, si se est construyendo un sistema de pedidos basado en la Web, el vocabulario del proyecto probablemente incluir una clase cliente (representa a las personas que hacen los pedidos) y una clase Transaccin (un artefacto de implementacin, que representa una accin atmica). En el sistema desarrollado podra haber un componente Precios, con instancias en cada nodo cliente. Cada una de estas abstracciones tendr instancias; separar la esencia de la manifestacin de las cosas del mundo real considerado es una parte importante del modelado. Algunos elementos de UML no tienen instancias (por ejemplo, los paquetes y las relaciones de generalizacin). En general, aquellos elementos de modelado que pueden tener instancias se llaman clasificadores (las asociaciones y los mensajes tambin pueden tener instancias, pero sus instancias no son como las de una clase). Incluso ms importante, un clasificador tiene caractersticas estructurales (en forma de atributos), as como caractersticas de comportamiento (en forma de operaciones). Cada instancia de un clasificador determinado comparte la definicin de las mismas caractersticas, pero cada instancia tiene su propio valor para cada atributo. El tipo ms importante de clasificador en UML es la clase. Una clase es una descripcin de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semntica. Sin embargo, las clases no son el nico tipo de clasificador.UML proporciona otros tipos de clasificadores para ayudar a modelar. INTERFAZ Una coleccin de operaciones que especifican un servicio de una clase o componente. TIPO DE DATOS Un tipo cuyos valores son inmutables, incluyendo los tipos Primitivos predefinidos (como nmeros y cadenas de caracteres), as como los tipos enumerados (como los booleanos). ASOCIACIN Una descripcin de un conjunto de enlaces, cada uno de los cuales relaciona a dos o ms objetos. SEAL La especificacin de un mensaje asncrono enviado entre instancias. COMPONENTE Una parte modular de un sistema que oculta su implementacin tras un conjunto de interfaces externas. NODO Un elemento fsico que existe en tiempo de ejecucin y representa un recurso computacional, generalmente con alguna memoria y a menudo capacidad de procesamiento.

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

CASO DE USO Descripcin de un conjunto de secuencias de acciones, incluyendo variantes, que ejecuta un sistema y que produce un resultado observable de inters para un actor particular . SUBSISTEMA Un componente que representa una parte importante de un sistema. La mayora de los distintos clasificadores tienen caractersticas tanto estructurales como de comportamiento. Adems, cuando se modela con cualquiera de estos clasificadores, se pueden usar todas las caractersticas avanzadas descritas en este captulo para proporcionar el nivel de detalle necesario para capturar el significado de la abstraccin. Grficamente, UML distingue entre estos diferentes clasificadores, como se muestra en la Figura:

Nota: Un enfoque minimalista habra empleado un icono para todos los clasificadores. Sin embargo, se consider importante disponer de una seal visual. Anlogamente, un enfoque maximalista habra utilizado diferentes iconos para cada tipo de clasificador. Esto tampoco tiene sentido porque, por ejemplo, las clases y los tipos de datos no son tan diferentes. El diseo de UML mantiene un equilibrio: unos clasificadores tienen su propio icono, y otros utilizan palabras clave (como type, signal y subsystem).

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

SOBRECARGA DE MTODOS Y DE CONSTRUCTORES


La firma de un mtodo es la combinacin del tipo de dato que regresa, su nombre y su lista de argumentos. La sobrecarga de mtodos es la creacin de varios mtodos con el mismo nombre pero con diferentes firmas y definiciones. Java utiliza el nmero y tipo de argumentos para seleccionar cul definicin de mtodo ejecutar. Java diferencia los mtodos sobrecargados con base en el nmero y tipo de argumentos que tiene el mtodo y no por el tipo que devuelve. Tambien existe la sobrecarga de constructores: Cuando en una clase existen constructores mltiples, se dice que haysobrecarga de constructores. Ejemplo /* Mtodos sobrecargados */ int calculaSuma(int x, int y, int z){ ... } int calculaSuma(double x, double y, double z){ ... } /* Error: estos mtodos no estn sobrecargados */ int calculaSuma(int x, int y, int z){ ... } double calculaSuma(int x, int y, int z){ ... } Ejemplo /* Usuario4.java */ class Usuario4 { String nombre;

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

int edad; String direccion; /* El constructor de la clase Usuario4 esta sobrecargado */ Usuario4( ) { nombre = null; edad = 0; direccion = null; } Usuario4(String nombre, int edad, String direccion) { this.nombre = nombre; this.edad = edad; this.direccion = direccion; } Usuario4(Usuario4 usr) { nombre = usr.getNombre(); edad = usr.getEdad(); direccion = usr.getDireccion(); } void setNombre(String n) { nombre = n; } String getNombre() { return nombre; } /* El metodo setEdad() est sobrecargado */ void setEdad(int e) { edad = e; }

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

void setEdad(float e) { edad = (int)e; } int getEdad() { return edad; } void setDireccion(String d) { direccion = d; } String getDireccion() { return direccion; } } Ejemplo /* ProgUsuario4.java */ class ProgUsuario4 { void imprimeUsuario(Usuario4 usr) { // usr.nombre equivale en este caso a usr.getNombre() System.out.println("\nNombre: " + usr.nombre ); System.out.println("Edad: " + usr.getEdad() ); System.out.println("Direccion: " + usr.getDireccion() +"\n"); } public static void main(String args[]) { ProgUsuario4 prog = new ProgUsuario4( ); /* Se declaran dos objetos de la clase Usuario4 */ Usuario4 usr1,usr2;

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

/* Se utiliza el constructor por omisin */ usr1 = new Usuario4( ); prog.imprimeUsuario(usr1); /* Se utiliza el segundo constructor de Usuario4 */ usr2 = new Usuario4("Eduardo",24,"Mi direccion"); prog.imprimeUsuario(usr2); /* Se utiliza el tercer constructor de Usuario4 */ usr1 = new Usuario4(usr2); usr1.setEdad(50); usr2.setEdad(30.45f); prog.imprimeUsuario(usr1); prog.imprimeUsuario(usr2); } }

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

SOBREESCRITURA DE MTODOS
Una subclase hereda todos los mtodos de su superclase que son accesibles a dicha subclase a menos que la subclase sobreescriba los mtodos. Una subclase sobreescribe un mtodo de su superclase cuando define un mtodo con las mismas caractersticas ( nombre, nmero y tipo de argumentos) que el mtodo de la superclase. Las subclases emplean la sobreescritura de mtodos la mayora de las veces para agregar o modificar la funcionalidad del mtodo heredado de la clase padre. Ejemplo class ClaseA { void miMetodo(int var1, int var2) { ... } String miOtroMetodo( ) { ... }

class ClaseB extends ClaseA { /* Estos mtodos sobreescriben a los mtodos de la clase padre */ void miMetodo (int var1 ,int var2) { ... } String miOtroMetodo( ) { ... } }

Renteria Alvarez Francisco de Jess xD Tarea #3 Nombre: Sal Humberto Mndez Esparza

Bibliografia: http://www.cristalab.com/tutoriales/programacion-orientada-a-objetosherencia-de-clases-c261l/ El Lenguaje Unificado de Modelado. UML 2.0--(2a Edicin) Pearson/Addison Wesley, 2000Booch, Jacobson, Rumbaugh http://profesores.fi-b.unam.mx/carlos/java/java_basico4_8.html http://puntocomnoesunlenguaje.blogspot.mx/2012/07/metodoabstracto.html http://profesores.fi-b.unam.mx/carlos/java/java_basico4_6.html http://profesores.fi-b.unam.mx/carlos/java/java_basico4_7.html

También podría gustarte