Você está na página 1de 6

Dado o seguinte 1. interface Base{ 2. boolean m1(); 3. byte m2(short s); 4. } Qual fragmento de cdigo ir compilar ?

(Marque todas as corretas.) A. interface Base2 implements Base{ } B. abstract class Class2 extends Base{ public boolean m1(){ return true; } } C. abstract class Class2 implements Base{ } D. abstract class Class2 implements Base{ public boolean m1(){ return (true); } } E. class Class2 implements Base{ boolean m1(){ return false; } byte m2(short s){ return 42; } } Qual das seguintes opes declara uma classe abstract compilvel ? (Marque todas as corretas) A. public abstract class Canine{ public Bark speak(); } B. public abstract class Canine{ public Bark speak() { } } C. public class Canine { public abstract Bark speak(); } D. public class Canine abstract { public abstract Bark speak(); }

C e D esto corretas. C est correta porque uma classe abstract no precisa implementar nenhum dos mtodos da sua interface. D est correta porque o mtodo est implementado corretamente A est incorreta porque as interfaces no implementam nada. B est incorreta porque as classes no estendem interfaces. E est incorreta porque os mtodos de interfaces so implicitamente public, ento os mtodos sendo implementados precisam ser public ( Objetivo 1.1)

B est correta. As classes abstract no precisam ter nenhum mtodo abstract. A est incorreta porque os mtodos abstract devem ser marcados com tais. C est incorreta porque no possvel ter um mtodo abstract sem que a classe seja abstract. D est incorreta porque a palavra-chave abstract deve vir antes do nome da classe. (Objetivo 1.1)

Qual das seguintes afirmativas est correta ? (Marque todas as corretas) A. X estende Y correto se, e somente se, X for uma classe e Y for uma interface. B. X estende Y correto se, e somente se, X for uma interface e Y for uma classe. C. X estende Y correto se X e Y forem ambos classes ou ambos interfaces. D. X estende Y correto para todas as combinaes de X e Y sendo classes e/ou interfaces. Quais das seguintes so declaraes vlidas ? ( Marque todas as corretas) A. int %x; B. int 123; C. int _123; D. int #dim; E. int %percent; F. int *divide; G int central_sales_region_Summer_2005_gross_sales; Quais nomes de mtodos obedecem ao padro JavaBeans ? (Marque todas as corretas) A. addSize B. getcust C. deleteRep D. isColorado E. putDimensions

C est correta. A Est incorreta porque as classes implementam interfaces, mas no as estendem. B est incorreta porque as interfaces s Herdam de outras interfaces. D est incorreta com base nas regras anteriores. (Objetivo 1.2)

A, C e G so identificadores vlidos. B est incorreta porque um identificador no pode comear com um digito. D,E e F esto incorretas porque os identificadores devem comear com $ ou uma letra. ( Objetivo 1.3 )

B e D usam os prefixos vlidas get e is. A,C e E esto incorretas porque add, delete e put no so nomes de prefixos JavaBeans padres. ( Objetivo 1.4 )

Dado o cdigo: 1.class Voop{ 2. public static void main(String [] args) { 3 doStuff(1); 4. doStuff(1,2); 5. } 6. //insira cdigo aqui 7.} Qual destas opes, inseridas independentemente na linha 6, ir compilar ? (Marque todas as corretas) A. static void doStuff(int... doArgs) { } B. static void doStuff(int[ ] doArgs) { } C. static void doStuff(int doArgs...) { } D. static void doStuff(int... doArgs, int y) { } E. static void doStuff(int x, int... doArgs) { } Quais das seguintes opes so declaraes vlidas ? (Marque todas as corretas) A. short x [ ]; B. short [ ] y; C. short [5] x2; D. short z2 [5]; E. short [ ] z [ ] [ ]; F. short [ ] y2 = [5]; Dado o cdigo: 1. enum Animals { 2. DOG(woff), CAT(meow), FISH(burble); 3. String sound; 4. Animals(String s) { sound = s; } 5. } 6. class TestEnum{ 7. static Animals a; 8. public static void main (String [] args) { 9. System.out.println( a.DOG.sound + + a.FISH.sound); 10. } 11.} Qual o resultado ? A. woof burble B. Mltiplos erros de compilao C. A compilao falha devido a um erro na linha 2 D. A compilao falha devido a um erro na linha 3 E. A compilao falha devido a um erro na linha 4 F. A compilao falha devido a um erro na linha 9 Dado o cdigo: 1. enum A { A } 2. class E2 { 3. enum B { B } 4. void c() { 5. enum D { D } 6. } 7. } Quais das afirmativas so verdadeiras ? (Marque todas as corretas ) A. O Cdigo compila. B. Se apenas a linha 1 for removida, o cdigo compila. C. Se apenas a linha 3 for removida, o cdigo compila. D. Se apenas a linha 5 for removida, o cdigo compila. E. Se as linhas 1 e 3 forem removidas, o cdigo compila. F. Se as linhas 1,3 e 5 forem removidas, o cdigo compila.

A e E usam sintaxe var-arg vlida. B e C usam sintaxe var-arg invlida, e D invlido porque o var-arg deve ser o ltimo argumento do mtodo ( Objetivo 1.4 )

A,B e E so declaraes de arrays corretas; E um array tridimencional. C,D e F esto incorretas, no possvel incluir o tamanho do seu array em uma declarao a no ser que voc tambm instancie o objeto array. F usa uma sintaxe de instanciamento invlida. ( Objetivo 1.3 )

A est correta; enums podem ter construtores e variveis. B,C,D,E e F esto incorretas; todsa essas linhas usam sintaxes correta. ( Objetivo 1.3 )

D e F esto corretas. A linha 5 a nica que no vai compilar, porque os enums no podem ser locais a um mtodo. A,B,C e E esto incorretas com base na afirrmao acima. ( Objetivos 1.3 )

Quais afirmativas so verdadeiras ? (Marque todas as corretas) A. Os relacionamentos Tem-Um sempre dependem da herana B. Os relacionamentos Tem-Um sempre dependem das variveis de instncias. C. Os relacionamentos Tem-Um sempre precisam de pelo menos dois tipos de classes. D. Os relacionamentos Tem-Um sempre dependem do polimorfismo E Os relacionamenos Tem-Um sempre tm acoplamento forte. Dado: Class Clidders{ Public final void flipper() { System.out.println(Clidder); } } public class Clidlets extends Cledders { public void flipper(){ System.out.println(Flip a Clidlet); Super.flipper(); } } public static void main (String [] args) { new Clidlets().flipper(); } } Qual o resultado ? A. Flip a Clidlet B. Flip a Clidder C. Flip a Clidder Flip a Clidlet D. Flip a Clidlet Flip a Clidder E. A compilao falha. Dado: Public abstract interface Frobnicate { public void twiddle (String s); } Quais classes so corretas ? (Marque todas as corretas) A. public abstract class Frob implements Frobnicate{ Public abstract void twiddle(String s) { } } B. public abstract class Frob implements Frobnicate{ } C. public class Frob extends Frobnicate{ Public void twiddle(Integer i){ } } D. public class Frob implements Frobnicate{ Public void twiddle(Integer i){ } } E. public class Frob implements Frobnicate{ public void twiddle(String i){ } public void twiddle(Integer s){ } } Dado: class Top{ public Top(String s){ System.out.print(B); } } public class Bottom2 extends Top{ public Bottom2(String s){ System.out.print(D); } public static void main(String [] args){ new Bottom2(C); System.out.println( ); } } Qual o resultado ? A. BD B. DB C. BDC D. DBC E. A compilao falha.

B est correta. A e D descrevem outros tpicos relativos programao OO. C est incorreta porque uma classe pode ter uma instncia de si mesma. E est incorreta porque, enquanto relacionamentos tem-um podem levar a um acoplamento forte, no sempre que isso ocorre. ( Objetivo 5.5 )

E est correta. Mtodos final no podem ser subscritos. A, B, C e D esto incorretas com base no exposto acima. ( Objetivo 5.3)

B est correta, uma classe abstract no precisa implementar quaisquer mtodos de uma interface. E est correta, a classe implementa o mtodo da interface e, adicionando, sobrecarrega o mtodos de uma interface twiddle(). A est incorreta porque mtodos abstract no tm corpo. C est incorreta porque as classes implementam interfaces, mas no as estendem. D est incorreta porque sobrecarregar um mtodo no o mesmo eu implementar. (Objetivo 5.4)

E est correta. A chamada implcita a super() no construtor de Bottom2 no pode ser satisfeita, porque no h um construtor sem argumentos em Top. Um construtor padro, sem argumentos, gerado pelo compilador somente se a classe no tiver nenhum construtor definido explicitamente. A,B,C e D esto incorretas com base no exposto acima. (Objetivo 1.6)

