0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
181 Ansichten6 Seiten
Una clase abstracta define métodos abstractos que deben implementarse en clases hijas concretas. La clase Instrumento es abstracta y define el método abstracto "tocar()", mientras que las clases Guitarra, Saxofón y Violín heredan de Instrumento y proveen implementaciones específicas de "tocar()" para cada instrumento. Las clases abstractas no pueden ser instanciadas directamente, solo heredadas.
Una clase abstracta define métodos abstractos que deben implementarse en clases hijas concretas. La clase Instrumento es abstracta y define el método abstracto "tocar()", mientras que las clases Guitarra, Saxofón y Violín heredan de Instrumento y proveen implementaciones específicas de "tocar()" para cada instrumento. Las clases abstractas no pueden ser instanciadas directamente, solo heredadas.
Una clase abstracta define métodos abstractos que deben implementarse en clases hijas concretas. La clase Instrumento es abstracta y define el método abstracto "tocar()", mientras que las clases Guitarra, Saxofón y Violín heredan de Instrumento y proveen implementaciones específicas de "tocar()" para cada instrumento. Las clases abstractas no pueden ser instanciadas directamente, solo heredadas.
un poco sobre el termino de Abstraccin y en general del como se aplica en el campo de la programacin.
En esta ocasin vamos a trabajar un poco mas en detalle
sobre este concepto de forma rpida y sencilla, veremos la importancia del mismo y su aplicacin.
Como se ha mencionado, la abstraccin permite resaltar lo
mas representativo de algo sin importar los detalles.
Bueno, continuando Bsicamente una clase Abstracta es
similar a una clase normal (como la vimos en la entrada anterior), la estructura es prcticamente igual, ya que poseen nombre, atributos y mtodos pero para que una clase sea abstracta la condicin es que al menos uno de sus mtodos sea abstracto (se le agrega la palabra reservada abstract y no se especifica el cuerpo del mtodo).................su uso depende de la aplicacin del concepto de Herencia y adicionaremos a la estructura bsica de clase la palabra reservada abstract.
Veamos como se implementa en Java.
1 public abstract class Principal{
2 /**Mtodo concreto con implementacin*/ 3 public void metodoConcreto(){ 4 ............... 5 ............... 6 } 7 8 /**Mtodo Abstracto sin implementacin*/ public abstract void metodoAbstracto(); 9 10 11 } 12 13 class subClase extends Principal{ 14 15 @Override 16 public void metodoAbstracto() { 17 /**Implementacin definida por la clase concreta*/ } 18 19 } 20 21
Caracteristicas de una Clase Abstracta.
Esto es lo que debemos conocer sobre de Clases Abstractas.
Una clase Abstracta No puede ser instanciada (no se
pueden crear objetos directamente - new ), solo puede ser heredada. Si al menos un mtodo de la clase es abstract, esto obliga a que la clase completa sea definida abstract, sin embargo la clase puede tener el resto de mtodos no abstractos. Los mtodos abstract no llevan cuerpo (no llevan los caracteres {}). La primer subclase concreta que herede de una clase abstract debe implementar todos los mtodos de la superclase.
Cuando Utilizarlas?.
Al trabajar clases y mtodos abstractos, no solo mantenemos
nuestra aplicacin mas organizada y fcil de entender sino que tambin al no poder instanciar una clase abstracta nos aseguramos de que las propiedades especificas de esta, solo estn disponibles para sus clases hijas.... Con las Clases Abstractas lo que hacemos es definir un proceso general que luego sera implementado por las clases concretas que hereden dichas funcionalidades.......... Que?........... es decir, si tengo una clase que hereda de otra Abstracta, estoy obligado a poner en el cdigo, todos los mtodos abstractos de la clase padre, pero esta vez sern mtodos concretos y su funcionalidad o cuerpo sera definido dependiendo de para que la necesite, de esa manera si tengo otra clase que tambin hereda del mismo padre, implementar el mismo mtodo pero con un comportamiento distinto..........Veamos un Ejemplo.
En el diagrama vemos una clase Abstracta Instrumento, la
cual posee una propiedad tipo y un mtodo abstracto tocar(), vemos tambin las clases hijas Guitarra, Saxofon y Violin que para este ejemplo solo utilizaremos (mediante la herencia) las propiedades de la clase Padre.
Todos los instrumentos musicales se pueden tocar, por ello
creamos este mtodo abstracto, ya que es un proceso comn en todos los instrumentos sin importar el detalle de como se tocan, pues sabemos que una guitarra no se toca de la misma manera que el saxofn, as al heredar de la clase Instrumento, todas sus clases hijas estn obligadas a implementar este mtodo y darle la funcionalidad que le corresponda... veamos esto en Java. 1 /** * Clase Abstracta Instrumento 2 */ 3 abstract class Instrumento{ 4 5 public String tipo; 6 7 public abstract void tocar(); 8 } 9 /** 10 * Clase Concreta Guitarra, hija de Instrumento 11 */ 12 class Guitarra extends Instrumento { 13 14 public Guitarra(){ 15 tipo="Guitarra"; } 16 17 public void tocar() { 18 System.out.println("Tocar La Guitarra"); 19 } 20 } 21 22 /** * Clase Concreta Violin, hija de Instrumento 23 */ 24 class Violin extends Instrumento { 25 26 public Violin(){ 27 tipo="Violin"; } 28 29 public void tocar() { 30 System.out.println("Tocar El violin"); 31 } 32 } 33 34 /** * Clase Concreta Saxofon, hija de Instrumento 35 */ 36 class Saxofon extends Instrumento { 37 38 public Saxofon(){ 39 tipo="Saxofon"; 40 } 41 public void tocar() { 42 System.out.println("Tocar el Saxofon"); 43 } 44 } 45 46 47 48 49 50 51 public class Principal { 52 53 public static void main(String arg[]){ /**Objeto miGuitarra de tipo Instrumento */ 54 Instrumento miGuitarra= new Guitarra(); 55 System.out.println("Instrumento : "+miGuitarra.tipo); 56 miGuitarra.tocar(); 57 System.out.println(); 58 /**Objeto miSaxofon de tipo Instrumento */ Instrumento miSaxofon= new Saxofon(); 59 System.out.println("Instrumento : "+miSaxofon.tipo); 60 miSaxofon.tocar(); 61 System.out.println(); 62 /**Objeto miViolin de tipo Instrumento */ Instrumento miViolin= new Violin(); 63 System.out.println("Instrumento : "+miViolin.tipo); 64 miViolin.tocar(); 65 66 } 67 68 } 69 70 71 72 73 Como vemos cada una de las clases concretas implementan el mtodo tocar() y le dan la funcionalidad dependiendo de como se toque el instrumento, tambin en cada constructor de las clases definimos el tipo, pero si nos fijamos bien en las clases concretas no tenemos la variable tipo declarada, pues estamos usando la variable heredada de la clase Instrumento. Hay que tener en cuenta que cuando trabajamos con clases Abstractas, estas solo pueden ser heredadas mas no instanciadas, esto quiere decir que no podemos crear objetos directamente de estas clases.
Como vemos en la clase Principal tenemos la lgica para
ejecutar nuestra aplicacin y usamos el concepto de Polimorfismo para crear los objetos de tipo Instrumento por medio de sus clases Hijas, pero en ningn momento creamos un objeto como instancia directa de la clase abstracta......
Y listo, ya aplicamos de manera simple el concepto de
Abstraccin, en la prxima entrada veremos que son las Interfaces y mas adelante veremos como funciona el Polimorfismo mediante otro ejemplo de programacin........
Tambin les comparto este video con la explicacin teorica del