Ejemplo de Herencia

En el ejemplo que se muestra para la definición de la Clase Instructor se toman características y funcionalidades definidas en otra clase denominada Persona.  Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación.  Esto se conoce como herencia.

using System;
using Noixno.Common;

namespace MVAEscuela.Core.BE
{
    [Serializable]
    public partial class Instructor : Persona //Herencia
    {       
        #region Private fields, to hold the state of the ‘Instructor’ entity   
        private int m_IdInstructor;
        private DateTime m_FechaIngreso;

        #endregion
        #region Public properties, to expose the state of the entity
        public int IdInstructor
        {
            get
            {
                return m_IdInstructor;
            }
            set
            {
                m_IdInstructor = value;
                IsModified = true;
            }
        }
        public DateTime FechaIngreso
        {
            get
            {
                return m_FechaIngreso;
            }
            set
            {
                m_FechaIngreso = value;
                IsModified = true;
            }
        }

        #endregion
    }
}

Autor: arevalomaria

Ingeniero de Sistemas, Magister en Gerencia y Tecnologia de la Informacion, Certificaciones: ITIL V3, CCNA, Microsoft Certified Professional.

44 comentarios en “Ejemplo de Herencia”

  1. Muy bien artículo. Me gustaría qué es lo que hacen estas líneas:
    public int IdInstructor
    {
    get
    {
    return m_IdInstructor;
    }
    set
    {
    m_IdInstructor = value;
    IsModified = true;
    }
    }

    gracias

    1. Estás declarando lo que se llaman los “getters” y “setters” sirven para poder obtener el valor de una variable mediante un GET y asignar un valor a una variable mediante un SET. En este caso, la variable es común para el GET y SET la cual es m_IdInstructor. Dado a que el GET devuelve un valor se utiliza la palabra reservada return para retornar la variable, en el caso de SET se usa una palabra reservada llamada “value” que tendrá el nuevo valor a asignar a la variable.

    2. disculpa pero todo eso en conjunto se llama constructor eso hace que una variable inicialize como tu deseas y no deja que el compilador la inicialize, escojes una variable en c++ y no la inicializas tomara un dato basura lo cual podria dañar tu programa

    3. Hola dalbeyond… vemos que hacemos publica el campo idinstructor para encapsularlo con el get y set… es que el metodo get obtiene el campo idInstructor y set le asigna los valores.. saludos

  2. Saludos,

    m_IdInstructor es un campo privado del tipo int que esta declarado previamente.

    En general se esta creando una propiedad llamada IdInstructor de lectura (get) y escritura (set) que administra lo que podamos hacer con el campo.

    m_IdInstructor = value;
    value es una palabra reservada y es del mismo tipo que la propiedad.

    IsModified = true;
    Es otra propiedad que indica que la entidad fue modificada! esto para trabajos en la capa de acceso a datos. Imagina que envías una entidad que no fue modificada a persistencia esta solo pregunta por esta propiedad y listo no hace nada.

    Cualquier otra duda o si no se entiende solo comenta!

  3. Disculpen segun entiendo:
    public int IdInstructor
    {
    get
    {
    return m_IdInstructor;
    }
    set
    {
    m_IdInstructor = value;
    IsModified = true;
    }
    }
    este es un método que cuando se llama devuelve un entero y que modifica el estado del objeto. Osea que cambia el atributo IsModified a true…pero m_IdInstructor ¿donde obtuvo value?

    1. El metodo por el cual preguntas hace ambas cosas y el otro metodo de fecha es igual, regresa el valor y asigna el valor, cuando se asigna es en la parte se set.

      Esto ocurre cuando se usa el signo “=” y get cuando haces referencia al valor que tiene, espero este ejemplo sirva,

      Instructor nuevoInst = new Instructor ();
      nuevoInst .IdInstructor=3; // aqui es donde internamente se hace el uso del pues estamos asignando un valor.

      set
      {
      m_IdInstructor = value;
      IsModified = true;
      }

      y supongamos que requerimos verificar el valor de IdInstructor

      /// aqui en se hace referencia a get pues solo queremos obtener el valor, y el get es eso exactamente nos retorna el valor

      if(nuevoInst.IdInstructor==2)
      {
      ///algunas intrucciones
      }

  4. Disculpe Usted pero no me funciono el programa, además de que salen varios errores salen tambien letreros como el siguiente;
    The name ‘IsModified’ does not exist inthe current context
    ¿Podría por favor Alguien explicarme algo al respecto?
    Tambien quisiera que me indiquen los terminos:
    #endregion
    [Serializable]
    #region Private fields, to hold the state of the ‘Instructor’ entity
    using Noixno.Common;
    #region Private fields, to hold the state of the ‘Instructor’ entity
    Profundamente agradecido:
    Aicardo Trujillo Salamanca
    nocturno1311@yahoo.com.mx

  5. El ejemplo no esta completo ya que le falta la clase que esta heredando y ello les dara un error, ademas no tiene una clase de entrar la cual es la de Main(). sin ello el programa nunca correra.

    GET obtiene valor
    SET en caso de no tener valor “get” asigna el nuevo valor contenido por “set”.

    saludos

  6. No sería mas claro, si usaras alguna propiedad o metodo de persona en la clase instructor, dado que estas herendado de ella. Claro se sobre entiende, pero para alguien que este comenzando con estos temas se puede confundir.

    1. Correctisimo Duglas, cuando comente fue que vi tu inquietud parecida a la mia, yo estoy empezando ahora también y en el ejemplo esta claro que no se utiliza nada de las propiedades de persona, pues los 2 datos que se ven son propios de instructor.

  7. Como aporte seria mejor que este comentado el codigo, es facil perdese sin encontrar realmente que esta pasando,con este codigo, totalmente perdido en algunas lineas de Code.. #fail

  8. se hereda persona a instructor(Instructor:persona), pero en el ejemplo los datos son propios de instructor, no se aprecia bien la funcionalidad de la herencia en ese ejemplo, solo la asignacion, no se si me di a entender.

  9. Si lo mismo digo, donde esta el ejemplo que hace referencia a la herencia? porq este es un codigo comun… no se ve la sentencia que muestre la practica de herencia

  10. Creo que el ejemplo va acorde con el título, se está representando como se hereda. Lo que si veo que falte es el tema de la librería que usa, que para el ejemplo no aplica, y la propiedad “IsModified” que no es declarada en ningún lado, quizás sea de la clase que hereda…

  11. Esto está incompleto, sería perfecto que mostraran la clase Persona, y que hicieran una instancia de Instructor donde realmente hagan uso de la herencia, llamando atributos y/o métodos de la clase Instructor como de Persona. Para las personas que van empezando esto confunde, y si quieren probar el código, no les va a funcionar porque esta incompleto. Y peor aún, esto es “material” del MVA. (N) -1

  12. El ejemplo en VB.Net

    Imports System
    Imports Noixno.Common

    Namespace MVAEscuela.Core.BE
    _
    Partial Public Class Instructor ‘Herencia
    Inherits Persona
    #Region “Private fields, to hold the state of the ‘Instructor’ entity ”
    Private m_IdInstructor As Integer
    Private m_FechaIngreso As DateTime

    #End Region
    #Region “Public properties, to expose the state of the entity”
    Public Property IdInstructor() As Integer
    Get
    Return m_IdInstructor
    End Get
    Set(ByVal value As Integer)
    m_IdInstructor = value
    IsModified = True
    End Set
    End Property
    Public Property FechaIngreso() As DateTime
    Get
    Return m_FechaIngreso
    End Get
    Set(ByVal value As DateTime)
    m_FechaIngreso = value
    IsModified = True
    End Set
    End Property

    #End Region
    End Class

  13. Entiendo que la propiedad “IdInstructor” no es obligatoria definirla en esta clase, ya que la clase persona debe tener una propiedad llamada “idPersona”, la cual puede ser utilizada para capturar el id del instructor. Si estoy equivocado, me pueden responder.

    Cuando se crea una clase que hereda de otra, en la misma solo se deben definir propiedades que no esten en la clase de la que se esta heredando. Esto lo digo porque el idInstructor es para capturar el identificador unico del instructor el cual es el mismo idPersona.

  14. buenas, cordial saludo,
    Donde se está aplicando el concepto de herencia si no se está heredando ninguna propiedad de persona, solo se esta especificando que la herencia se va a realizar de persona a instructor [ public partial class Instructor : Persona ].

    1. Este código lo que muestra es una clase simple en .net que en la linea de código que indica la herencia esta heredando instructor : (de ) persona luego muestra como declara los atributos privados de la clase instructor para finalmente hacer los getter and setter correspondientes a la clase (Los getter & setter lo que hacen es que las otras clases puedan relacionarse con la clase instructor a través de estos métodos haci pueden “Setear” (introducir” parámetros o solicitarlos a través de los get ))

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s