Encapsulamento, herança!

2 respostas
S

Olá Pessoal,

To aqui novamente embusca de ajuda dos estimáveis amigos.

Ganhei de presente a missão do professor que é a seguinte:

Desenvolver um Software onde eu possa lançar as notas dos alunos.
Esse alunos podem ser de dois tipos:

- Alunos de graduação
- Alunos de especialização

Alunos fazem parte de uma ou mais turmas
Uma turma pertence a uma ou mais disciplina
Lançar notas de uma turma para uma determinada disciplina
Cada turma pode ter até 5 alunos

-----------------------------------------------------------------------------------

Sei que para muitos isso é tranquilo, café com leite, mas todos sabem que pra quem ta começando é um sufoco.

Abaixo mostro o código de como estou desenvolvedo, sei que não esta certo por isso pesso auxílio.

OBS: Sei que desta forma não esta encapsulado, haja vista que para isso eu usaria Private no lugar do public, fiz com Public exatamente para que eu possa ir no meu ritmo entendendo as coisas.

1ª Classe:

public class Aluno {

	public String grad;
	public String esp;
	public double nota;
	
	
	public String getEsp() {
		return esp;
	}
	public void setEsp(String esp) {
		this.esp = esp;
	}
	public String getGrad() {
		return grad;
	}
	public void setGrad(String grad) {
		this.grad = grad;
	}
	public double getNota() {
		return nota;
	}
	public void setNota(double nota) {
		this.nota = nota;
	}

}

2ª Classe:

public class Disciplina {

	public String disc;

	public String getDisc() {
		return disc;
	}

	public void setDisc(String disc) {
		this.disc = disc;
	}
}

3ª Classe:

public class Turma extends Aluno{

			
		public String Turma;

		public String getTurma() {
			return Turma;
		}

		public void setTurma(String turma) {
			Turma = turma;
		}
		
}

Classe Teste:

import javax.swing.JOptionPane;

public class teste {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Disciplina D1 = new Disciplina();
		Turma T1 = new Turma();	
		
		
		
		D1.setDisc(JOptionPane.showInputDialog("informe a Disciplina: \n POO \n CAR"));
		T1.setTurma(JOptionPane.showInputDialog("informe a Turma: \n A \n B"));
		
	
		Aluno A1[]= new Aluno[3];
		int i;
		
		for (i=1; i<3; i++)	{
			
		A1[i]=  new Aluno();
		
		A1[i].setEsp(JOptionPane.showInputDialog("Informe o Nome do " +i+"º Aluno de Especialização"));
		A1[i].setNota(Double.parseDouble(JOptionPane.showInputDialog("Informe a Nota deste Aluno"  )));
		A1[i].setGrad(JOptionPane.showInputDialog("Informe o Nome do " +i+"º Aluno de Graduação"));
		A1[i].setNota(Double.parseDouble(JOptionPane.showInputDialog("Informe a Nota deste Aluno")));
		
		
		}
	
		for (i=1; i<3; i++)	{
				
		String mostra = "";
		mostra += "Turma: " + T1.getTurma() +"\n Disciplina: " + D1.getDisc() + "\n Aluno: " + A1[i].getGrad()+ "\n Nota: " + A1[i].getNota() + "\n Aluno: " + A1[i].getEsp() + "\n Nota: " + A1[i].getNota();;
		
		JOptionPane.showMessageDialog(null,mostra);
		}		
			
		
		}
	}

Bom galera é isso desde já agradeço pela atenção dispensada!
Vai chegar um dia que eu vou estar mas para ajudar alguém!!!

Abraço

SkFogo

2 Respostas

Calvin

Boa tarde!

Bom,

Pq turma extende aluno?
Só existe herança quando a semantica é “é um”, por exemplo: aluno é uma pessoa. Logo sabemos que aluno extende pessoa. Não temos como usar: turma é um aluno, pois não é verdade!

O padrão getter/setter esta ok, porem vc sabe o pq esta utilizando ele?

baixe essa apostila da [url=www.caelum.com.br]Caelum[url] e de uma estudada na parte de herança
http://www.caelum.com.br/caelum/apostila/caelum-java-objetos-fj11.pdf

Qualquer coisa retorne

Valew
Abraços!

gafanha

Tenho um comentário a fazer , me perdoe se eu entendi errado.

Ao meu ver um aluno pode estar em várias disciplina e uma disciplina pode ter diversos alunos. Neste ponto temos uma relação N…N. Acredito que a nota é um atributo desta relação e que , portanto ela possa ser elevada à classe ( classe-associativa ).
Sendo assim teríamos teríamos algo parecido com a figura 1 em anexo.

Mas seguindo este raciocínio , para manter o histórico , um aluno poderia cursar apenas uma vez a disciplina. Não seria melhor , conforme a figura 2, atribuir à nota à associação Aluno x Turma ?
Desta maneira um aluno poderia se matricular em uma nova turma e fazer novametne a disciplina.

O que vcs acham disto ?
ah… desculpem os gráficos toscos feitos no word.



Criado 11 de setembro de 2006
Ultima resposta 11 de set. de 2006
Respostas 2
Participantes 3