programação - yolaapostilando.yolasite.com/resources/handbook_questo... · handbook de questões...

52
Questões comentadas Programação para concursos

Upload: others

Post on 24-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Questões comentadas

Programaçãopara concursos

Page 2: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Bons estudos,

Grupo Handbook de TI Programação é o processo de criação de programas de computador.Para fazê-lo bem, o programador necessita dominar conceitos como modularização, coesão, aco-plamento, funções, passagens de parâmetros, entre outros. Além disso, um bom programadorprecisa conhecer os principais paradigmas de programação, como programação estruturada, pro-gramação procedural, programação funcional e, principalmente, a programação orientada a ob-jetos.

Como as técnicas e os paradigmas de programação são assuntos obrigatórios em grande partedos concursos na área de tecnologia da informação, o Grupo Handbook de TI preparou estevolume, que traz uma série de questões comentadas sobre programação para você se prepararainda melhor para os certames de seu interesse.

Bons estudos,

Grupo Handbook de TI

Página 1 de 50www.handbookdeti.com.br

Page 3: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Direitos Autorais

Este material é registrado no Escritório de Direitos Autorais (EDA) da Fundação BibliotecaNacional. Todos os direitos autorais referentes a esta obra são reservados exclusivamente aosseus autores.

Os autores deste material não proíbem seu compartilhamento entre amigos e colegas próxi-mos de estudo. Contudo, a reprodução, parcial ou integral, e a disseminação deste material deforma indiscriminada através de qualquer meio, inclusive na Internet, extrapolam os limites dacolaboração. Essa prática desincentiva o lançamento de novos produtos e enfraquece a comuni-dade concurseira Handbook de TI.

A série Handbook de Questões de TI Comentadas para Concursos � Além do Gabarito é umaprodução independente e contamos com você para mantê-la sempre viva.

Grupo Handbook de TI

Página 2 de 50www.handbookdeti.com.br

Page 4: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Canais de Comunicação

O Grupo Handbook de TI disponibiliza diversos canais de comunicação para os concurseirosde TI.

Loja Handbook de TI

Acesse a nossa loja virtual em http://www.handbookdeti.com.br

Serviço de Atendimento

Comunique-se diretamente conosco através do e-mail [email protected]

Twitter do Handbook de TI

Acompanhe de perto promoções e lançamentos de produtos pelo nosso Twitter http://twitter.com/handbookdeti

Página 3 de 50www.handbookdeti.com.br

Page 5: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

1. Assuntos relacionados: Técnicas de Programação, Modularização de Algoritmos,Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 35

Considere o projeto da rotina escrita em pseudo-código, apresentada a seguir.

1. função processar() {

2. // recuperar lista do banco de dados

3. // ordenar lista

4. // atualizar lista

5. // enviar lista via e-mail

6. // gravar lista no banco de dados

7. �m da função }

Sabendo-se que o desenvolvedor implementou o algoritmo responsável pelas linhas 2, 3, 4, 5e 6 completamente no corpo da função apresentada acima, quais são as características destetrecho de código?

(a). Alta coesão e baixa modularização.

(b). Alta coesão e alto acoplamento.

(c). Baixo acoplamento e baixa modularização.

(d). Baixa coesão e baixa modularização.

(e). Baixa coesão e alta modularização.

Solução:

A forma natural de solucionarmos problemas complexos é dividi-los em problemas maissimples, aos quais chamamos de módulos. Essa divisão em programação é chamada de mo-dularização.

Um módulo é um grupo de comandos, constituindo de um trecho de algoritmo, com umafunção bem de�nida e o mais independente possível em relação ao resto do algoritmo. Deve-mos utilizar módulos de tamanho limitado, pois módulos muito extensos acabam perdendosua funcionalidade. Cada módulo pode de�nir as próprias estruturas de dados necessáriaspara sua execução. A comunicação entre módulos deverá ser feita através de variáveis glo-bais ou por transferência de parâmetros.

O objetivo da modularização é aumentar a con�abilidade, legibilidade, manutenibilidadee �exibilidade de um software. Em linguagens procedurais, podemos utilizar dois tipos deferramentas para fazer a modularização: procedimentos ou funções.

A declaração de um procedimento ou função é composta por um cabeçalho e um corpo.O cabeçalho, que contém um nome e uma lista de parâmetros, identi�ca o procedimento.O corpo contém declarações locais e os comandos do procedimento. Para ativarmos ummódulo, fazemos referência a seu nome e indicamos parâmetros atuais.

Página 4 de 50www.handbookdeti.com.br

Page 6: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Quando projetamos um algoritmo, devemos construir módulos com os seguintes propósi-tos: alta coesão e baixo nível de acoplamento. Ou seja, o ideal é projetar software de formaque cada módulo encaminhe uma sub-função especí�ca de requisitos e tenha uma interfacesimples quando visto de outras partes da estrutura do programa. A independência funcionalé fundamental para um bom projeto.

A coesão mede o quão relacionadas ou focadas estão as responsabilidades da classe oumódulo. Uma classe com baixa coesão faz muitas coisas não relacionadas, ou seja, assumeresponsabilidades que pertencem a outras classes e leva aos seguintes problemas: difícil deentender; difícil de reusar; difícil de manter; e �delicada� (constantemente sendo afetada poroutras mudanças).

O acoplamento ou conexão é a interdependência relativa entre módulos, ou seja, o queum módulo conhece sobre o outro. Mudanças em módulos com baixo acoplamento não sãore�etidas em outros módulos. Podemos classi�car um software, em relação ao acoplamento,da seguinte maneira:

• baixo acoplamento: quando a interface entre módulos se faz através da passagem dedados;

• acoplamento moderado: quando a interface entre os módulos é feita por controle,p.ex., quando o módulo 1 passa o controle para o módulo 2;

• acoplamento elevado: quando o módulo está ligado a um ambiente externo ao soft-ware, p.ex., a E/S acopla um módulo a dispositivos, formatos e protocolos de comuni-cação. Ou ainda, módulos que utilizam variáveis globais.

De acordo com o algoritmo apresentado, o desenvolvedor não se preocupou com a modula-rização, coesão e acoplamento. Isto é, concentrou todas as funcionalidades em uma únicafunção. Assim, caracterizando o código com baixa modularidade, baixa coesão e alto aco-plamento.

Página 5 de 50www.handbookdeti.com.br

Page 7: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

2. Assuntos relacionados: Estruturas de Dados, Árvores Binárias, Árvores AVL,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 26

No projeto de módulos adequadamente estruturados deve-se

(a). evitar o baixo acoplamento.

(b). evitar escopo de efeito de um módulo fora de seu escopo de controle.

(c). evitar a coesão funcional.

(d). adotar o acoplamento por conteúdo.

(e). adotar a coesão lógica.

Solução:

Módulo é a parte do sistema responsável por uma tarefa bem de�nida e que pode ser aco-plado a um sistema para permitir ao mesmo executar a tarefa disponibilizada pelo mesmo.O conceito de módulo é similar ao de uma caixa preta. A função é bem clara. É conhecidaa entrada, a saída e a função.

Um projeto de módulos visa atingir os seguintes objetivos:

• Precisão: um módulo deve fazer exatamente o que se espera dele;

• Solidez: capacidade de um módulo manipular corretamente situações inesperadas. Ummódulo sólido não propaga erros;

• Extensibilidade: módulos devem ser construídos de tal forma que uma nova funciona-lidade possa ser adicionada sem a necessidade de se refazer o serviço;

• Facilidade de adaptação: os módulos devem ser de tal forma que possam ser facilmenteadaptados a novas utilizações;

• Reutilização: os módulos devem ser projetados de tal forma que possam ser utilizadosem mais de uma aplicação.

Para atingirmos os objetivos acima em um projeto de módulos, os seguintes princípios devemser seguidos:

• Ocultar informações: o funcionamento interno de um módulo deve estar oculto aosoutros módulos. Assim, módulos podem utilizar-se de outros módulos e dependerdestes para realizar as tarefas esperadas sem se preocupar como devem ser realizadastais tarefas;

• Poucas interfaces: um módulo deve interagir com outros o mínimo possível, pois quantomais interfaces tiverem uns com os outros, mais difícil será a manutenção dos mesmos;

• Pequenas interfaces: a interface de um módulo deve precisar somente das informaçõesnecessárias para que o mesmo complete a tarefa. Este princípio limita as ligaçõesque um módulo tem com uma aplicação em particular, tornando-o mais fácil de serreutilizado;

• Interfaces explícitas: as interfaces devem ser feitas de forma que todas as informaçõespertinentes sejam claramente especi�cadas no código fonte;

Página 6 de 50www.handbookdeti.com.br

Page 8: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• Clareza um módulo deve ser dedicado a uma �nalidade bem de�nida, e a função de-sempenhada pelo módulo não deve gerar nenhum �efeito colateral� inesperado. Umavantagem da obediência deste princípio é a facilidade de depuração.

Dentre os critérios de qualidade de um projeto de módulos se destacam o acoplamento e acoesão.

O acoplamento mede o grau de interdependência entre os módulos do diagrama. O quese deseja são módulos de baixo acoplamento para diminuir o máximo possível o efeito emcadeia quando um módulo for alterado. Os tipos de acoplamento são:

• Acoplamento de dados: corresponde a comunicação de dados necessária entre módulos.Uma vez que os módulos têm que se comunicar, a ligação de dados é inevitável, e não écrítica desde que mantidas as taxas mínimas. Deve-se tomar cuidado com o chamadodado migrante (um grupo de informações que vagueia pelo sistema), indesejável e semsentido para a maioria dos módulos pelos quais passa;

• Acoplamento de imagem: dois módulos apresentam acoplamento por imagem se elesfazem referência a uma mesma estrutura de dados. Este tipo de acoplamento tende afornecer mais dados do que o necessário a um módulo;

• Acoplamento de controle: dois módulos são acoplados por controle se um passa umgrupo de dados (controle) para o outro para controlar sua lógica interna;

• Acoplamento comum: dois módulos possuem Acoplamento Comum quando fazem re-ferência a uma área global de dados. Um bom exemplo é a Working Storage Sectionda linguagem Cobol. Este tipo de acoplamento não é desejável, pois um erro em umaárea global pode se propagar por diversos módulos. Além disso, programas com muitosdados globais são de difícil entendimento e �ca difícil descobrir que módulos devem seralterados quando um dado é modi�cado;

• Acoplamento de conteúdo: dois módulos apresentam acoplamento de conteúdo (oupatológico) se um faz referência ou desvia a sequência de instruções para o interiorde um outro módulo (GOTO). Tal acoplamento torna o conceito de caixas-pretas semsentido.

Já a coesão mede a intensidade da associação funcional dos elementos de um módulo.Deseja-se módulos altamente coesos, cujos elementos são relacionados uns com os outros.Por outro lado, os elementos de um módulo não devem ser fortemente relacionados com oselementos de outros módulos, pois isto levaria a um forte acoplamento entre eles. Ter certezade que todos os módulos têm boa coesão é a melhor forma de minimizar o acoplamento. Ostipos de coesão são:

