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

consulta sobre programa en C#

Estas en el tema de consulta sobre programa en C# en el foro de .NET en Foros del Web. Buenas, tengo una duda importante, tengo una aplicación y necesito usar unos métodos predefinidos en una clase para realizar una serie de tareas. Al tener ...
  #1 (permalink)  
Antiguo 27/05/2012, 11:06
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
consulta sobre programa en C#

Buenas, tengo una duda importante, tengo una aplicación y necesito usar unos métodos predefinidos en una clase para realizar una serie de tareas.

Al tener que adaptarme a los métodos que cuenta esa clase, no se muy bien como utilizarlos.

Tengo una clase de gestión productos con una serie de métodos, entre el cual se encuentra uno para insertar un producto, el código es el siguiente:

public void insProducto(int pos, Producto p)
{
prodDisponibles[pos] = p;
}

en esta misma clase tengo un vector para almacenar los elementos capturados que es el siguiente:

private Producto[] prodDisponibles;

En otra clase tengo llamada producto tengo unas variables, nombre, stock y precio de los productos.

Como puedo en la clase program realizar un menú que utilizando por ejemplo el método descrito inserte un nuevo producto.

Yo había pensado en un menú tipico, el código es el siguiente:

char op = '0';

while (op != 'S')
{

Console.Write("I");
Console.WriteLine("nsertar Producto");


op = Console.ReadKey().KeyChar;

switch (op)
{
case 'I':
Console.Clear();
Console.WriteLine("Insertar Nombre del Producto");
Console.WriteLine("Insertar las unidades del Producto");
Console.WriteLine("Insertar el Precio del Producto");
gp.insProducto(pos, p);
break;
}
}
Entonces cuando vaya a capturar el dato no se como utilizar el método descrito.

Si a alguien se lo ocurre como me sería de gran ayuda, soy nueva y estoy intentando aprender.

Un saludo y gracias!!
  #2 (permalink)  
Antiguo 27/05/2012, 11:38
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 1 mes
Puntos: 61
Respuesta: consulta sobre programa en C#

Pues solo tendrías que llamar al método y enviarle los parámetros, pero claro antes tendrías que crear un objeto de la clase donde se encuentre el método para poder usarlo.
Algo asi.
Código c#:
Ver original
  1. Clase obj = new Clase(); //aqui crear un objeto de la clase

Luego para usar el método arias así.
Código c#:
Ver original
  1. obj.insProducto();//dentro del paréntesis le tenes que enviar los 2 argumentos
Como recibe 2 parámetros tendrías que capturar los datos y enviárselos.
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres
  #3 (permalink)  
Antiguo 29/05/2012, 14:48
 
Fecha de Ingreso: mayo-2012
Mensajes: 2
Antigüedad: 12 años
Puntos: 0
Respuesta: consulta sobre programa en C#

El objeto se crearlo y tal, pero no que como utilizar el método y pasarle los parámetros.

El método:

public void insProducto(int pos, Producto p)
{
prodDisponibles[pos] = p;
}

La duda es ¿como capturo la posición y el parámetro de producto?, es decir, producto p corresponde a la clase Producto que contiene los siguientes atributos:

nombre, stock y precio

Entonces en el menú ¿como puedo llamar al método y capturar esos parámetros?. Estoy muy perdida en este aspecto, porque si pudiese modificar el método y adaptarlo.

Un saludo!!
  #4 (permalink)  
Antiguo 31/05/2012, 15:24
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: consulta sobre programa en C#

Hola virginiaberbel,!!

1º Bienvenida al Foro!!!.
2º Lo puedes hacer así :

*Como tu método recibe 2 parametros(1 de tipo entero y el otro de tipo Producto) Debes crear tu objeto Producto :
Código C:
Ver original
  1. //Crear tu objeto
  2. Producto objetoProducto = new Producto();

*Luego en tus mensajes lo que haces es jalar lo escrito y enviarlo a las propiedades de tu objeto :
Código C:
Ver original
  1. switch (op)
  2. {
  3. case 'I':
  4. Console.Clear();
  5. Console.WriteLine("Insertar Nombre del Producto");
  6. //Capturas el nombre insertado y le enviar a tu objeto
  7. objetoProducto.nombre = ReadLine();
  8. Console.WriteLine("Insertar las unidades del Producto");
  9. //Capturas el stock insertado y le enviar a tu objeto
  10. objetoProducto.stock = ReadLine();
  11. Console.WriteLine("Insertar el Precio del Producto");
  12. //Capturas el precio insertado y le enviar a tu objeto
  13. objetoProducto.precio = ReadLine();
  14. //Y envias al metodo tu parametro pos y tu objeto
  15. gp.insProducto(pos, objetoProducto);
  16. break;
  17. }
