Trabalho sobre Java - AJUDA

Galera, sou novo por aqui e estou com um problemão, preciso entregar um trabalho sobre Java na facul ainda hoje, porém como estou começando a “engatinhar”, não estou conseguindo resolver isso de jeito nenhum, o que o professor quer é o seguinte:

1- Crie as seguintes classes:
Pessoa, Aluno e Professor
Atributos para Pessoa: Nome, RG, Idade, Endereço
Atributos para Aluno: Todos acima + RGM + Curso
Atributos para Professor: Todos de Pessoa + Conjunto de Disciplina que Leciona (sugestão: Vetor)
Instancie objetos variados das classes
Imagine que Pessoa pode ser somente Aluno ou Professor.

Minha Resolução:

public class Pessoa{
public String nome;
public String RG;
public int idade;
public String endereco;
}


class Aluno extends Pessoa{

public Aluno(){
}

public int RGM;
public String curso;


public int getRGM(){
return this.RGM;
}

public void setRGM(int RGM){
this.RGM=RGM;
}

public String getCurso(){
return this.curso;
}

public void setCurso(String curso){
this.curso=curso;
}
}


class Professor extends Pessoa{

public Professor (){
}

public String disciplina;

public String getDisciplina(){
return this.disciplina;
}

public void setDisciplina(String Disciplina){
this.disciplina=disciplina;
}

public static void main (String args[]){

Pessoa a = new Aluno();
a.setNome("Julio");
a.setRG("12.456.789-0");
a.setIdade(28);
a.setEndereco("Rua Asturias");
a.setRGM(45378);
a.setCurso("Analise e Desenvolvimento de Sistemas");

System.out.println ("Nome: " + a.getNome());
System.out.println ("RG: " + a.getRG());
System.out.println ("Idade: " + a.getIdade());
System.out.println ("Endereco: " + a.getEndereco());
System.out.println ("RGM: " + a.getRGM());
System.out.println ("Curso: " + a.getCurso());
System.out.println ();


Pessoa b = new Professor();
b.setNome("Palma");
b.setRG("12.345.678-9");
b.setIdade(28);
b.setEndereco("Rua do Java");
b.setDisciplina("Java");

System.out.println ("Nome: " + b.getNome());
System.out.println ("RG: " + b.getRG());
System.out.println ("Idade: " + b.getIdade());
System.out.println ("Endereco: " + b.getEndereco());
System.out.println ("Disciplina: " + b.getDisciplina());
System.out.println ();

2- Modele a seguinte aplicação:
Imagine objetos do tipo Futebol, Handbol e Basquete
Crie metodos para os seguintes componentes:
Usa Bola, Numero de Jogadores, Tamanho da Quadra
Por fim, instancie objetos como exemplo.

Minha Resolução:

public abstract class Esportes{
  abstract String Usabola();
  abstract int Njogadores();
  abstract String TamanhoQ();
}



class Futebol extends Esportes{

public Futebol(String usabola, int Njogadores, String TamanhoQ){
super (Usabola, Njogadores, TamanhoQ);
}
}



class Handbol extends Esportes{

public Handbol(String usabola, int Njogadores, String TamanhoQ){
super (Usabola, Njogadores, TamanhoQ);
}
}



class Basquete extends Esportes{

public Basquete(String usabola, int Njogadores, String TamanhoQ){
super (Usabola, Njogadores, TamanhoQ);
}


public static void main (String args[]){

Esportes a = new Futebol();
   a.setUsabola("Sim");
   a.setNjogadores(12);
   a.setTamanhoQ("300x120");
      
   System.out.println ("Usa Bola: " + a.getUsabola());
   System.out.println ("Numero de Jogadores: " + a.getNjogadores());
   System.out.println ("Tamanho da Quadra: " + a.getTamanhoQ());
   System.out.println ();


Esportes b = new Handbol();
   b.setUsabola("Sim");
   b.setNjogadores(06);
   b.setTamanhoQ("75x30");
      
   System.out.println ("Usa Bola: " + b.getUsabola());
   System.out.println ("Numero de Jogadores: " + b.getNjogadores());
   System.out.println ("Tamanho da Quadra: " + b.getTamanhoQ());
   System.out.println ();


Esportes c = new Basquete();
   c.setUsabola("Sim");
   c.setNjogadores(06);
   c.setTamanhoQ("75x30");
      
   System.out.println ("Usa Bola: " + c.getUsabola());
   System.out.println ("Numero de Jogadores: " + c.getNjogadores());
   System.out.println ("Tamanho da Quadra: " + c.getTamanhoQ());
   System.out.println (); 

}
}

Isso deve ser uma coisa bem simples pra vocês, porém eu já quebrei minha cabeça aqui e não consegui fazer o programa compilar de jeito algum, meus códigos devem estar totalmente errados, por isso gostaria que alguém me desse uma ajuda sobre o que está errado :(…

Estou tentando ver o que eu consigo.

Valeu, qualquer dica tá valendo muito, pois preciso bastante desse ponto extra :wink:

primeira coisa, você declarou os atributos de Pessoa como métodos pois colocou () após eles, o correto é algo como public String nome; … depois tem algums métodos set e get que você não gerou…

uma sugestão, crie arquivos separados para cada classe, um Pessoa.java, outro Aluno.java e outro Professor.java, ai você cria outra classe Main.java que tem apenas o método main() para fazer os testes…

Bom… vamos lá…

public class Pessoa{  
  public String nome();  
  public String RG();  
  public int idade();  
  public String endereco();  
} 

O que esses benditos parênteses estão fazendo ao lado do nome dos atributos? Isso não existe!

 Aluno(){  
}  

//Implemente corretamente o construtor da classe, o correto é:

public Aluno(){}

** Declaração de atributos devem estar ANTES da declaração do construtor da classe

** JAMAIS faça tudo em uma classe só… crie um arquivo .java somente para a classe Pessoa, ou arquivo SEPARADO para a classe Aluno e assim por diante. Por fim, crie um arquivo SEPARADO chamado teste. Esse arquivo deve conter o método “main”

Como estou fazendo curso de Java na Caelum, fiz o código todo, para testar meus conhecimentos.
Eu compilei e fiz testes no Eclipse e funcionou tudo certo.
Só não fiz a parte das disciplinas dentro do array.
Mas estou tentando fazer
Espero estar ajudando.

Segue o código da 1º Parte.
Arquivo 1: Pessoa.java

[code]public class Pessoa {
private String nome;
private String rg;
private int idade;
private String endereco;

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getRg() {
	return rg;
}

public void setRg(String rg) {
	this.rg = rg;
}

public int getIdade() {
	return idade;
}

public void setIdade(int idade) {
	this.idade = idade;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String endereco) {
	this.endereco = endereco;
}

}
[/code]
Arquivo 2: Aluno.java

public class Aluno extends Pessoa {

	private int rgm;
	private String curso;

	public int getRgm() {
		return rgm;
	}

	public void setRgm(int rgm) {
		this.rgm = rgm;
	}

	public String getCurso() {
		return curso;
	}

	public void setCurso(String curso) {
		this.curso = curso;
	}

}

Arquivo 3: Professor.java

public class Professor extends Pessoa{
	private String disciplina;

	public String getDisciplina() {
		return disciplina;
	}

	public void setDisciplina(String disciplina) {
		this.disciplina = disciplina;
	}

}

Arquivo 3: Teste.java

public class Teste {
	public static void main(String[] args) {
		Aluno a = new Aluno();
		a.setNome("Júlio");
		a.setRg("12.456.789-0");
		a.setIdade(28);
		a.setEndereco("Rua Asturias");
		a.setRgm(45378);
		a.setCurso("Análise e Desenvolvimento de Sistemas");
		System.out.println("::::Aluno::::");
		System.out.println("Nome: " + a.getNome());
		System.out.println("RG: " + a.getRg());
		System.out.println("Idade: " + a.getIdade());
		System.out.println("Endereço: " + a.getEndereco());
		System.out.println("RGM: " + a.getRgm());
		System.out.println("Curso: " + a.getCurso());
		System.out.println();

		Professor p = new Professor();
		p.setNome("Palma");
		p.setRg("12.345.678-9");
		p.setIdade(28);
		p.setEndereco("Rua do Java");
		p.setDisciplina("Java");
		System.out.println("::::Professor::::");
		System.out.println("Nome: " + p.getNome());
		System.out.println("RG: " + p.getRg());
		System.out.println("Idade: " + p.getIdade());
		System.out.println("Endereço: " + p.getEndereco());
		System.out.println("Disciplina: " + p.getDisciplina());
		System.out.println();

	}
}

Putz, com isso você já me garantiu 0,5 ponto cara, muitissimo obrigado mesmo :thumbup:, agora eu só tenho que conseguir resolver o 2º :oops: :roll:

No segundo model nas classes que extendem a Esportes o construtor da classe acima voce nao usa Super mas sim super em letra minuscula.

Eu estou de molho em casa pois estou com conjuntivite.
Vou tentar fazer o segundo também pois estou em casa sem fazer nada.

Sobre Professor:

Disciplina não é uma String, é um Conjunto de Disciplina.

Use uma List, e a instancie dentro do construtor usando um ArrayList (e fale pro professor que é mais eficiente que Vector, e o por que disso). Ou use Set com HashSet, caso disciplina não puder repetir.

Crie os métodos para obter, ver o tamanho, ver se o professor está com uma disciplina, adicionar, e remover disciplina desse conjunto.

Defina também o que é uma disciplina, ela é somente o nome dela. Eu a definiria somente como String, para ficar simples. Neste caso será uma List.

[quote=antonioedirane]Eu estou de molho em casa pois estou com conjuntivite.
Vou tentar fazer o segundo também pois estou em casa sem fazer nada.
[/quote]

Putz, se vc conseguir fazer isso vai me quebrar um galhão que não tem nem tamanho, pois essa matéria tá muito dificil, aprendemos isso ontem e o acho que o professor já deu esse trabalho só porque sabia que quase ninguém iria conseguir resolver pra garantir 1 ponto a mais na média :wink:

Já consertei, mas ainda está dando 27 erros :oops:

[quote=renrutal]Sobre Professor:

Disciplina não é uma String, é um Conjunto de Disciplina.

Use uma List, e a instancie dentro do construtor usando um ArrayList (e fale pro professor que é mais eficiente que Vector, e o por que disso). Ou use Set com HashSet, caso disciplina não puder repetir.

Crie os métodos para obter, ver o tamanho, ver se o professor está com uma disciplina, adicionar, e remover disciplina desse conjunto.

Defina também o que é uma disciplina, ela é somente o nome dela. Eu a definiria somente como String, para ficar simples. Neste caso será uma List.[/quote]

O professor até deu a sugestão de usarmos um vetor para fazer este exercício (está no enunciado dele), o problema é que ele ainda nem nos ensinou a criar vetor em java, por isso eu havia declarado como String mesmo :frowning:

Já que tá com pressa, vou dar uam ajuda

[code]public class Professor extends Pessoa{
private Set disciplinas;

public Professor()
{
            super();
	disciplinas = new HashSet<String>();
}

public boolean adiciona(String disciplina) {
	return this.disciplinas.add(disciplina);
}

public boolean remove(String disciplina) {
	return this.disciplinas.remove(disciplina);
}

public boolean adicionaTodos(Collection<String> conjunto) {
	return this.disciplinas.addAll(conjunto);
}

public boolean limpa() {
	return this.disciplinas.clear();
}

public boolean leciona(String disciplina) {
	return this.disciplinas.contains(disciplina);
}

public int numeroDisciplinas() {
	return this.disciplinas.size();
}

public Set disciplinas() {
	return this.disciplinas.clone();
}

}[/code]

Ah tudo bem então, deixo como referencia futura.

[quote=renrutal]Já que tá com pressa, vou dar uam ajuda

[code]public class Professor extends Pessoa{
private Set disciplinas;

public Professor()
{
            super();
	disciplinas = new HashSet<String>();
}

public boolean adiciona(String disciplina) {
	return this.disciplinas.add(disciplina);
}

public boolean remove(String disciplina) {
	return this.disciplinas.remove(disciplina);
}

public boolean adicionaTodos(Collection<String> conjunto) {
	return this.disciplinas.addAll(conjunto);
}

public boolean limpa() {
	return this.disciplinas.clear();
}

public boolean leciona(String disciplina) {
	return this.disciplinas.contains(disciplina);
}

public int numeroDisciplinas() {
	return this.disciplinas.size();
}

public Set disciplinas() {
	return this.disciplinas.clone();
}

}[/code][/quote]

Caraca :shock:… eu jamais saberia fazer uma coisa dessas, porém vou tentar imprementar isso no código só pra eu ver o resultado :smiley:

EDIT

Provavelmente fiz algo errado pois não funcionou :roll:, ele deu 6 erros de execução:

.\Professor.java:2: cannot find symbol
symbol  : class Set
location: class Professor
    private Set<String> disciplinas;   
            ^
.\Professor.java:18: cannot find symbol
symbol  : class Collection
location: class Professor
    public boolean adicionaTodos(Collection<String> conjunto) {   
                                 ^
.\Professor.java:34: cannot find symbol
symbol  : class Set
location: class Professor
    public Set disciplinas() {   
           ^
Teste.java:24: cannot find symbol
symbol  : method setDisciplina(java.lang.String)
location: class Professor
        p.setDisciplina("Java");   
         ^
Teste.java:30: cannot find symbol
symbol  : method getDisciplina()
location: class Professor
        System.out.println("Disciplina: " + p.getDisciplina());   
                                             ^
.\Professor.java:7: cannot find symbol
symbol  : class HashSet
location: class Professor
        disciplinas = new HashSet<String>();   
                          ^
6 errors

A 2ª parte eu acho que a melhor forma de fazer é usando interfaces.
Eu acho que fica mais aderente a “Orientação a Objetos”.
Não sou expert em java, estou aprendendo, mas a minha opinião é essa.
Caso concorde, segue o código da 2ª Parte.
Arquivo 1: Esportes.java

public abstract interface Esportes {

	String usaBola();

	int numeroDeJogadores();

	String tamanhoDaQuadra();
}

Arquivo 2: Basquete.java

public class Basquete implements Esportes {
	private String usaBola;
	private int numeroDeJogadores;
	private String tamanhoDaQuadra;

	public Basquete(String usaBola, int numeroDeJogadores,
			String tamanhoDaQuadra) {
		this.usaBola = usaBola;
		this.numeroDeJogadores = numeroDeJogadores;
		this.tamanhoDaQuadra = tamanhoDaQuadra;
	}

	public String usaBola() {
		return this.usaBola;
	}

	public int numeroDeJogadores() {
		return this.numeroDeJogadores;
	}

	public String tamanhoDaQuadra() {

		return this.tamanhoDaQuadra;
	}

}

Arquivo 3: Futebol.java

public class Futebol implements Esportes {
	private String usaBola;
	private int numeroDeJogadores;
	private String tamanhoDaQuadra;

	public Futebol(String usaBola, int numeroDeJogadores, String tamanhoDaQuadra) {
		this.usaBola = usaBola;
		this.numeroDeJogadores = numeroDeJogadores;
		this.tamanhoDaQuadra = tamanhoDaQuadra;
	}

	public String usaBola() {

		return this.usaBola;
	}

	public int numeroDeJogadores() {
		return this.numeroDeJogadores;
	}

	public String tamanhoDaQuadra() {

		return this.tamanhoDaQuadra;
	}

}

Arquivo 3: Handbol.java

public class Handbol implements Esportes {
	private String usaBola;
	private int numeroDeJogadores;
	private String tamanhoDaQuadra;

	public Handbol(String usaBola, int numeroDeJogadores, String tamanhoDaQuadra) {
		this.usaBola = usaBola;
		this.numeroDeJogadores = numeroDeJogadores;
		this.tamanhoDaQuadra = tamanhoDaQuadra;
	}

	public String usaBola() {

		return this.usaBola;
	}

	public int numeroDeJogadores() {
		return this.numeroDeJogadores;
	}

	public String tamanhoDaQuadra() {

		return this.tamanhoDaQuadra;
	}

}

Arquivo 4: Teste.java

public class Teste {
	public static void main(String[] args) {
		Esportes f = new Futebol("Sim", 12, "300x120");
		System.out.println("::::Futebol::::");
		System.out.println("Usa Bola: " + f.usaBola());
		System.out.println("Número de Jogadores: " + f.numeroDeJogadores());
		System.out.println("Tamanho da Quadra:  " + f.tamanhoDaQuadra());
		System.out.println();

		Esportes h = new Handbol("Sim", 6, "75x30");
		System.out.println("::::Handbol::::");
		System.out.println("Usa Bola: " + h.usaBola());
		System.out.println("Número de Jogadores: " + h.numeroDeJogadores());
		System.out.println("Tamanho da Quadra:  " + h.tamanhoDaQuadra());
		System.out.println();

		Esportes b = new Basquete("Sim", 6, "75x30");
		System.out.println("::::Basquete::::");
		System.out.println("Usa Bola: " + b.usaBola());
		System.out.println("Número de Jogadores: " + b.numeroDeJogadores());
		System.out.println("Tamanho da Quadra:  " + b.tamanhoDaQuadra());
		System.out.println();

	}
}

Bom, seguindo o exemplo do exercício número 1, eu dividi o número 2 em classes também e estou quase chegando a solução, ainda tem alguns errinhos, mas tá quase, o código ficou assim:

Classe Esportes

public class Esportes{
  private String usabola;
  private int njogadores;
  private String tamanhoQ;
  
  public String getUsabola(){
  return usabola;
  }
  
  public void setUsabola(String usabola){
  this.usabola = usabola;
  }
  
  public int getNjogadores(){
  return njogadores;
  }
  
  public void setNjogadores(int njogadores){
  this.njogadores = njogadores;
  }
  
  public String getTamanhoQ(){
  return tamanhoQ;
  }
  
  public void setTamanhoQ(String tamanhoQ){
  this.tamanhoQ = tamanhoQ;
  }
}

Classe Futebol

class Futebol extends Esportes{

    private String campo;   
    private String jogo;   
  
    public String getCampo() {   
        return campo;   
    }   
  
    public void setCampo(String campo) {   
        this.campo = campo;   
    }   
  
    public String getJogo() {   
        return jogo;   
    }   
  
    public void setJogo(String jogo) {   
        this.jogo = jogo;   
    }   
}

Classe Handbol

class Handbol extends Esportes{

    private String campeonato;   
    private String quantidade;   
  
    public String getCampeonato() {   
        return campeonato;   
    }   
  
    public void setCampeonato(String campeonato) {   
        this.campeonato = campeonato;   
    }   
  
    public String getQuantidade() {   
        return quantidade;   
    }   
  
    public void setQuantidade(String quantidade) {   
        this.quantidade = quantidade;   
    }   
}

Classe Basquete

class Basquete extends Esportes{

    private String pesobola;   
    private String nometime;   
  
    public String getPesobola() {   
        return pesobola;   
    }   
  
    public void setPesobola(String pesobola) {   
        this.pesobola = pesobola;   
    }   
  
    public String getNometime() {   
        return nometime;   
    }   
  
    public void setNometime(String nometime) {   
        this.nometime = nometime;   
    }   
}

Classe Teste

public class Teste{
public static void main (String args[]){

Esportes a = new Futebol();
   a.setUsabola("Sim");
   a.setNjogadores(12);
   a.setTamanhoQ("300x120");
   a.setCampo("de Grama");
   a.setJogo("No.18");
   System.out.println ("::::: Futebol :::::");   
   System.out.println ("Usa Bola: " + a.getUsabola());
   System.out.println ("Numero de Jogadores: " + a.getNjogadores());
   System.out.println ("Tamanho da Quadra: " + a.getTamanhoQ());
   System.out.println ("Tipo de Campo: " + a.getCampo());
   System.out.println ("Partida: " + a.getJogo());
   


Esportes b = new Handbol();
   b.setUsabola("Sim");
   b.setNjogadores(06);
   b.setTamanhoQ("75x30");
   b.setCampeonato("Amador 2008");
   b.setQuantidade("12 Times");
   System.out.println ("::::: Handbol :::::");   
   System.out.println ("Usa Bola: " + b.getUsabola());
   System.out.println ("Numero de Jogadores: " + b.getNjogadores());
   System.out.println ("Tamanho da Quadra: " + b.getTamanhoQ());
   System.out.println ("Campeonato: " + c.getCampeonato());
   System.out.println ("Participantes: " + c.getQuantidade());


Esportes c = new Basquete();
   c.setUsabola("Sim");
   c.setNjogadores(06);
   c.setTamanhoQ("75x30");
   c.setPesobola("1,5kg");
   c.setNometime("Chicago Bulls");
   System.out.println ("::::: Basquete :::::");      
   System.out.println ("Usa Bola: " + c.getUsabola());
   System.out.println ("Numero de Jogadores: " + c.getNjogadores());
   System.out.println ("Tamanho da Quadra: " + c.getTamanhoQ());
   System.out.println ("Peso da Bola: " + c.getPesobola());
   System.out.println ("Nome do Time: " + c.getNometime());
   
}
}

[quote=antonioedirane]A 2ª parte eu acho que a melhor forma de fazer é usando interfaces.
Eu acho que fica mais aderente a “Orientação a Objetos”.
Não sou expert em java, estou aprendendo, mas a minha opinião é essa.
Caso concorde, segue o código da 2ª Parte.
[/quote]

Putz, matou a pau cara, aprendemos interface ontem também, acho que ele deveria estar pensando nisso mesmo quando passou o exercício número 2, vou executar aqui pra ver como fica :smiley:

EDIT
EXATO… deu certinho mesmo, valeu mesmo, você salvou o meu dia hoje, fico te devendo essa :thumbup:

Na minha resolução eu não coloquei todos campos que você colcocou agora, mas é só olhar o codigo e adicionar eles.