C sharp - Esta mal poner setters adentro de un constructor?

 
Vista:
sin imagen de perfil

Esta mal poner setters adentro de un constructor?

Publicado por Sharvin (4 intervenciones) el 11/02/2020 16:48:18
Esta mal poner setters adentro de un constructor? Si esto esta mal, como valido campos de clase de una forma prolija en C#.

Aca les dejo el codigo en cuestión.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Empleado
{
	private int edad;
	private string nombre;
 
	public void SetEdad(int edad)
	{
		if (edad < 0 || edad > 99) throw new ArgumentOutOfRangeException();
 
		this.edad = edad;
	}
 
	public void SetNombre(string nombre) => this.nombre = nombre;
 
	public Empleado(int edad, string nombre)
	{
		SetEdad(edad);
		SetNombre(nombre);
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 326
Plata
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Esta mal poner setters adentro de un constructor?

Publicado por miguelZ (143 intervenciones) el 11/02/2020 18:50:47
No esta mal inicializar varables desde el constructor,

Lo que tu haces es correcto, seria mejor
que agregues todo el codigo de la clase para establecer
si esas propiedades las modificaras despues y si para
cada modificacion agregas una validacion.

Ahora se puede establcer una clase para la estructura empleado,
una clase con solo las propiedades del Empleado, la validacion
la puedes llevar a cabo en la capa de negocio, podiras tener varias validaciones
para algn tipo de empleado y entonces se complicara el asunto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Esta mal poner setters adentro de un constructor?

Publicado por Sharvin (4 intervenciones) el 12/02/2020 01:09:00
Gracias, el ejemplo que añadí era solo explicativo, no corresponde a ningún ejercicio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Esta mal poner setters adentro de un constructor?

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 12/02/2020 01:56:00
Lo que tendrías que hacer, es definir las propiedades de tus clases, y esa lógica iría en la implementación clásica, mas o mnenos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class empleado
{
 
     private int edad;
 
    public int Edad
    {
        get {return edad;}
        set
            {
              if(value<0 || value>99)
                throw new ArgumentOutOfRangeException($"{nameof(value)} debe estar entre 0 y 99.");
               edad=value;
             }
    }
}

Así sería una implementación completa o clásica de una propiedad

Espero te sirva.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Esta mal poner setters adentro de un constructor?

Publicado por Sharvin (4 intervenciones) el 12/02/2020 02:11:50
Gracias esto es lo que buscaba, ¿es necesario usar siempre las propiedades? o solo cuando haya que validar un campo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Esta mal poner setters adentro de un constructor?

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 12/02/2020 02:17:24
Si trabajas orientado a objetos la base de los objetos son las clases, y en ellas puedes definir propiedades autoimplementadas o clásicas, una propiedad autoimplementada sería así;

public int Edad {get;set;}


Pero si o si a los datos se debe acceder mediante propiedades.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar