Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alex_fsi

[Resolvido] Instanciar objeto de uma classe dentro de outra

Recommended Posts

Bom dia!

 

Sou iniciante em C# e estou tentando instanciar uma classe Curso dentro de outra classe Aluno.

Porém, só consigo instanciar este objeto Curso dentro de áreas como construtores.

 

A classe Curso é de mesmo namespace de Aluno, porém se encontra em um arquivo diferente.

 

Não quero ter que derivar a classe Aluno de Curso, já que isto é totalmente fora de contexto.

 

namespace SecondChance
{
    public class Aluno
    {
        //Variáveis para conexão
        public static string user;
        public static string password;
        public static string server;
        public static string database;
        
        /*Construtor classe aluno*/
        

        public Curso cursoAluno;

        
        /* Declaração de Variáveis */
        int mataluno; //Matrícula
        public int Mataluno
        {
            get { return mataluno; }
            set 
            {mataluno = value;
            }
        }

        string nomealuno; //Nome
        public string Nomealuno
        {
            get { return nomealuno; }
        }

        public Aluno(string Server, string User, string PassWord, string Database)
        {
            user = User;
            password = PassWord;
            server = Server;
            database = Database;
        }
}

//Classe Curso
namespace SecondChance
{
    public class Curso
    {
        string server;
        string user;
        string password;
        string database;

        int codcur;
        public int Codcur
        {
            get { return codcur; }
            set
            {
                byte codCurTemp = Convert.ToByte(value);
                cursonome = RetornaNome(codCurTemp); //Ainda não implementado
                if (cursonome == null || value == 0)
                    return;
                else
                {
                    codcur = value;
                }
            }
        }

        string cursonome;
        public string Cursonome
        {
            get { return cursonome; }
        }

        //Construtor sem parâmetros
        public Curso()
        {

        }
}

 

Agradeço desde já a ajuda de Vocês. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alex você pode instanciar a classe curso em qualquer parte de qualquer classe. Esta dando algum erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, no caso, como o curso é algo que o aluno possui, eu preciso de colocar isso na classe aluno.

Estou usando a classe Curso como um tipo.

 

Quando instancio a classe Curso e tento acessar alguma de suas propriedades e métodos públicos, ele simplesmente não me dá nenhuma opção, nem mesmo aqueles métodos que são de origem da classe object do sistem, como toString.

 

Não entendo o porque disso, pelos exemplos que vi, está tudo normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, na classe Aluno pra você usar a classe curso, instancia ela assim: Curso cursoAluno = new Curso(); agora não vi nenhum método publico na classe curso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Ivan, o problema é que estou fazendo isso, mas quando referencio cursoAluno, não tenho acesso nem aos métodos comuns, como Equals, ToString.

 

Tentei de diversas formas:

Public Curso cursoAluno = new Curso();

Public Curso cursoAluno; //DEPOIS CRIEI UM MÉTODO QUE RETORNAVA UMA CLASSE DO TIPO CURSO QUE NÃO FUNCIONOU

 

Tentei fazer referência using no arquivo Aluno. "Necas"!

 

No caso, eu só consegui ter acesso aos atributos desta instância em métodos ou construtores.

 

É realmente muito estranho, chato e incoveniente!!!! Já mudei de versão de Visual Studio....

 

Sem novas idéias!

 

PS: Tirei os métodos porque tinham informações confidenciais da empresa. Só pra não ficar visível ao curso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só você pode instanciar ele fora dos métodos e construtores, mas sé terá acesso a ele dentro dos mesmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que tentamos, não conseguimos isto também!

 

Pra mim, era possível você utilizar a classe como se fosse um "tipo" de dado, de forma que ele funcionasse como uma propriedade. Era isso que estava tentando.

 

Porque no caso, a classe Aluno será instanciada no programa posteriormente e tanto Curso, como Habilitacao(uma outra classe que criarei) serão atributos de Aluno.

 

Então, precisarei de acessar o valor de CodCur em outra parte do programa, quando instanciar o aluno.

 

você entendeu?

 

Juliano, no caso, tento:

 

Curso cursoAluno = new Curso();

cursoAluno.CodCur = 5;

 

 

No caso, posso mandar uma parte inicial do projeto do e-mail, se isso for ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que tentamos, não conseguimos isto também!

Consegui da seguinte forma:

Curso cursoAluno = new Curso();

public void Teste(){
cursoAluno.CodCur = 5;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, desculpem o trabalho, mas consegui resolver aki.

 

O seguinte, eu até posso declarar a instância da classe Curso dentro de Aluno, porém, como a expressão = new Curso(); é um comando, ele só pode ser executado em um método, propriedade ou construtor.

 

Então, após dar o comando = new Curso(); eu posso acessar a instância da classe em qualquer outro método da minha classe Aluno. Um exemplo

 

 

namespace Qualquer{
    public class Aluno(){
        /* Variáveis*/
        Curso alunoCurso;

        /*Construtor Aluno*/ 
        public Aluno()
        {
             /*Inicialização de Variáveis e etc.*/
             alunoCurso = new Curso(); //Desta forma, poderei acessar a instância desta classe em qualquer método ou propriedade.
        }

        /*Método*/
        void Matricular(int codcurso)
        {
            alunoCurso.VerificarVagas; //Acessar métodos da Classe Aluno
        }
}}

Então, para quem tinha a mesma dúvida! E obrigado Ivan e Juliano, foi mal pelo trabalho ae!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.