Você está na página 1de 6

I 1 a

Top Package::Top Package :Utilizador criarQuestionario(titulo) indicaTipo(tipo, nAlternativas) Ok :Sistema

Loop

indicarTextoQuestao(texto)

Loop

indicarTextoAlternativa(texto)

terminar() guardar()

Sistema 1 1

CatalogoAutores 1 *

Autor

cria * 1 * Questionario -Titulo 1


Tem

1 CatalogoQuestionario
Tem

* Tipo

* 1 Tem

* Perguntas 1 -texto -nAlternativas 1


Tem

preenche

RespostaUnica

RespostaMultipla

... -texto

* Respostas preenche

c Operacao: criarQuestionario(titulo:String) Pr-condies: Existe a:Autor autenticado Pos-condies: Foi criada a instancia q:Questionrio com q:titulo = titulo Operao: indicarTipoDeQuestao(t:TipoDeQuesto, numAlternativas:int) Pr-condies: Existe q:Questionario a ser Preenchido Ps-condies: Foi criada uma instancia qo:Questo Foi criada a associao 'tem' entre qo e t Foi criada a associao 'tem' entre q e qo Operao: indicarTextoQuestao(texto:String) Pre-condicoes: Existe qo:Questao a ser preenchida Pos-condicoes: qo.texto tornou-se texto Operao: indicarTextoAlternativa(texto:String) Pr-condies: Existe qo:Questao a ser preenchida Pos-condies: Foi criada a instancia ar:AlternativaDeResposta com ar.texto = texto Foi criada a associao 'tem' entre qo e ar d

II 1 Acrescentar package exame1DCO.adts a ambas as interfaces dadas. 2 public class Duration implements Addable<Duration> { private int seg; public Duration() { seg = 0; }

public Duration(int seg) { this.seg = seg; } @Override public String toString() { return getDays(seg) + "days " + getHours(seg) + "hours " + getMinutes(seg) + "minutes " + getSec(seg) + "seconds"; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final Duration other = (Duration) obj; if (this.seg != other.seg) return false; return true; } @Override public int hashCode() { int hash = 5; hash = 71 * hash + this.seg; return hash; } public Duration add(Duration e) { return new Duration(seg + e.seg); } } 3 public class Song implements Mensurable<Duration>, Clonable { private String titulo; private String nomeFicheiro; private Duration duracao; private int nVezesTocadas; public Song (String titulo, String nomeFicheiro, Duration duracao) { this.titulo = titulo; this.nomeFicheiro = nomeFicheiro; this.duracao = duracao;

nVezesTocadas = 0; } public void incTimesPlayed() { nVezesTocadas++; } @Override public Song clone() { Song s = new Song(titulo, nomeFicheiro, duracao); s.nVezesTocadas = nVezesTocadas; return s; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final Song other = (Song) obj; if ((this.titulo == null) ? (other.titulo != null) : !this.titulo.equals(other.titulo)) return false; if ((this.nomeFicheiro == null) ? (other.nomeFicheiro != null) : !this.nomeFicheiro.equals(other.nomeFicheiro)) return false; if (this.duracao != other.duracao && (this.duracao == null || !this.duracao.equals(other.duracao))) return false; if (this.nVezesTocadas != other.nVezesTocadas) return false; return true; } @Override public int hashCode() { int hash = 7; return hash; } Public Duration measure() { return duracao; } } 4 public interface MensurableCollection<E extends Mensurable<F>,F extends Addable<F>> extends Collection<E>, Mensurable<F> { } 5public abstract class AbsMensurableCollection<E extends Mensurable<F>,F extends Addable<F>> implements MensurableCollection<E,F> {

private Collection<E> col; private F peso; public AbsMensurableCollection(F zero) { peso = zero; col = criaCollection(); } public abstract Collection<E> criaCollection(); public F measure() { F f; int i = 0; for (E elem : col) if (i == 0) { f = elem.measure(); i++; } else f = f.add(elem.measure()); return f; } } 6 public class MensurableList<E extends Mensurable<F>,F extends Addable<F>> extends AbsMensurableCollection<E,F> { public MensurableList(F zero) { super(zero); } public Collection<E> criaCollection() { return new LinkedList(); } } 7e8

Você também pode gostar