• Domingo 22 de Diciembre de 2024, 19:13

Autor Tema:  Aprendiendo C#...  (Leído 2322 veces)

javier_gch

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Aprendiendo C#...
« en: Viernes 30 de Noviembre de 2012, 20:00 »
0
Buenas, estoy aprendiendo programación (C#) y estoy atascado con la programación orientada a objeto... (modo consola)  :ayuda:

ahora mismo estoy intentando llamar a un método (altas) de la clase Alumno desde main y me dice siempre que "altas no está en el contexto actual"

no entiendo que tengo mal,
a ver si alguien me ayuda  :adios:

esto es lo que llevo hecho:

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

namespace Practica3
{
        public class Alumno
    {
public int numero;
public string nombre;
    public string dni;
public string direccion;

        public Alumno(int num1, string nom1, string dni1, string dir1)
        {
            this.numero = num1;
            this.nombre = nom1;
            this.dni = dni1;
            this.direccion = dir1;
        }


        public void altas()
            {
            ArrayList lista = new ArrayList();

            int num1;
            string nom1, dni1, dir1;

            Console.Write("Introduce numero: ");
            num1 = Convert.ToInt32(Console.ReadLine());

            Console.Write("Introduce nombre: ");
            nom1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce dni: ");
            dni1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce direccion: ");
            dir1 = Convert.ToString(Console.ReadLine());


            Alumno P = new Alumno(num1, nom1, dni1, dir1);
            lista.Add(P);


            for (int i = 0; i < lista.Count; i++)
                {
                Console.WriteLine(((Alumno)lista[i]).nombre);
                }
            }
    }


    class Practica3
    {

        static void Main(string[] args)
        {

        int opcion = 0;
       
        // menú y switch para las opciones
        do
            {
            Console.Clear();
            Console.WriteLine("Elija una opción:");
            Console.Write("\n");
            Console.WriteLine("1. Altas");
            Console.WriteLine("0. Salir");
            Console.Write("\n");
            Console.Write("Opción: ");
            opcion = Convert.ToInt32(Console.ReadLine());

            switch (opcion)
                {
                case 0:
                    Console.WriteLine("FIN DEL PROGRAMA");
                    Console.ReadKey();
                    break;

                case 1:
                    altas();
                    break;

                default:
                    break;
                }
            }
        while (opcion != 0);

        }
    }
}

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Aprendiendo C#...
« Respuesta #1 en: Viernes 30 de Noviembre de 2012, 20:59 »
0
Hola javier_gch, bienvenido al foro.

Pues tu mismo lo estas diciendo, el metodo altas esta definido dentro de la clase Alumno, no dentro de la clase Practica3 que contienen al metodo Main(),  por lo tanto no existe en el contexto actual de la clase que estas utilizando (Practica3).

Para poder acceder al metodo altas, puedes hacer 2 cosas, crear una instancia de la clase alumno dentro de Main() para poder acceder a altas, o definir el metodo altas como estatico. En los dos casos tendrias que escribir alumno.altas() para llamar al metodo Yo te sugeriria ademas de definirlo estatico, que pases el metodo altas() a Practica3, y que ademas tambien definas estatica la lista de alumnos, de esa forma puedes llamar a tu lista desde cualquier metodo de la clase Practica3.

Te lo dejo parcialmente modificado para que te des una idea:

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

namespace Practica3
{
    public class Alumno
    {
        public int numero;
        public string nombre;
        public string dni;
        public string direccion;

        public Alumno(int num1, string nom1, string dni1, string dir1)
        {
            this.numero = num1;
            this.nombre = nom1;
            this.dni = dni1;
            this.direccion = dir1;
        }

    }

    class Practica3
    {
        // Definido como estatico
        public static void altas()
        {
            ArrayList lista = new ArrayList();

            int num1;
            string nom1, dni1, dir1;

            Console.Write("Introduce numero: ");
            num1 = Convert.ToInt32(Console.ReadLine());

            Console.Write("Introduce nombre: ");
            nom1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce dni: ");
            dni1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce direccion: ");
            dir1 = Convert.ToString(Console.ReadLine());


            Alumno P = new Alumno(num1, nom1, dni1, dir1);
            lista.Add(P);


            for (int i = 0; i < lista.Count; i++)
            {
                Console.WriteLine(((Alumno)lista[i]).nombre);
            }
        }

        static void Main(string[] args)
        {

            int opcion = 0;

            // menú y switch para las opciones
            do
            {
                Console.Clear();
                Console.WriteLine("Elija una opción:");
                Console.Write("\n");
                Console.WriteLine("1. Altas");
                Console.WriteLine("0. Salir");
                Console.Write("\n");
                Console.Write("Opción: ");
                opcion = Convert.ToInt32(Console.ReadLine());

                switch (opcion)
                {
                    case 0:
                        Console.WriteLine("FIN DEL PROGRAMA");
                        Console.ReadKey();
                        break;

                    case 1:
                        Practica3.altas();
                        break;

                    default:
                        break;
                }
            }
            while (opcion != 0);
        }
    }
}

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

javier_gch

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Aprendiendo C#...
« Respuesta #2 en: Viernes 30 de Noviembre de 2012, 23:46 »
0
Muchísimas gracias por responder, no es que yo me empeñe en ponerlo en la clase alumno es que el ejercicio lo quiere así pero lo del static me sirvió para dejarlo en altas.
(tengo que mirar que es lo que hace)

Al final creo el objeto ArrayList (lista) en la clase Practica3 y se lo paso como parámetro a la función altas en la clase Alumno ( Alumno.altas(lista) )

dejo el código ;)
 :gracias:

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

namespace Practica3
{
        class Alumno
    {
private int numero;
private string nombre;
        private string dni;
private string direccion;

        public Alumno(int num1, string nom1, string dni1, string dir1)
        {
            this.numero = num1;
            this.nombre = nom1;
            this.dni = dni1;
            this.direccion = dir1;
        }

        public static void altas(ArrayList lista)
            {
           
            int num1;
            string nom1, dni1, dir1;

            Console.Write("Introduce numero: ");
            num1 = Convert.ToInt32(Console.ReadLine());

            Console.Write("Introduce nombre: ");
            nom1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce dni: ");
            dni1 = Convert.ToString(Console.ReadLine());

            Console.Write("Introduce direccion: ");
            dir1 = Convert.ToString(Console.ReadLine());

            Alumno P = new Alumno(num1, nom1, dni1, dir1);
            lista.Add(P);

            for (int i = 0; i < lista.Count; i++)
                {
                Console.WriteLine(((Alumno)lista[i]).nombre);
                }
            Console.ReadKey();
            }
    }

    class Practica3
    {
        static void Main(string[] args)
        {
        ArrayList lista = new ArrayList();
        int opcion = 0;
       
        // menú y switch para las opciones
        do
            {
            Console.Clear();
            Console.WriteLine("Elija una opción:");
            Console.Write("\n");
            Console.WriteLine("1. Altas");
            Console.WriteLine("0. Salir");
            Console.Write("\n");
            Console.Write("Opción: ");
            opcion = Convert.ToInt32(Console.ReadLine());

            switch (opcion)
                {
                case 0:
                    Console.WriteLine("FIN DEL PROGRAMA");
                    Console.ReadKey();
                    break;

                case 1:
                    Alumno.altas(lista);
                    break;

                default:
                    break;
                }
            }
        while (opcion != 0);

        }
    }
}