• Coesão funcional: um módulo apresenta coesão funcional quando suas funções internascontribuem para a execução de uma e apenas uma tarefa relacionada ao problema;

• Coesão sequencial: um módulo apresenta coesão sequencial quando suas funções in-ternas estão envolvidas em atividades de tal forma, que os dados de saída de umaatividade sirvam como dados de entrada para a próxima. Este �uxo estabelece umasequência de execução das funções, no entanto, não se pode caracterizar o conjuntodelas como uma única tarefa. Um módulo com coesão sequencial caracteriza-se porser de fácil manutenção, porém de baixa reutilização, pois contém atividades que sãoutilizadas juntas;

• Coesão comunicacional: um módulo possui coesão comunicacional quando suas funçõesinternas estão relacionadas por utilizarem as mesmas informações, ou seja, utilizam a

Página 7 de 50www.handbookdeti.com.br

Page 9: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

mesma entrada ou mesma saída. Nesta situação o módulo fornece mais informaçõesque o necessário. Módulos com coesão comunicacional e sequencial são semelhantes,pois ambos contém atividades organizadas em torno dos dados do problema original.A principal diferença entre eles é que um módulo sequencialmente coeso opera comouma linha de montagem onde suas atividades são executadas em uma ordem especí�ca.Já em um módulo com coesão comunicacional a ordem de execução não é importante;

• Coesão procedural: um módulo possui coesão procedural quando suas funções internasexecutam atividades diferentes e não correlacionadas, exceto por serem executadas emuma mesma ordem, nas quais o controle �ui (e não os dados) de uma atividade paraoutra. É comum em um módulo com coesão procedural que os dados de entrada esaída tenham pouca relação. É típico também que tais módulos devolvam resultadosparciais, tais como: �ags, chaves, etc.;

• Coesão temporal: um módulo possui coesão temporal quando suas funções internasexecutam atividades que estão relacionadas apenas com o tempo (as atividades nãoestão relacionadas entre si). A ordem de execução de atividades é mais importante emmódulos procedurais do que em módulos temporais;

• Coesão lógica: um módulo possui coesão lógica quando suas funções internas contri-buem para atividades da mesma categoria geral, onde a atividade é selecionada forado módulo. Desta forma, módulos logicamente coesos apresentam uma interface des-caracterizada;

• Coesão coincidental: um módulo possui coesão coincidental quando suas funções nãopossuem nenhuma correlação entre si, não há uma ordem especí�ca de execução, nemsempre todas as funções são ativadas e a ativação das funções é decidida fora do módulo.

As formas de coesão apresentadas acima estão em ordem decrescente de importância paraum bom projeto. Ou seja, o ideal é que a coesão funcional seja adotada e funcionando comouma verdadeira �caixa-preta�. A medida que �descemos� a lista acima, vamos adentrandoem um enfraquecimento da coesão e, portanto, a uma piora do projeto de módulos.

Além do acoplamento e coesão devemos considerar outras diretrizes dentro do projeto taiscomo Factoring, Divisão de Decisão, Fan-In, Fan-Out, etc.

O factoring corresponde a separação de uma função contida em um módulo, passando-a para um novo módulo. Este separação pode ter com objetivo:

• reduzir o tamanho do módulo;

• obter as vantagens modulares de um projeto top-down, tornando o sistema mais com-preensível e permitindo modi�cações mais localizadas;

• evitar a codi�cação de uma mesma função em mais de um módulo;

• prover módulos de utilização mais genérica;

• simpli�car a implementação.

A fatoração de um módulo grande deve ser efetuada se não diminuir a coesão e não aumentaro acoplamento do módulo original.

Uma decisão é constituída de duas partes: o reconhecimento da ação a ser tomada e aexecução desta ação. Deve-se evitar ao máximo a divisão de decisão. A parte referente aexecução da decisão deve ser mantida o mais próximo possível da parte referente ao reconhe-cimento, a �m de que a informação reconhecida não tenha que percorrer um longo caminho

Página 8 de 50www.handbookdeti.com.br

Page 10: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

para ser processada(dado migrante).

O escopo de controle é um conjunto formado por um módulo e todos os seus subor-dinados. Já o escopo de efeito de uma decisão é conjunto de todos os módulos cujo seuprocedimento depende da decisão. É importante que o escopo de efeito de uma decisãode um módulo seja um subconjunto do escopo de controle deste módulo. Sempre que estaregra for violada, deve-se elaborar uma nova organização dos módulos com o objetivo deaproximar o reconhecimento da execução.

O FAN-OUT corresponde ao número de subordinados imediatos de um módulo. Deve-se limitar o FAN-OUT de um módulo em torno de sete. Para corrigir um alto FAN-OUTpode-se utilizar o factoring de módulos. Já a de�nição de FAN-IN corresponde ao númerode módulos superiores de um módulo. Um alto FAN-IN acarreta reutilização de módulos.

Dada as melhores diretrizes para um projeto de módulos, vamos analisar as alternativasda questão.

(A) Está errada. Como já foi exposto, o baixo acoplamento é desejável em um bom projetode módulos.

(B) Correta. É importante que um escopo de efeito de uma decisão de um módulo es-teja dentro do seu escopo de controle.

(C) Errada. A coesão funcional é a forma de coesão mais importante para um bom projeto,pois consiste em atribuir somente uma tarefa para um determinado módulo para resoluçãode um problema.

(D) Errada também. Ao adotarmos o acoplamento por conteúdo, estaremos ignorandoas principais vantagens da modularização como a reutilização e a facilidade de adaptação.

(E) Na coesão lógica, um módulo faz um conjunto de funções relacionadas, uma das quaisé escolhida através de um parâmetro ao chamar o módulo. Um exemplo abaixo.

public void faça(int flag) {

switch(flag) {

case ON:

// passos para tratar de ON

break;

case OFF:

// passos para tratar de OFF

break;

case FECHAR:

// passos para tratar de FECHAR

break;

case COR:

// passos para tratar de COR

break;

}

}

Tal tipo de coesão não é desejável para um bom projeto na maioria do casos. A alternativa

Página 9 de 50www.handbookdeti.com.br

Page 11: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

E está errada. A solução para obtermos uma melhor coesão é quebrarmos o módulo emmódulos diferentes cada qual com a sua função especí�ca.

Página 10 de 50www.handbookdeti.com.br

Page 12: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

3. Assuntos relacionados: Projeto de Software, Coesão,Banca: FCCInstituição: TRT 16a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2009Questão: 42

Dentro do espectro de coesão entre tarefas de um módulo é menos indicado usar a

(a). procedimental do que a temporal.

(b). funcional do que a temporal.

(c). lógica do que a coincidental.

(d). comunicacional do que a procedimental.

(e). sequencial do que a funcional.

Solução:

A forma natural de solucionarmos problemas complexos é dividi-los em problemas mais sim-ples, aos quais chamamos de módulos.

A modularização é uma ferramenta da programação estruturada, que tem como objetivoaumentar a con�abilidade, legibilidade, manutenibilidade e �exibilidade dos algoritmos. Ummódulo é, então, um grupo de comandos, constituindo um trecho de algoritmo, com umafunção bem de�nida e o mais independente possível em relação ao resto do algoritmo.

Quando projetamos um algoritmo devemos construir módulos com apenas um propósito(alta coesão), e diminuir ao máximo a interação entre eles (baixo nível de acoplamento).Ou seja, o ideal é projetar software de forma que cada módulo encaminhe uma sub-funçãoespecí�ca de requisitos e tenha uma interface simples quando visto de outras partes da es-trutura do programa.

A coesão mede a intensidade da associação funcional dos elementos de um módulo. Umaclasse com baixa coesão possui funcionalidades não relacionadas, ou seja, uma classe combaixa coesão possui responsabilidades que pertencem a outras classes, e leva a problemasde di�culdade de entendimento, de reutilização e de manutenção. Os tipos de coesão (domelhor tipo para o pior tipo) são:

• Funcional: um módulo com coesão funcional contém elementos que contribuem para aexecução de uma e apenas uma tarefa relacionada ao problema;

• Seqüencial: um módulo seqüencialmente coeso é aquele cujos elementos estão envolvi-dos em atividades tais que os dados de saída de uma atividade servem como dados deentrada para a próxima;

• Comunicacional: um módulo com coesão comunicacional é aquele cujos elementos con-tribuem para atividades que usem a mesma entrada ou a mesma saída;

• Procedural: módulo cujos elementos estão envolvidos em atividades diferentes e pos-sivelmente não relacionadas, mas nas quais o controle �ui de uma atividade para aoutra;

• Temporal: módulo cujos elementos estão envolvidos em atividades que estão relaciona-das no tempo;

Página 11 de 50www.handbookdeti.com.br

Page 13: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• Lógica: módulo cujos elementos contribuem para atividades da mesma categoria geral,onde a atividade ou as atividades a serem executadas são selecionadas fora do módulo;

• Coincidental: um módulo coincidentemente coeso é aquele cujos elementos contribuempara atividades sem relação signi�cativa entre si.

O acoplamento mede o grau de interdependência entre os módulos do diagrama. Um altoacoplamento di�culta manutenções no sistema.

A seguir, analisamos as alternativas desta questão:

(A) ERRADA

A coesão procedimental ou procedural é mais indicada para ser utilizada do que a coe-são temporal.

(B) ERRADA

A coesão funcional é mais indicada para ser utilizada do que a coesão temporal.

(C) ERRADA

A coesão lógica é mais indicada para ser utilizada do que a coesão coincidental.

(D) ERRADA

A coesão comunicacional é mais indicada para ser utilizada do que a coesão procedimental.

(E) CORRETA

A coesão seqüencial é menos indicada para ser utilizada do que a coesão funcional.

Página 12 de 50www.handbookdeti.com.br

Page 14: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

4. Assuntos relacionados: Técnicas de Programação, Passagem de Parâmetros,Banca: CESGRANRIOInstituição: BNDESCargo: Analista de SuporteAno: 2008Questão: 36

Observe a rotina abaixo escrita em pseudocódigo.

1. inicio

2. p : inteiro = 20

3. misturar(p,p)

4. imprimir p

5. �m

6. procedimento misturar(a:inteiro, b:inteiro)

7. a = a + (b / 2) � (b / 5) + 14;

8. b = (a / b) - 1;

9. �m da função

Considerando-se a linha 1 como o ponto de entrada, e que os parâmetros `a' e `b' da sub-rotina são passados por referência, qual será o valor impresso na linha 4?

(a). 0

(b). 1

(c). 19

(d). 20

(e). 40

Solução:

Existem vários tipos de passagem de parâmetros e a escolha depende do nosso objetivo.

Em uma passagem de parâmetro por valor, as alterações realizadas nos parâmetros dentroda função invocada (parâmetros formais) não re�etem nos parâmetros da função invocadora(parâmetros efetivos) correspondente. Nesse caso, os parâmetros são de entrada.

Em uma passagem por referência, as alterações realizadas nos parâmetros formais re�e-tem nos parâmetros efetivos da função correspondente. Nesse caso, os parâmetros são deentrada e saída. As alterações dos parâmetros são re�etidas, pois se altera o valor na me-mória endereçada pelo parâmetro.

Na linha 2 do código, a variável p, que é do tipo inteiro, recebe o valor 20. Na linha 3,a função misturar é invocada. Como os parâmetros dessa função são passados por referên-cia, devemos lembrar que qualquer alteração dentro do corpo da função misturar re�ete novalor de p. Para essa função, os parâmetros a e b são iguais a p, isto é, a = 20 e b = 20.

Vale destacar que qualquer alteração em a é re�etida em b, e em b re�etida em a e conse-quentemente em p, pois as três variáveis apontam para o mesmo endereço de memória.

Página 13 de 50www.handbookdeti.com.br

Page 15: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

No corpo da função misturar, linha 7, o parâmetro a é alterado. O resultado dessa ope-ração é a = 40, e consequente b = 40, pois apontam para mesmo endereço de memória. Nalinha 8, o parâmetro b é alterado. O resultado dessa operação é b = 0. Ou seja, o valor dep foi atualizado para 0.

Na linha 4, o valor atual de p é 0. Então, o valor impresso de p é igual 0.

Vale lembrar que cada linguagem de programação tem suas regras especí�cas para reali-zar a passagem de parâmetros.

Página 14 de 50www.handbookdeti.com.br

Page 16: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

5. Assuntos relacionados: Programação, Estruturas de Dados,Banca: ESAFInstituição: Receita Federal (RF)Cargo: Técnico da Receita Federal - Tecnologia da InformaçãoAno: 2006Questão: 21

Analise as seguintes a�rmações relacionadas a Noções de Programação:

I. Quando uma função é chamada e os parâmetros formais da função copiam os valoresdos parâmetros que são passados para ela, sem que ocorra alteração dos valores que osparâmetros têm fora da função, este tipo de chamada de função é denominado chamadacom passagem de parâmetros por valor. Isso ocorre porque são passados para a funçãoapenas os valores dos parâmetros e não os próprios parâmetros.

II. Uma função que pode chamar a si própria é chamada função recursiva. Um critériode parada vai determinar quando a função deverá parar de chamar a si mesma. Issoimpede que a função entre em loop.

III. Uma �la é uma lista de informações com operações especiais de acesso. O acesso aoselementos da �la é feito pela extremidade oposta à da inserção, ou seja, o elementodisponível estará sempre na extremidade oposta à da inserção. Esta regra é tambémconhecida como LIFO (Last In First Out).

IV. No desenvolvimento estruturado, uma boa prática de modularização é proporcionarum alto acoplamento entre os módulos, mantendo a dependência lógica e liberdade decomunicação entre eles.

Indique a opção que contenha todas as a�rmações verdadeiras.

(a). II e III

(b). I e II

(c). III e IV

(d). I e III

(e). II e IV

Solução:

Vamos analisar as a�rmativas separadamente, pois termos diferentes são utilizados em cadauma.

I. CORRETA. Na passagem de parâmetros por valor, a função recebe uma cópia dosargumentos quando é invocada. Ou seja, as alterações de valor nas variáveis que repre-sentam os argumentos não é propagado fora do escopo da função. Já na passagem deparâmetros por referência, são enviadas internamente para a função, as referências dosargumentos que foram passados, e não uma simples cópia. Os valores alterados, nestecaso, irão ser efetivados fora do escopo da função.

II. CORRETA. Uma função recursiva é uma função que pode invocar a si própria. Emtoda função recursiva existem dois passos importantes: o passo básico e o passo re-cursivo. O passo básico é o passo em que o resultado é imediatamente conhecido, jáo passo recursivo é o passo em que se tenta resolver um sub-problema do problemainicial. O passo básico é, em si, o critério de parada, pois uma vez que o conjunto deentrada �bate� com o caso básico, a função recursiva não é mais chamada.

Página 15 de 50www.handbookdeti.com.br

Page 17: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

III. ERRADA. As �las são estruturas baseadas no princípio FIFO (�rst in, �rst out), ouseja, os elementos que foram inseridos no início são os primeiros a serem removidos. Éverdadeiro dizer que, neste caso, o acesso ao elemento da �la é feito pela extremidadeoposta ao da inserção. O erro está em dizer que a regra utilizada é a LIFO (Last InFirst Out). A regra LIFO, a qual se refere a a�rmativa, é a regra básica da estruturade dados conhecida como pilha. Na pilha, os dados que foram inseridos por último,serão os primeiros a serem removidos, ou seja, a extremidade de inserção e de deleçãoé a mesma.

IV. ERRADA. Dizemos que o acoplamento é baixo quando uma mudança em um módulonão requererá a mudança em outro módulo. Acoplamento baixo é sinal de um sistemabem estruturado e isso se consegue através de uma modularização bem pensada. Oacoplamento baixo pode reduzir o desempenho em relação a um sistema com altoacoplamento. Entretanto, o acoplamento baixo é requerido na maioria dos casos, poisoferece uma manutenabilitadade mais simpli�cada. Além disso, o acoplamento baixofacilita a coesão elevada. Módulos com alta coesão possuem responsabilidades bemde�nidas e é bem difícil dividi-las em duas ou mais classes.

Dado o exposto, as a�rmativas corretas são somente a (I) e (II), logo, a alternativa corretaé a letra (B).

Página 16 de 50www.handbookdeti.com.br

Page 18: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

6. Assuntos relacionados: Orientação a Objeto, Java,Banca: FCCInstituição: TRT 2a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 31

Em uma hierarquia de classes é possível especi�car operações com a mesma assinatura empontos diferentes da hierarquia. Portanto, essas operações presentes nas classes-�lha

(a). anulam o comportamento das operações existentes nas classes-mãe.

(b). herdam os atributos existentes nas classes-mãe.

(c). são composições de alguns atributos existentes nas classes-mãe.

(d). complementam o comportamento das operações existentes nas classes-mãe.

(e). agregam as operações existentes nas classes-mãe.

Solução:

Herança de métodos permite a você de�nir e usar métodos repetidamente em subclasses(classes �lhas) sem ter que replicar código. Porém, existem momentos em que mesmo queo método da superclasse (classe pai) seja apropriado para a subclasse, esta freqüentementenecessita customizá-lo, isto é, você deseja que estes métodos tenham um comportamentodiferente quando for chamado. Em tais situações, a subclasse pode rede�nir o método dasuperclasse com uma implementação apropriada.

Para rede�nir um método, tudo que você precisa fazer é criar um método em sua sub-classe com a mesma assinatura (nome, tipo de retorno e lista de parâmetros) que o métododa superclasse. E, uma vez que Java executa a primeira de�nição do método que ele en-contra com a mesma assinatura, isto �esconde� e�cazmente o método original existente nasuperclasse. Por este motivo que a alternativa A é a CORRETA.

Devemos citar ainda que, em Java, quando um método da subclasse rede�ne o da superclasse,o método desta última ainda pode ser acessado a partir da subclasse, bastando simplesmenteinserir antes do nome do método a palavra-chave super e um ponto separador (.). Isto evitaa duplicação de procedimento em ambos os métodos (o da superclasse e o da subclasse),permitindo que você chame o método original no corpo do método substituído e adicioneapenas o que precisa.

Página 17 de 50www.handbookdeti.com.br

Page 19: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

7. Assuntos relacionados: Orientação a Objeto, Java, C++,Banca: FCCInstituição: TRT 2a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 34

As instâncias de uma classe são

(a). seus atributos.

(b). suas superclasses.

(c). suas operações.

(d). seus objetos.

(e). seus relacionamentos.

Solução:

Analisemos alternativa por alternativa.

(A) ERRADA

Atributos são informações individuais que diferenciam um objeto de outro e determinama aparência, estado, ou outras qualidades do objeto. Eles são de�nidos por variáveis e po-dem ser considerados análogos a variáveis globais para o objeto inteiro.

(B) ERRADA

Superclasse é simplesmente a classe que está acima na hierarquia.

Somente para lembrar: Java não dá suporte nativo à herança múltipla de implementações(herdar de mais de uma superclasse), ao contrário de C++. No entanto, ainda é possível ob-ter uma herança múltipla virtual, onde você consegue herdar assinaturas de métodos atravésdas interfaces.

(C) ERRADA

As operações, ou métodos, de uma classe determinam o que as instâncias daquela classefazem quando o estado do objeto muda ou quando estas instâncias são solicitadas a fazeralguma coisa por outra classe ou objeto.

Lembre-se que as operações nem sempre afetam somente um único objeto; objetos se comu-nicam usando métodos também. Uma classe ou objeto pode chamar métodos em uma outraclasse ou objeto para comunicar mudanças no ambiente ou para pedir que o objeto altere oseu estado.

(D) CORRETA

Uma classe é um modelo para múltiplos objeto com características similares. Ela incor-pora todas as características de um conjunto de objetos. Quando você escreve um programaem uma linguagem orientada a objetos, você não de�ne objetos reais, você de�ne classe de

Página 18 de 50www.handbookdeti.com.br

Page 20: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

objetos.

Por exemplo, você pode ter uma classe Árvore que descreve as característica de todas asárvores (tem folhas e raízes, cresce, produz cloro�la). A classe Árvore serve como um modeloabstrato para o conceito de uma árvore � para alcançar e �agarrar�, ou interagir com, oucortar uma árvore você tem que ter uma instância concreta desta árvore. Naturalmente,uma vez que você tenha uma classe Árvore, você pode criar muitas instâncias de árvoresdiferentes, e cada instância de árvore diferente pode ter diferentes características (pequena,alta, etc.).

Uma instância de uma classe é uma outra palavra para objeto. Se uma classe é uma repre-sentação abstrata de um objeto, uma instância é a sua representação concreta. Portantonão há diferença alguma entre instância e objeto. Objeto é o termo mais geral, mas ambosos termos são a representação concreta de uma classe.

(E) ERRADA

Como os objetos usualmente necessitam co-operar a �m de alcançar seus objetivos, elescomumente entram em relacionamento uns com outros. Citamos aqui três tipos de relacio-namento:

1. Associação: trata-se do tipo de relacionamento mais importante. Objetos que estãoassociados co-operam pelo envio de mensagem. Em geral, associação deveria ser usadaonde dois objetos não estão conceitualmente relacionados, mas dentro do contexto doproblema precisam fazer uso do serviço dos outros. Por exemplo, uma interação naqual um único objeto Empregado é empregado por um único objeto Companhia;

2. Agregação composta: também referenciada como relacionamento �tem um� ou �partede� ela indica que um objeto (o todo) é composto de outros objeto (as partes). Coma agregação composta o relacionamento existente entre objetos é muito mais forte quecom associação. Nela, o todo não pode existir sem suas partes e as partes não podemexistir sem o todo, de forma que: apagar o todo implica em apagar as partes; existeum único todo, isto é, as partes não são compartilhadas entre os todos; partes nãopodem ser �acessadas� fora do todo, isto é, elas são privadas ao todo; uma mensagemdestinada a uma parte precisa ser enviada para o todo e posteriormente transmitidapara a parte;

3. Agregação compartilhada: nela ainda há o relacionamento todo/parte, mas agoraas partes são compartilháveis com outros todos. Como com a agregação composta umamensagem para a parte necessita ser enviada através do todo. Porém, apagar o todonão implica em apagar as partes. Assim, o acoplamento entre o todo e sua parte éenfraquecido.

Página 19 de 50www.handbookdeti.com.br

Page 21: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

8. Assuntos relacionados: Engenharia de Software, Orientação a Objeto,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 27

São dois conceitos utilizados especi�camente nos modelos orientados a objetos:

(a). �uxo de dados e herança.

(b). entidade externa e classe.

(c). método e polimor�smo.

(d). seleção e processo.

(e). depósito de dados e relacionamento.

Solução:

No paradigma orientado a objeto, pressupõe-se que o mundo é composto por objetos, ondeum objeto combina estrutura de dados e comportamento funcional. Neste paradigma, ossistemas são estruturados a partir dos objetos existentes no domínio do problema, ou seja,como os objetos interagem. Este paradigma tem origem no projeto de banco de dados e,normalmente, o modelo de Entidade e Relacionamento (ER) é utilizando como principalferramenta.

A orientação a objeto oferece alguns conceitos para a modelagem de sistemas, entre eles:objetos, atributos, comportamento, identidade, classes e instâncias, abstração, encapsula-mento, modularidade, hierarquia, mensagens, sobrecarga, polimor�smo, interfaces e pacotes.

Em sistemas modelados com base no paradigma orientado a objetos, os objetos relacionam-se uns com outros. Vários mecanismos têm sido propostos para a estruturação de classese objetos, entre eles: ligações e associações, agregações ou composições e generalização eespecialização.

Algumas linguagens de programação que dão suporte a orientação a objetos: Smaltalk,Perl, Python, Ruby, PHP, ColdFusion, C++, Object Pascal, Java, JavaScript, ActionS-cript, Delphi e C#.

A seguir, analisamos as alternativas desta questão:

(A) ERRADA

O conceito de �uxo de dados está relacionado ao paradigma estruturado, que, basicamente,consiste em um modelo de entrada-processamento-saída, e os dados são considerados sepa-radamente das funções que os transformam.

O conceito de herança é utilizado no modelo orientado a objeto. A herança é um meca-nismo que permite criar novas classes a partir de classes já existentes. A classe nova criada,chamada de subclasse, aproveita (herda) todas as características (atributos e operações) daclasse existente, chamada de superclasse.

As subclasses não estão limitadas somente aos atributos e às operações (métodos) herdados

Página 20 de 50www.handbookdeti.com.br

Page 22: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

da superclasse. Elas podem criar novos atributos e métodos a aqueles herdados e podemherdar características de uma ou mais superclasse.

Portanto, a alternativa está errada porque o termo �uxo de dados não é um conceito utili-zado no paradigma de orientação a objeto.

(B) ERRADA

O conceito de entidade externa está relacionado com o Diagrama de Fluxo de Dados damodelagem de sistemas e representa fontes ou destinos de dados de um sistema. Tipica-mente, uma entidade externa pode representar pessoas, sistemas ou empresas.

O conceito de classe é utilizado no modelo orientado a objeto. Uma classe descreve umconjunto de objetos com as mesmas propriedades (atributos), mesmo comportamento (mé-todo), mesmos relacionamentos com outros objetos e a mesma semântica. Os objetos quese comportam da maneira especi�cada pela classe são ditos instâncias dessa classe. Todoobjeto pertence a uma classe, isto é, é instância de uma classe.

Portanto, a alternativa está errada porque o termo entidade externa não é um conceitoespecí�co do paradigma de orientação a objeto.

(C) CORRETA

Tanto o conceito de método quanto de polimor�smo é utilizado especi�camente no mo-delo orientado a objeto. Logo, alternativa correta.

Os métodos ou operações são utilizados para recuperar ou manipular o estado (proprie-dades) de um objeto. O estado de um objeto corresponde ao conjunto de suas propriedadese é representado como atributo. O método é análogo às funções da programação estruturada.

A comunicação entre os objetos ocorrem por meio de troca de mensagens. Uma mensa-gem consiste do nome do método e dos argumentos requeridos. A mensagem é utilizadapara acessar os atributos de um objeto, podendo alterar o estado do objeto.

O polimor�smo está ligado à comunicação entre objetos. Signi�ca que uma mesma mensa-gem enviada a diferentes objetos resulta em um comportamento que dependente da classedo objeto que está recebendo a mensagem. Ou seja, uma mensagem pode ser interpretadade diferentes maneiras, dependendo da classe do objeto receptor e, é o objeto receptor quedetermina a interpretação da mensagem e não o objeto emissor. Então, o polimor�smo écaracterizado como o fato de uma operação poder ser implementada de diferentes maneirasem diferentes classes. O código abaixo mostra um exemplo de polimor�smo.

Note neste exemplo, que apesar do método calcular ter sido chamado duas vezes pelo métodomostrarCalculo, o comportamento do objeto varia de acordo com a classe ao qual o objetopertence (Soma ou Subtração).

Aliado ao conceito de polimor�smo há outro conceito que precisar ser explicado: o de so-brecarga. Uma operação é dita polimór�ca se ela existe com a mesma assinatura (númeroe tipo de argumentos e valor de retorno) e os métodos que a implementam conservam umaúnica semântica. Na sobrecarga, as operações não têm necessariamente a mesma semântica

Página 21 de 50www.handbookdeti.com.br

Page 23: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

e não existe necessidade de preservar a assinatura. Na prática, as operações de sobrecargasão, normalmente, uma coincidência na escolha de nomes das operações.

public abstract class OpMat

{

public abstract double calcular(double x, double y);

}

public class Soma extends OpMat

{

public double calcular(double x, double y)

{

return x+y;

}

}

public class Subtracao extends OpMat

{

public double calcular(double x, double y)

{

return x-y;

}

}

public class Contas

