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 ...
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.