Selecione as duas afirmativas que melhor indiquem uma situao com baixo acoplamento. (Marque duas) A. Os atributos da classe so todos privados. B. A classe refere-se a um pequeno nmero de outros objetos. C. O objeto contm apenas um pequeno nmero de variveis. D. O objeto referido atravs de uma varivel annima, e no diretamente. E. A varivel de referncia declarada para um tipo de interface, e no uma classe. A interface fornece um pequeno nmero de mtodos. F. improvvel que modificaes feitas em uma classe vo exigir modificaes em outra.

E e F esto corretas. O fato de se ter acesso a um pequeno nmero de mtodos implica um acoplamento limitado. Se o acesso feito atravs de uma referncia do tipo interface, pode-se argumentar que existem ainda menos oportunidades para o acoplamento, uma vez que o prprio tipo da classe no se encontra visvel. Dizer que modificaes em uma parte de um programa provavelmente no causaro conseqncia em outra, realmente a essncia do acoplamento fraco. No existem variveis annimas. Referir-se apenas a um pequeno nmero de outros objetos poderia implicar um acoplamento fraco, mas se cada objeto tiver muitos mtodos, e todos forem usados, ento o acoplamento ser forte. As variveis(atributos) de uma classe devem normalmente ser private, mas isso descreve o encapsulamento e no o baixo acoplamento. claro que um bom encapsulamento tende a reduzir o acoplamento, como conseqncia. A,B,C e D esto incorretas com base na tese de doutorado acima. (Objetivo 5.1) A est correta. Embora um mtodo final no possa ser subscrito, neste caso o mtodo private,e, portanto escondido. O efeito que um novo e acessvel mtodo flipper criado. Assim, no ocorre polimorfismo neste exemplo; o mtodo chamado simplesmente o da classe-child, e no ocorre nenhum erro. B,C,D e E esto incorretas com base no exposto acima. (Objetivo 5.3)

Dado: Class Clidder{ private final void flipper() { System.out.println(Clidder); } } public class Clidlet extends Clidder { public final void flipper() { System.out.println(Clidlet); } public static void main(String [ ] args) { new Clidlet().flipper(); } } Qual o resultado ? A.Clidlet B.Clidder C. Clidder Clidder D. Clidlet Clidder E. A compilao falha Usando os fragmentos abaixo, complete o seguinte cdigo de forma que ele compile. Observao, talvez no seja preciso preencher todos os espaos em branco. Cdigo: Class AgedP { __________ __________ __________ ___________ ___________ public Agedp(int i) { __________ __________ __________ ___________ ___________ } } public class Kinder extends AgedP { __________ __________ __________ ___________ ___________ public Kinder( int x ){ __________ __________ __________ ___________ ___________ } } Fragmentos: Use cada um dos seguintes fragmentos quantas vezes for preciso, ou deixe sem uso: AgedP ( ; super ) this { }

Como no existe um tile descartvel para varivel x e os parnteses(no construtor Kinder) j esto no seu lugar e esto vazios, no possvel criar uma chamada ao construtor da superclasse que usa um argumento. Portanto, a nica possibilidade restante criar uma chamada ao construtor da sem argumentos da superclasse. Isso feito assim: super(); . A linha no pode ser deixada em branco, uma vez que os parnteses j esto no lugar. Alm disso, uma vez que o construtor da superclasse chamado a verso sem argumentos, esse construtor precisa ser criado. Ele no ser criado pelo compilador porque j existe um outro construtor. (Objetivo 5.4)