{

public static void mostrarCalculo(OpMat operacao, double x, double y)

{

system.out.println("O resultado é: " + operacao.calcular(x, y);

}

public static void main( String args[] )

{

//Primeiro calculamos uma soma

Contas.mostrarCalculo(new Soma(), 5, 5); //O resultado é: 10

Contas.mostrarCalculo(new Subtracao(), 5, 5); //O resultado é: 0

}

}

(D) ERRADA

O conceito de seleção e processo não são, especi�camente, utilizados na modelo de ori-entação a objetos. Por exemplo, o conceito de seleção pode estar relacionado à instrução deseleção se-então-senão.

Portanto, a alternativa está errada porque os termos seleção e processo não são concei-tos especí�cos do paradigma de orientação a objeto.

(E) ERRADA

O conceito de depósito de dados não está relacionado ao modelo orientado a objetos, e

Página 22 de 50www.handbookdeti.com.br

Page 24: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

o conceito de relacionamento também não está, especi�camente, relacionado modelo orien-tado a objeto. Relacionamento, por exemplo, pode estar relacionado à modelagem de casosde uso e ao modelo de Entidade e Relacionamento. No modelo de orientação a objetos, umaforma de representar os relacionamentos é por meio de associação ou ligações e composiçãoou agregação.

Portanto, a alternativa está errada porque os termos depósito de dados e relacionamentonão são conceitos especí�cos do paradigma de orientação a objeto.

Página 23 de 50www.handbookdeti.com.br

Page 25: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

9. Assuntos relacionados: Engenharia de Software, Orientação a Objeto, Atributos e Clas-ses,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 28

O acesso aos atributos e operações das classes somente por intermédio de serviços (mensa-gens) que conhecem suas interfaces é uma proteção garantida

(a). pela sub-classe.

(b). pela herança.

(c). pelo balanceamento.

(d). pela agregação.

(e). pelo encapsulamento.

Solução:

No modelo orientado a objetos, a comunicação entre os objetos ocorrem por meio de trocade mensagens. Uma mensagem consiste do nome do método (da operação) e dos argumentosrequeridos. A mensagem é utilizada para acessar os atributos de um objeto, podendo alteraro estado desse objeto.A seguir, analisamos as alternativas desta questão:

(A) ERRADA

Uma subclasse herda todas as características (atributos e métodos) de uma superclasse.A subclasse por herdar as características da superclasse não garante a proteção aos atribu-tos e às operações de uma classe. Logo, alternativa, errada.

(B) ERRADA

A herança é um mecanismo que permite criar novas classes a partir de classes já exis-tentes. A classe nova criada, chamada de subclasses, herda todos os atributos e métodosda superclasse. A herança não garante a proteção a atributos e operações de uma classe.Portanto, alternativa errada.

(C) ERRADA

O termo balanceamento não é utilizado no modelo de orientação a objeto. Logo, alter-nativa errada.

(D) ERRADA

As ligações e associações são formas de representar relacionamentos entre objetos e clas-ses, respectivamente. Uma ligação é uma conexão entre objetos, e uma associação descreveum conjunto de ligações com estrutura e semântica comuns. Todas as ligações de uma as-sociação interligam objetos da mesma classe. No exemplo �o empregado José trabalha nodepartamento de Informática�, temos um relacionamento entre o objeto empregado José eo objeto departamento Informática. Neste exemplo, uma ligação é representada entre José

Página 24 de 50www.handbookdeti.com.br

Page 26: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

e Informática e uma associação é representada entre as classes empregado e departamento.

A agregação é um tipo forte de associação, onde um objeto agregado é constituído de vá-rios objetos componentes. Por exemplo, um carro é composto por motor, rodas, carroceria,etc. Um motor, por sua vez, é composto de bloco, válvulas, pistões, etc. A agregação érepresentada pelo relacionamento �todo-parte� ou �uma-parte-de� no qual os objetos, querepresentam os componentes de alguma coisa (classe parte), são associados a um objetorepresentando o todo (classe todo). Na agregação, a classe todo existe independente daclasse parte (e vice-versa), não existe uma �ligação forte� entre as duas classes e os objetosda classe todo são independentes da classe parte.

A agregação não garante proteção aos atributos e às operações de uma classe. Logo, al-ternativa, errada.

(E) CORRETA

O encapsulamento consiste na separação dos aspectos externos de um objeto, acessíveispor outros objetos, de seus detalhes internos de implementação, que �cam ocultos dos de-mais objetos. Este mecanismo é utilizado para impedir o acesso direto aos atributos de umobjeto, disponibilizando métodos que alterem esses atributos.

Com encapsulamento, não há necessidade de saber como as operações encapsuladas estãoimplementadas, mas apenas o que as operações realizam. Se uma operação está encapsulada,apenas o objeto que a de�ne precisa ser modi�cado. A principal motivação para o encap-sulamento é facilitar a reutilização de códigos. A utilização de encapsulamento é possívelgarantir a proteção aos atributos e as operações das classes. Portanto, alternativa correta.

Página 25 de 50www.handbookdeti.com.br

Page 27: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

10. Assuntos relacionados: Engenharia de Software, Orientação a Objeto, Associação entreClasses,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 29

Na associação entre classes, o número de instâncias de uma classe que pode se relacionarcom outra é de�nido

(a). unicamente pela quantidade de objetos contidos na classe-mãe.

(b). nas operações das classes.

(c). nos atributos das classes.

(d). pela multiplicidade.

(e). pela quantidade de características mutuamente herdadas.

Solução:

Relacionamentos são representações estáticas que modelam associações entre objetos. Cadaclasse desempenha um papel na associação, e para cada papel é possível especi�car a mul-tiplicidade (cardinalidade) de uma classe, que indica quantos objetos de uma classe podemestar associados a um objeto de outra classe. Em geral, a multiplicidade indica a fronteirainferior e superior para os objetos participantes de um relacionamento.

Por exemplo, em uma empresa, um empregado está lotado em um departamento e, op-cionalmente, o empregado pode ser chefe do departamento. Por sua vez, um departamentopode ter vários empregados lotados, mas apenas um chefe. No relacionamento empregadoe departamento, um empregado tem um e somente um departamento. No relacionamentodepartamento e chefe, um departamento possui um e somente um chefe.

Neste exemplo, mostramos o tipo de multiplicidade um para um, mas existem outros, como:zero ou um, um para muitos, zero ou muitos, muitos para muitos, etc.

A seguir, analisamos as alternativas desta questão:

(A) ERRADA

Os objetos são instâncias de uma classe e não estão contidos na classe, e também nãotem nenhuma relação com a multiplicidade de relacionamento de uma classe. Logo, alter-nativa errada.

(B) ERRADA

As operações de uma classe são utilizadas para recuperar ou manipular o estado (proprieda-des) de um objeto, e não para especi�car relacionamento entre classes. Portanto, alternativaerrada.

(C) ERRADA

Os atributos de�nem as propriedades de um objeto, e não são utilizados para especi�car

Página 26 de 50www.handbookdeti.com.br

Page 28: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

relacionamento entre classes. Logo, alternativa errada.

(D) CORRETA

O número de instâncias que pode se relacionar com outra é de�nido pela multiplicidadeou cardinalidade, conforme explicado anteriormente. Portanto, alternativa correta.

(E) ERRADA

A herança é um mecanismo para modelar similaridades entre classes, e por meio dela, épossível tornar explícitos atributos e serviços comuns em uma hierarquia de classes. A he-rança não é utilizada para especi�car o número de instâncias em um relacionamento entreclasses. Logo, alternativa errada.

Página 27 de 50www.handbookdeti.com.br

Page 29: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

11. Assuntos relacionados: Engenharia de Software, Orientação a Objeto, Relacionamentosentre Classes,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 30

São dois tipos de relacionamento todo-parte:

(a). agregação e composição.

(b). generalização e composição.

(c). generalização e especialização.

(d). composição e dependência.

(e). especialização e agregação.

Solução:

Vários tipos de relacionamento têm sido propostos para estruturar classes e objetos na orien-tação a objeto, entre eles: associação, composição, agregação, generalização e especialização.

As ligações e associações são formas de representar relacionamentos entre objetos e clas-ses, respectivamente. Uma ligação é uma conexão entre objetos, e uma associação descreveum conjunto de ligações com estrutura e semântica comuns. Todas as ligações de uma as-sociação interligam objetos de mesma classe. No exemplo �o empregado José trabalha nodepartamento de Informática�, temos um relacionamento entre o objeto empregado José eo objeto departamento Informática. Neste exemplo, uma ligação é representada entre Josée Informática e uma associação é representada entre as classes empregado e departamento.

A composição e a agregação são um tipo forte de associação, onde um objeto agregadoé constituído de vários objetos componentes. Por exemplo, um carro é composto por mo-tor, rodas, carroceria, etc. Um motor, por sua vez, é composto de bloco, válvulas, pistões,etc. A agregação e a composição são representadas pelo relacionamento �todo-parte� ou�uma-parte-de� no qual os objetos, que representam os componentes de alguma coisa (classeparte), são associados a um objeto representando o todo (classe todo).

Na agregação, a classe todo existe independente da classe parte (e vice-versa), não existeuma �ligação forte� entre as duas classes e os objetos da classe todo são independentes daclasse parte. Por outro lado, na composição, existe uma �ligação forte� entre a classe todoe a classe parte e os objetos da classe parte são dependentes da classe todo. Um exemplode agregação é a relação entre a classe todo Apartamento e a classe parte Garagem. Umexemplo de composição é a relação entre a classe todo Edifício e a classe parte Apartamento.

Muitas vezes, um conceito geral pode ser especializado, adicionando novas características.Por exemplo, no conceito de estudantes, há características que são intrínsecas a quaisquerestudantes, e é possível especializar este conceito para mostrar as especi�cidades de subtiposde estudantes, tais como estudantes do 1o grau, do 2o grau, de graduação e pós-graduação.De maneira inversa, é possível extrair um conjunto de conceitos, características comuns que,quando generalizadas, formam um conceito geral. Por exemplo, ao avaliarmos o conceitoque temos de carros, motos, caminhões e ônibus, podemos notar que esses possuem carac-terísticas comuns que podem ser generalizadas em classe mais geral. O primeiro exemplo é

Página 28 de 50www.handbookdeti.com.br

Page 30: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

de especialização e o segundo exemplo é de generalização.

A generalização permite de�nir, a partir de um conjunto de classes, uma classe mais geralcontendo todas as características comuns entre esse conjunto de classes. A especialização éuma operação inversa, isto é, a partir de uma classe geral, a especialização de�ni um númerode subclasses, explicitando as diferenças entre as novas subclasses. Com a especialização ea generalização é possível capturar similaridades entre classes, dispondo-as em hierarquiasde classes.

De acordo com o explicado anteriormente, os tipos de relacionamento todo-parte são aagregação e a composição. Portanto, alternativa correta é a (A).

Página 29 de 50www.handbookdeti.com.br

Page 31: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

12. Assuntos relacionados: Engenharia de Software, Orientação a Objeto, Herança,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 31

Em um diagrama de classes, considere que Seguridade e Imóveis herdam características deAtivos. A classe ItemSuportado é super-classe de Imóveis mas não de Ativos. Nesse cenário,o relacionamento geral em que se envolve Imóveis caracteriza-se por

(a). ocultação.

(b). herança múltipla.

(c). dependência.

(d). polimor�smo.

(e). composição.

Solução:

A herança é um mecanismo que permite criar novas classes a partir de classes já existentes,aproveitando-se das características existentes na classe a ser estendida. Com a herança épossível criar classes derivadas (subclasses) a partir de classes bases (superclasses).

As subclasses herdam todas as características de suas superclasses, como suas variáveis(estado) e seus métodos (comportamento). Entretanto, as subclasses não estão limitadasao comportamento herdado de sua superclasse. As subclasses podem adicionar variáveis emétodos a aqueles herdados.

Quando uma subclasse herda características de uma única superclasse, tem-se herança sim-ples. Quando uma classe é de�nida a partir de duas ou mais superclasses, tem-se herançamúltipla. É importante observar, no entanto, que na herança múltipla podem ocorrer doisproblemas: colisão de nomes herdados a partir de diferentes superclasses e a possibilidadede herança repetida. A colisão quando uma classe C herda de duas classes A e B, sendo queA possui um atributo de mesmo nome que na classe B. Assim, como será a característicadesse atributo na classe C. A herança repetida ocorre quando a classe D herda das classesB e C, que por sua vez herdam da classe, isto é, a classe D herda, indiretamente, duas vezesda classe A.

No enunciado desta questão, temos um exemplo de hierarquia entre classes. A Figura 1ilustra a herança das classes Seguridade, Imóveis, Ativos e ItemSuportado.

Figura 1: herança entre as classes.

Página 30 de 50www.handbookdeti.com.br

Page 32: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

A classe Ativos é superclasse das classes Seguridade e Imóveis, isto é, Seguridade e Imó-veis são subclasses de Ativos. A classe Imóveis também é subclasse da superclasse Item-Suportado. A subclasse Imóveis herda características das classes Ativos e ItemSegurado,caracterizando uma herança múltipla. Portanto, a alternativa correta é a (B).

Página 31 de 50www.handbookdeti.com.br

Page 33: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

13. Assuntos relacionados: Programação, Orientação a Objeto, Tipos de Métodos,Banca: ESAFInstituição: Controladoria-Geral da União (CGU)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 21

Com relação aos conceitos de programação orientada a objetos, é correto a�rmar que

(a). métodos abstratos são aqueles que não devem ser rede�nidos em classes derivadas,devem ser herdados tal como foram de�nidos.

(b). métodos estáticos são aqueles que, ao serem executados, não acessam atributos deinstância da classe.

(c). métodos �nais, também conhecidos como �nalizadores ou destrutores, são chama-dos na destruição de uma instância.

(d). métodos construtores são métodos chamados sobre um objeto quando ele é criado.Em Java, os construtores têm o mesmo nome da classe da qual são membros e otipo retornado por eles é especi�cado na sua de�nição.

(e). métodos de classe são aqueles que executam operações que afetam objetos indivi-duais da classe.

Solução:

Criado por Alan Kay (autor da linguagem de programação Smalltalk), o termo Programa-ção Orientada a Objetos diz respeito a um paradigma de análise, projeto e programação desoftware baseado na interação entre diversas unidades chamadas de objetos. A ideia funda-mental é simular o mundo real através de programas de computador. Os objetos interagementre si através do envio de mensagens, sendo que o programador deve especi�car quaissão as mensagens que cada objeto pode receber e que ações realizar ao receber mensagensespecí�cas.

Os objetos, instâncias de classes, possuem métodos cujos acessos podem ser (re)de�nidospor modi�cadores de acesso. Em Java, esses modi�cadores podem ser private, protected,public e static.

Quando aplicado a um método, o modi�cador de acesso private indica que ele só podeser acessado de dentro da classe que o criou, característica chamada de encapsulamento.Assim, uma classe que herde de uma superclasse com métodos �privados� não conseguiráutilizá-los diretamente. O modi�cador protected indica que o método apenas poderá seracessado dentro do pacote em que estiver contida sua classe. Já o modi�cador public indicaque o método pode ser acessado em qualquer lugar e a qualquer momento da execução doprograma. Por �m, o modi�cador static indica que o método �estático� deve ser acessadodiretamente na classe e não em suas instâncias, ou seja, ele de�ne métodos de classe em vezde métodos de instância.

Em conjunto com os modi�cadores de acesso, podem ser utilizados os modi�cadores abstracte �nal. O primeiro, serve para declarar métodos abstratos, isto é, métodos que deverão serimplementados nas subclasses. O segundo, indica que o método não pode ser alterado nodecorrer do processamento (constante).

Página 32 de 50www.handbookdeti.com.br

Page 34: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Os métodos construtores são métodos especiais executados no momento da criação de umobjeto. Não possuindo valor de retorno, representam uma oportunidade de inicializar dadosde forma organizada e sempre têm o nome da classe à qual pertencem. Paralelamente, osmétodos destrutores têm o objetivo de �destruir� o objeto e devolver ao sistema a memóriaalocada.

Relativamente à questão, o item a) apresenta uma a�rmação contrária à teoria, já que osmétodos abstratos devem ser de�nidos nas classes derivadas através de herança. O item c)busca confundir o candidato ao associar os termos destrutores e �nalizadores ao modi�cador�nal, insinuando que este último tenha a função de �nalizar (destruir) a instância de umaclasse. O item d) expõe uma teoria parcialmente correta sobre construtores, exceto pelo fatode a�rmar que tais métodos possuem valor de retorno. O item e) inverte as de�nições demétodo de classe e método de instância, a�rmando que o primeiro possui o comportamentodo segundo. O item b) faz uma a�rmativa que está de acordo com a teoria exposta, hajavista que os métodos estáticos não acessam atributos de instâncias (objetos) da classe, massim atributos da classe, sendo a resposta para a questão.

