Ejemplo de Clase

Como había comentado en un post anterior, en programación orientada a objeto, una clase define las características y comportamientos comunes de los objetos, en otras palabras la clase es el molde para la creación de los mismos. En las Próximas líneas les presento un ejemplo de la Clase Alumno en .net

La clase alumno es una abstracción con los atributos,  comportamientos bases para nuestro sistema.

using System;
using Noixno.Common;

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

        #endregion
        #region Public properties, to expose the state of the entity
        public int IdAlumno
        {
            get
            {
                return m_IdAlumno;
            }
            set
            {
                m_IdAlumno = value;
                IsModified = true;
            }
        }
        public DateTime FechaDeNacimiento
        {
            get
            {
                return m_FechaDeNacimiento;
            }
            set
            {
                m_FechaDeNacimiento = value;
                IsModified = true;
            }
        }

        #endregion
    }
}

Autor: arevalomaria

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

63 comentarios en “Ejemplo de Clase”

  1. para los que pedian el codigo en Vb.Net aqui esta:

    Imports System
    Imports Noixno.common

    Namespace MVAEscuela.Core.BE
    _
    Partial Public Class Alumno
    Inherits Persona

    #Region “.::. Campos privados .::.”
    Private m_idAlumno As Integer
    Private m_FechaDeNacimiento As DateTime
    #End Region

    #Region “.::. Propiedades Publicas .::.”
    Public Property idAlumno() As Integer
    Get
    Return m_idAlumno
    End Get
    Set(ByVal value As Integer)
    m_idAlumno = value
    End Set
    End Property

    Public Property FechaDeNacimiento() As DateTime
    Get
    Return m_FechaDeNacimiento
    End Get
    Set(ByVal value As DateTime)
    m_FechaDeNacimiento = value
    End Set
    End Property
    #End Region

    End Class
    End Namespace

  2. Alumno es la calse que hereda de Persona, pues supongo que la clase Persona no se presenta en esta explicacion por que es de entenderse que un alumno herada de una persona, pero si seria bueno que la publicaran tambien, el ejemplo quedaria completo

  3. Saludos a todos, me gustaria complementaran los codigos (tanto el c# como el vb) con sus respectivos constructores y destructores de forma explícita como quedarian; también se incluya si debe ser llamado el contructor y destructor de la clase padre (Persona) de forma explicita o si siempre es automático. Principalmente por si en ocasiones el constructor del padre tuviese que recibir parámetros. Gracias buen dia y saludos.

  4. tengo muchas dudas en ciertas instrucciones, cual es objetivo del programa, IsModified es una variable o un objeto del frame de .net.

    using Noixno.Common que hace este objeto?

    hasta luego y gracias

  5. Que tal estoy intentando hacer el proyecto desde cero para entenderlo mejor parte por parte pero no se que tipo de proyetco es el que utilizan para les de la libreria Noixno.Common la intente agregar desde las librerias .NET pero no esta espero me puedan ayudar

  6. Bueno, lo lamento pero no me funciona el programa por clases.¿Podría por favor alguien decirme primero que significa “#”?
    También ignoro los términos:
    “using Noixno.Common”.
    “[Serializable] “.
    “region Private fields, to hold the state of the ‘Alumno’ entity “.
    “Get”–>¿En que casos aplica?
    “Set”–>¿En que casos aplica?
    “#region Public properties, to expose the state of the entity ”
    Por favor la persona que me responda hagalo como tratando de explicarle matematicas a un niño de primaria, la realidad es que haci me siento.También solicito que adjunto con la explicación hayan ejercicios simples que corran en C#.
    Profundamente agradecido:
    Aicardo Trujillo Salamanca
    nocturno1311@yahoo.com.mx

    1. Eh buen día.
      En primer lugar, el “#” no va solo, va junto con “region” que es otra de tus dudas y el “endregion”. Y se usa para ordenar el código, algo así:
      #region atributos
      // Acá iría la definición de los atributos, en ninguna otra parte de la clase.
      #end region
      El “using Noixno.Common” hace la “invocación a la librería “Noixno.Common” y que mas adelante se usará alguno de sus elementos, algo así como importar la librería, como sucede con Math.sqtr en otros lenguajes.
      “Serializable” permite que esta clase en algún momento de nuestro software, sea escrita en un archivo de texto plano, ya sea para enviarla por la red o algo así o para guardar datos que tengan que ver con el objeto. (Respecto a esto, si hay alguna corrección o aclaración bienvenida sea, espero no haberme equivocado).
      Y los Get y Set son las propiedades de Obtención y cambio de valor respectivamente de un atributo del objeto, entonces si haces atributo = valor, el automáticamente llama su propiedad “Set” y cambia su valor, o si haces, variable = atributo, el usa la propiedad “Get”, obtiene su valor actual y lo ‘pone’ en la variable.
      Saludos.

  7. Aicardo Trujillo.

    #region Private fields, to hold the state of the ‘Alumno’ entity
    Eso es unicamente comentario al igual que puese usarse estos “//”.
    El cual dice que son campos que se usan como privado, el cual esto en una clase tiene que ser por defecto (atributos privados)

    #region Public properties, to expose the state of the entity
    aac los metodos o funciones tienen que ser publicos por defecto es la forma en la que se accede a los atributos privados.

    GET y SET es una forma de evitar error donde “get” en caso de tener un valor el nombre eh te lo lanza sino entra “set” para asignar un valor en ese caso “value” y ese sera su valor a mostrar.

    “using” es utilizado para llamar a las clases de las librerias.

    en el caso de using System:
    cuando escribes en pantalla System.Console.WriteLine(“Hola”);

    agregando el “using system;” ya solo escribirias:
    Console.WriteLine(“Hola”);

    Aca no muestra su uso en el ejemplo pero les digo como va 🙂
    Saludos

  8. getter method: lee el valor de la propiedad //metodo get

    · setter method: cambia el valor de la propiedad. //metodo set

    el “#” es una especie de comentario eso pienso lo busque y no encontre

  9. Nota:
    Visual Basic anteriores a .NET la forma de declarar una propiedad es mediante tres tipos de procedimientos Property:
    Property Get para devolver el valor de la propiedad,
    Property Let para asignar el nuevo valor a la propiedad y
    Property Set para asignar un objeto a esa propiedad.

  10. si no estoy mal, y espero no me equivocarme, los métodos SET y GET se encuentran dentro de otro método, es a esto lo que se denomina Encapsulamiento, además en .NET se conoce como Properties, facilitando el trabajo para el desarrollador. por ejemplo: para asignarle la edad mediante Property lo hacemos

    Alumno alumno = new Alumno();

    alumno.Edad= 15;
    y para obtenerla haríamos:
    int edad = alumno.Edad

    //encambio si fuese mediante Get y Set sería
    alumno.SetEdad(15);
    int edad = alumno.GetEdad();

    Personalmente diría que mediante las Properties el trabajo es mucho más fácil ya que la forma en que se asigno y obtengo es de la misma manera.
    Saludos

    1. Lo único que no me habia quedado claro era lo referente a las Properties, por fin entendí la diferencia entre metodos y propiedades, un saludo y gracias por el aporte.

  11. los Metodos Set y Get son porte del metodo property.(o propiedad)

    cuando declaras una propiedad el constructor crea la estructura incluidas el Get y Set solo para q la completemos con los datos q nos interesan..

    [Vb.Net]

    ”Creamos la variable donde se guardara el valor de la propiedad

    Dim _IdUser as string = “”

    Public Property NombredelaPropiedad()
    Get
    Return _IdUser ”Se indica el valor a retornar
    End Get
    Set(ByVal value)
    _IdUser = value ”Aqui asignamos el valor de la propiedad
    End Set
    End Property

    ” tomar en cuenta q esta es una propiedad publica.. existen tambien privadas. donde es diferente ..

  12. Estoy completamente de acuerdo con Alejandro Bolaños pues con las Properties el trabajo se hace mucho más sencilla y corta. Y gracias por las aportaciones.

  13. Entiendo que muchos de nosotros conocemos la mayoría de las sentencias de c# y vb, creo que faltó algo que relacionara este código con la explicación que se dio en la sección anterior, cuando menos algunos comentarios en donde se explique dónde se define la clase, si se asocia o crea algún objeto, cuales son sus atributos, su comportamiento, etc. Cómo se aplica la herencia, cual es la abstracción.

  14. Saludos. Entiendo el concepto, pero me gustaria saber si el codigo puede ser ejecutable y como lo abriria en Microsoft Visual Studio, ya que apenas estoy incursionando en esto de la programacion y no conosco como poder abrir un proyecto nuevo. Gracias y espero me puedan ayudar.

  15. me gustaria complementaran los codigos (tanto el c# como el vb) con sus respectivos constructores y destructores de forma explícita como quedarian; también se incluya si debe ser llamado el contructor y destructor de la clase padre (Persona) de forma explicita o si siempre es automático. Principalmente por si en ocasiones el constructor del padre tuviese que recibir parámetros. Gracias buen dia y saludos.

  16. Para @AlejoNait: Puede parecer más simple, pero hay muchos casos
    donde la implementación interna de un atributo no es sólo un valor
    simple, como en el caso de edad, e incluso puede cambiar (digamos,
    por ejemplo, que la edad ya no está en una variable simple interna
    a la instancia del objeto, sino en una base de datos externa). Si usas
    Set y Get, y cambias su código interno, no se necesita modificar
    tu programa que los usa porque quedan aislados del proceso (a
    ésto se refiere la “encapsulación”). Y si los usas siempre, no tienes
    que decidir: “A ver, ¿Usaré modificación directa de propiedades o usaré
    métodos de acceso a atributos?”, lo cual logra una uniformidad en tu
    código que, al igual que indentar, nombrar variables significativamente,
    etc., ayuda muchísimo al depurar o quererlo modificar tres meses
    después.

  17. mmm les pongo mi comentario sobre Get y Set.
    Esto tiene que ver con el encapsulamiento, si recordamos el encapsulamiento nos permite ocultar ciertas propiedades del objeto del mundo exterior y sólo dejamos visibles lo que nos interesa mostrar.
    Entonce usamos GET para “leer” el valor de una propiedad y mostrarla (imprimir su valor si se quiere) y usamos SET para modificar el valor de una propiedad, alterar su contenido.
    Cuando digo propiedad me refiero a un campo del registro, llámese nombre, dirección, edad, etc.
    Espero haberme dejado entender….

  18. pregunta por que se le pone Datetime fecha_nacimiento en alumno, digo, todas las personas tienen una fecha de nacimiento, no solo los alumnos, ese campo es de herencia de persona, pero no entiendo por que lo ponen como private y que corresponde solo de la clase alumno

  19. Cual es la diferencia entre atributo y propiedad (Aparte del codigo), me refiero cual es la diferencia al momento del diseño. ¿CUANDO usar algo como atributo y CUANDO como propiedad?.

  20. En el ejemplo que viene de la clase podría ser… Clase Alumno y objeto también alumno? y las características de la clase alumno por ejemplo podrían ser..nombre, apellido, edad, altura, peso, pelo, color de piel?

  21. using System;
    using Noixno.Common;
    
    namespace MVAEscuela.Core.BE
    {
        [Serializable]
        public partial class Alumno : Persona //Herencia
        {       
            #region Private fields, to hold the state of the ‘Alumno’ entity   
            private int m_IdAlumno;
            private DateTime m_FechaDeNacimiento;
    
            #endregion
            #region Public properties, to expose the state of the entity
            public int IdAlumno
            {
                get
                {
                    return m_IdAlumno;
                }
                set
                {
                    m_IdAlumno = value;
                    IsModified = true;
                }
            }
            public DateTime FechaDeNacimiento
            {
                get
                {
                    return m_FechaDeNacimiento;
                }
                set
                {
                    m_FechaDeNacimiento = value;
                    IsModified = true;
                }
            }
    
            #endregion
        }
    }

    bt_code_init(‘313c7d6f-05ba-4707-b137-6a579563b9b2’);

  22. bueno una observacion para la mejor comprencion, si no estammos en el ejemplo herencia creo que esta demas que utilicimos que estudiante hereda de persona, ahora bien cuando estemos en el ejemplo de herencia si seria bueno que nos eseñaran a utilizarla.

    saludos,

  23. Esta información, pertenece al capítulo 2 “introducción a la programación orientada a objetos”. Considero que el ejemplo no se acerca en nada al espacio introductorio.
    Es para un nivel más avanzado, ya que, no existen explicaciones de por qué el uso de un montón de palabras reservadas y estructuras que no se encuentran incorporadas en el nivel de introducción.

  24. Algo no va, estoy siguiente el curso de Microsoft “Capítulo II de la carrera de Desarrollo .Net sobre conceptos básicos y características de programación” el cual es para principiante y meramente teorico hasta el momento y presentan una clase en un lenguaje que no han presentado :-S
    Deberían ya se explicar cada línea, ponerlo en español estructurado. O introducir el lenguaje un poco más.

  25. DE ACUERDO CON JULIO ALFREDO, DESPACIO ES DECIR PASO A PASOES FACIL LLEGAR, CON TROPIEZOS HAY MUCHOS DOLORES EN LAS RODILLAS Y DE GOLPE LA FRACTURA NOS DESANIMA

  26. Seria bueno que dieran una mejor explicación del tema, ya que muchos de nosotros no conocemos el código presentado, no se por donde comienza o donde termina, ni donde se escribe. para una mejor explicación debería de haber video tutoriales.

  27. Buenos días, estoy corriendo el código en visual pero no me compila, dice que hay un error en la línea: using Noixno.Common; podría alguien ayudarme por favor. ah y en qué software puedo compilar el código en vb.net? Gracias….

  28. Realmente se ocupa un conocimiento, previo para comprender este ejemplo, asi de primas a primeras cuesta, pero si tienes un poco de conociento , no es difícil, realmente el ejemplo se comprende, pero se comprendería mejor si se agregaran comentarios en el código para mejor comprensión.

  29. Muy buen ejemplo, simple y sencillo aunque me hubiera gustado ver la implementacion de un metodo, solo veo atributos y propiedades, por otra parte aun no veo clara la utilidad de una clase parcial, sera que en los proyectos en los que he participado no se ha llegado a requeriri clases muy extensas.

  30. GRACIAS POR TODO PERO LA VERDAD YO QUE SOY NOVATO Y ESTOY APRENDIENDO ESTO ES CHINO.. POR FAVOR SEUDOCODIGO O QUE EXPLIQUEN MAS ESTO.. GRACIAS

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