Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: DanielPy en 3 Agosto 2013, 17:07 pm



Título: Problemas con clase,objetos y propiedades
Publicado por: DanielPy en 3 Agosto 2013, 17:07 pm
Hola a todos.
Bueno no puedo descubrir por mi mismo que estoy haciendo mal,el programa no me arroja ningún error pero no me imprime los datos que están guardados en la propiedades de la clase Datos.-
Yo consideraba que con crear un objeto en la clase imprimir de la clase Datos lo podía hacer pero evidentemente algo estoy haciendo mal.-

Código:
using System;

namespace Propiedades
{
class ProgramaAPP
{
public static void Main(string[] args)
{
Entorno entorno = new Entorno();
Datos DatosCte = new Datos();
Imprimir ImprimieCte = new Imprimir();

entorno._Entorno();
DatosCte.datos();
ImprimieCte._Imprimir();
}
}
}


Código:
using System;

namespace Propiedades
{
public class Datos
{
public string Nombre { get; set; }

public double Sueldo { get; set; }

public void datos()
{
Datos dtos = new Datos();
string lineas = "";
do
{
Console.SetCursorPosition(02,02);
Console.Write("Ingrese nombre completo....:");
lineas = Console.ReadLine();
}while(string.IsNullOrEmpty(lineas));
        dtos.Nombre = lineas;

        bool resultado;
        double temSueldo;
        while(true)
        {
        Console.SetCursorPosition(02,04);
        Console.Write("Ingrese el sueldo mensual..:");
        resultado = double.TryParse(Console.ReadLine(), out temSueldo);
        if(resultado && temSueldo != 0)
        {
        break;
        }
        }
dtos.Sueldo = temSueldo;
}
}
}


Código:
using System;

namespace Propiedades
{
public class Imprimir
{
public void _Imprimir()
{
Datos idc = new Datos();

Console.SetCursorPosition(02,08);
Console.Write("El cliente se llama...: {0} y gana mensualmente...$ {1}" , idc.Nombre,idc.Sueldo);

Console.SetCursorPosition(02,10);
Console.Write("Presione una tecla para cerrar la aplicación...");
Console.ReadKey();

}
}
}


Código:
using System;

namespace Propiedades
{
public class Entorno
{
public void _Entorno()
{
Console.Title = " Práctica con propiedades";
}
}
}

Estoy para el cachetazo psicológico, porque me suena que estoy cometiendo un error infantil.-

Novlucker como notaras implemente las propiedades automáticas.-

Saludos y desde ya muchas gracias.-
Daniel


Título: Re: Problemas con clase,objetos y propiedades
Publicado por: Novlucker en 3 Agosto 2013, 19:04 pm
Al hacer un NEW, estas creando una NUEVA instancia de clase, no es lo mismo la instancia que creas dentro del Main, que la que creas dentro de Imprimir, por eso al Imprimir, muestra los valores vacíos, porque esa clase no tiene nada asignado, deberías de pasar la instancia de Datos como referencia a Imprimir.

Igualmente no va a mostrar nada, porque adicionalmente a lo anterior, tienes otro problema. Tu clase Datos no está guardando los valores de Nombre y Sueldo, porque dentro de Datos creas una NUEVA instancia, en la cual estas seteando los valores, no estás seteando los valores de sus propiedades, estás seteando los de otra, así que sigue estando vacía.

Saludos


Título: Re: Problemas con clase,objetos y propiedades
Publicado por: DanielPy en 3 Agosto 2013, 19:51 pm
Hola Novlucker.
Gracias igual, soy un recién iniciado en c# y lo que necesito es algo de código para aprender y no sólo explicaciones que si bien tienen sustento no me ayudan.-

Comprendo que no tenes la culpa que yo tenga 61 años y como sospecharas mis conocidos no tienen ni idea de lo que es la computación-programación (nací en 1952) lo que pido es un poco de comprensión y paciencia para enseñarme no como si fuera un alumno si no como si fueran mis amigos.- :-(

Gracias igual, seguramente ya estare encontrando ese foro.-

Daniel


Título: Re: Problemas con clase,objetos y propiedades
Publicado por: Novlucker en 3 Agosto 2013, 20:42 pm
Al hacer un NEW, estas creando una NUEVA instancia de clase, no es lo mismo la instancia que creas dentro del Main, que la que creas dentro de Imprimir, por eso al Imprimir, muestra los valores vacíos, porque esa clase no tiene nada asignado, deberías de pasar la instancia de Datos como referencia a Imprimir.

Código
  1. static void Main(string[] args)
  2. {
  3.    Entorno entorno = new Entorno();
  4.    Datos DatosCte = new Datos();
  5.    Imprimir ImprimieCte = new Imprimir();
  6.  
  7.    entorno._Entorno();
  8.    DatosCte.datos();
  9.    ImprimieCte._Imprimir(DatosCte);
  10. }
Código
  1. public class Imprimir
  2. {
  3.    public void _Imprimir(Datos idc)
  4.    {
  5.        //Datos idc = new Datos();
  6.  
  7.        Console.SetCursorPosition(02, 08);
  8.        Console.Write("El cliente se llama...: {0} y gana mensualmente...$ {1}", idc.Nombre, idc.Sueldo);
  9.  
  10.        Console.SetCursorPosition(02, 10);
  11.        Console.Write("Presione una tecla para cerrar la aplicación...");
  12.        Console.ReadKey();
  13.    }
  14. }
Igualmente no va a mostrar nada, porque adicionalmente a lo anterior, tienes otro problema. Tu clase Datos no está guardando los valores de Nombre y Sueldo, porque dentro de Datos creas una NUEVA instancia, en la cual estas seteando los valores, no estás seteando los valores de sus propiedades, estás seteando los de otra, así que sigue estando vacía.
Código
  1. public class Datos
  2. {
  3.    public string Nombre { get; set; }
  4.    public double Sueldo { get; set; }
  5.  
  6.    public void datos()
  7.    {
  8.        //Datos dtos = new Datos();
  9.        string lineas = "";
  10.        do
  11.        {
  12.            Console.SetCursorPosition(02, 02);
  13.            Console.Write("Ingrese nombre completo....:");
  14.            lineas = Console.ReadLine();
  15.        } while (string.IsNullOrEmpty(lineas));
  16.        Nombre = lineas;
  17.  
  18.        bool resultado;
  19.        double temSueldo;
  20.        while (true)
  21.        {
  22.            Console.SetCursorPosition(02, 04);
  23.            Console.Write("Ingrese el sueldo mensual..:");
  24.            resultado = double.TryParse(Console.ReadLine(), out temSueldo);
  25.            if (resultado && temSueldo != 0)
  26.            {
  27.                break;
  28.            }
  29.        }
  30.        Sueldo = temSueldo;
  31.    }
  32. }

Saludos