UFMG – DCC – ICEX Disciplina: Programação Orientada a Objetos

Propaganda
UFMG – DCC – ICEX
Disciplina: Programação Orientada a Objetos
Prof. Marco Túlio Valente
Trabalho Prático – Java - Grupos: dois alunos
Parte I – Valor: 3 pontos – Entrega: 09/04/2012 (nova data)
Implemente em Java uma agenda telefônica simples, conforme descrito a seguir:
Dados a serem armazenados: nome, telefone fixo, celular e e-mail.
Operações: cadastrar nova entrada na agenda, listar todas as entradas, substituir uma
entrada, remover uma entrada.
Sugestão: tente usar uma das estruturas de dados padrões de Java. Mais informações:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/package-summary.html
Parte II – Valor: 12 pontos – Entrega: 16/04/2012 (nova data)
Desenvolver um sistema onde seja possível definir um circuito lógico, e então calcular
as saídas desse circuito. O circuito poderá ser constituído das seguintes portas lógicas:
AND, OR, NAND, NOR, XOR, XNOR. Dado uma entrada, o programa deve ser capaz
de calcular os valores das saídas. Veja um exemplo de circuito que o sistema deverá
aceitar:
Circuito exemplo 1
No circuito acima, se as entradas forem A = 1, B = 1 e C = 0, o programa deverá
retornar D = 1.
No circuito não haverá referências circulares, isto é, conexões onde a saída de uma porta
lógica seja a entrada da própria porta lógica direta ou indiretamente. O exemplo abaixo,
portanto, não precisa ser tratado.
Circuito inválido, não haverá circuitos cíclicos
Entrada de dados
A definição do circuito será realizada no próprio programa, por meio de uma classe com
um método responsável por essa tarefa.
Mais especificamente, nessa classe poderão ser definidos apenas: a) os valores de
entrada do sistema, e b) as portas lógicas e suas ligações. Não poderá informar valores
intermediários do circuito nessa classe.
Estrutura de classes
O aluno deverá definir a estrutura de classes necessária para construir o sistema. No
entanto, as seguintes dicas podem ajudar:
 Observe que os elementos do sistema são portas lógicas. Tente criar uma
hierarquia de portas lógicas para seu sistema.
 Toda porta tem duas entradas e uma saída.
 Comece implementando um circuito com apenas uma porta, depois faça testes
com combinações de portas e atualize seu programa se necessário para suportar
mais de uma porta.
Exemplo de Implementação
A implementação abaixo mostra um sistema lógico com apenas uma porta lógica OR.
Esse sistema é bem rústico, uma vez que suporta apenas uma porta, o seu sistema
deverá ser bem mais robusto.
Uma limitação clara desse sistema, é que a implementação da porta OR não suporta
qualquer tipo de ligação com outras portas, o valor de entrada é informado diretamente.
//essa classe configura o circuito
public class Prototipo {
public static void main(String[] args) {
PortaOr portaOr = new PortaOr(1, 0); //configuração
System.out.println(portaOr.getSaida());//resultado
}
}
//essa classe representa uma porta lógica OR
public class PortaOr {
int entradaA;
int entradaB;
public PortaOr(int entradaA, int entradaB) {
this.entradaA = entradaA;
this.entradaB = entradaB;
}
public int getSaida(){
//para uma porta OR, se qualquer entrada é 1 a saida é 1
if(entradaA == 1){
return 1;
}
if(entradaB == 1){
return 1;
}
return 0;
}
}
Avaliação
Os principais aspectos do trabalho a serem avaliados são:




Se o sistema compila.
Se o resultado do sistema está correto.
Se as regras de entrega foram respeitadas.
Se cada circuito está definido em uma classe separada e apenas a definição do
circuito está contida nessa classe.
 Organização da arquitetura, hierarquia, interação entre as classes.
 A organização do código, padrão de nomenclatura e comentários.
Trabalhos idênticos ou muito parecidos serão avaliados com nota zero.
Download