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

Sobrecarga ==

Estas en el tema de Sobrecarga == en el foro de .NET en Foros del Web. Estimados, estoy realizando un trabajo para la facultad, les consulto lo siguiente: Como utilizo una sobrecarga con el operador == en una clase una sobrecarga ...
  #1 (permalink)  
Antiguo 06/05/2012, 14:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Sobrecarga ==

Estimados, estoy realizando un trabajo para la facultad, les consulto lo siguiente:

Como utilizo una sobrecarga con el operador == en una clase una sobrecarga Booleana de otra clase?

Aqui les dejo el enunciado del TP:

Operador == (Igual): Retronará un booleano informando si el operario se encuentra en la fábrica o no
(utilizar la sobrecarga == de operario).


El tema principal que me tiene detenido es como utilizar la sobrecarga == de operario.

Muchas gracias!!!
Gustavo.
  #2 (permalink)  
Antiguo 06/05/2012, 20:24
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 2 meses
Puntos: 56
Respuesta: Sobrecarga ==

Hola.
La verdad es que no entiendo muy bien la pregunta.
que quieres decir con la sobrecarga usando el operador ==.

Te copio algo que me imagino que tienes si no es asi explicame un poco.
Tienes un metodo el cual retorna un booleano, si la fabrica se encuentra retorna true de lo contrario retorna false.

Lo que quieres es saber como usar ese valor booleano que te retorna?
Si es asi prueba esto.

tienes un metodo asi
pubic bool nombremetodo
{
aca tienes tu codigo y retorna true o false
}

para usar el metodo has asi

if(nombremetodo)
{
si entra, encontro la fabrica, osea el metodo retorna true
}
else
{
no encontro la fabrica, el metodo retorno false
}

Si no es esto explica
__________________
Mario Ramírez
Desarrollador .NET MCTS
https://www.mcpvirtualbusinesscard.c...nteractivecard
  #3 (permalink)  
Antiguo 07/05/2012, 07:41
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 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.

Etiquetas: c#
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 10:39.