Projeto - Programação Orientadadas a Objetos (Agenda)

12 respostas
Luccas_Ferreira

_

12 Respostas

N

Posta o que você já ta fazendo, se sua dúvida está na classe Agenda que recebe o vetor, poste essa,

Luccas_Ferreira

_

ribclauport
public boolean completa() {  
        if (getMaxEventos() != 0) {  
            JOptionPane.showMessageDialog(null, "Agenda está cheia");  
            return false;  
        } else {  
            return true;  
        }  
    }

Comece analizando esse método, você está dizendo o seguinte;

Se o Máximo de Eventos for diferente de zero, emita a mensagem Agenda está cheia e retorno falso.

Se tiver um evento a agenda está cheia?

Emite mensagem de Agenda está cheia, mas retorna “falso”?
Olhe bem o que o requisito diz, e implemente esse método corretamente.

Seria algo desse tipo;

if(getMaxEventos == eventos.size() ){
   return true;
}
return false;

Pois se olhar o requisito está dizendo que estará completa quando o numero de eventos for igual ao numero máximo de Eventos.

Luccas_Ferreira

_

ribclauport

Veja, voce trabalha normalmente com os vetores do Tipo Evento, de uma olhada nesse exemplo e veja se entende, tente implmentar o resto e apresente duvidas pontuais, para que seu aprendizado seja efetivo, não e size, na verdade é length, rode o codigo abaixo para ter uma idéia.

public class Agenda {  
  
    private int maxEventos;  
    private Evento eventos[];
    private int qtdElementos = 0;
    
    Agenda(int maxEventos) {  
    	this.eventos = new Evento[maxEventos];
    	this.maxEventos = maxEventos;
    }  
  
    public int getMaxEventos() {  
        return maxEventos;  
    }  
  
    public void setMaxEventos(int maxEventos) {  
        this.maxEventos = maxEventos;  
    }  
  
    public Evento[] getEventos() {  
        return eventos;  
    }  
  
    public void setEventos(Evento[] eventos) {  
        this.eventos = eventos;  
    }  
  
    public boolean completa() {  
        if (qtdElementos == maxEventos) {  
        	return true;  
        } 
        return false;
    }  
  
    public boolean add(Evento e) {  
        if(qtdElementos<=this.getMaxEventos()-1){  
        	eventos[qtdElementos] = e; 
        	qtdElementos = qtdElementos + 1;
        	return true;
        } 
        return false;
    }  
  
    public void mostrar() {  
    	
    }  
    public static void main(String[] args) {
		Agenda agenda = new Agenda(2);
		Evento e1 = new Evento();
		
		Evento e2 = new Evento();
		
		Evento e3 = new Evento();
		
		if(agenda.add(e1)){
			System.out.println("sucesso ao acrescentar e1");
		}else{
			System.out.println("erro ao acrescentar e1");
		}
		if(agenda.add(e2)){
			System.out.println("sucesso ao acrescentar e2");
		}else{
			System.out.println("erro ao acrescentar e2");
		}
		if(agenda.add(e3)){
			System.out.println("sucesso ao acrescentar e3");
		}else{
			System.out.println("erro ao acrescentar e3");
		}
		
	}
}
ribclauport

Bom, repare bem que eu criei um Evento como classe concreta, você deve então criar a classe abstrata Evento e as concretas conforme o diagrama!

Qualquer dúvida fale ae.

Luccas_Ferreira

:? :?:

Sendo que um vetor de objetos tem dentro de suas células vários objetos, ele esta dentro do construtor de Agenda ? não deveria o vetor possuir objetos Agenda dentro dele e não o contrário ?

ribclauport

Veja o modelo, verás que existe um vetor de Eventos dentro de Agenda, ou seja uma Agenda tem muitos Eventos, quando constrói a Agenda você tem que delimitar quantos Eventos terá a agenda, uma vez que voce definiu o “tamanho” do vetor, não da para redimensionar, sendo assim você constrói seu vetor com o tamanho máximo informado.
Veja o modelo, está claro que a Agenda possui um vetor de Eventos, e se você rodar seu primeiro código, verás que não estava inicializando seu Vetor com o numero máximo e sim com “0”, que é o valor default para variáveis de instância do tipo int.
O que eu fiz foi apenas seguir o diagrama de classes, se você for verificar está explicíto que existe uma composição em função do diamante contido no diagrama, porém deu para entender que é uma composição de Elementos Evento em um vetor, na verdade eu usaria a notação “usa”, para dizer que uma Agenda usa objetos Evento, enfim é isso.

ribclauport

Você rodou o código que postei? percebeu que so foi possível adicionar dois Eventos?

Luccas_Ferreira

Como fazer numa situação onde o usuário escolhe se quer cadastrar um Aniversario ou uma Reunião e add a classe escolhida no vetor de Evento ?

Luccas_Ferreira

Bom eu rodei aqui e vi que só deu pra add 2 porque você instancio com duas no começo.

ribclauport

Você ja Criou as classes Evento, Aniversario e Reuniao? Você já estudou polimorfismo?
Crie as classes e poste aqui para a gente ver…, pois o método que recebe um Evento, recebe qualquer classe que extenda Evento…

Criado 15 de novembro de 2012
Ultima resposta 16 de nov. de 2012
Respostas 12
Participantes 3