Eso sería todo. Espero haber resuelto tu duda. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 11/06/2012, 11:12
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: consulta sobre programa en C#

Hola Aquaventus, en el código que has puesto, al probarlo, en la linea gp.insProducto(pos, objetoProducto); dice que pos no existe en el contexto actual, pero sí esta correctamente declarado en la clase gp

Sabes por qué puede ser?
  #6 (permalink)  
Antiguo 11/06/2012, 11:41
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: consulta sobre programa en C#

Hola jloci88, la variable "pos", es el parámetro que recibe del método (De tipo Int) que viene a ser la posición del arreglo, fíjate en el primer mensaje de este post. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #7 (permalink)  
Antiguo 11/06/2012, 11:51
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: consulta sobre programa en C#

Sí pero ese método está dentro de otra clase diferente.
  #8 (permalink)  
Antiguo 11/06/2012, 12:08
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: consulta sobre programa en C#

Mmmm parece que sí jloci88. Bueno solo adapté a lo que quería el usuario viendo la parte del codigo que muestra, ahora de donde lo saca... eso no lo sé. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #9 (permalink)  
Antiguo 11/06/2012, 12:24
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: consulta sobre programa en C#

¿Qué tendría que hacer para que no saliera ese error?
  #10 (permalink)  
Antiguo 11/06/2012, 12:26
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: consulta sobre programa en C#

declarar la variable pos, xq el error que mencionas es porque no está declarada y asignarle un valor entero. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #11 (permalink)  
Antiguo 11/06/2012, 12:30
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: consulta sobre programa en C#

Eso ya lo habia intentado pero me sale esto:

Error 1 Se requiere una referencia de objeto para el campo, método o propiedad no estáticos 'BasePractica3.GestionProductos.insProducto(int, BasePractica3.Producto)' C:\Program.cs 37 25 BasePractica3
  #12 (permalink)  
Antiguo 11/06/2012, 12:37
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: consulta sobre programa en C#

eres el mismo usuario que virginiaberbel???. Por favor coloca todo tu codigo para verlo mejor. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #13 (permalink)  
Antiguo 11/06/2012, 13:00
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: consulta sobre programa en C#

No soy el mismo usuario, pero se ve que tenemos el mismo ejercicio.

EL código de la primera clase es:
Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BasePractica3
{
    class Producto
    {
        private string _nombre;
        private int _stock;
        private float _precio;

        public Producto() 
        {
            _nombre = "SIN DETERMINAR";
            _precio = 0;
            _stock = 0;
        }

        public Producto(string in_nombre, int in_stock, float in_precio)
        {
            _nombre = in_nombre;
            _stock = in_stock;
            _precio = in_precio;

        }

        public Producto(Producto p)
        {
            _nombre = p._nombre;
            _stock = p._stock;
            _precio = p._precio;

        }


        public string nombre 
        {
            get {
                return _nombre;
            }
            set
            {
                _nombre = value;
            }
        }

        public int stock
        {
            get
            {
                return _stock;
            }
            set
            {
                _stock = value;
            }
        }


        public float precio
        {
            get
            {
                return _precio;
            }
            set
            {
                _precio = value;
            }
        }
    }
}
Y el de la segunda:

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BasePractica3
{
    class GestionProductos
    {
        private Producto[] prodDisponibles;
        private Producto[] prodDescatalogados;

        
        // Constructores
        public GestionProductos()
        {
            prodDisponibles = new Producto[10];
            prodDescatalogados = new Producto[10];

            // Aseguramos que las posiciones de los productos estan a null.
            vaciaProductos(prodDisponibles);
            vaciaProductos(prodDescatalogados);
        }

        // Método para insertar elementos
        public void insProducto(int pos, Producto p)
        {
            prodDisponibles[pos] = p;
        }

        // Método para borrar elementos. Lo elimina de la posición indicada y lo guarda como producto descatalogados
        public void delProducto(int pos)
        {
            Producto p;
            p = prodDisponibles[pos];
            prodDisponibles[pos] = null;
            prodDescatalogados[ultPosDisponible()] = p;

        }

        // Método para conocer la última posición disponibles para descatalogar los elementos
        // En caso de no existir una posición a null. Reiniciliza el vector de descatalogados. 
        private int ultPosDisponible()
        {
            int i;
            i = 0;
            while (prodDescatalogados[i] != null && i<prodDescatalogados.Length)
            {
                i++;
            }
            if (i < prodDescatalogados.Length)
            {
                return i;
            }
            else
            {
                vaciaProductos(prodDescatalogados);
                return 0;
            }

        }

        private void vaciaProductos(Producto[] productos)
        {
            for (int i = 0; i < productos.Length; i++)
            {
                productos[i] = null;
            }

        }

    }
}
Y lo que hay que hacer es un programa para usar ambas clases.
  #14 (permalink)  
