Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/05/2012, 07:41
gus_anomaly
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Sobrecarga ==

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 original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace PracticaSobrecargas
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.  
  13.             Fabrica miFabrica = new Fabrica("ACME");
  14.  
  15.             Operario op1 = new Operario("Juan", "Perez");
  16.             Operario op2 = new Operario("Roberto", "Sanchez", 123);
  17.             Operario op3 = new Operario("Roberto", "Sanchez", 128);
  18.             Operario op4 = new Operario("Juan", "Bermudez", 120);
  19.             Operario op5 = new Operario("Mirta", "Busnelli", 199);
  20.  
  21.             //AGREGO OPERARIOS A LA FABRICA
  22.             miFabrica += op1;
  23.             miFabrica += op2;
  24.             miFabrica += op3;
  25.             miFabrica += op4;
  26.             miFabrica += op5;
  27.  
  28.             miFabrica += op1;
  29.             miFabrica += op3;
  30.  
  31.             //MUESTRO LA FABRICA
  32.             Console.WriteLine(miFabrica.Mostrar());
  33.  
  34.             //MUESTRO EL COSTO  
  35.             Fabrica.MostrarCosto(miFabrica);
  36.  
  37.             //SACO OPERARIOS
  38.             miFabrica -= op1;
  39.             miFabrica -= op3;
  40.             miFabrica -= op1;
  41.  
  42.             //AUMENTO EL SUELDO A LOS OPERARIOS
  43.             op2.setAumentarSalario(33);
  44.             op4.setAumentarSalario(33);
  45.  
  46.             //MUESTRO LA FABRICA
  47.             Console.WriteLine(miFabrica.Mostrar());
  48.  
  49.             //MUESTRO EL COSTO  
  50.             Fabrica.MostrarCosto(miFabrica);
  51.  
  52.             Console.ReadLine();
  53.         }
  54.     }
  55. }

//operario.cs
Código C:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace PracticaSobrecargas
  7. {
  8.     class Operario
  9.     {
  10.         private String _apellido;
  11.         private int _legajo;
  12.         private String _nombre;
  13.         private float _salario;
  14.  
  15.         //Punto 1
  16.         public float getSalario()
  17.         {
  18.             return _salario;
  19.         }
  20.  
  21.         //Punto 3
  22.         public String Mostrar()
  23.         {
  24.             StringBuilder myString = new StringBuilder();
  25.             myString.AppendLine(ObtenerNombreYApellido());
  26.             myString.AppendLine("Legajo: " + _legajo);
  27.             myString.AppendLine("Salario: " + _salario);
  28.             return myString.ToString();
  29.         }
  30.  
  31.         //Punto 3
  32.         public static String Mostrar(Operario op)
  33.         {
  34.             return Mostrar(op);
  35.         }
  36.  
  37.         //Punto 3
  38.         public String ObtenerNombreYApellido()
  39.         {
  40.             return _nombre + ", " + _apellido;
  41.         }
  42.  
  43.         //Punto 2
  44.         public Operario() { }
  45.  
  46.         public Operario(String nombre, String apellido) :this()
  47.         {
  48.             this._nombre = nombre;
  49.             this._apellido = apellido;
  50.             this._salario = 1500;
  51.         }
  52.  
  53.         public Operario(String nombre, String apellido, int legajo) :this(nombre, apellido)
  54.         {
  55.             this._legajo = legajo;
  56.             this._salario = 1500;
  57.         }
  58.  
  59.         //Punto 5
  60.         public static Boolean operator ==(Operario op1, Operario op2)
  61.         {
  62.             if (op1._nombre == op2._nombre && op1._apellido == op2._apellido && op1._legajo == op2._legajo)
  63.             {
  64.                 return true;
  65.             }
  66.  
  67.             return false;
  68.         }
  69.  
  70.         public static Boolean operator !=(Operario op1, Operario op2)
  71.         {
  72.             return !(op1 == op2);
  73.         }
  74.  
  75.         //Punto 1
  76.         public void setAumentarSalario(float aumento)
  77.         {
  78.             float numAum = 0;
  79.             numAum = _salario * aumento / 100;
  80.             _salario += numAum;
  81.         }
  82.     }
  83. }

