Fecha y hora actual: Jueves 17 Ene 2019 04:11
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.19 - Clases, Herencia.

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.19 - Clases, Herencia.

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Miércoles 25 Mar 2009 20:37

Título del mensaje: Curso VB .NET - Tema 1.19 - Clases, Herencia.

Responder citando

Curso de programación en .NET - Tema 1.19 - Clases, Herencia.


1. Clases, Herencia.

1.1 Objetivos del tema.
La herencia es una de las características de las clases, vamos a ver el funcionamiento y sus ventajas de cara al uso dentro de los programas.

1.2 Introducción.
El concepto de herencia en una clase es tal cual la palabra nos lo índica, no es necesario ampliar el significado de la misma.
La filosofía es sencilla, yo creo una clase que puede ser el punto de partida para un concepto y que posteriormente puede ir especializándose o mejorándose, pero en lugar de copiar y pegar lo que ya tenemos escrito, lo que hacemos es indicar en el código de la clase que escribo, que tome todas las características de la clase que se índica.

No siempre las clases se pueden heredar, cuando escribimos una clase podemos indicar de forma explicita que no se pueda usar en otras clases, pero también podemos escribirla como plantilla, y obligar a que sea heredada y no pueda ser utilizada para declarar con ella un objeto.

1.3 Clase base, origen.
Cuando hablamos de herencia, hay que pensar que hablamos de una clase que es la origen y de otra que es la que la contiene.
En la imagen podemos ver como la clase Tres, se inicia a partir de los contenidos de las clases Uno y Dos, que se heredan en su inicio, y que serán la clase de referencia o de origen en parte de los contenidos de la misma.



Por lo tanto la clase tres tendrá todas las capacidades y características de las clases Uno y Dos más las que se desarrollen en ella misma.

En la clase origen se pueden definir métodos que no se hereden, esos no serán reutilizados en las clases que se obtengan a partir de la de origen.

En la clase resultante, la clase tres, tendrá entonces el código del que se dispone en las clases uno y dos, más el código que se genera propio en la clase tres.



1.4 Clase derivada.
La clase derivada es la clase resultante al heredar las clases Uno y Dos, y asumirá todas las características de las clases origen.

Además en esta clase podemos le añadiremos las características necesarias para que cumpla la función para la cual se diseña.

1.5 Tipos de herencia.
La herencia puede arrancar a partir de una o de varias clases, pero eso dependerá de las características del lenguaje utilizado, ya que no todos permiten que se hereden en una clase varias clases origen.



Cuando solo se admite la herencia de una clase origen, se denomina herencia simple, y si se admite más de una clase La herencia múltiple es más compleja, tenemos que tener presente que cuando en una clase se heredan al mismo nivel varias clases origen, el problema surge cuando se da la circunstancia de existir métodos con el mismo nombre, pues hay que decidir cual de ellos es el que dispone de prioridad al ser utilizado, o bien cuando se llama a un método y éste tiene que buscarse por varias de las ramas posibles de las distintas herencias dis Clase TresClase UnoClase DosClase TresClase UnoClase DosHerencia múltipleClase DosClase UnoHerencia simpleCódigo añadido.Clase origenClase resultante



Si miramos la imagen, en esa forma de rombo, si la clase siete hereda la cuatro, cinco y seis, cuando se indica el uso de un método que no es de la propia clase siete, hay que buscarlo en todas las ramas posibles, es decir, en la rama cuatro, dos y uno, pero también en la rama cinco, dos, uno y en la rama seis, tres y uno En cuanto a la herencia, hay que pensar que los métodos de la clase uno, puede ser que aparezcan, - en función de cómo cada lenguaje gestione la herencia -, repetidos varias veces, lo que genera ambigüedades en la gestión.



Dicho de otra forma, se complica en gran medida la gestión y localización de los métodos y el sistema de prioridades en el momento de localizar dos al mismo nivel, de ahí que lo que habitualmente contemplan los lenguajes de programación mayoritariamente es la herencia simple, que es más sencilla de gestionar, y también por consecuente más eficiente.

1.6 Sobre escritura.
Una vez que se crea una clase a partir de otras de origen, puede darse la circunstancia de que los métodos que tengamos heredados no nos interesen, en ese caso los métodos pueden ser sustituidos, sobre escritos, y entonces se ejecutarían los que se crean de nuevo en la clase resultante, ignorándose los de la clase origen.

1.7 Limitaciones en la herencia.
Todos los campos y métodos de una clase son siempre accesibles para el código de la misma clase.
Para controlar el acceso desde otras clases, y para controlar la herencia por las clases derivadas, o subclases, los elementos (atributos y métodos) de las clases tienen tres situaciones posibles de control de acceso:

  • Público, public Los miembros declarados públicos son accesibles en cualquier lugar en que sea accesible la clase, y son heredados por las subclases.
  • Privado, private Los miembros declarados privados son accesibles sólo en la propia clase.
  • Protegido, protected Los miembros declarados protegidos son accesibles sólo para sus subclases.


1.8 Conclusiones.
El uso de la herencia nos puede permitir crear la siguiente estructura.
Creamos la clase persona, en esta clase definimos la estructura de datos personales y escribimos un método que nos visualice dichos datos en el soporte que se crea oportuno.



Después podemos escribir la clase alumno, y que esta clase herede la clase persona, por lo que ya tenemos a nuestra disposición todo lo referente a los datos personales y su visualización, provenientes de la clase base, Persona, y a la clase alumno le añadimos lo referente a los datos académicos y su correspondiente visualización.

Y podemos hacer lo mismo con la clase profesor, pero en lugar de datos académicos, le definimos datos administrativos.
Por lo tanto, ambas clases, alumno y profesor, heredan la misma clase, persona, y comparten la gestión de los datos personales.

Si creamos el objeto

Código:
AlumnoDePrimero = nuevo Alumno,


el objeto AlumnoDePrimero tendrá disponibles,

  • Los datos personales y académicos.
  • Los métodos de visualizar datos personales y datos académicos.


Y así sucesivamente podemos ir ampliando las características de cada una de las clases, e ir mejorando la estructura de las mismas. DosClase UnoTresCuatroCincoSeisSieteOchoNuevePersonaDatos personalesAlumnoDatos AcadémicosProfesorDatos AdministrativosVisualizar Datos personalesVisualizar datos académicosVisualizar datos administrativos

1.9 Ejercicios propuestos.
Los ejercicios los proponemos en el tema personalizado del lenguaje, Java o Visual Basic.



Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Dudas al instanciar clases heredadas

MMCA Java 0 Viernes 26 Ene 2018 21:34 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Clases

angeljonh C, C#, Visual C++ 2 Miércoles 30 Ago 2017 06:20 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso fundamentos de programación

Yaser Programación en general 0 Miércoles 18 May 2016 00:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de Desarrollo en Inteligencia Artificial

JL Iglesias Feria Programación de juegos o videojuegos 7 Miércoles 02 Dic 2015 18:20 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,