Baixe o app para aproveitar ainda mais
Prévia do material em texto
Primeira Prova de Programac¸a˜o Orientada a Objetos 2009.1 Prof. Renato Cerqueira Questa˜o 1 (2,5 pontos) Explique o que e´ necessa´rio em Java para que um me´todo declarado numa subclasse possa rede- finir um me´todo de sua super-classe. Use exemplos de declarac¸o˜es para ilustrar sua explicac¸o˜es. Questa˜o 2 (7,5 pontos) Considere a definic¸a˜o de uma interface IntSet que representa um tipo abstrato de dados conjunto de inteiros, conforme as declarac¸o˜es a seguir: public inter face I n tSe t { void i n s e r t ( i n t x ) ; / / ad ic iona um elemento ao conjunto void i n s e r t A l l ( i n t [ ] v ) ; / / ad ic iona v a´ r i os elementos ao conjunto void remove ( i n t x ) ; / / remove um elemento do conjunto boolean i s I n ( i n t x ) ; / / t e s t a se x pertence ao conjunto i n t s ize ( ) ; / / re to rna a ca rd ina l i dade do conjunto void f o r A l l ( V i s i t o r v ) ; / / v i s i t a todos os elementos do conjunto } public inter face V i s i t o r { void v i s i t ( i n t x ) ; } 1. (2,5 pontos) Defina em Java uma classe IntSetImpl que implemente a interface IntSet. 2. (2,5 pontos) Implemente uma classe IntSetUtil que oferec¸a as seguintes operac¸o˜es: public class I n t S e t U t i l { s ta t i c public I n tSe t i n t e r s e c t i o n ( I n tSe t a , I n tSe t b ) ; / / re to rna a in te rcess a˜o de a e b s ta t i c public I n tSe t union ( I n tSe t a , I n tSe t b ) ; / / re to rna a unia˜o de a e b } Obs.: Sua classe IntSetUtil pode ter outros membros na˜o pu´blicos. 3. (2,5 pontos) Considere que uma aplicac¸a˜o precisou implementar um mecanismo que per- mita contar quantos elementos sa˜o adicionados a um conjunto. Para isso o desenvolvedor da aplicac¸a˜o estendeu uma outra classe IntSetImpl2, que tambe´m e´ uma implementac¸a˜o da interface IntSet, da seguinte forma: public class I n tSe tEx t extends I n tSe t Imp l2 { private in t i nse r tCoun te r = 0 ; public void i n s e r t ( i n t x ) { i nse r tCoun te r ++; super . i n s e r t ( x ) ; } public void i n s e r t A l l ( i n t [ ] v ) { i nse r tCoun te r += v . leng th ; super . i n s e r t A l l ( v ) ; } public in t getCounter ( ) { return i nse r tCoun te r ; } } 1 Ao testar essa nova classe com o co´digo a seguir, o usua´rio obteve como resposta 6, ao inve´s de 3. public class Main { public void main ( S t r i ng [ ] args ) { I n tSe tEx t s = new I n tSe tEx t ( ) ; s . i n s e r t A l l (new in t [ ] {15 ,7 ,23} ) ; System . out . p r i n t l n ( s . getCounter ( ) ) ; } } Apresente uma possı´vel explicac¸a˜o para esse comportamento e descreva como esse pro- blema poderia ser resolvido. 2
Compartilhar