24.07.2013 Views

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

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>UFMG</strong> <strong>–</strong> <strong>DCC</strong> <strong>–</strong> <strong>ICEX</strong><br />

<strong>Disciplina</strong>: <strong>Programação</strong> <strong>Orientada</strong> a <strong>Objetos</strong><br />

Prof. Marco Túlio Valente<br />

Trabalho Prático <strong>–</strong> Java - Grupos: dois alunos<br />

Parte I <strong>–</strong> Valor: 3 pontos <strong>–</strong> Entrega: 09/04/2012 (nova data)<br />

Implemente em Java uma agenda telefônica simples, conforme descrito a seguir:<br />

Dados a serem armazenados: nome, telefone fixo, celular e e-mail.<br />

Operações: cadastrar nova entrada na agenda, listar todas as entradas, substituir uma<br />

entrada, remover uma entrada.<br />

Sugestão: tente usar uma das estruturas de dados padrões de Java. Mais informações:<br />

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/package-summary.html<br />

Parte II <strong>–</strong> Valor: 12 pontos <strong>–</strong> Entrega: 16/04/2012 (nova data)<br />

Desenvolver um sistema onde seja possível definir um circuito lógico, e então calcular<br />

as saídas desse circuito. O circuito poderá ser constituído das seguintes portas lógicas:<br />

AND, OR, NAND, NOR, XOR, XNOR. Dado uma entrada, o programa deve ser capaz<br />

de calcular os valores das saídas. Veja um exemplo de circuito que o sistema deverá<br />

aceitar:<br />

Circuito exemplo 1<br />

No circuito acima, se as entradas forem A = 1, B = 1 e C = 0, o programa deverá<br />

retornar D = 1.<br />

No circuito não haverá referências circulares, isto é, conexões onde a saída de uma porta<br />

lógica seja a entrada da própria porta lógica direta ou indiretamente. O exemplo abaixo,<br />

portanto, não precisa ser tratado.<br />

Circuito inválido, não haverá circuitos cíclicos


Entrada de dados<br />

A definição do circuito será realizada no próprio programa, por meio de uma classe com<br />

um método responsável por essa tarefa.<br />

Mais especificamente, nessa classe poderão ser definidos apenas: a) os valores de<br />

entrada do sistema, e b) as portas lógicas e suas ligações. Não poderá informar valores<br />

intermediários do circuito nessa classe.<br />

Estrutura de classes<br />

O aluno deverá definir a estrutura de classes necessária para construir o sistema. No<br />

entanto, as seguintes dicas podem ajudar:<br />

Observe que os elementos do sistema são portas lógicas. Tente criar uma<br />

hierarquia de portas lógicas para seu sistema.<br />

Toda porta tem duas entradas e uma saída.<br />

Comece implementando um circuito com apenas uma porta, depois faça testes<br />

com combinações de portas e atualize seu programa se necessário para suportar<br />

mais de uma porta.<br />

Exemplo de Implementação<br />

A implementação abaixo mostra um sistema lógico com apenas uma porta lógica OR.<br />

Esse sistema é bem rústico, uma vez que suporta apenas uma porta, o seu sistema<br />

deverá ser bem mais robusto.<br />

Uma limitação clara desse sistema, é que a implementação da porta OR não suporta<br />

qualquer tipo de ligação com outras portas, o valor de entrada é informado diretamente.<br />

//essa classe configura o circuito<br />

public class Prototipo {<br />

}<br />

public static void main(String[] args) {<br />

PortaOr portaOr = new PortaOr(1, 0); //configuração<br />

System.out.println(portaOr.getSaida());//resultado<br />

}<br />

//essa classe representa uma porta lógica OR<br />

public class PortaOr {<br />

int entradaA;<br />

int entradaB;<br />

public PortaOr(int entradaA, int entradaB) {<br />

this.entradaA = entradaA;


}<br />

}<br />

Avaliação<br />

this.entradaB = entradaB;<br />

public int getSaida(){<br />

//para uma porta OR, se qualquer entrada é 1 a saida é 1<br />

if(entradaA == 1){<br />

return 1;<br />

}<br />

if(entradaB == 1){<br />

return 1;<br />

}<br />

return 0;<br />

}<br />

Os principais aspectos do trabalho a serem avaliados são:<br />

Se o sistema compila.<br />

Se o resultado do sistema está correto.<br />

Se as regras de entrega foram respeitadas.<br />

Se cada circuito está definido em uma classe separada e apenas a definição do<br />

circuito está contida nessa classe.<br />

Organização da arquitetura, hierarquia, interação entre as classes.<br />

A organização do código, padrão de nomenclatura e comentários.<br />

Trabalhos idênticos ou muito parecidos serão avaliados com nota zero.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!