Página 33 de 50www.handbookdeti.com.br

Page 35: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

14. Assuntos relacionados: Programação, Orientação a Objeto, Encapsulamento, Herança,Polimor�smo, Abstração,Banca: ESAFInstituição: Controladoria-Geral da União (CGU)Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento deSistemas de InformaçãoAno: 2008Questão: 22

A programação orientada a objetos é baseada em diversos conceitos, tais como encapsula-mento, herança, polimor�smo e abstração. Com relação a esses conceitos, é correto a�rmarque

(a). o conceito de encapsulamento é alcançado por meio da de�nição da visibilidadepública aos atributos e métodos.

(b). herança é um mecanismo que permite que uma classe herde todo o comportamentoe os atributos de outra classe. Em Java, pode-se implementar tanto a herançaúnica quanto a herança múltipla.

(c). interface pode ser considerada como a forma com que um objeto se apresenta paraoutros, no que diz respeito aos seus atributos e métodos. Em Java, uma mesmaclasse não pode implementar mais de uma interface.

(d). polimor�smo é o uso de um mesmo nome para identi�car diferentes implemen-tações dos métodos. Seu uso é comum na de�nição de construtores, em que osmesmos podem ser implementados em diferentes versões para as diferentes formasde se instanciar a classe.

(e). para uma classe ser considerada abstrata, todos os seus métodos devem ser abs-tratos. Em Java, para se de�nir uma classe abstrata deve-se utilizar a palavrachave �abstract� no início de sua declaração.

Solução:

(A) INCORRETA

O encapsulamento permite esconder os detalhes funcionais de uma classe a objetos quepodem enviar mensagens para ela. E, em linguagens de programação, pode signi�car duascoisas distintas:

• Um mecanismo de uma linguagem de programação para restrição de acesso aos com-ponentes de um objeto;

• Uma construção da linguagem que facilita o agrupamento de dados com métodos queoperam naqueles dados.

Como forma de restrição de acesso, seu propósito é o de manter a integridade de um objetopela prevenção de que usuários possam alterar seu estado interno, pois existe a possibilidadedessa modi�cação levar o objeto a um estado inválido.

No contexto da linguagem Java, há três palavras-chave explícitas para implementação darestrição de acesso (os especi�cadores de acesso): public, private e protected.

Quando a visibilidade pública (public) é de�nida para algum elemento, isso signi�ca que

Página 34 de 50www.handbookdeti.com.br

Page 36: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

qualquer outro objeto de outra classe é capaz de acessar esse elemento. Já quando a palavra-chave private é usada, é de�nido que apenas o implementador da classe (e a própria classe)possui acesso aos membros privados. Qualquer cliente que tentar acessar um membro pri-vado receberá um erro de compilação. A palavra-chave protected, por sua vez, funcionade maneira semelhante à private, exceto que qualquer classe que herde da classe originaltambém terá acesso aos membros protegidos.

Portanto, apesar da de�nição da visibilidade de membros de uma classe fazer parte daimplementação do encapsulamento, o uso de apenas a visibilidade pública não garante en-capsulamento.

(B) INCORRETA

É verdade que a herança permite que uma classe herde o comportamento e os atributosde outra classe. No entanto, não é verdade que com ela é possível herdar todos os com-portamentos e atributos, pois, como discutido na alternativa anterior, a visibilidade privadaimpede que subclasses herdem quaisquer características por ela afetadas. Outra informaçãoimportante é que não existe forma direta de implementar herança múltipla em Java. Umaforma de contornar essa restrição, no entanto, é através do uso de interfaces.

(C) INCORRETA

A parte inicial da alternativa, �interface pode ser considerada como a forma com que umobjeto se apresenta para outros, no que diz respeito aos seus atributos e métodos�, estácorreta. Outras formas de compreender uma interface é como a especi�cação de um proto-colo para comunicação entre classes ou como um contrato de comportamento entre as classes.

Em Java, quando uma interface é de�nida, a palavra-chave interface deve ser usada. Jáquando ela é implementada, a classe que a implementa deve usar a palavra-chave imple-

ments. Como uma interface não possui implementação, apenas especi�cação, não há nadaque impeça a combinação de interfaces. Isso, aliás, permite dizer �uma coisa x é um a, um be um c�, através da implementação de diversas interfaces. Como no exemplo abaixo (retiradodo capítulo 8 do livro Thinking in Java, revisão 4.0):

interface CanFight {

void fight();

}

interface CanSwim {

void swim();

}

interface CanFly {

void fly();

}

class ActionCharacter {

public void fight() {}

}

Página 35 de 50www.handbookdeti.com.br

Page 37: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

class Hero extends ActionCharacter

implements CanFight, CanSwim, CanFly {

public void swim() {}

public void fly() {}

}

public class Adventure {

public static void t(CanFight x) { x.fight(); }

public static void u(CanSwim x) { x.swim(); }

public static void v(CanFly x) { x.fly(); }

public static void w(ActionCharacter x) { x.fight(); }

public static void main(String[] args) {

Hero h = new Hero();

t(h); // O trata como CanFight

u(h); // O trata como CanSwim

v(h); // O trata como CanFly

w(h); // O trata como ActionCharacter

}

}

(D) CORRETA

A de�nição está correta. Uma vantagem do polimor�smo é que ele permite outra formade separação entre interface e implementação. Pois desacopla o que do como.

(E) INCORRETA

Em Java, para uma classe ser considerada abstrata é necessário que um ou mais méto-dos dessa classe seja de�nido como abstract. Além disso, é necessário que a própria classeseja de�nida como abstract, pois em caso contrário o compilador não a compilará.

Ainda em classes abstratas, quando uma subclasse de uma classe abstrata é de�nida, senão houver de�nição dos métodos abstratos da classe pai, a subclasse também será conside-rada abstrata e, portanto, não poderá ser instanciada.

Página 36 de 50www.handbookdeti.com.br

Page 38: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

15. Assuntos relacionados: Orientação a Objeto, Atributos e Classes,Banca: ESAFInstituição: Receita Federal (RF)Cargo: Técnico da Receita Federal - Tecnologia da InformaçãoAno: 2006Questão: 24

Analise as seguintes a�rmações relacionadas à Programação Orientada a Objetos:

I. Em um Programa Orientado a Objetos as instâncias de uma classe armazenam tiposdiferentes de informações e apresentam comportamentos distintos.

II. Em uma Aplicação Orientada a Objetos podem existir múltiplas instâncias de umamesma classe.

III. Em Programação Orientada a Objetos deve existir um e somente um objeto de umamesma classe.

IV. Os serviços que podem ser solicitados a um objeto são de�nidos pelos métodos.

Indique a opção que contenha todas as a�rmações verdadeiras.

(a). II e IV

(b). II e III

(c). III e IV

(d). I e III

(e). I e II

Solução:

Para responder essa questão, examinaremos cada uma das a�rmações, concluindo se sãoverdadeiras ou faltas para, então, apresentar a alternativa correta.

Como conceitos como classe e objeto são discutidos nessa questão, convém de�ni-los. �Umaclasse é uma 'planta' de um objeto. Quando um objeto é instanciado, uma classe é usadacomo base descritiva do objeto a ser construído.� As classes podem ser compreendidas comomodelos para objetos e, portanto, uma classe é usada para criar um ou mais objetos. Essaplanta descreve o estado e comportamento que todos os objetos da classe compartilham.Fonte: The object-oriented thought process, Matt A. Weisfeld

Um objeto é uma instância especí�ca de uma classe. Por exemplo, uma bicicleta especí-�ca é um objeto. No entanto, foi necessário usar uma �planta� para construí-la: uma classe.A Figura 2 abaixo exempli�ca o relacionamento entre classes e objetos, em que um modelode biscoito (classe) é usado para cortar uma massa e gerar biscoitos (objetos).

Página 37 de 50www.handbookdeti.com.br

Page 39: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Figura 2: exemplo de relacionamento entre classes e objetos.

A�rmação I

Sendo uma classe uma planta ou modelo a ser seguido, é natural que objetos de uma mesmaclasse possuam características semelhantes e, portanto, essa a�rmativa é incorreta. Comoexemplo, considere o seguinte código Python que de�ne a classe �Person�:

class Person:

def __init__(self, name, address):

self.name = name

self.address = address

def __repr__(self):

return "Hi, I am %s and live at %s." % (self.name, self.address)

Ao instanciar dois objetos, por exemplo, yakko e root com o código:

yakko = Person("Yakko", "WB Tower")

root = Person("Charlie Root", "UNIX")

Vemos que eles exibem comportamento semelhante ao solicitarmos que seja impressa suarepresentação:

>>> print yakko

Hi, I am Yacko and live at WB Tower.

>>> print root

Hi, I am Charlie Root and live at UNIX.

Além disso, ao listarmos o conteúdo desses objetos, vemos que eles possuem os mesmosatributos:

Página 38 de 50www.handbookdeti.com.br

Page 40: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

>>> print dir(yakko)

['__doc__', '__init__', '__module__', '__repr__', 'address', 'name']

>>> print dir(root)

['__doc__', '__init__', '__module__', '__repr__', 'address', 'name']

Con�rmando que essa a�rmação é incorreta.

A�rmação II

Como exempli�cado na discussão da a�rmação anterior e na introdução desta questão, vi-mos que uma mesma classe, �Person�, possuía duas instâncias, �yakko� e �root�, con�rmandoque é possível haver múltiplas instâncias de uma mesma classe. Portanto, essa a�rmação éverdadeira.

A�rmação III

Essa a�rmação diz o oposto da anterior (II). Como a a�rmação II está correta, esta está,consequentemente, incorreta.

A�rmação IV

Em orientação a objetos, um método é uma função associada a uma classe ou a um ob-jeto. Em Java, os métodos são criados como parte de uma classe e podem ser chamadossomente por objetos e o objeto deve ser capaz de realizar a chamada ao método. Os métodosdeterminam as mensagens que um objeto pode receber, ou os serviços providos pelo objeto.[1] Pela descrição anterior, vemos que essa a�rmativa está correta.

[1] Thinking in Java, Bruce Eckel.

Discussão

Como vimos, as a�rmações II e IV estão corretas e, portanto, a alternativa a é a queresponde corretamente a esta questão. Um breve comentário adicional é que, ao perceberque a a�rmativa II está correta e a III é seu oposto, é possível concluir que a alternativa a é aque responde corretamente, mesmo sem saber se a a�rmação IV está correta. É importantesempre �car atento a esse tipo de situação para explorá-la sempre que possível.

Página 39 de 50www.handbookdeti.com.br