//fabrica.cs
Código C:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace PracticaSobrecargas
  7. {
  8.     class Fabrica
  9.     {
  10.         private Operario[] _operarios;
  11.         private String _razonSocial;
  12.  
  13.         //Punto 2
  14.         public Fabrica() { }
  15.  
  16.         public Fabrica(String razonSocial) :this()
  17.         {
  18.             this._razonSocial = razonSocial;
  19.             this._operarios = new Operario[5];
  20.         }
  21.  
  22.         public String Mostrar()
  23.         {
  24.             return _razonSocial;
  25.         }
  26.  
  27.         //Punto 4
  28.         public static void MostrarCosto(Fabrica fbr)
  29.         {
  30.             Console.WriteLine(fbr.RetornarCostos());
  31.         }
  32.  
  33.         //Punto 4
  34.         public String MostrarOperarios()
  35.         {
  36.             StringBuilder myString = new StringBuilder();
  37.             myString.Append("Operarios: ");
  38.             for (int i = 0; i < _operarios.Length; i++)
  39.             {
  40.                 myString.AppendLine(Operario.Mostrar(_operarios[i]));
  41.             }
  42.  
  43.             return myString.ToString();
  44.         }
  45.  
  46.         //Punto 4
  47.         private int ObtenerIndice()
  48.         {
  49.             int ind = 0;
  50.  
  51.             while(_operarios[ind] != null)
  52.             {
  53.                 ind++;
  54.             }
  55.  
  56.             if (ind == _operarios.Length -1)
  57.             {
  58.                 return -1;
  59.             }
  60.             else
  61.             {
  62.                 return ind;
  63.             }
  64.         }
  65.  
  66.         //Punto 4
  67.         private int ObtenerIndice(Operario op)
  68.         {
  69.             int cont = 0;
  70.  
  71.             while (_operarios[cont] != op)
  72.             {
  73.                 cont++;
  74.             }
  75.  
  76.             if (cont == _operarios.Length)
  77.             {
  78.                 return -1;
  79.             }
  80.             else
  81.             {
  82.                 return cont;
  83.             }
  84.         }
  85.  
  86.         //Punto 6
  87.         public static Boolean operator ==(Fabrica fr, Operario op)
  88.         {
  89.             int cont = 0;
  90.  
  91.             for (int i = 0; i < fr._operarios.Length; i++)
  92.             {
  93.                 if (op == fr._operarios[i])
  94.                 {
  95.                     cont++;    
  96.                 }
  97.             }
  98.  
  99.             if (cont != 0)
  100.             {
  101.                 return true;
  102.             }
  103.             else
  104.             {
  105.                 return false;
  106.             }
  107.         }
  108.  
  109.         public static Boolean operator !=(Fabrica fr, Operario op)
  110.         {
  111.             return !(fr == op);
  112.         }
  113.  
  114.         //Punto 6
  115.         public static Fabrica operator +(Fabrica fr, Operario op)
  116.         {
  117.             if (fr.ObtenerIndice(op) != -1)
  118.             {
  119.                 fr._operarios[fr.ObtenerIndice()] = op;
  120.             }
  121.  
  122.             return fr;
  123.         }
  124.  
  125.         public static Fabrica operator -(Fabrica fr, Operario op)
  126.         {
  127.             for (int i = 0; i < fr._operarios.Length; i++)
  128.             {
  129.                 if (op == fr._operarios[i])
  130.                 {
  131.                     fr._operarios[i] = null;
  132.                 }
  133.             }
  134.  
  135.             return fr;
  136.         }
  137.  
  138.         //Punto 4
  139.         private float RetornarCostos()
  140.         {
  141.             float sumoCostos = 0;
  142.  
  143.             for (int i = 0; i < _operarios.Length; i++)
  144.             {
  145.                 sumoCostos = sumoCostos + _operarios[i].getSalario();
  146.             }
  147.  
  148.             return sumoCostos;
  149.         }
  150.  
  151.     }
  152. }

Saludos y gracias nuevamente.
Gustavo.