Problemas con clase,objetos y propiedades

Iniciado por DanielPy, 3 Agosto 2013, 17:07 PM

0 Miembros y 1 Visitante están viendo este tema.

DanielPy

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.-

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();
}
}
}



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;
}
}
}



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();

}
}
}



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
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

DanielPy

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
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

Novlucker

Cita de: 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.

Código (csharp,9) [Seleccionar]
static void Main(string[] args)
{
    Entorno entorno = new Entorno();
    Datos DatosCte = new Datos();
    Imprimir ImprimieCte = new Imprimir();

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

Código (csharp,3,5) [Seleccionar]
public class Imprimir
{
    public void _Imprimir(Datos idc)
    {
        //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();
    }
}

Cita de: Novlucker en  3 Agosto 2013, 19:04 PM
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 (csharp,8,16,30) [Seleccionar]
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));
        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;
            }
        }
        Sueldo = temSueldo;
    }
}


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein