_
Projeto - Programação Orientadadas a Objetos (Agenda)
12 Respostas
Posta o que você já ta fazendo, se sua dúvida está na classe Agenda que recebe o vetor, poste essa,
_
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.
_
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");
}
}
}
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.
:? :?:
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 ?
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.
Você rodou o código que postei? percebeu que so foi possível adicionar dois Eventos?
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 ?
Bom eu rodei aqui e vi que só deu pra add 2 porque você instancio com duas no começo.
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…