Dado: 1. class Plant { 2. String getName() { return plant; } 3. Plant getType() { return this; } 4. } 5. class Flower extends Plant { 6. //insira o cdigo aqui 7. } 8. class Tulip extends Flower{ } Quais instrues, inseridas na linha 6, iro compilar ? (Marque todas as corretas) A. Flower getType() { return this; } B. String getType() { return this; } C. Plant getType() { return this; } D. Tulip getType() { return new Tulip(); } Dado: 1. class Zing{ 2. protected Hmpf h; 3.} 4. class Woop extends Zing{ } 5. class Hmpf{ } Quais opes so verdadeiras ? (Marque todas as corretas) A. Woop -um Hmpf e tem-um Zing. B. Zing -um Woop e tem-um Hmpf. C. Hmpf tem-um Woop e Woop -um Zing. D. Woop tem-um Hmpf e Woop -um Zing. E. Zing tem-um Hmpf e Zing -um Woop. Dado: 1. class Programmer { 2. Programmer debug() { return this; } 3. } 4. class SCJP extends Programmer { 5. //Insira o cdigo aqui 6. } Qual opo, inserida na linha5, ir compilar ? (Marque todas as corretas) A. Programmer debug() { return this; } B. SCJP debug() { return this; } C. Object debug() { return this; } D. int debug() { return i; } E. int debug(int x) { return 1; } F. Object debug(int x) { return this; } Dado: class Uber { static int y = 2; Uber(int x) { this(); y = y * 2; } Uber(){ y++; } } class Minor extends Uber { Minor() { super(y); y = y + 3; } public static void main(String [] args) { new Minor(); System.out.println(y); } } Qual o resultado ? A. 6 B. 7 C. 8 D. 9 E. A compilao falha. F. Ser lanada uma exceo.

A, C e D esto corretas. A e D so exemplos de retornos covariantes, ou seja, Flower e Tulip so ambos subtipos de Plant. B est incorreta, String no um subtipo de Plant. (Objetivo 5.5)

D est correta, Woop herda um Hmpf de Zing. A,B,C e E esto incorretas com base no exposto acima. (Objetivo 5.5)

A,B,E e F esto corretas. A e B so exemplos de subscrio; especificamente, B um exemplo de subscrio usando-se um retorno covariante. E e F so exemplos de sobrecarga. C e D esto incorretas. So de subscries invlidas, porque os seus tipos de retorno so incompatveis. E so sobrecargas invlidas porque os seus argumentos no se modificam. (Objetivo 5.4)

D est correta. O construtor de Minor faz uma chamada explicita ao construtor com um argumento de Uber, que faz uma chamada explcita(this) ao construtor sem argumentos de Uber, que por sua vez incrementa y e depois retorna para o construtor com um argumento, o qual multiplica y * 2 e depois retorna para o construtor de Minor, que adiciona 3 a y. A,B,C,E e Festo incorretas com base no exposto acima. (Objetivo 1.6)

Quais afirmativas so verdadeiras ? (Marque todas as corretas) A. A coeso o principio da programao OO mais intimamente associado com o ato de esconder os detalhes da implementao. B. A coeso o principio da programao OO mais intimamente associado com o ato de certificar-se de que as classes s conhecero outras atravs das suas APIs. C. A coeso o principio da programao OO mais intimamente associado com o ato de certificar-se de que a classe foi elaborada com um nico e bemfocado propsito. D. A coeso o principio da programao OO mais intimamente associado com o ato de permitir que um mesmo objeto seja visto como tendo muitos tipos. Dado: 1. class Dog { } 2. class Beagle extends Dog { } 3. 4. class Kennel { 5. public static void main(String [] arfs) { 6. Beagle b1 = new Beagle(); 7. Dog dog1 = new Dog(); 8. Dog dog2 = b1; 9. //insira o cdigo aqui 10. } } Qual opo, inserida na linha 9, ir compilar ? (Marque todas as corretas) A. Beagle b2 = (Beagle) dog1; B. Beagle b3 = (Beagle) dog2; C. Beagle b4 = dog2; D. Nenhuma das instrues acima ir compilar. Dado o seguinte cdigo: 1. class X { void do1() { } } 2. class Y extends X { void do2() { } } 3. 4. class Chrome { 5. public static void main(String [] args) { 6. X x1 = new X(); 7. X x2 = new Y(); 8. X y1 = new Y(); 9. //insira o cdigo aqui 10. } } Qual opo, inserida na linha 9, ir compilar ? (Marque todas as corretas) A. x2.do2(); B. (Y)x2.do2(); C. ( (Y)x2).do2(); D. Nenhuma das instrues acima ir compilar.

A resposta C est correta. A refere-se ao encapsulamento, B refere-se ao acoplamento e D refere-se ao polimorfismo. (Objetivo 5.1)

A e B esto corretas. Entretanto, no tempo de execuo, A lanar uma ClassCastException porque dog1 refere-se a um objeto Dog, o qual no necessariamente ser capaz de realizar tarefas de Beagle. C e D esto incorretas com base no exposto acima (Objetivo 5.2)

C est correta. Para poder chamar o mtodo do2 de Y, voc precisa converter x2 para que ele se torne do tipo Y. A instruo B parece ser uma converso correta, mas sem o segundo conjunto de parnteses, o compilador pensar que se trata de uma instruo incompleta. A,B e D esto incorretas com base no exposto acima. (Objetivo 5.2)

Você também pode gostar