Estimado, muchisimas gracias por su tiempo, aqui adjunto el TP que hice, al momento logré que no tenga errores pero tiene warnings y no ejecuta:
//program.cs
Código C:
Ver originalusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PracticaSobrecargas
{
class Program
{
static void Main(string[] args)
{
Fabrica miFabrica = new Fabrica("ACME");
Operario op1 = new Operario("Juan", "Perez");
Operario op2 = new Operario("Roberto", "Sanchez", 123);
Operario op3 = new Operario("Roberto", "Sanchez", 128);
Operario op4 = new Operario("Juan", "Bermudez", 120);
Operario op5 = new Operario("Mirta", "Busnelli", 199);
//AGREGO OPERARIOS A LA FABRICA
miFabrica += op1;
miFabrica += op2;
miFabrica += op3;
miFabrica += op4;
miFabrica += op5;
miFabrica += op1;
miFabrica += op3;
//MUESTRO LA FABRICA
Console.WriteLine(miFabrica.Mostrar());
//MUESTRO EL COSTO
Fabrica.MostrarCosto(miFabrica);
//SACO OPERARIOS
miFabrica -= op1;
miFabrica -= op3;
miFabrica -= op1;
//AUMENTO EL SUELDO A LOS OPERARIOS
op2.setAumentarSalario(33);
op4.setAumentarSalario(33);
//MUESTRO LA FABRICA
Console.WriteLine(miFabrica.Mostrar());
//MUESTRO EL COSTO
Fabrica.MostrarCosto(miFabrica);
Console.ReadLine();
}
}
}
//operario.cs
Código C:
Ver originalusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PracticaSobrecargas
{
class Operario
{
private String _apellido;
private int _legajo;
private String _nombre;
private float _salario;
//Punto 1
public float getSalario()
{
return _salario;
}
//Punto 3
public String Mostrar()
{
StringBuilder myString = new StringBuilder();
myString.AppendLine(ObtenerNombreYApellido());
myString.AppendLine("Legajo: " + _legajo);
myString.AppendLine("Salario: " + _salario);
return myString.ToString();
}
//Punto 3
public static String Mostrar(Operario op)
{
return Mostrar(op);
}
//Punto 3
public String ObtenerNombreYApellido()
{
return _nombre + ", " + _apellido;
}
//Punto 2
public Operario() { }
public Operario(String nombre, String apellido) :this()
{
this._nombre = nombre;
this._apellido = apellido;
this._salario = 1500;
}
public Operario(String nombre, String apellido, int legajo) :this(nombre, apellido)
{
this._legajo = legajo;
this._salario = 1500;
}
//Punto 5
public static Boolean operator ==(Operario op1, Operario op2)
{
if (op1._nombre == op2._nombre && op1._apellido == op2._apellido && op1._legajo == op2._legajo)
{
return true;
}
return false;
}
public static Boolean operator !=(Operario op1, Operario op2)
{
return !(op1 == op2);
}
//Punto 1
public void setAumentarSalario(float aumento)
{
float numAum = 0;
numAum = _salario * aumento / 100;
_salario += numAum;
}
}
}
//fabrica.cs
Código C:
Ver originalusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PracticaSobrecargas
{
class Fabrica
{
private Operario[] _operarios;
private String _razonSocial;
//Punto 2
public Fabrica() { }
public Fabrica(String razonSocial) :this()
{
this._razonSocial = razonSocial;
this._operarios = new Operario[5];
}
public String Mostrar()
{
return _razonSocial;
}
//Punto 4
public static void MostrarCosto(Fabrica fbr)
{
Console.WriteLine(fbr.RetornarCostos());
}
//Punto 4
public String MostrarOperarios()
{
StringBuilder myString = new StringBuilder();
myString.Append("Operarios: ");
for (int i = 0; i < _operarios.Length; i++)
{
myString.AppendLine(Operario.Mostrar(_operarios[i]));
}
return myString.ToString();
}
//Punto 4
private int ObtenerIndice()
{
int ind = 0;
while(_operarios[ind] != null)
{
ind++;
}
if (ind == _operarios.Length -1)
{
return -1;
}
else
{
return ind;
}
}
//Punto 4
private int ObtenerIndice(Operario op)
{
int cont = 0;
while (_operarios[cont] != op)
{
cont++;
}
if (cont == _operarios.Length)
{
return -1;
}
else
{
return cont;
}
}
//Punto 6
public static Boolean operator ==(Fabrica fr, Operario op)
{
int cont = 0;
for (int i = 0; i < fr._operarios.Length; i++)
{
if (op == fr._operarios[i])
{
cont++;
}
}
if (cont != 0)
{
return true;
}
else
{
return false;
}
}
public static Boolean operator !=(Fabrica fr, Operario op)
{
return !(fr == op);
}
//Punto 6
public static Fabrica operator +(Fabrica fr, Operario op)
{
if (fr.ObtenerIndice(op) != -1)
{
fr._operarios[fr.ObtenerIndice()] = op;
}
return fr;
}
public static Fabrica operator -(Fabrica fr, Operario op)
{
for (int i = 0; i < fr._operarios.Length; i++)
{
if (op == fr._operarios[i])
{
fr._operarios[i] = null;
}
}
return fr;
}
//Punto 4
private float RetornarCostos()
{
float sumoCostos = 0;
for (int i = 0; i < _operarios.Length; i++)
{
sumoCostos = sumoCostos + _operarios[i].getSalario();
}
return sumoCostos;
}
}
}
Saludos y gracias nuevamente.
Gustavo.