This como parâmetro

2 respostas
N

Olá pessoal, esse é meu primeiro post aqui. Sou novo no mundo da programação e quero ingressar nessa área mas ainda possua muitas dúvidas bobas. A minha dúvida é quanto a um código de exercício resolvido pelo professor, em resumo, esse “sistema” deve cadastrar os alunos em disciplinas e etc

public class Turma {

private final int MAX_ALUNOS = 30;
private final int MAX_CREDITOS = 20;

private String codigo;
private Disciplina disciplina;
private ArrayList<Aluno> alunos;

public Turma(String codigo, Disciplina disciplina) {
    this.codigo = codigo;
    this.disciplina = disciplina;
    
    alunos = new ArrayList();
}

public String getCodigo() {
    return codigo;
}

public Disciplina getDisciplina() {
    return disciplina;
}

public boolean matricular(Aluno a) {
    
    // 1-Verificar se tem vaga na turma
    if (! temVaga())
        return false;
    
    // 2-Verificar se aluno ja esta inscrito nessa disciplina
    if (estaInscrito(a))
        return false;
    
    // 3-Verificar se o aluno ja esta inscrito nessa disciplina
    if (a.estaInscrito(disciplina))
        return false;
    
    // 4-Verificar se aluno estourou o limite de 20 creditos
    if (a.qtdCreditos() + disciplina.getNrCreditos() > MAX_CREDITOS)
        return false;
    
    // Inclui o aluno na lista de alunos da turma
    alunos.add(a);
    
    // Informa ao aluno que ele esta inscrito na turma
    a.matriculado(this);
    
    return true;
}

A minha dúvida está relacionada ao código do último comentário: O que faz esse a.matriculado(this)?

O método da classe aluno está assim:

public void matriculado(Turma t) {

turmas.add(t);

}

eu sei que o this faz referência a variável da própria classe para se diferenciar da variável de mesmo nome que é passada como parâmetro de um método, mas e nesse caso, o this seria o que? E porque eu só posso usar esse comando dentro desse método matricular? Tentei usar fora desse método, no corpo do programa, mas ele da erro.

Desde já agradeço por qualquer ajuda.

2 Respostas

Rodrigo_Void

this sempre é a instancia da própria classe.
Se olhar o código do método matriculado verá q ele recebe um objeto Turma.

N

Vlw Rodrigo_Void, brigadão! Entendi essa parada!

Criado 24 de junho de 2018
Ultima resposta 27 de jun. de 2018
Respostas 2
Participantes 2