Page 41: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

16. Assuntos relacionados: Programação, Orientação a Objeto,Banca: ESAFInstituição: Receita Federal (RF)Cargo: Técnico da Receita Federal - Tecnologia da InformaçãoAno: 2006Questão: 25

Na Programação Orientada a Objetos podem-se de�nir as visibilidades dos métodos e atri-butos. Quanto a essa característica é correto a�rmar que

(a). o acesso aos atributos e aos métodos privados só pode ser feito a partir dos métodosmembros da classe.

(b). os métodos protegidos podem ser acessados a partir dos métodos de qualquerclasse, desde que instanciada na mesma aplicação.

(c). os métodos públicos e os atributos protegidos só podem ser acessados a partir dosmétodos da própria classe ou de classes derivadas.

(d). os métodos privados e os atributos protegidos podem ser acessados a partir dosmétodos de qualquer classe.

(e). o acesso aos atributos privados e aos métodos públicos só pode ser feito a partirdos métodos membros da classe.

Solução:

Na orientação a objetos, existe o conceito de abstração, que é a habilidade de extrair somenteo que é necessário em um contexto especí�co. Isso simpli�ca a programação, pois diminuia complexidade. Mesmo assim, quando um programa cresce demais, alguns problemas co-meçam a surgir, principalmente, em relação à clareza e à manutenção que deve ser dada aocódigo.

O conceito de encapsulamento está diretamente ligado com o conceito de abstração. Numdado objeto, somente interessa ao cliente, as funções que ele executa e não a implementação.A interface descreve as operações que o objeto pode executar e de�ne o que é acessível aosoutros objetos. Já outras informações, como a implementação, �ca encapsulada e só é visívelao próprio objeto.

A visibilidade de métodos ou atributos é utilizada na de�nição da interface e especi�caa maneira pela qual os atributos e os métodos da classe podem ser acessados. Na linguagemde programação mais famosa da atualidade, Java, os atributos ou métodos podem ser públi-cos, privados ou protegidos. Os modi�cadores de acesso implementam a visibilidade no Java.

Os atributos públicos (public), além de poderem ser acessados pelos métodos da própriaclasse, os atributos públicos podem ser acessados por métodos de outras classes. Os atribu-tos são uma má prática em orientação a objetos, pois violam o conceito de encapsulamento.Só devem ser utilizados em casos excepcionais.

Os atributos privados (private) só podem ser acessados por métodos da classe. É umaboa prática que a maioria dos atributos seja privada.

Os atributos protegidos (protected) podem ser acessados por métodos da classe emque foram declarados e, além disso, em subclasses desta classe e, ainda, em classes que

Página 40 de 50www.handbookdeti.com.br

Page 42: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

fazem parte do mesmo pacote (package) da classe onde houve a declaração do atributo pro-tegido.

Os métodos públicos podem ser chamados de qualquer classe. Os métodos públicos sãoaqueles que realmente de�nem a interface da classe para que ela possa ser acessada poroutros objetos.

Os métodos privados só podem ser acessados a partir de métodos declarados na classe esão úteis quando é necessário de�nir trechos de código que precisam ser executados a partirde mais de um método da classe, sem que seja necessário fornecê-los para outras classes.

Os métodos protegidos podem ser invocados por métodos de classe que façam partedo pacote (package). Os pacotes são uma forma de organizar diversas classes em gruposmenores dentro do projeto.

Dados esses conceitos básicos, vamos analisar as alternativas da questão.

a) CORRETA. Tanto atributos quanto métodos privados só podem ser acessados pormétodos membros da própria classe em que foram declarados.

b) ERRADA. Somente métodos pertencentes ao mesmo pacote podem acessar os méto-dos protegidos, não importando se forem instanciados na mesma aplicação ou não.

c) ERRADA. Pois os métodos públicos podem ser acessados a partir do método dequalquer classe. Soma-se a esse erro, o fato dos atributos protegidos também poderemser acessados por métodos que façam parte do mesmo pacote, mas não somente naclasse, e nas suas derivadas, em que forem declarados.

d) ERRADA. Somente métodos e atributos públicos podem ser acessados a partir demétodos de qualquer classe.

e) ERRADA. Os métodos públicos podem ser acessados a partir dos métodos de qualquerclasse, essa é a falha da alternativa.

A alternativa a ser marcada é a alternativa (A).

Página 41 de 50www.handbookdeti.com.br

Page 43: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

17. Assuntos relacionados: Orientação a Objeto, Polimor�smo,Banca: ESAFInstituição: Superintendência de Seguros Privados (SUSEP)Cargo: Analista Técnico da SUSEP - Tecnologia da InformaçãoAno: 2010Questão: 23

Polimor�smo é a

(a). utilização múltipla de programas em análise orientada a objetos.

(b). habilidade de uma única operação ou nome de atributo ser de�nido em mais deuma classe e assumir diferentes implementações em cada uma dessas classes.

(c). habilidade de um programador em desenvolver aplicações e caracterizar objetoscom múltiplos atributos.

(d). utilização de uma classe com diferentes formatos em programas com de�nição deobjetos e atributos.

(e). habilidade de uma única variável ser utilizada em diferentes programas orientadosa objetos.

Solução:

O paradigma de Programação Orientada a Objeto (POO) surgiu no início da década de1970, com o advento da linguagem de programação Simula-68, e foi popularizado pela lin-guagem SmallTalk, desenvolvida nos laboratórios da Xerox. Fundamentalmente, o objetivoda metodologia de desenvolvimento orientado a objeto é propiciar reutilização de códigoe modularidade de escrita. Apesar de a escrita de código continuar sendo procedural, osconceitos de estruturação e de modelo computacional mudam drasticamente. Em vez debasear-se no modelo computacional tradicional (processador + memória + dispositivos deI/O), a Orientação a Objetos (OO) introduz um conceito-chave revolucionário e mais pró-ximo da realidade: o objeto.

O objeto é um bloco de dados privado, cujo acesso ao conjunto de suas funcionalidadesestá regrado por condições especí�cas. Pode ser entendido como uma unidade dinâmica,composta por um estado interno privativo (estrutura de dados) e um comportamento (con-junto de operações). Filoso�camente, é tido como �um processador com memória própriae independente de outros objetos�. Desta forma, um objeto possui atributos (descritoresde suas características) e comportamentos (métodos que permitem, dentre outras ações, oacesso a seus atributos). Tecnicamente, o objeto é a instância de uma classe.

Quatro conceitos básicos envolvem a de�nição de uma linguagem OO: abstração, encap-sulamento, herança e polimor�smo. A abstração permite que as características essenciaisde objetos sejam especi�cadas para determinada aplicação, �abstraindo-se� os detalhes des-necessários. Na POO, as implementações tanto dos atributos quanto dos métodos de umobjeto são ocultadas dos demais objetos, através do encapsulamento de tais funcionali-dades. Apenas as interfaces de acesso a essas características são disponibilizadas. Com aherança, o reaproveitamento de código torna-se prático e efetivo, na medida em que sub-classes podem herdar características de superclasses. Além de evitar duplicação de código,a herança proporciona a extensibilidade de código, isto é, a capacidade de adaptar códigoherdado.

Página 42 de 50www.handbookdeti.com.br

Page 44: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

O polimor�smo é um conceito estreitamente relacionado à herança e diz respeito exata-mente a essa possibilidade de reaproveitamento e adaptação de código. Pelo polimor�smo, épossível a uma classe herdar atributos e operações de uma superclasse, adaptando a imple-mentação de tais características para as suas necessidades especí�cas. Efetivamente, apenaso nome da operação ou do atributo é aproveitado, pois o código de sua implementação éreescrito na subclasse.

A opção b) re�ete adequadamente o conceito de �polimor�smo�, sendo a resposta para aquestão apresentada.

Página 43 de 50www.handbookdeti.com.br

Page 45: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

18. Assuntos relacionados: Programação, Orientação a Objeto, Análise Orientada a Objetos,

Banca: ESAFInstituição: Superintendência de Seguros Privados (SUSEP)Cargo: Analista Técnico da SUSEP - Tecnologia da InformaçãoAno: 2010Questão: 26

São características usadas para seleção de objetos a serem considerados na Análise Orientadaa Objetos:

(a). informação retida, múltiplos atributos, requisitos essenciais.

(b). informação produzida, múltiplos atributos, requisitos periféricos.

(c). informações essenciais, múltiplos processos, requisitos essenciais.

(d). informação retida, múltiplos referenciamentos, requisitos top-down.

(e). informação referenciada, atributos numéricos, requisitos essenciais.

Solução:

A Análise Orientada a Objetos consiste na de�nição das classes que representam oproblema a ser resolvido. Também deve ser de�nido a maneira pela qual as classes se rela-cionam umas com as outras, o funcionamento interno dos objetos (atributos e operações) eos mecanismo de comunicação (mensagens). As características que descrevem um sistemaou produto, devem ser tomadas como base para a de�nição das características estáticas edinâmicas dessas classes.

Primeiramente, os casos de uso devem ser criados. Os casos de uso descrevem os cenáriosde como atores (pessoas, agentes, outros sistemas) interagem com o sistema a ser construído.

A modelagem Classe-Responsabilidade-Colaboração (CRC) transforma as informações con-tidas nos casos de uso em classes e suas colaborações com outras classes. Uma linguagemuni�cada de modelagem é utilizada para descrever as características estáticas e dinâmicasdas classes.

Basicamente, as tarefas a serem realizadas pela Análise Orientada a Objetos são:

• Identi�cação de Classes;

• Especi�cação de Hierarquias de Generalização/Especialização;

• Identi�cação de Associações e Atributos;

• Modelagem do Comportamento;

• De�nição das Operações.

Entre os principais métodos de Análise Orientada a Objetos, nos quais não entraremos emdetalhes, podemos citar:

• Método de Booch;

• OMT;

• OOSE (Jacobson);

• Método de Coad & Yourdon;

Página 44 de 50www.handbookdeti.com.br

Page 46: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

• Rumbaugh;

• Wirfs-Brock.

Houveram várias tentativas em se de�nir um método padrão que acabaram sendo di�cul-tadas devido, principalmente, à di�culdade em se de�nir um processo padrão de análise eprojeto. Entretanto, um passo importante já foi dado: a criação da Linguagem de Mo-delagem Uni�cada (UML), que é uma notação padrão que pode ser utilizada em diversosmétodos de modelagem.

Dada a especi�cação de requisitos e os diagramas de casos de uso e suas descrições, amodelagem do sistema pode ser iniciada. O processo mais importante em um método ori-entado a objetos é a descoberta de quais classes devem ser incluídas no modelo.

A expressão inicial do sistema é representada pelas classes de um modelo. O passo ini-cial na identi�cação de classes é a revisão e discussão da especi�cação de requisitos. Comoestratégia, a especi�cação de requisitos pode ser lida procurando por substantivos.

Nem todas as classes devem ser incluídas no modelo. Mo caso da identi�cação de clas-ses, alguns critérios são essenciais para a inclusão das mesmas durante a Análise Orientadaa Objetos:

• informação retida: os atributos são relevantes, ou seja, precisam ser lembrados para ofuncionamento do sistema;

• múltiplos atributos: se existe somente um atributo no objeto, provavelmente, o candi-dato é atributo de outra classe;

• requisitos essenciais: a classe candidata é válida independentemente da tecnologia uti-lizada;

• serviços necessários: o objeto precisa exibir algum comportamento (processamento);

• vários objetos na classe: deve ser possível identi�car vários objetos para a classe can-didata;

• atributos comuns: os atributos aplicam-se a todos os objetos da classe;

• serviços comuns: os serviços aplicam-se a todos os objetos da classe;

• resultados não derivados: a classe candidata não pode ser derivada de atributos eserviços de outras classes.

Esse é somente o começo de uma Análise Orientada a Objetos e, no momento, não vamosnos estender às etapas seguintes, pois a questão envolve especi�camente a Identi�cação deClasses (ou Objetos).

De acordo com os três primeiros itens da lista acima, concluímos que a alternativa cor-reta é a letra (A).

Página 45 de 50www.handbookdeti.com.br

Page 47: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

19. Assuntos relacionados: Programação, Programação Estruturada,Banca: ESAFInstituição: Agência Nacional de Águas (ANA)Cargo: Analista Administrativo - Tecnologia da Informação e Comunicação / Desenvolvi-mento de Sistemas e Administração de Banco de DadosAno: 2009Questão: 26

Na programação estruturada, são necessários apenas três blocos de formas de controle paraimplementar algoritmos. São eles:

(a). seleção, repetição e aninhamento.

(b). empilhamento, aninhamento e operação.

(c). sequência, aninhamento e seleção.

(d). sequência, seleção e repetição.

(e). função, operação e programa.

Solução:

Um programa ou um software é constituído de um conjunto de instruções (operação sobreum determinado dado) apresentadas de forma sequencial, tais instruções estabelecem ocomportamento que será executado e a ordem que as regras devem ser aplicadas. Paratanto, os programas utilizam blocos elementares (estruturas) de código que se interligamatravés de três mecanismos básicos de programação:

• Estrutura de sequência. Normalmente, instruções em um programa são executadasuma após a outra na ordem em que são escritas. Esse processo é chamado de execu-ção sequencial. Para alterar esse �uxo de execução sequência o programa utiliza oselementos seleção e repetição;

• Estrutura de seleção. Os programas utilizam instruções de seleção para escolheros �uxos de execução de acordo com condições de�nidas na estrutura de seleção. Asestruturas de seleção podem ser de dois tipos: simples e compostas. As estruturassimples apenas selecionam se um determinado trecho de instruções será executadoou não. Já as estruturas composta de seleção, interligam várias estruturas simplesformando uma estrutura mais complexa, esta forma de organização da estrutura deseleção composta é chamada de aninhamento;

• Estrutura de repetição. Programas de computador em muitos casos precisão exe-cutar uma determinada instrução ou mesmo um determinado conjunto de instruçõesrepetidas vez, para isso, utilizam a estrutura de repetição. A quantidade de vezes queas instruções são repetidas é determinada pela estrutura de repetição.

Além das estruturas elementares que constituem um programa estruturado existe um con-ceito chamado de modularização. A modularização de um programa estruturado é a divisãode trechos de código que executam ações para um �m especí�co, para esse agrupamentode trechos de código se dá o nome de função e/ou em alguns casos procedimento. Imagineuma função como uma caixa preta de códigos que recebe entradas (parâmetros), executaos cálculos e/ou ações e então retorna o resultado. Este conceito não forma um bloco decontrole apesar de ser vastamente usado na programação estruturada.

Como pode ser observado, os três blocos de formas de controle necessários para a pro-gramação estruturada são a estrutura sequência, seleção e repetição fazendo a assertiva Dcomo correta.

Página 46 de 50www.handbookdeti.com.br

Page 48: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

20. Assuntos relacionados: Estrutura de Controle, Pilha, Fila,Banca: FCCInstituição: TRT 2a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 26

Uma ou mais instruções são executadas ou não, dependendo do resultado do teste efetuado.Esta a�rmação de�ne uma estrutura de controle de programação do tipo

(a). pilha.

(b). seleção.

(c). �la.

(d). repetição.

(e). seqüência.

Solução:

Estrutura de controle é um conceito relacionado a programação. Como o seu próprio nomesugere, esse tipo de estrutura controla a ordem de execução das instruções de um determi-nado código-fonte. Os nomes das estruturas de controle geralmente diferem entre as diversaslinguagens de programação existentes, mas, conceitualmente, não há muitas diferenças. Trêsdos principais tipos de estrutura de controle são:

• estrutura de continuação: pode ser uma estrutura em que o código é executadosequencialmente, de cima para baixo. As linguagens procedurais por padrão seguem aestrutura sequencial, o que não acontece com as linguagens do paradigma lógico (Prolog,por exemplo). Pode ser também uma estrutura que de�na um salto incondicional parauma determinada instrução do código (um jump, por exemplo);

• estrutura de seleção: baseada em uma condição, essa estrutura diz se um bloco decódigo será executado ou não. Dois exemplos desse tipo de estrutura são: (1) estruturase-então(-senão) (if-then-else na linguagem C, por exemplo) e (2) estrutura de seleçãode múltipla escolha (switch-case na linguagem C, por exemplo);

• estrutura de repetição: enquanto uma condição for satisfeita, um bloco de códigoserá executado. Três exemplos práticos e válidos em diversas linguagens são: while-do,do-while e o for.

Com o que já foi exposto, não é difícil concluir que é a alternativa B a correta.

As alternativas D (repetição) e E (sequência) realmente se referem a tipos de estruturade controle. Contudo, como explicado nos itens acima, nem o primeiro nem o segundo tipopode ser de�nido pela sentença que dá início ao enunciado.

Já as alternativas A e C nem se referem a tipos de estrutura de controle. Pilha e �lasão dois tipos de estrutura abstrata de dados. Pilha é uma estrutura baseada no princípioLIFO (last in �rst out), ou seja, o primeiro dado armazenado em uma pilha é o último quepoderá ser acessado. Por outro lado, a �la se baseia no princípio FIFO (�rst in �rst out),ou seja, o primeiro dado a ser armazenado na �la será o primeiro que poderá ser acessado.

Página 47 de 50www.handbookdeti.com.br

Page 49: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

21. Assuntos relacionados: Sistemas Operacionais, Bootstrap,Banca: FCCInstituição: MPUCargo: Analista de Desenvolvimento de SistemasAno: 2007Questão: 35

Especi�car um valor a ser armazenado na área de memória referenciada por um nome des-critivo caracteriza uma

(a). variável.

(b). instrução de controle.

(c). sintaxe de comentário.

(d). constante.

(e). instrução de atribuição.

Solução:

As variáveis podem ser entendidas como pequenos espaços de memória reservados para guar-dar algum tipo de dado. Existem vários tipos de variáveis, de 8, 16, 32 bits, etc. que mudamde nome dependendo da linguagem de programação usada. A instrução de atribuição é usadasempre que é necessário criar ou alterar o valor de uma variável.

Por exemplo, imagine que um programa qualquer criou uma variável de 8 bits com o número5. A próxima instrução manda que o programa compare o valor da variável com o número7 e, caso o número seja menor, altere o valor para 12. Como 5 é menor que 7, o programadecide fazer a alteração, que é feita utilizando-se a operação de atribuição do processador,que lê o valor 12 e grava-o no espaço de memória da variável, que passa a ter o valor 12 aoinvés de 5. Operações de atribuição na linguagem C, por exemplo, utilizam o símbolo =.

Logo, a alternativa a ser marcada é a letra (E).

Página 48 de 50www.handbookdeti.com.br

Page 50: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

22. Assuntos relacionados: Algoritmos, Dividir-e-Conquistar,Banca: FCCInstituição: TRT 18a RegiãoCargo: Analista Judiciário - Tecnologia da InformaçãoAno: 2008Questão: 23

Dentre os métodos para construção de algoritmos, o Cartesiano é aquele que segue o princípiode

(a). dividir para conquistar.

(b). primeiro que entra, primeiro que sai.

(c). planejamento reverso.

(d). pseudo-linguagem.

(e). primeiro que entra, último que sai.

Solução:

O método cartesiano consiste em atacar o problema abrangente dividindo-o em partes me-nores, a �m de torná-lo mais simples ou especí�co e, se necessário, dividir novamente aspartes não compreendidas. O procedimento pode ser esquematizado na maneira a seguir:

• Dividir o problema em suas partes principais;

• Analisar a divisão obtida para garantir coerência;

• Se alguma parte não for bem compreendida, aplicar a ela o método;

• Analisar o objeto para garantir entendimento e coerência.

Logo, o método cartesiano também é conhecido como dividir para conquistar e a alternativaa ser marcada é a letra A.

Já o planejamento reverso é uma processo que analisa as informações do resultado (saída).Procura desagregar, desmontando a informação, a �m de atingir os dados de entrada,quando, então, teríamos (do �m para o início) todas as ações do algoritmo.

Outro método de construção de algoritmos também conhecido é o método das tabelas dedecisão. Chamamos de condições as variáveis a ter em conta para a tomada de decisão, ouseja, as variáveis que vão ser avaliadas. Já as ações são as operações a desenvolver condi-cionadas pelas respostas das condições. O método da tabela de decisão consiste em chegarnas ações através da análise das combinações das condições e, assim, chegar a um algoritmoque atenda às necessidades.

Página 49 de 50www.handbookdeti.com.br

Page 51: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Handbook de Questões de TI Comentadas para Concursos Volume questões de TI

Questão Resposta

1 D

2 B

3 E

4 A

5 B

6 A

7 D

8 C

9 E

10 D

11 A

12 B

13 B

14 D

15 A

16 A

17 B

18 A

19 D

20 B

21 E

22 A

Página 50 de 50 Handbook de TI Além do Gabarito

Page 52: Programação - Yolaapostilando.yolasite.com/resources/handbook_questo... · Handbook de Questões de TI Comentadas para Concursos olumeV questões de TI Bons estudos, Grupo Handboko

Índice Remissivo

Árvores AVL, 6Árvores Binárias, 6

Abstração, 34Algoritmos, 49Análise Orientada a Objetos, 44Associação entre Classes, 26Atributos e Classes, 24, 37

Bootstrap, 48

C++, 18Coesão, 11

Dividir-e-Conquistar, 49

Encapsulamento, 34Engenharia de Software, 20, 24, 26, 28, 30Estrutura de Controle, 47Estruturas de Dados, 6, 15

Fila, 47

Herança, 30, 34

Java, 17, 18

Modularização de Algoritmos, 4

Orientação a Objeto, 17, 18, 20, 24, 26, 28, 30,32, 34, 37, 40, 42, 44

Passagem de Parâmetros, 13Pilha, 47Polimor�smo, 34, 42Programação, 15, 32, 34, 40, 44, 46Programação Estruturada, 46Projeto de Software, 11

Relacionamentos entre Classes, 28

Sistemas Operacionais, 48

Técnicas de Programação, 4, 13Tipos de Métodos, 32

51