Como va Severino!!!! aca te dejo mi codigo para ver si me podes dar una opinion. O sea si sirve para el parcial , hice todo lo que pedian. gracias!!!. Perdona que no lo deje como vos ya que me tira error de sercvidor cuando lo quiero previsualizar!!!!!! Gracias!!!
Todo tranqui. Ahí va:
Errores grandes tenes estos:
La clase médico no debe tener ningún atributo público. No estas respetando el encapsulamiento. Fijate que tenes como público los atributos nombre, apellido y el vector de obras sociales.
Nombre y apellido te pide ingresarlos por el constructor. Entonces, a diferencia del resto de los atributos no vas a tener una propiedad de get y set porque el "set" lo harías desde el constructor. En este caso tenes que hacerle el Get sólo, es decir una propiedad de solo lectura. Porque que lo ingreses por el constructor no quiere decir que lo puedas poner público. Entonces para esos atributos tendrías una propìedad de sólo lectura que te permite consultar estos valores desde el progam:
Lenguaje: csharp
private string nombre;
private string apellido;
public string Nombre
{
get {return nombre;}
}
public string Apellido
{
get {return apellido;}
}
PAra las obras sociales lo mismo....que sea un vector no te impide hacerle una propiedad:
Lenguaje: csharp
private string[] oSoc;
public string[] OSOC
{
set { oSoc = value; }
get { return oSoc; }
}
Y para usar este vector desde el program llamas a su propiedad. Después veo que le estas poniendo una dimensión fija al vector (3). Eso está mal, la consigna no decía que cada médico trabaja 3 obras sociales sino que puede trabajar varias. Tenes que tratarlo dinámicamente:
Lenguaje: csharp
Console.WriteLine("Ingrese la cantidad de obras sociales que tendrá el médico");
int cantobras = int.Parse(Console.ReadLine());
vector[i].OSOC = new string[cantobras];
Luego tenes algunas cosas que estan de más o tienen mucha vuelta....te recomiendo que mires el ejemplo que puse. Por ejemplo:
1-El menú no va dentro de la clase, sino que se hace desde el program.
2-Es muy redundante hacer un método por cada valor del médico que vas a ingresar. Me refiero a:
Lenguaje: csharp
vector[i].DNI = Program.ingdni(dni);
//ingreso de dni
public static string ingdni(string dni)
{
Console.Write("Ingresar DNI: ");
dni = Console.ReadLine();
return dni;
}// fin ing nom
Acá deberías usar directamente la propiedad de la clase médico, siempre desde el program:
Lenguaje: csharp
Console.writeline("Ingrese...");
vector[i].DNI = Console.ReadLine();
Así respetas el encapsulamiento y lo resolves en 2 líneas.
Después fijate, veo que pasas variables a los médotos y no las usas...y algunas cositas más. Como te decía, pegale una mirada al ejemplo que puse porque lo trabajas muy distinto a como vemos en clase.
Igual si corregís lo que te marqué primero anda bastante bien