Antiguo 11/06/2012, 13:21
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: consulta sobre programa en C#

podrias colocar tambien el codigo de la consola que tienes?. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #15 (permalink)  
Antiguo 11/06/2012, 13:23
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: consulta sobre programa en C#

De la consola no tengo nada :(
  #16 (permalink)  
Antiguo 11/06/2012, 13:54
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: consulta sobre programa en C#

Hola! Realizé la insercion sin ningún problema... es cuestion de tu lógica para implementarla... Si bien este no es un lugar donde se realizan "tareas" sino donde se les guía con los problemas que puedan tener te dejo el código. Pero estudia el código y realiza lo mismo para los demas.
En tu clase GestionProductos, le defines una longitud de 10 como maximo de registros. Por ello que pos, es una variable de la posición que tomará tu registro en el arreglo.
Código C:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             //Declaro la variable de la opcion a escojer
  13.             Int32 opcion,pos;
  14.             Producto objetoProducto = new Producto();
  15.             GestionProductos gp = new GestionProductos();
  16.  
  17.             Console.WriteLine("Escoja una opcion ingresando el numero de la accion a realizar :");
  18.             Console.WriteLine("(1) Insertar un Producto");
  19.             Console.WriteLine("(2) Accion 2");
  20.             Console.WriteLine("(3) Accion 3");
  21.             Console.WriteLine("(4) Accion 4");
  22.  
  23.             opcion = Convert.ToInt32(Console.ReadLine());
  24.  
  25.             switch (opcion)
  26.             {
  27.                 case 1 :
  28.                     Console.WriteLine("Inserte la posicion que ocupará :");
  29.                     pos = Convert.ToInt32(Console.ReadLine());
  30.                     Console.WriteLine("Insertar Nombre del Producto :");
  31.                     //Capturas el nombre insertado y le enviar a tu objeto
  32.                     objetoProducto.nombre = Console.ReadLine();
  33.                     Console.WriteLine("Insertar las unidades del Producto :");
  34.                     //Capturas el stock insertado y le enviar a tu objeto
  35.                     objetoProducto.stock = Convert.ToInt32(Console.ReadLine());
  36.                     Console.WriteLine("Insertar el Precio del Producto :");
  37.                     //Capturas el precio insertado y le enviar a tu objeto
  38.                     objetoProducto.precio = float.Parse(Console.ReadLine());
  39.                     //Y envias al metodo tu parametro pos y tu objeto
  40.                     gp.insProducto(pos, objetoProducto);
  41.  
  42.                     Console.WriteLine("Datos del producto registrado :");
  43.                     Console.WriteLine("Nombre : " + objetoProducto.nombre);
  44.                     Console.WriteLine("Unidades : " + objetoProducto.stock);
  45.                     Console.WriteLine("Precio : " + objetoProducto.precio);
  46.                     Console.ReadKey();
  47.                     break;
  48.                 case 2 :
  49.                     break;
  50.                 case 3 :
  51.                     break;
  52.                 case 4 :
  53.                     break;
  54.             }
  55.  
  56.         }
  57.     }
  58. }
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #17 (permalink)  
Antiguo 11/06/2012, 14:38
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: consulta sobre programa en C#

Muchas gracias, más o menos lo voy entendiendo.
Pos me tenía loco no sabía muy bien la acción que realizaba.

Etiquetas: programa
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 11:23.