Está en la página 1de 4

TRABAJO COLABORATIVO N 3 PROGRAMACION ORIENTADA A OBJETOS

Jose del carmen

GRUPO 301403_42

TUTOR: CESAR ORLANDO JIMNEZ ANGARITA

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BSICAS TECNOLOGAS E INGENIERA PROGRAMA DE INGENIERIA ELECTRONICA 2012

La herencia de clases es uno de los conceptos bsicos de la programacin orientada a objetos. Decir que una clase hereda de otra quiere decir que esa clase obtiene los mismos mtodos y propiedades de la otra clase. Permitiendo de esta forma aadir a las caractersticas heredadas las suyas propias. Supongamos que tenemos una clase "Persona" con los mtodos y propiedades bsicas de una objeto persona como podrian ser "caminar" o "hablar", podramos tener otras clases como "Guillermo" o "Elder" que comparten todas las caractersticas de una "Persona" pero que aaden caractersticas propias. Por lo que "Guillermo" y "Elder" pueden realizar las mismas funciones que puede realizar una "Persona" y adems cada una puede realizar las suyas propias, por ejemplo, "Guillermo" sabe nadar pero "Elder" no, y "Elder" sabe bailar reggeton pero "Guillermo" no. En terminos de programacin estaramos diciendo que "Guillermo" y "Elder" son dos clases especializadas que heredan o extienden de la superclase "Persona". 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. Herencia de clases en Actionscript

En Actionscript definimos que una clase hereda de otra con la sentencia "extends". public class Guillermo extends Persona

Public, private o protected Una consideracin a tener en cuenta de la herencia es que una clase no hereda la propiedades o mtodos privados, con lo que no tendrn acceso a ellas. Si necesitamos heredar propiedades o mtodos que no queremos que sean accesibles desde fuera de las clases las definiremos como protected. Sobreescritura de mtodos Una caracterstica muy importante que permite la herencia es que podemos hacer que una clase implemente de manera diferente un mtodo heredado. Haciendo que dos clases que heredan de la misma clase y heredan los mismos mtodos se comporten de maneras diferentes. Por ejemplo, unas clases de dibujo de figuras geomtricas pueden heredar de una clase general la funcin "dibujar". Todas las clases dispondrn de esa funcin, pero cada clase la implementar de diferente manera y por lo tanto dibujar una figura diferente. Para sobrescribir un mtodo de la superclase utilizaremos la sentencia override en la definicin del mtodo. //funcin de la superclase public function traza():void

{ trace("superclase");

//funcin de la subclase override public function traza():void

trace("subclase"); } De esta manera al ejecutar la funcin "traza()" desde una subclase obtendremos el texto "subclase" sobrescribiendo las acciones del mtodo de la subclase (no obtendramos el texto "superclase"). En el caso de no querer sobrescribir por completo toda la implementacin del mtodo de la superclase, si no que lo que queremos es ampliarlo, podemos acceder a la implementacin de la superclase con el operador "super". //funcin de la subclase override public function traza():void

{ super.traza(); trace("subclase"); } En este caso, se ejecutara la implementacin del mtodo en la superclase (obtendriamos el texto "superclase") y luego el de la subclase (obtendramos tambin el texto "subclase"). Esto tambin lo podemos realizar en el constructor de la clase. Es bastante probable que una clase est definiendo valores dentro de su constructor, de manera que al ser extendida nos interese que esas definiciones se continen realizando. En este caso deberemos realizar una llamada al constructor de la superclase a travs del operador "super".

También podría gustarte