Foros del Web » Programación para mayores de 30 ;) » .NET »

Duda con Propiedades Get y Set

Estas en el tema de Duda con Propiedades Get y Set en el foro de .NET en Foros del Web. Bueno según lo ke tengo entendido es ke el get y set sirve aparte de encapsular los atributos, para impedir ke una variable tome un ...
  #1 (permalink)  
Antiguo 17/10/2010, 21:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Duda con Propiedades Get y Set

Bueno según lo ke tengo entendido es ke el get y set sirve aparte de encapsular los atributos, para impedir ke una variable tome un valor ke no kerámos

por ejemplo tengo un formulario con un solo campo de texto, en ese form lo ke kiero es validar ke el usuario haya escrito su nombre.

tengo la sig clase usando Get y set y validando el campo del texto en el set:

Código:
    public class GetYSet2
    {

        private string nombre;



        public GetYSet2(string nom)
        {
            nombre = nom;

        }


        public string Nombre
        {

            get
            {

                return nombre;
            }

            set
            {
                if (nombre == "")
                    nombre = "Errorrrrrrrrrrrrr";
                else
                nombre = value;
            }

        }

    }
ahora mi formulario tiene un boton con esto:

Código:
        private void button1_Click(object sender, EventArgs e)
        {
            GetYSet2 obj = new GetYSet2(textBox1.Text);


            obj.Nombre=textBox1.Text;

           MessageBox.Show(obj.Nombre);

        }
si kito este pedaso:

Código:
 obj.Nombre=textBox1.Text;
el programa no me hace la validacion y si el usuario no ingresa nada, al darle click en el boton no me aparece nada de nada



ahora haciendo lo mismo pero con funciones tengo la misma clase get yset de este modo:

Código:
public class GetYSet
    {

        private string nombre;
        



        public GetYSet(string nom)
        {
            Nombre(nom);
            

        }



        public string Nombre()
        {
            
                return nombre;           

        }

        public void Nombre(string value)
        {

            if (value.Length == 0)
                nombre = "Error";
            else
                nombre = value;
        }




    }
y mi boton del form principal de este modo:


Código:
        private void button1_Click(object sender, EventArgs e)
        {
            GetYSet obj = new GetYSet(textBox1.Text);          

           MessageBox.Show(obj.Nombre());

        }

como pueden ver es mucho mas corto ke el anterior.


Bueno entonces mi pregunta es para ke diablos sirve los gets y sets si solo me están haciendo mas dificil la vida y un codigo con mas lineas


espero me respondan

salu2
  #2 (permalink)  
Antiguo 18/10/2010, 05:45
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Duda con Propiedades Get y Set

Lo que pasa es que los estas usando mal. Cuando vas modificar algun valor asi sea dentro de tu clase debes de hacerlo utilizando la propiedad y no directamente asignando la variable con el fin de que se hagan las validaciones del caso, asi que si pruebas a poner tu código de la siguiente manera te daras cuenta que va a quedar igual de funcional que el código del segundo ejemplo.

Código C#:
Ver original
  1. public GetYSet2(string nom)
  2. {
  3.       this.Nombre = nom;
  4. }

Saludos
  #3 (permalink)  
Antiguo 18/10/2010, 07:06
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Duda con Propiedades Get y Set

Cita:
Iniciado por gedarufi Ver Mensaje
Lo que pasa es que los estas usando mal. Cuando vas modificar algun valor asi sea dentro de tu clase debes de hacerlo utilizando la propiedad y no directamente asignando la variable con el fin de que se hagan las validaciones del caso, asi que si pruebas a poner tu código de la siguiente manera te daras cuenta que va a quedar igual de funcional que el código del segundo ejemplo.

Código C#:
Ver original
  1. public GetYSet2(string nom)
  2. {
  3.       this.Nombre = nom;
  4. }

Saludos
lo hago como me dijiste y he kitado esta linea:

Código:
obj.Nombre=textBox1.Text;
y aun sigue sin funcionarme
  #4 (permalink)  
Antiguo 18/10/2010, 07:07
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Duda con Propiedades Get y Set

Pon el código que estas utilizando para guiarte.

Saludos
  #5 (permalink)  
Antiguo 18/10/2010, 07:11
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Duda con Propiedades Get y Set

Creo ke ya lo he conseguido por favor diganme si está bien el uso de mis gets y sets

bueno yo lo tenia de esta forma:

Código:
            set
            {
                if (nombre == "")
                    nombre = "Errorrrrrrrrrrrrr";
                else
                nombre = value;
            }
y solo cambie el nombre == "" por value== "" de esta forma:

Código:
            set
            {
                if (value == "")
                    nombre = "Error";
                else
                    nombre = value;
            }

x favor diganme si el uso de get y set ke he utilizado es el correcto

salu2
  #6 (permalink)  
Antiguo 18/10/2010, 07:13
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Duda con Propiedades Get y Set

Esta bien, adicionalmento podrias lanzar una Excepción para que el usuario asigne nuevamente el nombre, en lugar de poner la variable con "Errorrrrrrrrrrrrr"

Saludos
  #7 (permalink)  
Antiguo 18/10/2010, 07:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Duda con Propiedades Get y Set

Cita:
Iniciado por gedarufi Ver Mensaje
Esta bien, adicionalmento podrias lanzar una Excepción para que el usuario asigne nuevamente el nombre, en lugar de poner la variable con "Errorrrrrrrrrrrrr"

Saludos
podrías ponerme un ejemplo de como kedaría por favor

y muchas gracias por tu ayuda man
  #8 (permalink)  
Antiguo 18/10/2010, 07:17
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Duda con Propiedades Get y Set

Te quedaria algo como esto

Código C#:
Ver original
  1. set
  2. {
  3.       if (value == "")
  4.            throw new Exception("Debe de ingresar un nombre");
  5.       else
  6.            nombre = value;
  7. }

debes de poner la llamada dentro de un try catch.

Saludos
  #9 (permalink)  
Antiguo 18/10/2010, 07:18
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Duda con Propiedades Get y Set

y cual sería la diferencia en hacerlo de esa forma y no como la tengo'????
  #10 (permalink)  
Antiguo 18/10/2010, 07:20
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Duda con Propiedades Get y Set

Que como tu la tienes el usuario se va a enterar de que algo anda mal cuando visualice el objeto, mientras que si lo haces asi el usuario se va a dar cuenta inmeditamente.

Saludos
  #11 (permalink)  
Antiguo 18/10/2010, 07:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 125
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Duda con Propiedades Get y Set

Cita:
Iniciado por gedarufi Ver Mensaje
Que como tu la tienes el usuario se va a enterar de que algo anda mal cuando visualice el objeto, mientras que si lo haces asi el usuario se va a dar cuenta inmeditamente.

Saludos
genial man, muchas gracias por tu ayuda me ha servido de mucho

salu2
  #12 (permalink)  
Antiguo 18/10/2010, 07:28
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Duda con Propiedades Get y Set

de nada...

Etiquetas: propiedades, set
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:31.