Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e...

109
Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Professor: Gustavo Cavalcante Aula 00 – Aula Demonstrativa Curso: Tecnologia da Informação Professor: Yuri do Carmo

Transcript of Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e...

Page 1: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Aula 00

Curso: Informática – Teoria e Questões

comentadas p/ TRF

Professor: Gustavo Cavalcante Aula 00 – Aula Demonstrativa

Curso: Tecnologia da Informação

Professor: Yuri do Carmo

Page 2: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 2 de 109

www.exponencialconcursos.com.br

Olá, futuros Servidores do TRF 4º Região.

É com grande satisfação que inicio mais este trabalho aqui na equipe do

Exponencial Concursos.

Meu nome é Yuri do Carmo e sou servidor do Tribunal de Contas do

Estado do Ceará (TCE-CE), atuando como Técnico de Controle Externo

(Tecnologia da Informação), mas já estou aguardando a nomeação para o

cargo de Auditor Fiscal da Receita Estadual – Tecnologia da Informação

da SEFAZ-SC, no qual tive a felicidade de ser aprovado em 1º lugar!

Antes de iniciarmos a aula, gostaria de contar um pouco da minha

trajetória.

Sou de Itapipoca, no interior do Ceará, onde fiz meu ensino

fundamental. Em 2006, vim morar em Fortaleza, capital do Ceará, para fazer

meu ensino médio no Instituto Federal do Ceará (IFCE), onde também concluí

meu curso de Técnico em Informática. Em 2010, iniciei minha graduação em

Ciência da Computação na Universidade Federal do Ceará (UFC), a qual eu

concluí em 2014.

Iniciei minha trajetória no mundo dos concursos em 2013, quando

prestei a prova para o cargo de Técnico em TI da Universidade Federal do

Ceará. Apesar de ser minha primeira prova, dediquei-me bastante aos

estudos e consegui ser aprovado em 1º lugar. Assumi lá em 2014 e fiquei

aproximadamente um 1 ano e meio no cargo.

Continuei estudando para cargos de nível superior e, em 2014, fiz as

provas para o Cargo de Analista de Tecnologia da Informação da EBSERH e da

DATAPREV, sendo aprovado em ambos em 2º lugar. Assumi na DATAPREV em

2015 e fiquei 10 meses lá.

Em 2015, fiz provas para o Tribunal de Contas do Estado do Ceará

(TCE-CE), para os cargos de Técnico de Controle Externo (Auditoria de TI) e

Analista de Controle Externo (Auditoria de TI). Fiquei em 1º lugar no cargo de

Técnico e exerço-o até o momento. Fiquei em 4º no cargo de Analista, mas

infelizmente só convocaram até a 3º posição.

Em 2017 e 2018 também prestei várias provas para cargos de TI, as

quais listo abaixo com a respectiva colocação:

TRT 7º região (5º lugar)

TRF 5º região (1º lugar)

STM (4º lugar)

TST (1º lugar)

CLDF (1º lugar)

SEF/SC (1º lugar)

APRESENTAÇÃO

Page 3: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 3 de 109

www.exponencialconcursos.com.br

Aguardo a nomeação para CLDF e SEF/SC. Desde essas aprovações,

resolvi aposentar a caneta das provas de concurso e iniciei um novo projeto:

ajudar você a conseguir aprovações! Por meio de aulas como essa, no

Exponencial Concursos, e nos serviços de coaching para concursos que

ofereço, quero ajudar você a conquistar seus sonhos de aprovação!

Agora que vocês já me conhecem, temos a missão de oferecer para

vocês este curso. Seguindo a didática do Exponencial Concursos, estudaremos

os principais pontos da teoria, sempre tentando trazer o conteúdo de forma

esquematizada para que você ganhe tempo na sua preparação para

aprovação.

Contem comigo nessa jornada! Estarei à disposição no Fórum tira-

dúvidas e por meio dos contatos disponíveis no perfil do professor

http://bit.ly/profyuridocarmo.

Para dicas sobre concursos, acesse:

Exponencial Concursos

https://www.youtube.com/channel/UCr9rg5WOPmXvZgOfBl-HEuw

@exponencial_concursos

https://www.instagram.com/exponencial_concursos/?hl=pt-br

Page 4: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 4 de 109

www.exponencialconcursos.com.br

No quadro abaixo segue o programa do nosso curso.

Aula Conteúdo

00 Orientação a objetos: classe, herança, polimorfismo,

objeto. Modelagem orientada a objetos.

01 Conceitos de Web Services, SOAP/REST.

02 Conceitos de Web Services, SOAP/REST.

03 HTML5

04 CSS

05 Javascript, JSON

06 jQuery, Angular

07 Python

08 PHP

09 XML: conceitos, definição, utilização, escrita: criação e declaração, definição de elementos e atributos, XML schema

10 Conceitos sobre desenvolvimento Web e mobile.

*Confira o cronograma de liberação das aulas no site do Exponencial,

na página do curso.

Caros alunos, iremos focar as questões comentadas na banca FCC, já

que ela foi a última a realizar esse certame, mas também usaremos outras

bancas para complementar o estudo, se necessário.

Vamos buscar esses pontos rumo à aprovação!

Bons estudos!

Professor Yuri do Carmo

Page 5: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 5 de 109

www.exponencialconcursos.com.br

ASSUNTOS PÁGINA

1. INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETOS (POO) .......... 7

1.1 Classe e Objeto ............................................................................ 10

1.2 Atributos e Métodos ...................................................................... 13

1.3 Mensagens .................................................................................. 17

2. PILARES DA POO .......................................................................... 19

2.1 Abstração .................................................................................... 19

2.2 Encapsulamento ........................................................................... 21

2.3 Herança ...................................................................................... 23

2.4 Polimorfismo ................................................................................ 27

2.5 Resumo dos Pilares da POO ........................................................... 31

3. DEMAIS CONCEITOS DE POO ......................................................... 33

3.1 Modificadores de Acesso ................................................................ 33

3.2 Sobrecarga e Sobrescrita .............................................................. 35

3.3 Classe Abstrata ............................................................................ 38

3.4 Coesão e Acoplamento .................................................................. 41

3.5 Interface ..................................................................................... 44

4. QUESTÕES COMENTADAS ............................................................. 48

5. RISCO EXPONENCIAL .................................................................... 80

6. LISTAS DE EXERCÍCIOS ................................................................ 88

7. GABARITO ..................................................................................109

8. REFERÊNCIAS .............................................................................109

Aula – Programação Orientada a Objetos (POO).

Page 6: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 6 de 109

www.exponencialconcursos.com.br

Para facilitar sua referência, abaixo listamos as esquematizações desta aula:

Esquema 1 – Diferença entre Programação Estruturada e Programação Orientada a Objetos .... 7 Esquema 2 - Introdução à POO ......................................................................................... 9 Esquema 4 - Diferença entre classe e objeto ..................................................................... 12 Esquema 5 - Atributos e métodos .................................................................................... 14 Esquema 6 - Mensagem .................................................................................................. 17 Esquema 7 - Tipos de Polimorfismo .................................................................................. 29 Esquema 8 - Pilares da POO ............................................................................................ 31 Esquema 9 - Tabela dos modificadores e níveis de acesso ................................................... 34 Esquema 10 - Diferença entre sobrecarga e sobrescrita ...................................................... 36 Esquema 11 - Classe Abstrata ......................................................................................... 39 Esquema 12 - Coesão e Acoplamento ............................................................................... 42 Esquema 13 - Interface .................................................................................................. 46

Page 7: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 7 de 109

www.exponencialconcursos.com.br

1. INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETOS (POO)

A Programação Orientada a Objetos (POO) é uma maneira de

programar que ajuda na organização do código-fonte e resolve muitos

problemas enfrentados pela programação procedural. Um problema da

programação procedural é que não existe uma forma simples de criar conexão

forte entre dados e funcionalidades. Na POO é muito fácil ter essa conexão por

meio dos recursos da própria linguagem. POO ajuda na organização e diminui

a quantidade de linhas de código, além de concentrar as responsabilidades

nos pontos certos, flexibilizando a aplicação, encapsulando a lógica de

negócios.

A POO é um paradigma1 de programação baseado no conceito de

objetos, os quais contêm campos de dados (atributos) e procedimentos

(métodos). Os procedimentos de um objeto acessam e modificam os campos

de dados do objeto ao qual estão associados. Na POO, os programas de

computador são projetados como um conjunto de objetos que interagem

uns com os outros.

As principais linguagens que suportam programação orientada a objetos

(em maior ou menor grau) incluem Java, C++, C#, Python, PHP, JavaScript,

Ruby, Perl, Object Pascal, Objective-C, Swift, Scala, Common Lisp e Smalltalk.

É essencial entender que POO não é apenas classes e objetos. É todo

um paradigma de programação baseado em objetos (estruturas de dados) que

contêm campos de dados e métodos. Usar classes para organizar vários

métodos não relacionados não é orientação a objetos.

A POO aproxima o mundo computacional do mundo real, uma vez

que propõe a abstração e modelagem de objetos do mundo real no mundo

computacional por meio de modelos (ou classes), ao contrário da programação

estruturada, na qual os algoritmos são mais complexos e compreendidos

somente por programadores.

1 Um paradigma de programação fornece e determina a visão que o programador possui sobre a

estruturação e execução do programa. Exemplos: paradigma orientado a objetos, procedural, funcional, imperativo e declarativo.

Programação OO

Objeto

Atributos

(dados)

Métodos

(funções)

Programação

Estruturada

Dados Funções

Esquema 1 – Diferença entre Programação Estruturada e Programação Orientada a Objetos

Page 8: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 8 de 109

www.exponencialconcursos.com.br

De certa forma, um programa orientado a objetos representa uma

simulação viva do problema que está se tentando resolver. Esse

paradigma exige que o desenvolvedor tenha uma visão global do problema em

nível conceitual, permitindo o uso de substantivos, adjetivos e verbos do

domínio do seu problema.

O uso da POO pode levar a uma série de vantagens, dentre as quais:

Reusabilidade: os conceitos trazidos pela POO aumentam o

reuso de código, o que pode aumentar na velocidade de

produção dos sistemas;

Manutenibilidade: pequenas mudanças nos requisitos não

implicam em alterações massivas no sistema em

desenvolvimento;

Extensibilidade: permite facilmente expandir classes

existentes para incorporar requisitos específicos de uma

nova aplicação a ser desenvolvida, assim como permite incluir

novos tipos de objetos nas aplicações, com um mínimo de

mudanças e possibilidade de erros pelo código;

Programação natural: os objetos refletem o mundo real de

maneira mais aproximada, descrevem de maneira mais precisa

os dados. A decomposição é baseada em um particionamento

natural, e os objetos são mais fáceis de entender;

Confiabilidade: devido a facilidade do reuso de códigos já

testados e a fácil compreensão da linguagem pelo desenvolvedor

durante a manutenção, uma vez que a programação é mais

natural, os sistemas OO são mais seguros e confiáveis.

Na POO a modelagem de dados é a parte mais importante do projeto

por meio de classes que representam entidades do mundo real. As classes

(ou modelos) geram objetos que se comunicam com outros objetos

por meio de mensagens. Temos vários mecanismos na POO para facilitar o

reaproveitamento de código como herança, polimorfismo e encapsulamento,

os quais trataremos com mais detalhes nas seções seguintes.

Page 9: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 9 de 109

www.exponencialconcursos.com.br

Programação Orientada a

Objetos (POO)

Resolve probelmas do paradigma de programação procedural

Objetos contêm dados

(atributos) e procedimentos

(métodos)

Programa é um conjunto de objetos

que interagem entre si

Aproxima o mundo

computacional do mundo real

Vantagens: reusabilidade,

manutenibilidade, extensibilidade,

programação natural e

confiabilidade

Esquema 2 - Introdução à POO

Page 10: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 10 de 109

www.exponencialconcursos.com.br

1.1 Classe e Objeto

A dificuldade inicial do paradigma da orientação a objetos é saber

distinguir o que é classe e o que é objeto. É comum o iniciante utilizar, de

forma errada, essas duas palavras como sinônimas. Porém, veremos

claramente a diferença entre esses dois importantes conceitos.

Para ajudar na compreensão dos conceitos que veremos nessa e nas

próximas seções, utilizaremos o exemplo de um sistema de vendas de cursos

para concursos públicos, como, por exemplo, o sistema do Exponencial

Concursos. Nesse sistema, conceitos como Curso, Professor, Aluno, Simulado,

Concurso, Pagamento, Fórum, Questão, etc. são entidades de interesse na

modelagem desse sistema. Para a representação gráfica dos conceitos,

utilizaremos a linguagem UML na aula. Em alguns momentos apresentarei

trechos de código em Java, já que é uma linguagem conhecida pela maioria

dos desenvolvedores.

Nesse sistema, podemos dizer que todo Aluno tem um nome, uma data

de nascimento e um estado civil. Porém, são nas instâncias de Aluno que

realmente há espaço para armazenar esses valores.

Ao projeto ou molde de Aluno, isto é, à definição de Aluno,

damos o nome de classe. Ao que podemos construir a partir desse

projeto ou molde, os alunos de verdade, damos o nome de objetos.

Podemos também fazer a seguinte analogia: a planta/projeto de uma casa é

uma casa? Definitivamente não. Não podemos morar dentro da planta de uma

casa, nem podemos abrir sua porta ou pintar suas paredes. Precisamos, antes,

construir instâncias a partir dessa planta. Nessas instâncias que podemos

pintar, decorar ou mora. Assim, a planta da casa seria o equivalente à classe

e as casas construídas a partir dessa planta seriam os objetos.

Informalmente, um objeto representa uma entidade, tanto física

quanto conceitual ou de software. No nosso sistema de venda de cursos,

exemplos de entidade física seriam: Professor e Aluno. Exemplos de entidade

conceitual: Matrícula e Carrinho de Compras. Exemplos de entidade de

software: Lista Encadeada e Arquivo. Podemos afirmar que um objeto é um

conceito, abstração, ou entidade com limites bem definidos e um

significado para a aplicação. Na prática, um objeto é uma representação na

memória do computador de qualquer entidade/conceito do mundo real.

Formalmente, um objeto é algo que possui uma identidade única,

um estado e comportamento. Uma identidade única é a propriedade de

um objeto que o distingue de outros objetos. Identidade não é o nome do

objeto, nem o endereço de memória onde ele está armazenado, é um

conceito de linguagens de programação que não é visível para os

desenvolvedores. O estado normalmente é implementado por meio de seu

conjunto de propriedades (denominados atributos), com os valores das

propriedades, mais as ligações que o objeto pode ter com outros objetos. Em

suma, estado é o conjunto de valores dos atributos do objeto em

Page 11: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 11 de 109

www.exponencialconcursos.com.br

determinado instante. Comportamento define como um objeto reage às

requisições de outros objetos, em termos de mudanças de estados e

passagem de mensagens.

A classe é a descrição de um grupo de objetos com propriedades

similares (atributos), comportamento comum (operações), relacionamentos

com outros objetos e semânticas idênticas. Todo objeto é instância de uma

classe. Enquanto um objeto individual é uma entidade concreta que executa

algum papel no sistema, uma classe captura a estrutura e

comportamento comum a todos os objetos que estão relacionados.

Uma classe define a estrutura e o comportamento de qualquer objeto

da classe, atuando como um padrão para a construção de objetos. Objetos

podem ser agrupados em classes. A definição da classe consiste na definição

dos atributos e operações dos objetos desta classe.

EXEMPLO

A classe ―Professor‖ define a estrutura (atributos e métodos) comum a

todos os professores. Um possível objeto instância dessa classe seria o

professor ―Yuri do Carmo‖ com seus valores para cada atributo e identidade

única.

Objetos são criados chamando um tipo especial de método na

classe conhecida como construtor. Um programa pode criar muitas

instâncias da mesma classe que é executada, as quais operam de forma

independente. Essa é uma maneira fácil de usar as mesmas operações em

diferentes conjuntos de dados.

Relacionado ao conceito de classe, há o conceito de metaclasse, que é

uma classe cujas instâncias também são classes e não objetos no

sentido tradicional. Assim como classes definem o comportamento de certos

objetos, metaclasses definem o comportamento de certas classes e suas

instâncias. Nem toda linguagem orientada a objeto suporta metaclasses.

Page 12: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 12 de 109

www.exponencialconcursos.com.br

1- (CESPE - 2017 - SEDF - Professor de Educação

Básica - Informática) A respeito das características da programação

orientada a objetos, julgue o item subsequente.

Um objeto define atributos, comportamentos e abstrações comuns

compartilhados por um tipo de classe.

Resolução:

A Cespe inverteu os conceitos de classe e objeto. O correto seria: Um objeto

Uma classe define atributos, comportamentos e abstrações comuns

compartilhados por um tipo de classe objeto.

Gabarito: Errado.

Classe

•Agrupamento de atributos e métodos comuns a um conjunto de objetos

•Descrição de um grupo de objetos com atributos e comportamentos similares

•Padrão/molde/modelo para a construção dos objetos

Objeto

•Possui identidade única, estado (conjunto de valores dos atributos) e comportamento

•É uma instância de uma classe

•Interagem entre si pela troca de mensagens (chamadas de métodos)

Esquema 3 - Diferença entre classe e objeto

Page 13: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 13 de 109

www.exponencialconcursos.com.br

1.2 Atributos e Métodos

No mundo real, qualquer objeto possui características que o

definem. Na POO, essas características são nomeadas de atributos. Por

exemplo, os atributos de um objeto da classe ―Professor‖ poderiam ser

―Nome‖, ―Idade‖ e ―Disciplina‖ e possuir, respectivamente, os valores ―Yuri do

Carmo‖, 27 e ―Desenvolvimento de Software‖. Atributos também são

conhecidos como campos, membros, variáveis ou propriedades. Um

atributo é uma característica de uma classe. Atributos não apresentam

comportamento, eles definem a estrutura da classe.

No mundo real, os objetos também possuem ações que eles podem

executar. Na POO, essas ações, ou eventos, são chamados de métodos.

Por exemplo, os métodos de um objeto da classe ―Professor‖ poderiam ser

―ofertar curso‖, ―responder dúvida‖ e ―disponibilizar aula‖. Métodos também

são conhecidos como procedimentos, operações ou funções. Métodos

caracterizam o comportamento de um objeto e devem ser o único meio de

acessar, manipular e modificar os atributos de um objeto.

Os atributos possuem a seguinte classificação: atributos de classe

e atributos de instância. Os primeiros pertencem à classe como um todo;

existe apenas uma cópia de cada um desses atributos para todos os objetos

da classe. Já os atributos de instância são dados que pertencem a objetos

individuais; cada objeto tem sua própria cópia de cada um desses atributos

de instância. Por exemplo, o atributo ―nome‖ da classe ―Professor‖ deve ser

um atributo de instância, uma vez que cada objeto dessa classe tem seu

próprio valor para o ―nome‖. Já o atributo ―quantidade de professores‖ pode

ser um atributo de classe, uma vez que não precisa existir uma cópia do valor

desse atributo para cada objeto, mas apenas um valor para a classe, ou seja,

a informação fica guardada pela classe, não é mais individual para cada

objeto.

Existe uma classificação semelhante para os métodos, a qual segue a

mesma lógica: métodos de classe e métodos de instância. Os primeiros

pertencem à classe como um todo e têm acesso somente aos atributos de

classe e às entradas (conhecidas como parâmetros) da chamada do método.

Já os métodos de instância pertencem a objetos individuais e têm acesso às

variáveis de instância para o objeto específico em que são chamadas, às

entradas (parâmetros) e aos atributos de classe.

Às vezes, para que um método possa executar sua ação corretamente,

ele precisa receber algum tipo de informação (entrada) de quem está

solicitando a execução desse método. Por exemplo, para que um objeto da

classe ―Professor‖ possa executar o método ―responder dúvida‖, ele precisa

receber como entrada uma ―pergunta‖. A essa entrada damos o nome de

parâmetro ou argumento. Um método pode ter nenhum, um, dois ou mais

parâmetros. Além disso, o método ―responder dúvida‖, ao finalizar sua

execução, deve devolver uma ―resposta‖. A essa devolução de informação

Page 14: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 14 de 109

www.exponencialconcursos.com.br

damos o nome de valor de retorno, ou simplesmente retorno. Um método

pode ou não retornar alguma informação.

O conjunto formado pelo tipo de retorno do método, pelo nome

do método e pelos tipos e quantidades de parâmetros do método é

denominado assinatura do método. Especificamente em Java, o tipo de

retorno do método não faz parte da assinatura do método. Veremos que o

conceito de assinatura do método é importante para entendermos os

conceitos de polimorfismo, sobrecarga e sobreposição.

Atributos

• Características dos objetos que o definem

• Também conhecidos como campos, membros, variáveis ou propriedade

• Classificados em atributos de classe e atributos de instância

Métodos

• Ações ou eventos realizados pelos objetos

• Também conhecidos como procedimentos, operações ou funções

• Classificados em métodos de classe e métodos de instância

• Pode receber algum tipo de informação (entrada), chamada de parâmetro ou argumento

• Pode devolver alguma informação, chamada de (valor de) retorno

• Assinatura do método = tipo de retorno + nome + tipo/quantidade dos parâmetros

Esquema 4 - Atributos e métodos

Page 15: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 15 de 109

www.exponencialconcursos.com.br

2- (FCC - 2014 - TRT - 16ª REGIÃO (MA) - Técnico

Judiciário - Tecnologia da Informação) Bianca está desenvolvendo um

software orientado a objetos para uma aplicação do TRT 16ª Região. Esta

aplicação atenderá a diversos usuários. Um Usuario será modelado como

...I..... , possuindo as seguintes características ou ..II..... :

- Nome

- Endereço

- Telefone

- E-mail

- CPF

Um usuário pode realizar ações. Cada usuário é identificado de forma única,

mas possuindo as mesmas características descritas acima. Assim, cada

usuário será ...III..... e poderá executar as seguintes ações ou ..IV.. :

- EnviarPedido

- LerRespostaPedido

- ConsultarAndamento

As lacunas I, II, III e IV são, correta e respectivamente, preenchidas por:

a) uma abstração - métodos - instanciado como um objeto que herda da

classe - interfaces.

b) um objeto - métodos - uma classe - enviar as mensagens.

c) uma classe - atributos - um objeto da classe Usuario - métodos.

d) uma classe - variáveis - um objeto que herda da classe Usuario - trocas de

mensagens.

e) um objeto - variáveis - instanciado - enviar as mensagens.

Resolução:

Primeiramente, vamos lembrar as principais diferenças entre classe/objeto e

atributo/método.

Page 16: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 16 de 109

www.exponencialconcursos.com.br

Com isso em mente, vamos analisar cada item:

Item I: a questão afirma que o Usuário será modelado com esse conceito, ou

seja, será um molde, o qual terá determinadas características. Pelas definições

vistas, vimos que trata-se de uma classe.

Item II: a questão afirma que esse item é sinônimo das características dos

Usuários. Assim, deduzimos que trata-se dos atributos da classe usuário.

Item III: a questão afirma que cada usuário é identificado de forma única.

Portanto, cada usuário será um objeto (uma instância) da classe Usuario.

Item IV: a questão afirma que cada (objeto) usuário poderá executar algumas

ações, as quais são conhecidas como métodos.

Gabarito: Letra C.

Atributos

• Características dos objetos que o definem

• Também conhecidos como campos, membros, variáveis ou propriedade

Métodos

• Ações ou eventos realizados pelos objetos

• Também conhecidos como procedimentos, operações ou funções

• Classificados em métodos de classe e métodos de instância

Classe

• Descrição de um grupo de objetos com atributos e comportamentos similares

• Padrão/molde/modelo para a construção dos objetos

Objeto

• Possui identidade única, estado (conjunto de valores dos atributos) e comportamento

• É uma instância de uma classe

Page 17: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 17 de 109

www.exponencialconcursos.com.br

1.3 Mensagens

Em tempo de execução, um software orientado a objetos é um

conjunto de objetos se comunicando entre si. Essa comunicação se dá

por meio da chamada de métodos desses objetos. Uma chamada de método

também é conhecida como passagem de mensagem. O conjunto formado

pelo nome do método mais seus parâmetros de entrada sendo passados para

um objeto é conceituado como uma mensagem. Assim, um programa

orientado a objetos é composto por um conjunto de objetos que interagem

por meio de ―trocas de mensagens‖. Na prática, essa troca de mensagem

traduz-se na aplicação de métodos a objetos. No nosso sistema de exemplo,

um objeto da classe ―Aluno‖ pode enviar a mensagem ―responder dúvida‖

para um objeto da classe ―Professor‖ passando como parâmetro uma

―Pergunta‖.

Esquema 5 - Mensagem

Mensagem

Meio de comunicação dos objetos

em tempo de execução

Na prática, representa

uma chamada de

método

Objetos interagem

por meio da "troca de

mensagens"

Page 18: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 18 de 109

www.exponencialconcursos.com.br

3- (CESPE - 2015 - MEC - Analista de Teste e

Qualidade) Com relação à orientação a objetos, julgue o item subsecutivo.

Objetos são definidos como entidades da modelagem de sistemas que

armazenam estados com a utilização de atributos dos próprios objetos, sem

interação com outros objetos por meio de mensagens.

Resolução:

A questão peca ao afirmar que não há ―interação com outros objetos por meio

de mensagens‖, já que na POO, os sistemas são projetados como um conjunto

de objetos que interagem uns com os outros, e essa interação/comunicação se

dá pela ―troca de mensagens‖. Na prática, essa troca de mensagem traduz-se

na chamada de métodos a objetos.

Gabarito: Errado.

Page 19: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 19 de 109

www.exponencialconcursos.com.br

2. PILARES DA POO

A POO possui um conjunto de pilares (princípios fundamentais,

conceitos básicos), os quais compõem a base da orientação a objetos. São

eles: abstração, encapsulamento, herança e polimorfismo. Veremos

cada um nas seções seguinte.

2.1 Abstração

A abstração, enquanto pilar da POO, consiste em trabalhar um objeto

dentro da programação se preocupando somente com suas principais

propriedades, sem se apegar a detalhes irrelevantes. Na POO, tentamos

aproximar o mundo virtual do real. Tendo isto em mente, podemos considerar

o objeto como uma representação de algo que realmente existe, como por

exemplo: um professor, um aluno, um curso. Devemos abstrair o objeto que

realmente existe (objeto real), e representá-lo computacionalmente. Como o

mundo real é bem mais complexo que o mundo virtual que iremos programar,

devemos abstrair, ou seja, desconsiderar características do objeto do

mundo real que não são importantes para o sistema que iremos

construir, de tal forma a nos concentrarmos especificamente no que é

importante para nosso sistema. Por exemplo, sabemos que os professores

do mundo real podem possuir um time de futebol para o qual eles torcem.

Porém, para nosso sistema de vendas de curso, essa informação é irrelevante,

assim devemos abstraí-la quando estivermos modelando a classe ―Professor‖

no nosso sistema.

Como estamos lidando com uma representação de um objeto real (o

que dá nome ao paradigma), temos que imaginar o que esse objeto irá

realizar dentro de nosso sistema. São três pontos que devem ser levados em

consideração na abstração: identidade, atributos e métodos. Todo

objeto do mundo real deve ser abstraído nesses três aspectos para

serem modelados numa linguagem OO.

Conseguir abstrair um item do mundo real e transformá-lo em uma

classe é um desafio para os que estão iniciando na POO. Porém, para

concursos públicos, você só precisa entender o conceito da abstração, então

não se preocupe caso você não consiga aplicá-lo ainda, isso virá com o tempo.

Page 20: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 20 de 109

www.exponencialconcursos.com.br

4- (FCC - 2013 - AL-RN - Analista Legislativo -

Analista de Sistemas) Em orientação a objetos, o processo ou resultado de

generalização por redução do conteúdo da informação de um conceito ou

fenômeno observável, normalmente para reter apenas a informação que é

relevante para um propósito particular é chamado de

a) agregação.

b) abstração.

c) polimorfismo.

d) encapsulamento.

e) modelagem lógica.

Resolução:

A questão trata do conceito de abstração, a qual, em outras palavras, consiste

em preocupar-se com as principais propriedades, desconsiderando

características que não são importantes. É pensar e modelar os objetos do

mundo real em termos de identidade, atributos e métodos.

Gabarito: Letra B.

Page 21: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 21 de 109

www.exponencialconcursos.com.br

2.2 Encapsulamento

Encapsulamento é o mecanismo das linguagens OO que permite

encapsular, isto é, esconder os atributos de uma classe, além de esconder

como funcionam as rotinas (no caso, métodos) do nosso sistema.

Encapsular é fundamental para que seu sistema seja suscetível a mudanças:

não precisaremos mudar uma regra de negócio em vários lugares, mas sim

em apenas um único lugar, se essa regra estiver encapsulada. Em outras

palavras, encapsulamento é esconder os detalhes da implementação de

um objeto. Ele permite que um objeto possua uma parte privada, acessível

somente por meio dos métodos definidos na sua interface pública. Não se

deve permitir acesso direto aos atributos de uma classe. O

encapsulamento traz como benefícios: o código cliente usa apenas a

interface pública para operar um objeto; a implementação do objeto pode

mudar (para corrigir erros, aumentar performance, etc.) sem que seja

necessário modificar o código do cliente; a manutenção é mais fácil e menos

custosa; o programa torna-se mais legível e bem estruturado.

Assim, notamos que o encapsulamento está relacionado com a

ocultação de informação, o que envolve impedir o acesso direto aos

atributos dos objetos e também esconder os detalhes de implementação

dos métodos. Porém, encapsulamento também é agrupar o estado de

objetos (as variáveis da classe) e seus comportamentos (os métodos

da classe) em conjuntos segundo o seu grau de relação. Assim, o

propósito do encapsulamento também é o de organizar os dados que sejam

relacionados, agrupando-os (encapsulando-os) em objetos (classes),

reduzindo as colisões de nomes de variáveis e, da mesma forma, reunindo

métodos relacionados às suas propriedades (ou variáveis de classe). Isso

ajuda a manter um programa com várias linhas de código mais legível e fácil

de trabalhar e manter.

Page 22: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 22 de 109

www.exponencialconcursos.com.br

5- (FCC - 2016 - Prefeitura de Teresina - PI -

Analista Tecnológico - Analista de Suporte Técnico) Na Orientação a

Objetos há um conceito bastante utilizado que é o encapsulamento, que

corresponde a

a) não suportar a divisão do programa em mais do que um arquivo físico.

b) limitar o número de classes de um programa orientado a objetos, conforme

o porte do sistema.

c) ocultar os detalhes da implementação dos métodos de uma determinada

classe de outras classes.

d) criptografar o código das classes que possuem a propriedade do

encapsulamento.

e) compactar o código fonte gerado, de forma a diminuir seu tamanho físico.

Resolução:

O conceito de encapsulamento é um dos mais importantes na POO e deve

estar bem entendido, pois várias questões basicamente pedem o seu

significado, como essa. Devemos saber que ele significa: esconder os atributos

e métodos da classe, ou seja, esconder os detalhes de implementação; não

permitir acesso direto aos atributos; e agrupar características e

comportamentos relacionados em objetos.

Gabarito: Letra C.

Page 23: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 23 de 109

www.exponencialconcursos.com.br

2.3 Herança

Prezados alunos, nessa e na próxima seção veremos os dois conceitos

de POO que mais são cobrados em concursos: herança e polimorfismo.

Eles estão intimamente relacionados, portanto atenção.

No nosso sistema de exemplo, temos as classes ―Professor‖ e ―Aluno‖.

Os professores guardam informações em comum com os alunos (por exemplo,

email e senha), mas também possuem outras informações, além de ter

funcionalidades um pouco diferentes. Se tivéssemos outro tipo de pessoa que

utilizasse nosso sistema, precisaríamos criar outra classe e copiar o código em

comum! Além disso, se um dia precisarmos adicionar uma nova informação

para todos os usuários do sistema, precisaremos passar por todas as classes

de usuário e adicionar esse atributo. O problema acontece por não

centralizarmos as informações principais dos usuários do sistema em um único

lugar! A POO oferece uma maneira de relacionarmos uma classe de tal

modo que uma delas herda tudo que a outra tem: a herança. Ela cria

uma relação de classe mãe e classe filha. No nosso caso, gostaríamos de

fazer com que o Professor e o Aluno tivessem tudo que um Usuario tem, ou

seja, gostaríamos que ela fosse uma extensão de Usuario. Assim, a classe

Usuario manteria os atributos (p. ex. email e senha) e métodos (p. ex. ―entrar

no sistema‖) comuns a todos os usuários do sistema. Assim, quando criarmos

um objeto do tipo Professor ou Aluno, este objeto possuirá também os

atributos e métodos definidos na classe Usuario, pois um Professor é um

Usuario e um Aluno é um Usuario, sem precisar duplicar código. Dizemos que

a classe Professor herda todos os atributos e métodos da classe mãe, no

nosso caso, a classe Usuario. Além de a classe filha herdar os atributos e

métodos da classe mãe (ou classe base), a classe filha ainda pode definir

novos métodos e atributos.

Page 24: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 24 de 109

www.exponencialconcursos.com.br

EXEMPLO

Representação gráfica do uso da herança (linguagem UML) das classes

Usuario, Professor e Aluno. Dessa forma, as instâncias (objetos) das classes

Professor e Aluno também possuirão os atributos e métodos da classe Usuario.

A nomenclatura mais encontrada é que Usuario é a superclasse

de Professor, e Professor é a subclasse de Usuario. Dizemos também

que todo Professor é um Usuario. Outra forma é dizer que Usuario é classe

mãe de Professor e Professor é classe filha de Funcionario. As subclasses

também são chamadas de classes derivadas.

A herança otimiza a produção da aplicação em tempo e linhas de

código, ou seja, aumenta a reusabilidade do código. Com ela é possível

criar uma hierarquia dessas classes, criando, assim, classes mais amplas e

classes mais específicas. Os conceitos de generalização/especialização

estão intimamente relacionados com a herança, uma vez que a superclasse

generaliza a subclasse e, por sua vez, a subclasse especializa a superclasse.

Existe uma classificação de tipos de herança bastante cobrada em

concursos: herança simples e herança múltipla. Quando uma classe herda

características somente de outra classe, dizemos que esta é uma herança

simples. Quando uma classe herda de duas ou mais classes, temos um caso

de herança múltipla. Em qualquer circunstância, o fato que você deverá

lembrar é o seguinte: a subclasse herda todos os atributos e métodos da(s)

superclasse(s).

Page 25: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 25 de 109

www.exponencialconcursos.com.br

EXEMPLO

A classe VeiculoAnfibio, modelada abaixo em UML, é um exemplo de

Herança Múltipla, pois ela herda os atributos e métodos de mais de uma classe

diretamente, já que ela é um ViuculoTerrestre e é um VeiculoMaritmo.

6- (FCC - 2013 - MPE-MA - Analista Ministerial -

Análise e Desenvolvimento de Sistemas) Na orientação a objetos, a

herança permite definir uma classe como uma extensão de outra classe. As

vantagens de utilizar herança são muitas e algumas delas são apresentadas

abaixo. Assinale a alternativa INCORRETA em relação às vantagens do uso de

herança.

a) A herança é sempre a construção mais apropriada nos casos em que se

deseja reutilizar um código.

b) O uso de herança pode evitar a duplicação de código, pois deixa de ser

necessário escrever duas cópias idênticas ou muito semelhantes de um código

em comum.

c) A manutenção da aplicação fica mais fácil com o uso de herança, pois o

relacionamento entre as classes é claramente expresso. Uma alteração em um

método compartilhado entre diferentes tipos de subclasses pode ser feito

apenas uma vez.

d) Com a utilização de herança pode tornar-se mais fácil estender uma

aplicação existente.

Page 26: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 26 de 109

www.exponencialconcursos.com.br

e) Usando a herança, um código existente pode ser reutilizado. Se já existir

uma classe semelhante à que precisamos, às vezes é possível dividir a classe

existente e reutilizar o código em vez de implementar tudo novamente.

Resolução:

Repare que a questão pede para marcar a alternativa INCORRETA. A única

que traz uma inverdade é a letra (a). Vejamos:

a) a herança é sempre nem sempre é a construção mais apropriada nos

casos em que se deseja reutilizar um código.

A alternativa peca ao afirmar que sempre é melhor usar herança para se

reutilizar código. Porém, isso não é verdade. Como a herança traz um alto

grau de acoplamento entra as classes pai e filho, pode ser que ela não seja a

mais apropriada dependendo da aplicação. Além do mais, é importante haver

a relação ―é um‖ entre as duas classes, o que nem sempre ocorre quando

queremos reutilizar código.

Os demais itens trazem características e benefícios da herança. Reparem que

eles usam o verbo ―poder‖, transmitindo uma possibilidade, não uma verdade

absoluta. Já o item (a), ao utilizar a palavra ―sempre‖, traz uma verdade

absoluta, o que geralmente torna o item errado.

Gabarito: Letra A.

Page 27: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 27 de 109

www.exponencialconcursos.com.br

2.4 Polimorfismo

O termo polimorfismo é originário do grego e significa "muitas

formas" (poli = muitas, morphos = formas). Como se trata de um assunto

que está intimamente conectado à herança, entender os dois juntamente é a

melhor opção. Na POO, uma das características do polimorfismo é

permitir que referências de tipos de classes mais abstratas

(superclasses) representem o comportamento das classes concretas

(subclasses) que referenciam. Por exemplo, vimos que todo Professor é

um Usuario, pois é uma extensão de Usuario. Podemos nos referir a um

Professor como sendo um Usuario. Se alguém precisa falar com um Usuario do

sistema, pode falar com um Professor, já que todo Professor é um Usuario. O

polimorfismo é quem permite a um objeto poder ser referenciado de

várias formas. Mas cuidado, polimorfismo não quer dizer que o objeto

fica se transformando. Pelo contrário, um objeto nasce de um tipo e morre

daquele tipo, o que pode mudar é a maneira como nos referimos a ele.

Polimorfismo também é caracterizado quando duas ou mais

classes derivadas de uma mesma superclasse podem invocar métodos

que têm a mesma identificação (assinatura), mas comportamentos

distintos, especializados para cada classe derivada, usando para tanto uma

referência a um objeto do tipo da superclasse. A decisão sobre qual o

método que deve ser selecionado, de acordo com o tipo da classe derivada,

é tomada em tempo de execução, através do mecanismo de late biding

(ligação tardia). É necessário que os métodos tenham exatamente a

mesma identificação (assinatura), sendo utilizado o mecanismo de

redefinição (ou sobrescrita) de métodos. Esse mecanismo de redefinição não

deve ser confundido com o mecanismo de sobrecarga de métodos. Veremos

ambos adiante. Por meio da técnica do polimorfismo, é possível que criemos

estruturas suficientemente genéricas ao ponto de serem utilizadas em vários

contextos, tornando o código-fonte final mais enxuto, legível e manutenível.

A literatura classifica quatro tipos de polimorfismo, apesar de que

nem toda linguagem orientada a objeto implementa todos os tipos: Universal

(subdividido em Inclusão e Paramétrico) e Ad-Hoc (subdividido em

Coerção e Sobrecarga).

O polimorfismo Universal por Inclusão é o tipo que comentamos na

aula, ou seja, quando uma referencia para a classe mãe (superclasse)

pode apontar para instâncias de suas classes filha (subclasses), e as

subclasses fornecem diferentes implementações (por meio da

redefinição/sobrescrita de método) de algum método da superclasse.

É o tipo de polimorfismo mais básico que existe.

Page 28: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 28 de 109

www.exponencialconcursos.com.br

EXEMPLO

Abaixo temos um exemplo em código Java desse tipo de polimorfismo.

O método ―falar()‖ é polimórfico, já que há mais de uma classe que o

implementa de maneira diferente. Será executada a implementação a

depender do tipo da instância (objeto) que está sendo referenciado em tempo

de execução.

O polimorfismo Universal Paramétrico é chamado de Generics em

Java e C#, e templates em C++. Basicamente é uma função ou um tipo

de dado que pode ser escrito genericamente para que ele possa lidar

com valores de forma idêntica sem depender do seu tipo. Generics pode

ser feito tanto com estruturas como com classes.

O polimorfismo Ad-Hoc por Sobrecarga, também conhecido como

Overloading, ocorre quando dois ou mais métodos têm o mesmo nome,

mas quantidade e/ou tipos de parâmetros diferentes, ou seja, assinatura

diferentes. Assim, o método a ser executado, dentre os vários de mesmo

public class Usuario {

public void falar() {

System.out.println("Oi, sou um Usuário.");

}

}

//Professor herda de Usuario

public class Professor extends Usuario {

public void falar() {

System.out.println("Oi, sou um Professor.");

}

}

//Aluno herda de Usuario

public class Aluno extends Usuario {

public void falar() {

System.out.println("Oi, sou um Aluno.");

}

}

public class Teste {

public void fazerUsuarioFalar(Usuario usuario) {

usuario.falar();

}

public static void main( String[] args ) {

Teste t = new Teste();

t.fazerUsuarioFalar(new Usuario());

t.fazerUsuarioFalar(new Professor());

t.fazerUsuarioFalar(new Aluno());

}

}

Console:

Oi, sou um Usuário.

Oi, sou um Professor.

Oi, sou um Aluno.

duas ou mais classes de superclasses diferentes da mesma superclasse possuírem um método com a

mesma assinatura, mas com comportamentos diferentes.

Page 29: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 29 de 109

www.exponencialconcursos.com.br

nome, dependerá do que for passado como parâmetro. Veremos mais

detalhadamente a sobrecarga numa seção seguinte.

O polimorfismo Ad-Hoc por Coerção, também conhecido como

Casting, ocorre quando um tipo primitivo ou um objeto é “convertido”

em outro tipo de objeto ou tipo primitivo. A conversão pode ser implícita

(feita automaticamente pelo compilador) ou explícita (feita pelo programador).

Um exemplo de Coerção bem comum é de um número ponto flutuante que

pode ser usado onde se espera um inteiro. Nesse caso, o número ponto

flutuante é convertido em inteiro, perdendo, assim, suas casas decimais.

Há ainda outra classificação de polimorfismo, subdividindo-o em

polimorfismo estático e polimorfismo dinâmico. O primeiro refere-se ao

polimorfismo Ad-Hoc por Sobrecarga (ou Overloading) e o segundo, ao

polimorfismo Universal por Inclusão (ou Overriding), ambos vistos

anteriormente.

Tipos de Polimorfismo

Universal

Por Inclusão Paramétrico

Ad-hoc

Coerção Sobrecarga

(overloading)

Esquema 6 - Tipos de Polimorfismo

Page 30: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 30 de 109

www.exponencialconcursos.com.br

7- (FCC - 2014 - TRT - 13ª Região (PB) - Analista

Judiciário - Tecnologia da Informação) Considere o seguinte caso:

Observando o trâmite de processos no tribunal, Marta percebeu que tanto

advogados quanto juízes realizavam análises nos diversos pareceres

constantes dos processos. Com sua experiência como analista ela deduziu que

uma possível informatização dos processos poderia contemplar uma classe

chamada Advogado e outra chamada Juiz, tendo como base uma classe

comum chamada Pessoa, com um método chamado AnalisarParecer. Este

método (definido na classe comum) se comportaria de maneira diferente para

as chamadas feitas a partir de uma instância de Advogado e para as

chamadas feitas a partir de uma instância de Juiz, em razão deles terem

responsabilidades diferentes em sua forma de analisar e opinar sobre os

pareceres.

Pela observação do método e seu comportamento, o princípio da orientação a

objetos aplicável no caso, fundamentalmente, é

a) a comunicabilidade.

b) o encapsulameto

c) a visibilidade.

d) o polimorfismo.

e) a estereotipagem.

Resolução:

Primeiramente, poderíamos eliminar as letras (a) e (e), pois não são princípios

da orientação a objetos. A frase-chave do enunciado para acertar a questão é

―o método chamado AnalisarParecer (...) definido na classe comum se

comportaria de maneira diferente (...)‖. Sabemos que o polimorfismo é o

mecanismo que permite que classes derivadas (no caso, Advogado e Juiz) de

uma mesma superclasse (no caso, Pessoa) tenham métodos de mesma

assinatura (no caso, AnalisarParecer), mas comportamentos diferentes.

Gabarito: Letra D.

Page 31: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 31 de 109

www.exponencialconcursos.com.br

2.5 Resumo dos Pilares da POO

Pil

ares d

a P

OO

Abstração

Preocupar-se com as principais propriedade

Desconsiderar características que não são importantes

Abstrair os objetos do mundo real em termos de identidade, atributos e métodos

Encapsulamento

Esconder os atributos e métodos da classe

Esconder os detalhes de implementação

Não permitir acesso direto aos atributos

Agrupar características e comportamentos relacionados em objetos

Herança

Permite que uma classe herde atributos e comportamentos de outra classe

Relação de classe mãe/filha, superclasse/subclasse, generalização/especialização e relação "é-um"

Herança simples e múltipla

Polimorfismo

"muitas formas"

Permite uma subclasse ser referenciada como sua superclasse

Permite que classes derivadas de uma mesma superclasse tenham métodos de mesma assinatura, mas comportamentos

diferentes

Ligação tardia (late binding) em tempo de execução

Esquema 7 - Pilares da POO

Page 32: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 32 de 109

www.exponencialconcursos.com.br

8- (FCC - 2013 - AL-RN - Analista Legislativo -

Analista de Sistemas) José foi incumbido de modelar as classes do sistema

que a empresa estava desenvolvendo. Ele se deparou com as seguintes

classes:

Classe 1, que possui os atributos data de nascimento, nome, sexo e um

método para calcular a idade no calendário Gregoriano.

Classe 2, que possui os atributos data de nascimento, nome, sexo,

telefone e um método para calcular a idade no calendário Chinês.

Classe 3, que possui os atributos data de nascimento, nome, sexo e um

método para calcular a idade no calendário Juliano.

Por ser conhecedor de técnicas de orientação a objetos, ele propôs que fosse

criada uma classe com os atributos comuns e o método de cálculo da idade.

Sugeriu que fossem criadas classes baseadas nessa primeira e que apenas

alterassem o que não fosse comum, como a inclusão do atributo telefone e

diferentes tipos de implementação para o método do cálculo da idade. Deste

modo ele utilizou, respectivamente, as técnicas de

a) herança e polimorfismo.

b) abstração e agregação.

c) encapsulamento e abstração.

d) polimorfismo e encapsulamento.

e) abstração e herança.

Resolução:

Primeiramente, José propôs que ―fosse criada uma classe com os atributos

comuns (...)‖. Aqui já temos a técnica/mecanismo de herança, o que

resultará numa classe-mãe com atributos e métodos comuns e as classes

Classe1, Classe2 e Classe3 herdariam dessa classe-mãe. Por fim, ele sugeriu

―a inclusão de (...) diferentes tipos de implementação para o método do

cálculo da idade‖, ou seja, várias subclasses terão a mesma assinatura de

método, mas com implementação diferente. Quem permite isso é o

polimorfismo.

Gabarito: Letra A.

Page 33: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 33 de 109

www.exponencialconcursos.com.br

3. DEMAIS CONCEITOS DE POO

3.1 Modificadores de Acesso

Em um programa OO, podemos desejar que uma classe não possa ser

acessada por outra classe, ou então que determinada variável ou método fique

restrito somente ao escopo da classe. Cada classe é responsável por

controlar o nível de acesso de seus atributos e métodos, centralizando

essa responsabilidade e facilitando futuras mudanças no sistema. Muitas

outras vezes nem mesmo queremos que outras classes saibam da existência

de determinado atributo, escondendo-o por completo, já que ele diz respeito

ao funcionamento interno do objeto. Sempre devemos expor o mínimo

possível de funcionalidades, para criar um baixo acoplamento entre as

nossas classes. Para definir este nível/controle de acesso é que usamos os

modificadores de acesso (também conhecidos como modificadores de

visibilidade). Os modificadores de acesso são palavras-chave nas

linguagens orientadas a objetos que permitem definir o nível de

acesso de determinado membro (atributo ou método) da classe. Eles

servem para definir a visibilidade que determinada classe ou membro terá

diante das outras. Visibilidade neste caso tem o mesmo significado que

acesso, pois se não está visível não pode ser acessado. Para entender como o

controle de acesso é feito, primeiramente devemos diferenciar esses dois

conceitos: níveis de acesso e modificadores de acesso. Níveis de

acesso são conhecidos por public, private, protected e default. Cada

linguagem possui uma palavra-chave (modificador de acesso) para

representar cada um dos níveis de acesso. Em Java, por exemplo, são

apenas três: public, private, protected. O nível de acesso default (padrão)

não exige modificador no Java, já que quando não se declara nenhum

modificador para o membro da classe, o nível default é usado implicitamente.

Vejamos a definição de cada um dos níveis de acesso. Um membro com

o modificador public pode ser acessado de qualquer lugar e por

qualquer entidade que possa visualizar a classe a qual ele pertence. No nível

de acesso private, os membros da classe definidos com ele não podem ser

acessados ou usados por nenhuma outra classe, apenas internamente

na própria classe. Esse modificador não se aplica às classes, somente aos seus

métodos e atributos. Esses atributos e métodos privados também não podem

ser visualizados pelas classes filhas, apesar de podermos dizer que eles são

herdados. Marcando um atributo como privado, fechamos o acesso ao mesmo

em relação a todas as outras classes. Na orientação a objetos, é prática quase

que obrigatória proteger seus atributos com private. O modificador

protected torna o membro acessível à própria classe, suas subclasses

e também às classes do mesmo pacote2. No nível default (padrão), a

classe e/ou seus membros são acessíveis somente internamente e por

2 Pacote, em orientação a objetos, basicamente é um agrupamento de classes. Separar as classes em

pacotes de acordo com sua funcionalidade é uma forma de organizar o projeto.

Page 34: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 34 de 109

www.exponencialconcursos.com.br

classes do mesmo pacote. No esquema abaixo temos uma tabela resumo

com a visibilidade que cada nível de acesso oferece em Java. Em UML, há uma

pequena diferença com relação ao Java: no protected (protegido), não há

acesso às classes no mesmo pacote, apenas à própria classe e às subclasses.

9- (FCC - 2014 - SABESP - Técnico em Gestão -

Informática) Na programação orientada a objetos, em uma classe que possui

os atributos id, nome, telefone e renda, os atributos devem ser

normalmente e os métodos getters e setters devem ser normalmente

. Quando um objeto desta classe é instanciado, para incluir valores nos

atributos utilizam-se os métodos setter e para obter os valores incluídos

utilizam-se os métodos getter. Esse processo está relacionado com o que

chamamos de encapsulamento.

As lacunas I e II são preenchidas correta e, respectivamente, por

a) privados e protegidos

b) privados e públicos

c) protegidos e públicos

d) públicos e protegidos

e) públicos e privados

Resolução:

Cada classe é responsável por controlar o nível de acesso de seus atributos e

métodos. Sempre devemos expor o mínimo possível de funcionalidades e

atributos, para criar um baixo acoplamento entre as classes. Para definir esse

nível/controle de acesso usamos os modificadores de acesso. Níveis de acesso

são conhecidos por public/público, private/privado, protected/protegido e

default/padrão. O princípio do encapsulamento diz que os atributos devem ser

privados e só devem ser acessados/modificados externamente por meio de

métodos públicos.

Gabarito: Letra B.

Esquema 8 - Tabela dos modificadores e níveis de acesso

Page 35: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 35 de 109

www.exponencialconcursos.com.br

3.2 Sobrecarga e Sobrescrita

Já comentamos na seção de polimorfismo sobre sobrecarga

(overloading) e sobrescrita (overriding), já que esses conceitos estão

intimamente relacionados com polimorfismo. A sobrescrita, por sua vez,

também está relacionada com a herança, pois, quando uma subclasse

herda um método da superclasse, essa subclasse pode alterar o

comportamento desse método, em outras palavras, pode reescrever

(sobrescrever, override) esse método. No caso, a subclasse reimplementa

o método herdado declarando a mesma assinatura, mas implementando-o de

maneira diversa, mais específica.

Já a sobrecarga de método ocorre quando métodos tem o mesmo

nome, desde que não sejam ambíguos, isto é, que exista uma maneira de

distinguir no momento da chamada. Essa distinção é feita pela quantidade

e/ou tipos de parâmetros dos métodos. A seguir temos um exemplo de

sobrecarga de método em Java. Repare que temos três métodos com o

mesmo nome, calcula(), mas como os tipos de parâmetros são diferentes,

o compilador saberá identificar qual o método correto a ser executado

dependendo do tipo do valor passado como argumento. Essa identificação é

feita em tempo de compilação, ao contrário da sobrescrita de método, na

qual a identificação do método correto a ser executado é feita em tempo de

execução.

EXEMPLO

Foi utilizada a sobrecarga de método no método ―calcula‖ da classe

Soma, pois há três métodos com o mesmo nome, ―calcula‖, mas parâmetros

diferentes. No caso, os tipos são diferentes, mas também poderia ser a

quantidade.

public class Soma {

public int calcula( int a, int b ){

return a+b;

}

public double calcula( double a, double b ){

return a+b;

}

public String calcula( String a, String b ){

return a+b;

}

}

Page 36: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 36 de 109

www.exponencialconcursos.com.br

Esquema 9 - Diferença entre sobrecarga e sobrescrita

Overriding

Subclasse reescreve/redefine um método da superclasse

Mesmo nome, mesma assinatura

Binding/ligação em tempo de execução

Overloading

Mesma classe define mais de um método de mesmo nome, mas tipo/quantidade de parâmetros diferente

Mesmo nome, assinaturas diferentes

Binding/ligação em tempo de compilação

So

brescrit

a

So

brecarg

a

Page 37: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 37 de 109

www.exponencialconcursos.com.br

10- (FCC - 2017 - TRF - 5ª REGIÃO - Analista

Judiciário - Informática Desenvolvimento) Na programação orientada a

objetos são utilizados classes e métodos. Um método

a) com determinado nome não pode aparecer mais de uma vez na mesma

classe, mesmo que receba parâmetros de tipos diferentes.

b) em uma superclasse pode ser sobrescrito nas subclasses de uma relação de

herança.

c) em Java pode receber diversos parâmetros e ter diversas operações de

retorno consecutivas de tipos diferentes.

d) deve ter assinatura e corpo quando aparecer em uma interface Java e deve

ser público.

e) construtor em uma classe Java pode ser sobrecarregado, desde que tenha

um tipo de retorno diferente de void.

Resolução:

Vamos analisar cada uma das alternativas.

a) Incorreto: com determinado nome não pode pode aparecer mais de uma

vez na mesma classe, mesmo que desde que receba parâmetros de tipos

diferentes. A sobrecarga (overloading) é o mecanismo que permite isso.

b) Correto: em uma superclasse pode ser sobrescrito nas subclasses de uma

relação de herança. Foi descrito corretamente o mecanismo de sobrescrita

(overriding) de método.

c) Incorreto: em Java pode receber diversos parâmetros e ter diversas

operações de retorno consecutivas de tipos diferentes. Os métodos em Java

ou não retornam nada (void) ou retornam um único tipo de retorno.

d) Incorreto: deve ter assinatura e corpo quando aparecer em uma interface

Java e deve ser público. As interfaces definem apenas a assinatura dos

métodos, sem implementá-los.

e) Incorreto: construtor em uma classe Java pode ser sobrecarregado, desde

que tenha um tipo de retorno diferente de void. Métodos construtores não

possuem tipo de retorno. Eles são sobrecarregados diferenciando a quantidade

e/ou tipo dos parâmetros.

Gabarito: Letra B.

Page 38: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 38 de 109

www.exponencialconcursos.com.br

3.3 Classe Abstrata

Às vezes precisamos usar uma classe com apenas um intuito:

economizar código e ganhar polimorfismo para criar métodos mais genéricos,

via herança e sobrescrita, que se encaixem a diversos objetos, mas sem

precisar de instâncias dessa classe. Às vezes não faz sentido ter um objeto

daquele tipo, apesar da classe existir. Imagine, por exemplo, a classe Pessoa e

duas filhas, PessoaFisica e PessoaJuridica. Geralmente, queremos que cada

pessoa no nosso sistema seja ou uma PessoaFisica ou uma PessoaJuridica. A

classe Pessoa, nesse caso, estaria sendo usada apenas para ganhar o

polimorfismo e agrupar atributos e métodos comuns às classes PessoaFisica e

PessoaJuridica. Assim, não faz sentido permitir instanciar a classe Pessoa,

apenas.

Para resolver esses problemas, temos as classes abstratas. A classe

abstrata apenas idealiza um tipo, define apenas um rascunho. Em Java,

por exemplo, usamos a palavra chave abstract para impedir que uma classe

possa ser instanciada, ou seja, declaramos essa classe como abstrata. Você

pode estar se perguntando: para que serve uma classe que não pode ser

instanciada? Serve para o polimorfismo e herança dos atributos e

métodos, que são poderosos recursos da POO, e serve também para não

podermos instanciar um objeto do tipo da classe abstrata, dando mais

consistência ao sistema. Importante ressaltar que a decisão de transformar

uma determinada classe em uma classe abstrata depende do domínio do

sistema, de sua necessidade. No exemplo dado anteriormente, pode ser que

em outro domínio faça sentido poder instanciar a classe Pessoa, nesse caso

ela não deveria ser declarada como abstrata. Nesse caso, dizemos que a

classe Pessoa é concreta, ou seja, não é abstrata.

Adicionalmente, diz-se que uma classe abstrata define um modelo

contendo implementação incompleta, isto é, funcionalidades genéricas a

serem implementadas pelas suas classes derivadas. Em uma classe

abstrata, podemos especificar que determinado método será sempre

escrito pelas classes filhas. Esse método é chamado de método abstrato,

cabeçalhos de método (assinatura) sem um corpo de comandos

definidos. Ele indica que todas as classes filhas (concretas) devem reescrever

esse método ou um erro de compilação ocorrerá. Assim, você obriga as

classes filhas a implementarem esse método, sobrescrevendo-o (overriding).

No nosso exemplo, qualquer classe que estender a classe Pessoa será

obrigada a reescrever seus métodos abstratos, tornando-os ―concretos‖. Por

sua vez, se uma classe possui um método abstrato, isso obriga a classe em

que ele se encontra a ser abstrata.

A essa altura da aula, você já deve ter percebido que os conceitos de

herança, polimorfismo, sobrescrita de método (overriding) e classe

abstrata estão bastante entrelaçados, sendo difícil explicar/entender um

sem explicar/entender o outro. Porém, não se desespere, pois apenas sabendo

Page 39: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 39 de 109

www.exponencialconcursos.com.br

as palavras-chave de cada um desses conceitos isoladamente já será

suficiente para acertar a maioria das questões. Com o tempo, você irá

compreender melhor a relação entre os conceitos e, assim, acertará as

questões com ainda mais segurança.

Classe Abstrata

Apenas idealiza um tipo, define apenas um rascunho

Define um modelo

incompleto, com funcionalidades

genérias a serem implementadas pelas classes

filhas

Serve para obter

polimorfismo e possibilitar herança dos

seus atributos e métodos

Não permite instanciar objetos

diretamente

Oposto das classe

concretas

Pode especificar um

ou mais métodos

abstratos: aquele sem

corpo, apenas assinatura

Esquema 10 - Classe Abstrata

Page 40: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 40 de 109

www.exponencialconcursos.com.br

11- (CESPE - 2015 - TRE-GO - Técnico Judiciário -

Programação de Sistemas) Julgue os item subsequente à luz do paradigma

de orientação a objetos.

Uma classe abstrata possui instâncias diretas, bem como suas classes

descendentes.

Resolução:

Uma classe abstrata possui não possui instâncias diretas. A principal

característica das classes abstratas é justamente não poder ser instanciada,

ou seja, não possuir instâncias diretas. Sobre a segunda parte da questão,

―bem como suas classes descendentes‖, não podemos afirmar

categoricamente que está certo ou errado, pois elas poderiam ou não possuir

instâncias diretas, a depender de elas serem concretas (mais comum) ou

também abstratas.

Gabarito: Errado.

Page 41: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 41 de 109

www.exponencialconcursos.com.br

3.4 Coesão e Acoplamento

Coesão e Acoplamento são princípios de engenharia de software

muito utilizados. Esses conceitos são independentes de paradigma de

programação, mas são comumente cobrados em questões associados à POO e

serão explicados com foco nesse paradigma. Ademais, os dois conceitos,

apesar de diferentes, estão intimamente relacionados.

Bem, quando queremos ter uma arquitetura de software madura e

sustentável, temos que levar em conta alguns princípios, pois eles têm um

propósito específico que visa melhorar o design do software, o que, por sua

vez, melhora a legibilidade e manutenibilidade. Dois desses princípios são

Coesão e Acoplamento.

Coesão está relacionada ao princípio da responsabilidade única, o

qual afirma que uma classe deve ter apenas uma única responsabilidade

e realizá-la de maneira satisfatória, em outras palavras, uma classe não

deve assumir responsabilidades que não são suas. A não observância

desse princípio leva a dificuldades de manutenção e de reuso. Em outras

palavras, pode-se definir coesão de um sistema de software como a relação

existente entre as responsabilidades de uma determinada classe e de

cada um de seus métodos. Uma classe altamente coesa tem

responsabilidades e propósitos claros e bem definidos, enquanto uma classe

com baixa coesão tem muitas responsabilidades diferentes e pouco

relacionadas. Uma classe deve ser responsável por exercer uma única

responsabilidade e fazer outras classes cooperarem quando necessário.

Classes coesas são aquelas de relação forte entre seus membros (atributos e

métodos), na qual seus membros estão intimamente ligados e estão ali por

um objetivo comum. Membros que não são absolutamente necessários para

aquela classe não devem estar presentes em classes coesas. Classes

(altamente) coesas são aqueles que possuem poucas responsabilidades.

Desta forma, a manutenção é mais simples e evitam-se efeitos

colaterais. Fica mais fácil alterar uma parte da aplicação sem afetar outras

partes. É importante tirar funcionalidades supérfluas de uma classe e

transferir para outra. Algo sem coesão é algo confuso, incoerente.

Exemplo clássico de baixa coesão é uma classe cuidando das regras de

negócio, persistência de dados e interação com usuário.

Acoplamento é o grau de dependência entre duas classes, ou

seja, o quanto uma classe depende da outra para funcionar. Quanto

maior for esta dependência entre as classes, mais elas estão fortemente

acopladas. De forma inversa, há baixo acoplamento quando uma classe tem

pouco ou nada de dependência em relação à outra. O forte acoplamento

também nos traz muitos problemas, alguns até semelhantes aos

problemas da baixa coesão. O forte acoplamento torna muito custoso a

manutenção e o seu gerenciamento, pois uma mudança pode afetar toda a

cadeia de classes fortemente acopladas. Um exemplo corriqueiro de alto

Page 42: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 42 de 109

www.exponencialconcursos.com.br

acoplamento é a herança, pois a subclasse não consegue existir sem a

superclasse, ou seja, elas possuem um alto grau de dependência, de

acoplamento. Isso não significa que se deve deixar de usar herança, mas

devemos utilizá-la com maior moderação, sempre analisando se é realmente

necessário esse alto grau de acoplamento.

O ideal, para que um sistema seja flexível, manutenível e

compreensível, são classes com alta coesão e baixo acoplamento. Nem

sempre é possível e fácil, mas devemos buscar isso ao modelar nosso sistema,

pois trará benefícios, como baixo impacto nas manutenções e melhor

gerenciamento de mudanças no negócio.

É a relação existente entre as responsabilidades de uma determinada classe e de seus métodos

Uma classe não deve assumir responsabilidade que não são suas

Deve-se buscar uma alta coesão

É o grau de dependência entre duas classes

Representa o quanto uma classe depende de outra(s) para funcionar

Deve-se buscar um baixo acoplamento

Coesão

Acopla

mento

Esquema 11 - Coesão e Acoplamento

Page 43: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 43 de 109

www.exponencialconcursos.com.br

12- (FCC - 2010 - TRT - 20ª REGIÃO (SE) - Analista

Judiciário - Tecnologia da Informação) No desenvolvimento de sistemas,

no âmbito das relações intermodulares entre as classes, diz-se que o

programa está bem estruturado quando há

a) maior coesão e maior acoplamento.

b) menor coesão e maior acoplamento.

c) menor coesão e menor acoplamento.

d) maior coesão e menor acoplamento.

e) apenas coesão ou apenas acoplamento.

Resolução:

Coesão é a relação existente entre as responsabilidades de uma determinada

classe e de seus métodos. Uma classe não deve assumir responsabilidade que

não são suas. Deve-se buscar uma alta coesão.

Já o acoplamento é o grau de dependência entre duas classes. Representa o

quanto uma classe depende de outra(s) para funcionar. Deve-se buscar um

baixo acoplamento.

Gabarito: Letra D.

Page 44: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 44 de 109

www.exponencialconcursos.com.br

3.5 Interface

Primeiramente, é importante ressaltar que o termo interface tem

duas acepções na POO. A primeira acepção é: conjunto de métodos

públicos de uma classe. É por meio da interface da classe que se comunica

com os objetos dessa classe. Deve-se programar pensando na interface da

sua classe, ou seja, em como seus usuários a utilizarão, e não somente em

como ela vai funcionar. Isso se deve ao fato da implementação em si (o

conteúdo dos métodos) não ter tanta importância para o usuário dessa classe,

uma vez que ele só precisa saber o que cada método pretende fazer, e não

como ele faz, pois isto pode mudar com o tempo. Sempre que vamos

acessar um objeto, utilizamos sua interface. É na interface (ou

protocolo) da classe que definimos quais mensagens podemos enviar às

instâncias de uma classe, ou seja, quais são as operações que podemos

solicitar que os objetos realizem.

Para simplificar, vamos fazer uma analogia com o mundo real: para

dirigirmos um carro, o que mais importa é a interface do carro (pedais,

volante, etc.), e não sua implementação (funcionamento do moto, etc.).

Podemos trocar o motor do carro sem precisar ter que reaprender a dirigir.

Analogamente, podemos alterar a implementação de um método sem

alterar sua interface, fazendo com que as classes que o utilizam continuem

usando ele da mesma maneira.

A segunda acepção do termo interface na POO refere-se à forma

de garantir a existência de implementação de determinado método em

determinada(s) classe(s). Nessa acepção, por meio de uma interface,

podemos criar um “contrato” que define tudo o que uma classe deve

fazer se quiser ter um determinado status, uma determinada

qualidade. A interface é um contrato no qual quem assina se responsabiliza

por implementar os métodos da interface (cumprir o contrato). Uma

interface pode definir uma série de métodos, mas nunca conter a

implementação deles. Ela só expõe o que o objeto deve fazer, e não como

ele faz, nem o que ele tem. Como ele faz vai ser definido em uma

implementação dessa interface, ou seja, nas classes que ―assinarem‖ esse

―contrato‖, que implementarem essa interface. Quando uma classe

implementa uma interface, ela precisa escrever os métodos pedidos pela

interface. É muito parecido com o efeito de herdar métodos abstratos. Mas

qual o benefício? Com o uso de interfaces, ganhamos mais polimorfismo!

Lembremos que a maneira como os objetos se comunicam num sistema

orientado a objetos é muito mais importante do que como eles executam. O

que um objeto faz é mais importante do que como ele faz. Seguir essa regra

trará sistemas mais fáceis de manter e modificar. E o objetivo do uso de uma

interface é justamente deixar seu código mais flexível e possibilitar a

mudança de implementação sem maiores traumas. Inclusive, o uso de

interfaces em vez de herança é amplamente aconselhado. Foi daí que surgiu

o mantra ―programe orientado a interface e não à implementação‖.

Page 45: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 45 de 109

www.exponencialconcursos.com.br

EXEMPLO

Imagine um sistema bancário, no qual várias entidades desse sistema

(ContaCorrente, SeguroDeVida, etc.) são tributadas pelo governo e o sistema

precisa calcular o valor desse tributo, que é calculado de forma diferente para

cada entidade. A maneira mais flexível de modelar esse cenário num sistema

orientado a objetos é criando, por exemplo, uma interface Tributavel, a qual

possui uma assinatura de método ―double calcularTributos()‖. Dessa forma,

todas as classes desse sistema que precisarem calcular o valor de seus

tributos, poderiam ―assinar‖ essa interface, assim elas seriam obrigadas a

implementar o método ―calcularTributos()‖ e o sistema poderia tratar essas

classes de forma homogênea quando, por exemplo, precisasse implementar

um relatório que listasse o total de tributos pago. Com isso, caso surgisse uma

nova classe no sistema que envolvesse outra forma de calcular tributos,

bastaria ela implementar a interface Tributavel e o código do relatório não

precisaria ser alterado. A figura abaixo traz esse exemplo em UML.

Page 46: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 46 de 109

www.exponencialconcursos.com.br

Interface

Pode também significar o conjunto de

métodos públicos de uma classe

Garante a existência de

implementação de

determinado(s) método(s) em determinada(s)

classe(s).

Cria-se um "contrato" para que uma classe

adquira determinado

status, qualidade

Pode definir uma série de

métodos, mas nunca conter a implementação

deles

Objetiva flexibilizar o

código e possibilitar

mudança de implementação

com baixo impacto

Esquema 12 - Interface

Page 47: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 47 de 109

www.exponencialconcursos.com.br

13- (FCC - 2013 - MPE-CE - Analista Ministerial -

Ciências da Computação) Em uma aplicação desenvolvida por uma equipe

de TI deseja-se:

Caso 1: obrigar um conjunto de classes a implementar um conjunto de

métodos para se obter um padrão. A ideia é centralizar um conjunto de

assinaturas de métodos em um componente para que um conjunto de classes

possa implementá-los da maneira como lhes convier.

Caso 2: centralizar os atributos e métodos comuns a um conjunto de classes

em uma única classe, de forma que esse conjunto de classes especializadas se

comporte como se tivessem em seu código fonte esses atributos e métodos

comuns.

Os principais conceitos da orientação a objetos que devem ser utilizados para

atender os Casos 1 e 2 são, respectivamente,

a) sobrecarga de métodos e sobrescrita de métodos.

b) pacote e generalização.

c) interface e herança.

d) generalização e especialização.

e) encapsulamento e herança.

Resolução:

Na POO, uma interface pode definir a assinatura de uma série de métodos,

mas nunca conter a implementação deles. Assim, as classes que

implementarem essa interface, serão obrigadas a implementar esses métodos.

O Caso 1 fala de ―centralizar um conjunto de assinaturas de métodos em um

componente‖ e esse componente é justamente a interface.

Já a herança, na POO, permite que uma classe herde atributos e

comportamentos de outra classe, o que cria uma relação de classe mãe/filha,

ou generalização/especialização. O Caso 2 fala ―centralizar os atributos e

métodos comuns (...) em uma única classe (...) classes especializadas‖. Daí

podemos extrair os conceitos de herança. A classe centralizadora será a

classe mãe e as classes especializadas serão as classes filhas.

Gabarito: Letra C.

Page 48: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 48 de 109

www.exponencialconcursos.com.br

4. QUESTÕES COMENTADAS

Programação Orientada a Objetos

14- (FCC - 2018 - DPE-AM - Assistente Técnico de Defensoria -

Programador) O paradigma de programação Orientada a Objetos − OO

utiliza, como um de seus componentes essenciais, a classe. Uma classe, em

conformidade com os melhores padrões da OO,

a) deve ter alta coesão, que implica em ter um conjunto limitado de

responsabilidades, e baixo acoplamento, que implica em ter baixa dependência

de outros componentes.

b) deve ser completa, portanto, quanto mais atributos os métodos da classe

tiver em comum com outros métodos, mais completa ela se torna.

c) deve manter o número de colaborações com outras classes, por meio de

seus objetos, o mais alto possível para facilitar os testes.

d) que possui muitos métodos contribui para diminuir a complexidade da

árvore de herança, aumentando seu potencial de reutilização.

e) que possui métodos é chamada de superclasse e uma classe que não possui

métodos é chamada de subclasse.

Resolução:

Vamos analisar cada uma das alternativas.

a) Correto: um dos principais ―mantras‖ da POO é justamente esse: classes

devem ter alta coesão e baixo acoplamento. Além disso, o item trouxe

corretamente a definição desses conceitos.

b) Incorreto: deve ser completa, portanto, quanto mais atributos os métodos

da classe tiver em comum com outros métodos, mais completa ela se torna.

Primeiramente, não há uma definição do que seria uma ―classe completa‖.

Além do mais, muitos atributos em comum nos métodos da classe indica baixa

coesão.

c) Incorreto: deve manter o número de colaborações com outras classes, por

meio de seus objetos, o mais alto baixo possível para facilitar os testes. A boa

prática diz que a classe deve ter baixo acoplamento, o que significa ter um

número baixo de colaborações com outras classes.

d) Incorreto: que possui muitos métodos contribui para diminuir aumentar a

complexidade da árvore de herança, aumentando diminuindo seu potencial de

reutilização. Uma classe com muitos métodos tem baixa coesão, o que

aumenta a complexidade e diminui a reutilização.

e) Incorreto: numa relação de herança, que possui métodos uma classe mãe

é chamada de superclasse e uma classe filha (ou derivada) que não possui

métodos é chamada de subclasse. Não há nenhuma nomenclatura especial

para classes que possuem (ou não) métodos.

Page 49: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 49 de 109

www.exponencialconcursos.com.br

Gabarito: Letra A.

15- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico -

Analista de Sistemas) Na orientação a objetos o entendimento dos conceitos

é fundamental para se explorar ao máximo os recursos disponibilizados neste

paradigma de programação. Um destes conceitos é o de

a) sobrecarga de construtores, que pode ocorrer na maioria das linguagens de

programação, exceto na linguagem Java.

b) polimorfismo, que ocorre quando não há sobrescrita nem sobrecarga de

métodos nas classes e interfaces da aplicação.

c) sobrescrita de métodos, que ocorre quando há métodos de mesmo nome na

classe, mas que recebem parâmetros diferentes.

d) sobrecarga de métodos, que ocorre quando um método recebe mais

parâmetros do que pode suportar.

e) herança múltipla, que ocorre quando uma subclasse possui duas ou mais

superclasses imediatas.

Resolução:

Vamos analisar cada uma das alternativas.

a) Incorreto: sobrecarga de construtores, que pode ocorrer na maioria das

linguagens de programação, exceto inclusive na linguagem Java.

b) Incorreto: polimorfismo, que ocorre quando não há sobrescrita nem

sobrecarga de métodos nas classes e interfaces da aplicação classes derivadas

de uma mesma superclasse possuem métodos de mesma assinatura, mas

comportamentos diferentes.

c) Incorreto: sobrescrita sobrecarga de métodos, que ocorre quando há

métodos de mesmo nome na classe, mas que recebem parâmetros diferentes.

A sobrescrita ocorre quando uma subclasse reescreve/redefine um método da

superclasse, o qual deve possuir a mesma assinatura.

d) Incorreto: sobrecarga de métodos, que ocorre quando um método recebe

mais parâmetros do que pode suportar há métodos de mesmo nome na

classe, mas que recebem parâmetros diferentes.

e) Correto: herança múltipla, que ocorre quando uma subclasse possui duas

ou mais superclasses imediatas. Já a herança simples ocorre quando uma

classe herda características somente de outra classe de forma imediata.

Gabarito: Letra E.

16- (FCC - 2016 - TRT - 14ª Região (RO e AC) - Técnico Judiciário -

Tecnologia da Informação) São, dentre outros, recursos essenciais em uma

aplicação orientada a objetos para se obter polimorfismo:

Page 50: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 50 de 109

www.exponencialconcursos.com.br

a) Herança e sobrescrita de métodos.

b) Classes estáticas, com métodos protegidos.

c) Interfaces, contendo métodos não abstratos e implementados.

d) Classes abstratas, sem subclasses.

e) Arrays unidimensionais ou multidimensionais.

Resolução:

O polimorfismo pode ser estático (Overloading) ou dinâmico (Overriding).

Quando a questão falar genericamente de polimorfismo, geralmente ela está

tratando do tipo dinâmico. Nesse tipo de polimorfismo, a subclasse

reimplementa (sobrescrita/overriding) o método herdado declarando a mesma

assinatura, mas implementando-o de maneira diversa, mais específica. Isso

permite que classes derivadas de uma mesma superclasse possam invocar

métodos que têm a mesma identificação (assinatura), mas comportamentos

distintos. Assim, notamos que o polimorfismo está intimamente relacionado

com herança e sobrescrita.

Gabarito: Letra A.

17- (FCC - 2016 - TRF - 3ª REGIÃO - Técnico Judiciário - Informática)

A análise e o projeto orientados a objeto modelam um sistema em termos de

objetos, que têm propriedades e comportamentos, e de eventos, que

disparam operações que mudam o estado dos objetos. Considere, abaixo, os

fundamentos da Orientação a Objetos − OO:

I. Ato de empacotar ao mesmo tempo dados e objetos. O objeto esconde seus

dados de outros objetos e permite que os dados sejam acessados por

intermédio de seus próprios métodos. Protege os dados do objeto do uso

arbitrário e não-intencional. Separa a maneira como um objeto se comporta

da maneira como ele é implementado.

II. Refere-se à implementação de um tipo de objeto. Especifica uma estrutura

de dados e as operações permissíveis que se aplicam a cada um de seus

objetos.

III. Pode ser real ou abstrato. Possui informações (dados) e desempenha

ações (funcionalidades). É qualquer coisa, real ou abstrata, a respeito da qual

são armazenados dados e operações.

Os conceitos da OO indicados em I, II e III, são, correta e respectivamente,

a) Herança, Classe, Atributo.

b) Encapsulamento, Método, Objeto.

c) Polimorfismo, Superclasse, Método.

d) Encapsulamento, Classe, Objeto.

Page 51: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 51 de 109

www.exponencialconcursos.com.br

e) Herança, Método, Atributo.

Resolução:

O encapsulamento consiste em esconder os atributos e métodos da classe, ou

seja, esconder os detalhes de implementação. Busca não permitir acesso

direto aos atributos. Além disso, esse conceito também está relacionado com o

ato de agrupar características/atributos e comportamentos/métodos

relacionados em objetos. Dito isso, relacionamos o item (I) com

encapsulamento.

Por fim, devemos lembrar das diferenças entre classe e objeto (abaixo) para

relacionar o item (II) à classe e o item (III) ao objeto.

Gabarito: Letra D.

18- (FCC - 2015 - DPE-RR - Analista de Sistemas) Os dois principais

paradigmas de programação amplamente conhecidos são o paradigma

orientado a objetos e o procedural. Na orientação a objetos,

a) ocorre herança múltipla quando uma superclasse herda características de

mais de uma subclasse.

b) a marca de um produto é considerada uma classe, porém, o preço é

considerado um atributo.

c) uma classe pode conter vários métodos com o mesmo nome, se recebem

parâmetros diferentes.

d) só é permitido um construtor em cada classe, independente da linguagem

de programação utilizada.

e) um método representa uma propriedade da classe, semelhante a um campo

em uma tabela.

Resolução:

Vamos analisar cada uma das alternativas.

Classe

• Descrição de um grupo de objetos com atributos e comportamentos similares

• Padrão/molde/modelo para a construção dos objetos

Objeto

• Possui identidade única, estado (conjunto de valores dos atributos) e comportamento

• É uma instância de uma classe

Page 52: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 52 de 109

www.exponencialconcursos.com.br

a) Incorreto: ocorre herança múltipla quando uma superclasse subclasse

herda características de mais de uma subclasse superclasse. Item

simplesmente inverteu os conceitos.

b) Incorreto: a marca de um produto é considerada uma classe, porém, um

atributo e o preço também é considerado um atributo. Ambos são atributos da

classe produto, pois representam características do produto.

c) Correto: uma classe pode conter vários métodos com o mesmo nome, se

recebem parâmetros diferentes. Isso é possível devido ao conceito de

sobrecarga de métodos.

d) Incorreto: só é permitido um construtor em cada classe, independente da

linguagem de programação utilizada. A sobrecarga de métodos também pode

ser aplicada aos (métodos) construtores.

e) Incorreto: um método atributo representa uma propriedade da classe,

semelhante a um campo em uma tabela. Método representa uma

operação/comportamento da classe.

Gabarito: Letra C.

19- (FCC - 2015 - TRE-PB - Técnico Judiciário - Área Apoio

Especializado - Programação de Sistemas) Na orientação a objetos, no

que se refere à sobrecarga de métodos, um método é considerado

sobrecarregado se

a) tiver nome diferente de outros métodos da mesma classe.

b) for público, estático e receber mais de um parâmetro.

c) tiver o mesmo nome de outro método da mesma classe, mas receber

parâmetros diferentes.

d) tiver, em uma subclasse, o mesmo nome de um método da superclasse.

e) a quantidade de parâmetros que receber excede o limite permitido.

Resolução:

Na sobrecarga (overloading), uma mesma classe define mais de um método de

mesmo nome, mas tipo/quantidade de parâmetros diferente. Ou seja, mesmo

nome, mas assinaturas diferentes. Com isso, já marcamos a (c).

Vejamos o erro dos demais itens:

(a) Pelo contrário, os nomes devem ser iguais.

(b) O nível de acesso (público, privado, etc) não influencia na

sobrecarga.

(c) Certo!

(d) Isso está mais relacionado à sobrescrita de métodos.

(e) O limite de parâmetros suportado pela linguagem não tem relação

direta com a sobrecarga.

Page 53: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 53 de 109

www.exponencialconcursos.com.br

Gabarito: Letra C.

20- (FCC - 2015 - TRE-AP - Técnico Judiciário - Programação de

Sistemas) Na orientação a objetos com Java as classes

a) permitem apenas um construtor, que pode ser declarado explicitamente ou

não.

b) estáticas são necessárias para se conseguir polimorfismo.

c) podem possuir variáveis com modificadores de acesso public, private,

protected e void.

d) precisam possuir um método main por meio do qual são instanciados os

objetos

e) podem possuir métodos com o mesmo nome, desde que recebam

parâmetros de tipos diferentes.

Resolução:

Vamos analisar cada uma das alternativas.

a) Incorreto: permitem apenas um um ou mais construtores, que pode ser

declarado explicitamente ou não.

b) Incorreto: estáticas são não são necessárias para se conseguir

polimorfismo.

c) Incorreto: podem possuir variáveis com modificadores de acesso public,

private, protected e void. Void não é um modificador de acesso, mas sim uma

palavra-chave do Java usada para indicar que um método não possui retorno.

d) Incorreto: precisam possuir um método main construtor por meio do qual

são instanciados os objetos.

e) Correto: podem possuir métodos com o mesmo nome, desde que recebam

parâmetros de tipos diferentes. É possível, pois Java suporta sobrecarga de

métodos.

Gabarito: Letra E.

21- (FCC - 2015 - MPE-PB - Analista de Sistemas – Desenvolvedor)

Apresenta um conceito correto associado à Análise e Projeto Orientado a

Objetos (OO):

a) Atributos, também chamados de métodos ou serviços, fornecem uma

representação de um dos comportamentos da classe.

b) Subclasse é uma especialização da superclasse. Uma subclasse pode herdar

tanto atributos quanto operações de uma superclasse.

Page 54: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 54 de 109

www.exponencialconcursos.com.br

c) Classe abstrata, também chamada de classe bean, é uma generalização de

um conjunto de classes a ela relacionada.

d) Métodos são instâncias de uma classe específica que herdam os atributos e

operações da classe.

e) Objeto é uma descrição generalizada que descreve uma coleção de métodos

semelhantes e encapsula dados e abstrações procedurais necessárias para

descrever alguma classe do mundo real.

Resolução:

Vamos analisar cada uma das alternativas.

a) Incorreto: Atributos Operações, também chamados de métodos ou

serviços, fornecem uma representação de um dos comportamentos da classe.

b) Correto: Subclasse é uma especialização da superclasse. Uma subclasse

pode herdar tanto atributos quanto operações de uma superclasse.

Apresentou corretamente os conceitos-chave da herança.

c) Incorreto: Classe abstrata, também chamada de classe bean, é uma

generalização de um conjunto de classes a ela relacionada. Bean não é

sinônimo de classe abstrata.

d) Incorreto: Métodos Objetos são instâncias de uma classe específica que

herdam os atributos e operações da classe.

e) Incorreto: Objeto Classe é uma descrição generalizada que descreve uma

coleção de métodos semelhantes e encapsula dados e abstrações procedurais

necessárias para descrever alguma classe do mundo real.

Gabarito: Letra B.

22- (FCC - 2015 - TRT - 4ª REGIÃO (RS) - Analista Judiciário -

Tecnologia da Informação) O uso de herança pode otimizar o tempo de

desenvolvimento das aplicações orientadas a objetos devido ao

reaproveitamento de código. Quando se implementa herança

a) uma subclasse pode se tornar uma superclasse a qualquer momento,

bastando para tanto que se derive uma subclasse a partir dela.

b) a superclasse herda os atributos da subclasse, incluindo os atributos

privados, públicos e protegidos.

c) múltipla na linguagem Java versão 6, a subclasse herda características de

mais de uma superclasse.

d) só é possível obter polimorfismo na aplicação se houver sobrecarga de

métodos.

e) os métodos de uma superclasse não podem ser sobrescritos nas subclasses,

porém, podem ser sobrecarregados.

Page 55: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 55 de 109

www.exponencialconcursos.com.br

Resolução:

Vamos analisar cada uma das alternativas.

a) Correto: uma subclasse pode se tornar uma superclasse a qualquer

momento, bastando para tanto que se derive uma subclasse a partir dela.

Correto, pois a herança pode ser aplicada em uma hierarquia de classes. Por

exemplo, a classe Felino herda da classe Animal. Porém, a classe Gato herda

da classe Felino. Assim, a classe Felino é superclasse e subclasse

simultaneamente.

b) Incorreto: a superclasse subclasse herda os atributos da subclasse

superclasse, incluindo os atributos privados, públicos e protegidos.

c) Incorreto: múltipla na linguagem Java versão 6, a subclasse herda

características de mais de uma superclasse. Java não suporta herança

múltipla.

d) Incorreto: só é é possível obter polimorfismo na aplicação se houver

sobrecarga de métodos. Também é possível com a sobrescrita de métodos,

sendo nesse caso do tipo dinâmico.

e) Incorreto: os métodos de uma superclasse não podem ser sobrescritos

sobrecarregados nas subclasses, porém, podem ser sobrecarregados

sobrescritos. A sobrecarga de método ocorre na mesma classe. Já a

sobrescrita ocorre na subclasse.

Gabarito: Letra A.

23- (FCC - 2015 - TRT - 15ª Região (SP) - Analista Judiciário –

Tecnologia da Informação) A herança é uma das características mais

poderosas e importantes da orientação a objetos, pois permite o

reaproveitamento de atributos e métodos. Em aplicações que utilizam

herança,

a) não é possível sobrescrever em uma subclasse, um método de sua

superclasse.

b) cada superclasse pode ter apenas uma subclasse.

c) somente as superclasses poderão ter métodos ou construtores

sobrecarregados.

d) é possível se obter polimorfismo.

e) é possível a implementação de herança múltipla, em todas as linguagens

orientadas a objetos.

Resolução:

Vamos analisar cada uma das alternativas.

a) Incorreto: não é é possível sobrescrever em uma subclasse, um método

de sua superclasse.

Page 56: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 56 de 109

www.exponencialconcursos.com.br

b) Incorreto: cada superclasse pode ter apenas uma uma ou mais

subclasses.

c) Incorreto: somente as superclasses poderão ter métodos ou construtores

sobrecarregados. Qualquer classe pode.

d) Correto: é possível se obter polimorfismo. O polimorfismo dinâmico está

intimamente relacionado à herança e sobrescrita de métodos.

e) Incorreto: é possível a implementação de herança múltipla, em todas as

linguagens orientadas a objetos. Java, por exemplo, não suporta herança

múltipla.

Gabarito: Letra D.

24- (FCC - 2014 - TCE-GO - Analista de Controle Externo - Tecnologia

da Informação) Em aplicações orientadas a objetos é possível construir

diferentes tipos de classes, como

a) classes abstratas, que podem possuir construtores e serem instanciadas

diretamente.

b) interfaces, que podem possuir construtores e serem instanciadas

diretamente.

c) classes abstratas, que podem conter métodos implementados e assinaturas

de métodos sem implementação.

d) interfaces, que podem possuir constantes, variáveis e atributos privados.

e) superclasses em relações de herança, que podem possuir métodos

abstratos, mas não podem ser instanciadas diretamente.

Resolução:

Vamos analisar cada uma das alternativas.

a) Incorreto: classes abstratas, que podem possuir construtores e serem

instanciadas diretamente. Classes abstratas não possuem instâncias diretas.

b) Incorreto: interfaces, que podem possuir construtores e serem

instanciadas diretamente. Interfaces não possuem construtores nem

instâncias diretas.

c) Correto: classes abstratas, que podem conter métodos implementados e

assinaturas de métodos sem implementação. Os métodos sem implementação

são chamados de métodos abstratos. Eles podem ser sobrescritos pelas

classes derivadas.

d) Incorreto: interfaces, que podem possuir constantes, variáveis e atributos

privados. Interfaces não podem possuir membros (atributos e métodos)

privados.

Page 57: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 57 de 109

www.exponencialconcursos.com.br

e) Incorreto: superclasses em relações de herança, que podem possuir

métodos abstratos, mas não podem ser instanciadas diretamente. Se a

superclasse não for abstrata, então ela poderá sim ser instanciada

diretamente.

Gabarito: Letra C.

25- (FCC - 2014 - AL-PE - Analista Legislativo - Sistemas) O modelo de

dados a seguir deve ser utilizado para responder a questão.

Se fosse construída uma aplicação orientada a objetos para implementar o

modelo apresentado, a forma mais correta de construir as classes referentes

às entidades Juridico, Cliente e Fisico, seria utilizando o conceito de;

a) interface, onde a interface Cliente seria implementada pelas classes Físico e

Juridico.

b) polimorfismo, onde todos os objetos das classes Fisico e Juridico seriam

tratados como objetos da classe Cliente.

c) herança, onde Juridico e Físico seriam subclasses da classe Cliente.

d) abstração, onde uma classe abstrata Cliente teria atributos protegidos e

métodos privados que seriam implementados nas interfaces Juridico e Fisico.

Page 58: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 58 de 109

www.exponencialconcursos.com.br

e) encapsulamento, onde as classes Juridico e Fisico seriam encapsuladas na

classe Cliente, de forma que todas agissem como se fosse uma única classe.

Resolução:

Cada uma das tabelas do modelo de dados (Juridico, Cliente e Fisico) deve ser

uma classe no modelo orientado a objetos. Repare que Juridico é um Cliente e

Fisico é um Cliente. Os atributos/campos da tabela Cliente também devem ser

usados nas tabelas Juridico e Fisico (tanto é que elas possuem chaves-

estrangeiras para a tabela Cliente). Da relação ―é um‖ e da extensão dos

atributos/campos da tabela Cliente para as tabelas Juridico e Fisico,

deduzimos que devemos usar a herança.

Cliente não pode ser uma interface, pois ele possui campos, os quais devem

ser mapeados em atributos de uma classe, e interfaces não possuem

atributos. Assim, letra (a) está errada.

Polimorfismo está relacionado com métodos sobrescritos de mesmo nome,

mas implementações diferentes. Assim, (b) está errada.

Um dos erros da (d) é: métodos privados não são herdados,

consequentemente não podem ser sobrescritos pelas subclasses.

Erro da (e): encapsulamento envolve agrupar atributos e métodos em objetos,

e não duas classes numa terceira classe.

Gabarito: Letra C.

26- (FCC - 2013 - MPE-MA - Técnico Ministerial - Tecnologia da

Informação) Uma aplicação possui quatro classes: A, B, C e D. As classes A

e B são subclasses de A. Nas classes A, B e C existem atributos diferentes e

um método chamado verificarSaldo() com a mesma assinatura mas que

executa operações que retornam valores do tipo double, porém, diferentes. A

classe D é a classe principal. No interior do método main da classe D foram

digitadas as seguintes instruções:

A obj = new B();

double v = obj.verificarSaldo();

A obj1 = new C();

double v1 = obj1.verificarSaldo();

Quando essas linhas foram executadas, a variável v recebeu o valor 100.00 e

a variável v1 recebeu o valor 125.00.

Note que tanto obj como obj1 são objetos do tipo A, porém, além de

possuírem atributos diferentes, ao chamar o método verificarSaldo() por

meio desses objetos, o retorno contido nas variáveis v e v1 foi diferente. Isso

mostra um exemplo de

Page 59: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 59 de 109

www.exponencialconcursos.com.br

a) encapsulamento.

b) sobrecarga de métodos.

c) herança múltipla.

d) generalização.

e) polimorfismo.

Resolução:

Há uma pequena imprecisão no enunciado, mas podemos resolver mesmo

assim. O correto seria ―As classes A C e B são subclasses de A‖ conforme

demonstra o exemplo de código do enunciado. Dito isso, vejamos: a

passagem-chave do enunciado que demonstram que foi usado polimorfismo é:

‖um método (...) com a mesma assinatura mas que executa operações (...)

diferentes‖. O trecho de código e o exemplo de valores de retorno apenas

ratifica o que foi dito nessa passagem-chave.

Gabarito: Letra E.

27- (FCC - 2013 - MPE-CE - Analista Ministerial - Ciências da

Computação) Esse conceito refere-se à separação dos aspectos externos de

um objeto, que são acessíveis a outros objetos, dos detalhes internos da

implementação, que estão escondidos de outros objetos. Isso evita que partes

de um programa se tornem tão independentes que uma pequena mudança

tenha grandes efeitos em cascata. Pode-se mudar a implementação de um

objeto sem afetar as aplicações que o utilizam. Pode-se querer mudar a

implementação de um objeto para melhorar o desempenho, reparar um erro,

consolidar código ou dar suporte à portabilidade. Esse conceito não é exclusivo

das linguagens orientadas a objetos, mas a capacidade de combinar estrutura

e comportamento de dados em uma única entidade o torna mais claro e mais

poderoso do que em linguagens como Cobol, Fortran e C.

O conceito citado no texto é conhecido como

a) compartilhamento.

b) generalização.

c) polimorfismo.

d) coleção.

e) encapsulamento.

Resolução:

A parte principal do enunciado é ―refere-se à separação dos aspectos externos

de um objeto, que são acessíveis a outros objetos, dos detalhes internos da

implementação, que estão escondidos de outros objetos‖. Trata-se de

encapsulamento. Ele consiste em esconder os atributos e métodos da classe,

Page 60: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 60 de 109

www.exponencialconcursos.com.br

ou seja, esconder os detalhes de implementação. Busca não permitir acesso

direto aos atributos.

Gabarito: Letra E.

28- (FCC - 2013 - MPE-MA - Analista Ministerial - Análise e

Desenvolvimento de Sistemas) Um dono de uma fábrica de brinquedos

solicitou que seus engenheiros criassem um mesmo controle remoto para os

brinquedos avião, carro e barco. A única restrição era que cada brinquedo

atendesse aos comandos específicos definidos pelo controle. O controle remoto

teria vários botões, sendo que todos eles seriam úteis para todos os

brinquedos. Por exemplo, quando o usuário apertasse o botão mover, o

controle enviaria o sinal MOVER para todos os brinquedos que estivessem em

um raio de 2 metros. Desta forma, quando o brinquedo recebesse o sinal

MOVER, ele se moveria de acordo com a sua função. Para o avião, mover

significa VOAR, para o barco significa NAVEGAR e, para o automóvel, significa

CORRER. Observe que os brinquedos respondem ao mesmo sinal de formas

diferentes.

Na programação orientada a objetos, este exemplo ilustra um caso de

a) Herança.

b) Polimorfismo.

c) Sobrecarga de métodos.

d) Classe abstrata.

e) Hierarquia de herança.

Resolução:

A parte principal do enunciado é ―os brinquedos respondem ao mesmo sinal de

formas diferentes‖. Se associarmos ―sinal‖ com a assinatura do método

MOVER e ―formas diferentes‖ com a implementação desse método em cada

brinquedo (VOAR, NAVEGAR, CORRER), deduzimos a característica do

polimorfismo. Por exemplo, poderia haver a classe Brinquedo que possui o

método MOVER e ela é superclasse das classes Aviao, Carro e Barco. Cada

subclasse iria sobrescrever o método MOVER e implementar as operações

VOAR, CORRER e NAVEGAR, respectivamente. Assim, uma classe Controle

poderia chamar o método MOVER de qualquer objeto instância de uma dessas

três classes e seria executada a operação correta.

Gabarito: Letra B.

29- (FCC - 2013 - AL-RN - Analista Legislativo - Analista de Sistemas)

Um dos conceitos básicos de orientação a objetos é o fato de um objeto, ao

tentar acessar as propriedades de outro objeto, deve sempre fazê-lo por uso

de métodos do objeto ao qual se deseja atribuir ou requisitar uma informação,

Page 61: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 61 de 109

www.exponencialconcursos.com.br

mantendo ambos os objetos isolados. A essa propriedade da orientação a

objetos se dá o nome de

a) herança.

b) abstração.

c) polimorfismo.

d) mensagem.

e) encapsulamento.

Resolução:

O encapsulamento diz que as classes (e, consequentemente, suas

instâncias/objetos) devem esconder seus atributos (genericamente expresso

como ―detalhes de implementação‖). Isso geralmente é feito deixando os

atributos privados e criando métodos públicos que manipulem (acessem e

modifiquem) esses atributos, conforme a necessidade. Assim, um objeto A não

acessa diretamente um atributo de outro objeto B, mas sim usa um método

público desse objeto B, o que ajuda a manter esses objetos isolados.

Gabarito: Letra E.

30- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

O armazenamento de informações referentes às classes de um sistema é feito

em uma metaclasse.

Resolução:

Relacionado ao conceito de classe, há o conceito de metaclasse, que é uma

classe cujas instâncias também são classes e não objetos no sentido

tradicional. Assim como classes definem o comportamento de certos objetos,

metaclasses definem o comportamento de certas classes e suas instâncias.

Nem toda linguagem orientada a objeto suporta metaclasses.

Gabarito: Certo.

31- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

Em um sistema de informação que contenha dados pessoais de clientes de

uma empresa de cartões de créditos, caso sejam criadas classes cliente e

pessoas, então a classe pessoas é uma classe de polimorfismo de sobrecarga.

Resolução:

Page 62: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 62 de 109

www.exponencialconcursos.com.br

Em um sistema de informação que contenha dados pessoais de clientes de

uma empresa de cartões de créditos, caso sejam criadas classes cliente e

pessoas, então a classe pessoas é uma classe de polimorfismo de sobrecarga.

A partir das premissas dadas no item, não podemos inferir que as classes

estão numa relação de herança, mãe-filha. Mesmo supondo que a classe

cliente é uma subclasse de pessoas, o tipo de polimorfismo que se enquadraria

seria o dinâmico, relacionado à sobrescrita, e não à sobrecarga.

Gabarito: Errado.

32- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

Considere que, em um sistema de informações, um objeto possua dados de

uma pessoa, tais como: nome, endereço, data de aniversário e número do

cartão de crédito. Considere, ainda, que esse sistema exponha, de forma

pública, informações sobre o nome e a data de aniversário e deixe os dados do

cartão de crédito protegidos em formato privado. Nesse caso, o sistema estará

usando o recurso de interface.

Resolução:

Nesse caso, o sistema estará usando o recurso de interface encapsulamento,

pois o encapsulamento está relacionado com a ocultação de informação,

o que envolve impedir o acesso direto aos atributos dos objetos.

Gabarito: Errado.

33- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Julgue o item a seguir, relativo a projetos orientados a objeto.

A modelagem orientada a objetos demonstra como os objetos podem ser

classificados, a maneira como herdam atributos e operações, como são

compostos e de que forma interagem entre si.

Resolução:

A questão trouxe corretamente sentenças-chave que estão relacionadas a

conceitos da POO: a modelagem orientada a objetos demonstra como os

objetos podem ser classificados (classe), a maneira como herdam atributos e

operações (herança), como são compostos (atributos e métodos) e de que

forma interagem entre si (troca de mensagens).

Gabarito: Certo.

34- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Julgue o item seguinte, quanto aos conceitos da programação estruturada e

Page 63: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 63 de 109

www.exponencialconcursos.com.br

da programação orientada a objetos e aos métodos de ordenação, pesquisa e

hashing.

Na programação orientada a objetos, uma das características do polimorfismo

é a independência do software que invoca o comportamento polimórfico em

relação aos tipos de objeto para os quais as mensagens são enviadas.

Resolução:

O polimorfismo traz flexibilidade ao código, permitindo uma independência

entre o objeto-cliente e os objetos com comportamento polimórfico, já que o

acoplamento/binding entre o método polimórfico chamado pelo objeto-cliente

e a implementação correta do método a ser executado será feita em tempo de

execução.

Gabarito: Certo.

35- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

Um recurso de grande utilidade nesse tipo de programação consiste na

possibilidade de um objeto exercer o comportamento de outro objeto.

Resolução:

Na POO, a afirmação feita pelo item pode ocorrer de duas formas. Por meio de

herança, já que um objeto da subclasse pode executar um método definido na

superclasse; ou via delegação de responsabilidade, pois um determinado

objeto pode possuir como atributo outro objeto e delegar a execução de

alguma funcionalidade a esse outro objeto em vez desse próprio objeto

determinado implementar a funcionalidade.

Gabarito: Certo.

36- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

O tipo de herança mais eficiente e indicado é a herança de implementação,

pois possibilita que uma nova classe reutilize a implementação de outra classe

sem a necessidade de se recortar e colar o código de forma manual, tornando

o código automaticamente disponível, como parte da nova classe.

Resolução:

Primeiramente, temos que conceituas herança de implementação e

herança de interface. O primeiro se refere a herdar todo o código da

superclasse, não precisando escrever mais código para utilizá-lo, ou seja,

estamos falando de reutilização de código. É a definição geralmente usada

quando se utiliza apenas o termo herança. Já na herança de interface, herda-

se apenas as assinaturas de métodos e propriedades, não herdando código de

Page 64: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 64 de 109

www.exponencialconcursos.com.br

implementação dos métodos, assim devemos escrever o código das

assinaturas de métodos herdadas. O item peca ao dizer que a herança de

implementação (extends, em Java) é o tipo mais eficiente, pois a herança de

interface (implements, em Java) é mais aconselhada, já que ela diminui o

acoplamento entre as classes.

Gabarito: Errado.

37- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

O encapsulamento permite que um programa seja dividido em várias partes

menores; contudo, as partes tornam-se dependentes umas das outras em

relação à implementação e em relação ao trabalho realizado.

Resolução:

O encapsulamento permite que um programa seja dividido em várias partes

menores; contudo, as partes tornam-se dependentes independentes umas das

outras em relação à implementação e em relação ao trabalho realizado. O

encapsulamento, ao esconder os detalhes da implementação de um

objeto, traz como benefício a possibilidade de mudança da implementação do

objeto (para corrigir erros, aumentar performance, etc.) sem que seja

necessário modificar o código do cliente.

Gabarito: Errado.

38- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

O estado interno de um objeto pode ser alterado por meio de métodos

assessores.

Resolução:

Os métodos podem ser classificados em dois tipos. Os métodos acessores (ou

assessores, há divergência quanto a escrita correta) são usados para leitura

de atributos, ou seja, eles dão acesso aos dados internos de um objeto. São

os chamados métodos getters em Java. Os métodos mutantes são usados

para escrita de atributos, ou seja, eles podem modificar o estado interno de

um objeto. São os chamados métodos setters em Java. Assim, o correto seria:

o estado interno de um objeto pode ser alterado por meio de métodos

assessores mutantes.

Gabarito: Errado.

Page 65: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 65 de 109

www.exponencialconcursos.com.br

39- (CESPE - 2017 - SEDF - Professor de Educação Básica -

Informática) A respeito das características da programação orientada a

objetos, julgue o item subsequente.

Com a utilização do conceito de polimorfismo, sempre que uma nova

funcionalidade for criada ou modificada, a aplicação deve ser compilada.

Resolução:

O polimorfismo pode ser estático (Overloading) ou dinâmico (Overriding).

Quando a questão falar genericamente de polimorfismo, geralmente ela está

tratando do tipo dinâmico. Nesse tipo, a ligação/binding entre o método

chamado e a implementação a ser executada é feita em tempo de execução.

Assim, se uma nova implementação polimórfica surgir, a classe que a usa não

precisará ser recompilada, já que a ligação/binding não é em tempo de

compilação. Porém, da forma que o Cespe escreveu, dá a entender que

nenhuma classe da aplicação precisaria ser (re)compilada ao ciar/modificar

uma funcionalidade, o que é contra intuitivo. Assim, creio que o erro da

questão é dizer que sempre terá que compilar, quando na verdade a classe

que utiliza o método polimórfico não precisa ser recompilada.

Gabarito: Errado.

40- (CESPE - 2017 - SEDF - Professor de Educação Básica -

Informática) A respeito das características da programação orientada a

objetos, julgue o item subsequente.

No encapsulamento com acesso protegido aos métodos, o acesso se restringe

apenas à própria classe e suas subclasses.

Resolução:

Em UML e POO (independentemente de linguagem), há uma pequena

diferença com relação a tabela acima, que se aplica ao Java: no protected

(protegido), não há acesso às classes no mesmo pacote, apenas à própria

classe e às subclasses.

Gabarito: Certo.

Page 66: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 66 de 109

www.exponencialconcursos.com.br

41- (CESPE - 2017 - TRE-TO - Técnico Judiciário - Programação de

Sistemas) Na orientação a objetos, a alteração do comportamento dos

métodos herdados das superclasses para um comportamento mais específico

nas subclasses, de forma a se criar um novo método na classe filha que

contém a mesma assinatura e o mesmo tipo de retorno, relaciona-se a

a) sobrecarga.

b) overloading.

c) portabilidade.

d) abstração.

e) sobrescrita.

Resolução:

A sobrescrita está relacionada com a herança e ocorre quando uma

subclasse herda um método da superclasse e essa subclasse altera o

comportamento desse método, em outras palavras, reescreve

(sobrescreve, override) esse método. No caso, a subclasse reimplementa

o método herdado declarando a mesma assinatura, mas implementando-o de

maneira diversa, mais específica.

Gabarito: Letra E.

42- (CESPE - 2017 - TRE-TO - Técnico Judiciário - Programação de

Sistemas) Assinale a opção que apresenta o mecanismo a partir do qual os

detalhes da implementação dos métodos de uma classe são ocultos dos

usuários da classe.

a) herança múltipla

b) especialização

c) herança simples

d) classe abstrata

e) encapsulamento

Resolução:

Encapsulamento é o mecanismo das linguagens OO que permite encapsular,

isto é, esconder os atributos de uma classe, além de esconder como

funcionam as rotinas (no caso, métodos) do nosso sistema. Está

relacionado com a ocultação de informação, o que envolve impedir o

acesso direto aos atributos dos objetos e também esconder os detalhes

de implementação dos métodos.

Gabarito: Letra E.

Page 67: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 67 de 109

www.exponencialconcursos.com.br

43- (CESPE - 2017 - TRT - 7ª Região (CE) - Analista Judiciário -

Tecnologia da Informação) Acerca de orientação a objetos, assinale a

opção correta.

a) Os desenvolvedores de um sistema devem ter como objetivo a construção

de classes com baixa coesão e alto acoplamento.

b) O polimorfismo caracteriza-se pela possibilidade de vários métodos terem o

mesmo nome, porém com assinaturas diferentes.

c) Membros de dados podem ser acessados diretamente, mas somente podem

ser alterados por meio de métodos específicos.

d) Na agregação, diversos objetos distintos são reunidos para compor um

novo objeto.

Resolução:

a) Incorreto: Os desenvolvedores de um sistema devem ter como objetivo a

construção de classes com baixa alta coesão e alto baixo acoplamento.

b) Incorreto: O polimorfismo A sobrecarga (overloading) caracteriza-se pela

possibilidade de vários métodos terem o mesmo nome, porém com

assinaturas diferentes. Apesar de sobrecarga ser um tipo de polimorfismo,

geralmente as bancas, quando citam apenas a palavra polimorfismo, estão se

referindo ao polimorfismo relacionado à sobrescrita e herança, o tipo mais

comum. Nesse tipo de polimorfismo, os métodos sobrescritos têm a mesma

assinatura, mas comportamentos diferentes.

c) Incorreto: Segundo o princípio do encapsulamento, membros de dados

(atributos) não podem ser acessados diretamente.

d) Correto: Uma Associação descreve um vínculo que ocorre entre objetos.

A Agregação é um tipo especial de associação que especifica que as

informações de um objeto (chamado objeto-todo) precisam ser

complementadas pelas informações contidas em um ou mais objetos de outra

classe (chamados objetos-parte), ou seja, cria uma relação todo/parte. O

objeto-pai poderá usar as informações do objeto agregado. Assim, um objeto

poderá agregar uma ou mais instâncias de outro objeto. Existe também a

Composição, uma variação da agregação. Ela também representa uma

relação todo/parte. No entanto, na composição o objeto-pai (todo) é

responsável por criar e destruir suas partes e um objeto-parte deve possuir

um, e somente um, objeto-pai.

Gabarito: Letra D.

44- (CESPE - 2017 - TRT - 7ª Região (CE) - Analista Judiciário -

Tecnologia da Informação)

Page 68: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 68 de 109

www.exponencialconcursos.com.br

No trecho de código apresentado, está em uso o conceito de orientação a

objeto do tipo

a) polimorfismo.

b) interface.

c) associação.

d) herança.

Resolução:

Apesar de a questão trazer um exemplo numa linguagem específica (no caso,

C#), podemos resolvê-la apenas com os conhecimentos básicos de linguagens

de programação e POO. Repare que foi criada uma classe Bicho e, em seguida,

associada à classe Bixo, foi criada a classe Gato. Notamos que um Gato é um

Bicho, ou seja, um Gato possui/herda as características comuns a todos os

bixos. Portanto, trata-se do conceito de herança.

Gabarito: Letra D.

45- (CESPE - 2016 - TCE-PR - Analista de Controle - Tecnologia da

Informação) Em se tratando de orientação a objetos, o polimorfismo refere-

se

a) ao reconhecimento do comportamento variado de um método, o que

melhora o aproveitamento do código.

b) à transmissão dos métodos e atributos de uma classe para suas subclasses,

quando ad hoc.

c) à variação das saídas de um método com relação às entradas recebidas,

caso em que é considerado universal.

d) ao uso que um objeto faz dos recursos de outro objeto.

Page 69: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 69 de 109

www.exponencialconcursos.com.br

e) à utilização de métodos específicos para manipular dados com proteção por

meio de encapsulamento.

Resolução:

a) Correto: como a questão falou de polimorfismo de forma genérica, então

se trata do tipo que está associado à sobrescrita (overriding) e herança, o qual

permite que classes derivadas de uma mesma superclasse possam invocar

métodos que têm a mesma identificação (assinatura), mas comportamentos

distintos, o que melhora o aproveitamento do código.

b) Incorreto: misturou o conceito de herança (transmissão dos métodos e

atributos de uma classe para suas subclasses) com um tipo de polimorfismo

(ad hoc).

c) Incorreto: está relacionado ao conceito de sobrecarga (overloading), pois

dependendo dos tipos/quantidades das entradas/parâmetros de um método, a

implementação a ser executada será diferente e, consequentemente, a saída

também variará.

d) Incorreto: está relacionado à associação (agregação e composição) e troca

de mensagens.

e) Incorreto: esse item citou uma das diretrizes que o encapsulamento

prega, qual seja, permitir a modificação/manipulação de atributos/dados via

métodos específicos, e não diretamente.

Gabarito: Letra A.

46- (CESPE - 2016 - FUB - Técnico de Tecnologia da Informação) A

respeito dos conceitos de análise orientada a objetos em engenharia de

software, julgue o seguinte item.

O conjunto de valores das características de determinado objeto é

denominado estado.

Resolução:

Objeto é algo que possui uma identidade única, um estado e comportamento.

O estado normalmente é implementado por meio de seu conjunto de

propriedades (denominados atributos), com os valores das propriedades, mais

as ligações que o objeto pode ter com outros objetos. Em suma, estado é o

conjunto de valores dos atributos do objeto em determinado instante.

Gabarito: Certo.

47- (CESPE - 2016 - FUB - Técnico de Tecnologia da Informação) A

respeito dos conceitos de análise orientada a objetos em engenharia de

software, julgue o seguinte item.

Page 70: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 70 de 109

www.exponencialconcursos.com.br

Denomina-se polimorfismo o fato de duas ou mais classes de superclasses

diferentes possuírem um método com a mesma assinatura, mas com

comportamentos diferentes.

Resolução:

A questão estaria correta se não fosse por um detalhe: as classes que

possuem o método com a mesma assinatura devem herdar da mesma

superclasse, e não de superclasses diferentes. Assim, o correto seria:

denomina-se polimorfismo o fato de duas ou mais classes de superclasses

diferentes da mesma superclasse possuírem um método com a mesma

assinatura, mas com comportamentos diferentes.

Gabarito: Errado.

48- (CESPE - 2016 - TCE-PA - Auditor de Controle Externo - Área

Informática - Analista de Sistema) A propósito de análise e projeto

orientados a objetos, julgue o item subsequente.

Objetos são componentes reusáveis, pois encapsulam um conjunto de

atributos e operações que fornecem serviços a outros objetos.

Resolução:

Um objeto é algo que possui uma identidade única, um estado (formado pelo

conjunto de valores dos seus atributos) e comportamento (operações,

métodos, os quais são utilizados por outros objetos, por meio de troca de

mensagens, para interagirem).

Gabarito: Certo.

49- (CESPE - 2015 - TRE-RS - Analista Judiciário - Análise de

Sistemas) Considere três classes: Prova, Questão e PerguntaSimples. A

classe Prova tem os atributos Data e Assunto, além do método criar(..). A

classe Questão tem os atributos NúmeroDaQuestão e Pergunta, além do

método asssociarÀprova(..). A classe PerguntaSimples tem os atributos

RespostaCerta e Referência, além do método corrigir(..). De acordo com essa

descrição, é possível identificar entre as classes Prova e Questão e entre as

classes Questão e PerguntaSimples, respectivamente, os seguintes conceitos

da orientação a objetos.

a) especialização e agregação

b) herança e especialização

c) agregação e decomposição

d) agregação e especialização

e) classificação e decomposição

Resolução:

Page 71: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 71 de 109

www.exponencialconcursos.com.br

O conceito de herança está relacionado com as relações de

especialização/generalização e a agregação é um tipo especial de associação

que especifica que as informações de um objeto (chamado objeto-todo)

precisam ser complementadas pelas informações contidas em um ou mais

objetos de outra classe (chamados objetos-parte), ou seja, cria uma relação

todo/parte. Pelo enunciado, notamos que a classe Prova é composta por um

conjunto de questões, tanto é que a classe Prova possui o método

asssociarÀprova(..). Logo, temos um relacionamento de agregação. Além do

mais, a classe PerguntaSimples é uma Questão, e esse relacionamento ―é-um‖

está relacionado com herança, o qual, por sua vez, está relacionado com

especialização/generalização. Mais especificamente: PerguntaSimples é uma

especialização de Questão.

Gabarito: Letra D.

50- (CESPE - 2015 - TRE-MT - Analista Judiciário - Análise de

Sistemas) No que se refere à modelagem orientada a objetos, assinale a

opção correta.

a) No processo de encapsulação, toda a informação é empacotada sob um

nome, podendo ser reutilizada com uma especificação ou componente de

programa.

b) Em uma herança, as subclasses se tornam mais genéricas e a junção de

todas as subclasses resultam na superclasse.

c) Entidades externas, diferentemente das ocorrências, podem ser

classificadas como objetos.

d) Na característica serviços necessários, o objeto em potencial será útil

durante a análise somente se a informação sobre ele precisar ser lembrada

para que o sistema possa funcionar.

e) O polimorfismo está diretamente associado a um atributo por meio de uma

referência a subclasse.

Resolução:

a) Correto: Apesar de a banca ter escrito ―encapsulação‖ em vez de

―encapsulamento‖, este foi o item dado como correto. Uma das definições de

encapsulamento é agrupar o estado de objetos (as variáveis da classe) e seus

comportamentos (os métodos da classe) em conjuntos segundo o seu grau de

relação, organizando os dados que sejam relacionados, agrupando-os

(encapsulando-os) em objetos (classes), reunindo métodos relacionados às

suas propriedades.

b) Incorreto: Em uma herança, as subclasses se tornam mais genéricas

específicas e a junção de todas as subclasses resultam na superclasse (sem

sentido).

Page 72: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 72 de 109

www.exponencialconcursos.com.br

c) Incorreto: Entidades externas, diferentemente das assim como as

ocorrências, podem ser classificadas como objetos. Um objeto pode

representar uma entidade, tanto física quanto conceitual ou de software.

d) Incorreto: item que, só por trazer conceitos misturados e aparentemente

sem sentido, já mostra que possivelmente está errado. Adicionalmente, o item

traz a palavra ―somente‖, o que reforça a hipótese anterior.

e) Incorreto: A definição apresentada não possui relação com polimorfismo,

já que ele é a possibilidade de duas ou mais classes derivadas de uma mesma

superclasse poderem implementar métodos que têm a mesma identificação

(assinatura), mas comportamentos distintos, e a implementação a ser

executada ser escolhida em tempo de execução.

Gabarito: Letra A.

51- (CESPE - 2015 - Telebras - Engenheiro - Engenharia da

Computação) Julgue o item subsequente, referentes à programação

orientada a objeto.

O polimorfismo permite a associação de um único nome ou operador a

diferentes operações — dependendo do tipo do dado considerado — e a

redefinição de um método dentro de uma classe derivada.

Resolução:

Como a questão falou de polimorfismo de forma genérica, então se trata do

tipo que está associado à sobrescrita (overriding) e herança, o qual permite

que classes derivadas de uma mesma superclasse possam

redefinir/sobrescrever métodos que têm a mesma assinatura, mas

comportamentos distintos. A assinatura desse método é o que o item chama

de ―um único nome ou operador‖ e as ―diferentes operações‖ são as

implementações diversas desses métodos.

Gabarito: Certo.

52- (CESPE - 2015 - TJ-DFT - Analista Judiciário - Analista de

Sistemas) Acerca de análise e projetos orientados a objetos, julgue o item

que segue.

A combinação de dados com o código que os manipula em um único objeto é

denominada encapsulamento.

Resolução:

Encapsulamento pode se referir tanto a esconder os detalhes da

implementação de um objeto (não permitir acesso direto aos atributos),

quanto a agrupar o estado de objetos (as variáveis da classe) e seus

comportamentos (os métodos da classe) em conjuntos segundo o seu grau de

Page 73: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 73 de 109

www.exponencialconcursos.com.br

relação, em outra palavras, é organizar os dados que sejam relacionados,

agrupando-os (encapsulando-os) em objetos (classes).

Gabarito: Certo.

53- (CESPE - 2015 - TJ-DFT - Analista Judiciário - Analista de

Sistemas) Acerca de análise e projetos orientados a objetos, julgue o item

que segue.

Recurso de classes é a propriedade dos objetos que viabiliza a implementação

de hierarquia entre objetos.

Resolução:

Quem viabiliza a implementação de hierarquia entre objetos é o mecanismo de

herança, um dos pilares da POO. ―Recurso de classe‖ parece ter sido um

termo inventado pela banca para confundir o candidato.

Gabarito: Errado.

54- (CESPE - 2015 - MEC - Analista de Teste e Qualidade) Com relação

à orientação a objetos, julgue o item subsecutivo.

O foco da orientação a objetos está nos procedimentos a serem contemplados

pelo sistema e nas informações que este manipulará e(ou) armazenará.

Resolução:

A POO é um paradigma de programação baseado no conceito de objetos, os

quais contêm campos de dados (atributos) e procedimentos (métodos). Na

POO, os programas de computador são projetados como um conjunto de

objetos que interagem uns com os outros. Quem foca em procedimentos e

informações/dados é o paradigma procedural.

Gabarito: Errado.

55- (CESPE - 2015 - MEC - Analista de Teste e Qualidade) Com relação

à orientação a objetos, julgue o item subsecutivo.

Em um sistema bem elaborado, os métodos são o único meio de se interagir

com os objetos.

Programação OO

Objeto

Atributos

(dados)

Métodos

(funções)

Programação

Estruturada

Dados Funções

Page 74: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 74 de 109

www.exponencialconcursos.com.br

Resolução:

Segundo o principio do encapsulamento, deve-se esconder os atributos de

uma classe, ou seja, não se deve permitir acesso direto aos atributos de uma

classe. Assim, os métodos (interface pública da classe) devem ser o único

meio de se interagir com os objetos.

Gabarito: Certo.

56- (CESPE - 2015 - TCE-RN - Assessor Técnico de Informática - Cargo

1) No que se diz respeito a análise, projeto e modelagem orientada para

objeto e linguagem de modelagem unificada (UML), julgue o item que se

segue.

O processo de herança permite a reutilização de código, como também o

reaproveitamento de atributos e métodos. Assim, em aplicações que utilizam

herança, a obtenção de polimorfismo é uma possibilidade.

Resolução:

A reutilização de código é um dos principais benefícios da herança, pois ela

permite que as subclasses (classes derivadas, classes-filhas) herdem os

atributos e métodos de uma superclasse (classe-mãe). Além do mais,

polimorfismo está intimamente relacionado com herança.

Gabarito: Certo.

57- (CESPE - 2015 - STJ - Analista Judiciário - Análise de Sistemas de

Informação) Julgue o item subsequente, acerca da linguagem de

programação Delphi e da programação orientada a objetos.

O princípio da responsabilidade única estabelece que uma classe deva

executar apenas uma tarefa; dessa forma, caso uma classe possua mais uma

responsabilidade, deve-se considerar sua decomposição em duas ou mais

classes.

Resolução:

Coesão e Acoplamento são princípios de engenharia de software intimamente

relacionados que possibilitam melhorar o design do software, o que, por sua

vez, melhora a legibilidade e manutenibilidade. Coesão está relacionada ao

princípio da responsabilidade única, o qual afirma que uma classe deve ter

apenas uma única responsabilidade e realizá-la de maneira satisfatória, em

outras palavras, uma classe não deve assumir responsabilidades que não são

suas. Caso uma classe esteja com mais de uma responsabilidade, para

melhorar a coesão, deve-se separa essas responsabilidades em classes

distintas.

Gabarito: Certo.

Page 75: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 75 de 109

www.exponencialconcursos.com.br

58- (CESPE - 2015 - STJ - Analista Judiciário - Análise de Sistemas de

Informação) Julgue o item subsequente, acerca da linguagem de

programação Delphi e da programação orientada a objetos.

O encapsulamento, característica da programação orientada a objetos, é uma

técnica utilizada para ocultar os detalhes da implementação de um objeto.

Resolução:

A POO possui um conjunto de pilares (princípios fundamentais, conceitos

básicos). São eles: abstração, encapsulamento, herança e polimorfismo. O

encapsulamento está relacionado com a ocultação de informação, o que

envolve impedir o acesso direto aos atributos dos objetos e também esconder

os detalhes de implementação dos métodos.

Gabarito: Certo.

59- (CESPE - 2015 - FUB - Engenheiro - Mecatrônica) A respeito de

análise de algoritmos, programação estruturada e orientada a objetos e

estruturas de dados, julgue o item a seguir.

Os conceitos de classe, método, abstração, encapsulamento, associação,

herança e polimorfismo são derivados da programação estruturada, cuja

característica é estabelecer um processo de desenvolvimento de algoritmos

independentemente da linguagem de programação a ser utilizada na

codificação.

Resolução:

Os conceitos de classe, método, abstração, encapsulamento, associação,

herança e polimorfismo são derivados da programação estruturada

programação orientada a objetos (POO). Além do mais, a segunda parte da

questão (―cuja característica...‖) não está relacionada nem a POO, nem a

programação estruturada. Está mais relacionada ao RUP (Rational Unified

Process), pois ele é um ―processo de desenvolvimento‖ que tem como uma

das características ser ―independente da linguagem de programação‖.

Gabarito: Errado.

60- (CESPE - 2015 - FUB - Analista de Tecnologia da Informação) A

respeito de programação orientada a objetos e bancos de dados, julgue o

item a seguir.

Diferentemente da programação estruturada, a programação orientada a

objetos baseia-se em classes, as quais possuem atributos e métodos

acoplados.

Resolução:

Page 76: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 76 de 109

www.exponencialconcursos.com.br

A Programação Orientada a Objetos (POO) é uma maneira de programar que

resolve muitos problemas enfrentados pela programação procedural. A POO é

um paradigma de programação baseado no conceito de objetos, os quais

contêm campos de dados (atributos) e procedimentos (métodos). A classe é a

descrição de um grupo de objetos com propriedades similares (atributos) e

comportamento comum (operações, métodos).

Gabarito: Certo.

61- (CESPE - 2010 - Banco da Amazônia - Arquitetura de Tecnologia)

Quanto aos conceitos de linguagens de programação, julgue o item que se

segue.

A herança é um conceito implementado por todas as linguagens de

programação orientadas a objeto. No entanto, algumas delas somente

permitem o uso de herança simples, não sendo possível a criação de classes

por meio de herança múltipla.

Resolução:

A herança é um dos pilares da POO, portanto deve ser implementada por

todas as linguagens orientadas a objetos. Existem dois tipos: herança simples

(classe herda características somente de uma outra) e herança múltipla

(classe herda de duas ou mais classes). Algumas linguagens não permitem a

utilização de herança múltipla, a exemplo da linguagem Java e C#.

Gabarito: Certo.

62- (CESPE - 2015 - TRE-GO - Técnico Judiciário - Programação de

Sistemas) A respeito de desenvolvimento e manutenção de sistemas, julgue

o item seguinte.

No desenvolvimento mediante a utilização da metodologia estruturada, têm-se

os dados e as funções separados; já na orientação a objeto, os objetos são

compostos de dados e das funções que os modificam, podendo interagir entre

eles por meio da troca de mensagens.

Resolução:

A Programação Orientada a Objetos (POO) é uma maneira de programar que

resolve muitos problemas enfrentados pela programação procedural. A POO é

Programação OO

Objeto

Atributos

(dados)

Métodos

(funções)

Programação

Estruturada

Dados Funções

Page 77: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 77 de 109

www.exponencialconcursos.com.br

um paradigma de programação baseado no conceito de objetos, os quais

contêm campos de dados (atributos) e funções (procedimentos, operações,

métodos). A classe é a descrição de um grupo de objetos com atributos e

métodos comuns, os quais se comunicam (interagem) por meio de troca de

mensagens (chamada de métodos).

Gabarito: Certo.

63- (CESPE - 2013 - TRT - 17ª Região (ES) - Analista Judiciário -

Tecnologia da Informação) Acerca da orientação a objetos, julgue o item

seguinte.

Ao se criar um objeto, seus atributos são acessados por qualquer outro objeto,

sem restrições.

Resolução:

A POO possui um conjunto de pilares: abstração, encapsulamento, herança e

polimorfismo. O encapsulamento está relacionado com a ocultação de

informação, o que envolve impedir o acesso direto aos atributos dos

objetos e também esconder os detalhes de implementação dos métodos.

Gabarito: Errado.

64- (CESPE - 2014 - TJ-SE - Analista Judiciário - Banco de Dados)

Tendo como base os padrões de projeto de software, julgue os itens a seguir.

O polimorfismo na programação orientada a objetos é caracterizado quando

duas ou mais classes distintas têm métodos de mesmo nome, de forma que

uma função possa utilizar um objeto de qualquer uma das classes

polimórficas, sem necessidade de tratá-lo de forma diferenciada conforme a

classe desse objeto.

Resolução:

Quando a questão falar genericamente de polimorfismo, geralmente ela está

tratando do tipo dinâmico (overriding), o qual permite que duas ou mais

classes da mesma superclasse possuam um método com a mesma assinatura,

mas com comportamentos diferentes. Isso traz flexibilidade ao código,

permitindo uma independência entre o objeto-cliente e os objetos com

comportamento polimórfico, já que o acoplamento/binding entre o método

polimórfico chamado pelo objeto-cliente e a implementação correta do método

a ser executado será feita em tempo de execução, dispensando um

tratamento diferenciado para cada subclasse.

Gabarito: Certo.

Page 78: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 78 de 109

www.exponencialconcursos.com.br

65- (CESPE - 2014 - TJ-SE - Analista Judiciário - Banco de Dados) No

que diz respeito aos modelos hierárquico, relacional, de entidade-

relacionamento e de modelagem orientada a objeto, julgue os itens a seguir.

Na modelagem orientada a objetos, o conceito de herança permite que uma

subclasse herde tanto operações quanto propriedades.

Resolução:

Na herança, dizemos que a classe subclasse (classe filha) herda todos os

atributos e métodos da classe mãe (superclasse). Além de a classe filha

herdar os atributos e métodos da classe mãe, a classe filha ainda pode definir

novos métodos e atributos.

Gabarito: Certo.

66- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

Se o sistema de informação tiver uma consulta sobre o estado de conservação

do automóvel, será considerado que o estado é um atributo do objeto carro.

Resolução:

No mundo real, qualquer objeto possui características que o definem. E

características são nomeadas de atributos. Repare que ―estado de

conservação‖ é uma característica, e não um comportamento, do carro.

Portanto, é um atributo.

Gabarito: Certo.

67- (CESPE - 2016 - FUB - Técnico de Tecnologia da Informação) A

respeito dos conceitos de análise orientada a objetos em engenharia de

software, julgue o seguinte item.

Uma das vantagens de se utilizar encapsulamento em orientação a objetos é

impedir o acesso direto aos atributos de um objeto.

Resolução:

Encapsulamento está relacionado com a ocultação de informação, o que

envolve impedir o acesso direto aos atributos dos objetos e também

esconder os detalhes de implementação dos métodos.

Gabarito: Certo.

68- (CESPE - 2015 - Telebras - Engenheiro - Engenharia da

Computação) Julgue o item subsequente, referente à programação orientada

a objeto.

Page 79: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 79 de 109

www.exponencialconcursos.com.br

A herança permite a extensão de uma classe existente, mas requer a

repetição ou a reescrita do código original.

Resolução:

A herança permite a extensão de uma classe existente, mas requer e não

requer a repetição ou a reescrita do código original. A herança otimiza a

produção da aplicação em tempo e linhas de código, ou seja, aumenta a

reusabilidade do código. Usando herança, a subclasse herda todos os

atributos e métodos da(s) superclasse(s).

Gabarito: Errado.

69- CESPE - 2015 - STJ - Técnico Judiciário - Tecnologia da

Informação) No que concerne a análise, projeto e modelagem orientada a

objetos, julgue o item que se segue.

O polimorfismo de objeto pode criar objetos que herdam comportamento de

uma classe e pode possibilitar que o desenvolvedor programe um

comportamento diferente para os métodos de classes existentes, mas, para

que seja da forma sobrescrita, o polimorfismo precisa possuir a mesma

assinatura.

Resolução:

Essa é a definição mais comum de polimorfismo, a definição relacionada à

herança e à posterior sobrescrita de método herdado. É o tipo de polimorfismo

conhecido como polimorfismo Universal por Inclusão. Caracteriza-se

quando duas ou mais classes derivadas de uma mesma superclasse podem

invocar métodos que têm a mesma identificação (assinatura), mas

comportamentos distintos.

Gabarito: Certo.

Page 80: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 80 de 109

www.exponencialconcursos.com.br

5. RISCO EXPONENCIAL

Diferença entre Programação Estruturada e Programação

Orientada a Objetos

Introdução à Programação Orientada a Objetos (POO).

Programação OO

Objeto

Atributos

(dados)

Métodos

(funções)

Programação

Estruturada

Dados Funções

Programação Orientada a

Objetos (POO)

Resolve probelmas do paradigma de programação procedural

Objetos contêm dados

(atributos) e procedimentos

(métodos)

Programa é um conjunto de objetos

que interagem entre si

Aproxima o mundo

computacional do mundo real

Vantagens: reusabilidade,

manutenibilidade, extensibilidade,

programação natural e

confiabilidade

Page 81: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 81 de 109

www.exponencialconcursos.com.br

Diferença entre Classe e Objeto.

Atributos e Métodos.

Classe

•Agrupamento de atributos e métodos comuns a um conjunto de objetos

•Descrição de um grupo de objetos com atributos e comportamentos similares

•Padrão/molde/modelo para a construção dos objetos

Objeto

•Possui identidade única, estado (conjunto de valores dos atributos) e comportamento

•É uma instância de uma classe

•Interagem entre si pela troca de mensagens (chamadas de métodos)

Atributos

• Características dos objetos que o definem

• Também conhecidos como campos, membros, variáveis ou propriedade

• Classificados em atributos de classe e atributos de instância

Métodos

• Ações ou eventos realizados pelos objetos

• Também conhecidos como procedimentos, operações ou funções

• Classificados em métodos de classe e métodos de instância

• Pode receber algum tipo de informação (entrada), chamada de parâmetro ou argumento

• Pode devolver alguma informação, chamada de (valor de) retorno

• Assinatura do método = tipo de retorno + nome + tipo/quantidade dos parâmetros

Page 82: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 82 de 109

www.exponencialconcursos.com.br

Mensagem.

Tipos de Polimorfismo.

Mensagem

Meio de comunicação dos objetos

em tempo de execução

Na prática, representa

uma chamada de

método

Objetos interagem

por meio da "troca de

mensagens"

Tipos de Polimorfismo

Universal

Por Inclusão Paramétrico

Ad-hoc

Coerção Sobrecarga

(overloading)

Page 83: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 83 de 109

www.exponencialconcursos.com.br

Pilares da POO.

Pil

ares d

a P

OO

Abstração

Preocupar-se com as principais propriedade

Desconsiderar características que não são importantes

Abstrair os objetos do mundo real em termos de identidade, atributos e métodos

Encapsulamento

Esconder os atributos e métodos da classe

Esconder os detalhes de implementação

Não permitir acesso direto aos atributos

Agrupar características e comportamentos relacionados em objetos

Herança

Permite que uma classe herde atributos e comportamentos de outra classe

Relação de classe mãe/filha, superclasse/subclasse, generalização/especialização e relação "é-um"

Herança simples e múltipla

Polimorfismo

"muitas formas"

Permite uma subclasse ser referenciada como sua superclasse

Permite que classes derivadas de uma mesma superclasse tenham métodos de mesma assinatura, mas comportamentos

diferentes

Ligação tardia (late binding) em tempo de execução

Page 84: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 84 de 109

www.exponencialconcursos.com.br

Tabela dos modificadores e níveis de acesso.

Diferença entre sobrecarga e sobrescrita.

Overriding

Subclasse reescreve/redefine um método da superclasse

Mesmo nome, mesma assinatura

Binding/ligação em tempo de execução

Overloading

Mesma classe define mais de um método de mesmo nome, mas tipo/quantidade de parâmetros diferente

Mesmo nome, assinaturas diferentes

Binding/ligação em tempo de compilação

So

brescrit

a S

ob

recarg

a

Page 85: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 85 de 109

www.exponencialconcursos.com.br

Classe Abstrata.

Classe Abstrata

Apenas idealiza um tipo, define apenas um rascunho

Define um modelo

incompleto, com funcionalidades

genérias a serem implementadas pelas classes

filhas

Serve para obter

polimorfismo e possibilitar herança dos

seus atributos e métodos

Não permite instanciar objetos

diretamente

Oposto das classe

concretas

Pode especificar um

ou mais métodos

abstratos: aquele sem

corpo, apenas assinatura

Page 86: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 86 de 109

www.exponencialconcursos.com.br

Coesão e Acoplamento.

É a relação existente entre as responsabilidades de uma determinada classe e de seus métodos

Uma classe não deve assumir responsabilidade que não são suas

Deve-se buscar uma alta coesão

É o grau de dependência entre duas classes

Representa o quanto uma classe depende de outra(s) para funcionar

Deve-se buscar um baixo acoplamento

Coesão

Acopla

mento

Page 87: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 87 de 109

www.exponencialconcursos.com.br

Interface.

Interface

Pode também significar o conjunto de

métodos públicos de uma classe

Garante a existência de

implementação de

determinado(s) método(s) em determinada(s)

classe(s).

Cria-se um "contrato" para que uma classe

adquira determinado

status, qualidade

Pode definir uma série de

métodos, mas nunca conter a implementação

deles

Objetiva flexibilizar o

código e possibilitar

mudança de implementação

com baixo impacto

Page 88: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 88 de 109

www.exponencialconcursos.com.br

6. LISTAS DE EXERCÍCIOS

Questões comentadas durante a aula.

1- (CESPE - 2017 - SEDF - Professor de Educação Básica -

Informática) A respeito das características da programação orientada a

objetos, julgue o item subsequente.

Um objeto define atributos, comportamentos e abstrações comuns

compartilhados por um tipo de classe.

2- (FCC - 2014 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário -

Tecnologia da Informação) Bianca está desenvolvendo um software

orientado a objetos para uma aplicação do TRT 16ª Região. Esta aplicação

atenderá a diversos usuários. Um Usuario será modelado como ...I..... ,

possuindo as seguintes características ou ..II..... :

- Nome

- Endereço

- Telefone

- E-mail

- CPF

Um usuário pode realizar ações. Cada usuário é identificado de forma única,

mas possuindo as mesmas características descritas acima. Assim, cada

usuário será ...III..... e poderá executar as seguintes ações ou ..IV.. :

- EnviarPedido

- LerRespostaPedido

- ConsultarAndamento

As lacunas I, II, III e IV são, correta e respectivamente, preenchidas por:

a) uma abstração - métodos - instanciado como um objeto que herda da

classe - interfaces.

b) um objeto - métodos - uma classe - enviar as mensagens.

c) uma classe - atributos - um objeto da classe Usuario - métodos.

d) uma classe - variáveis - um objeto que herda da classe Usuario - trocas de

mensagens.

e) um objeto - variáveis - instanciado - enviar as mensagens.

3- (CESPE - 2015 - MEC - Analista de Teste e Qualidade) Com relação

à orientação a objetos, julgue o item subsecutivo.

Page 89: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 89 de 109

www.exponencialconcursos.com.br

Objetos são definidos como entidades da modelagem de sistemas que

armazenam estados com a utilização de atributos dos próprios objetos, sem

interação com outros objetos por meio de mensagens.

4- (FCC - 2013 - AL-RN - Analista Legislativo - Analista de Sistemas)

Em orientação a objetos, o processo ou resultado de generalização por

redução do conteúdo da informação de um conceito ou fenômeno observável,

normalmente para reter apenas a informação que é relevante para um

propósito particular é chamado de

a) agregação.

b) abstração.

c) polimorfismo.

d) encapsulamento.

e) modelagem lógica.

5- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico -

Analista de Suporte Técnico) Na Orientação a Objetos há um conceito

bastante utilizado que é o encapsulamento, que corresponde a

a) não suportar a divisão do programa em mais do que um arquivo físico.

b) limitar o número de classes de um programa orientado a objetos, conforme

o porte do sistema.

c) ocultar os detalhes da implementação dos métodos de uma determinada

classe de outras classes.

d) criptografar o código das classes que possuem a propriedade do

encapsulamento.

e) compactar o código fonte gerado, de forma a diminuir seu tamanho físico.

6- (FCC - 2013 - MPE-MA - Analista Ministerial - Análise e

Desenvolvimento de Sistemas) Na orientação a objetos, a herança permite

definir uma classe como uma extensão de outra classe. As vantagens de

utilizar herança são muitas e algumas delas são apresentadas abaixo. Assinale

a alternativa INCORRETA em relação às vantagens do uso de herança.

a) A herança é sempre a construção mais apropriada nos casos em que se

deseja reutilizar um código.

b) O uso de herança pode evitar a duplicação de código, pois deixa de ser

necessário escrever duas cópias idênticas ou muito semelhantes de um código

em comum.

Page 90: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 90 de 109

www.exponencialconcursos.com.br

c) A manutenção da aplicação fica mais fácil com o uso de herança, pois o

relacionamento entre as classes é claramente expresso. Uma alteração em um

método compartilhado entre diferentes tipos de subclasses pode ser feito

apenas uma vez.

d) Com a utilização de herança pode tornar-se mais fácil estender uma

aplicação existente.

e) Usando a herança, um código existente pode ser reutilizado. Se já existir

uma classe semelhante à que precisamos, às vezes é possível dividir a classe

existente e reutilizar o código em vez de implementar tudo novamente.

7- (FCC - 2014 - TRT - 13ª Região (PB) - Analista Judiciário -

Tecnologia da Informação) Considere o seguinte caso:

Observando o trâmite de processos no tribunal, Marta percebeu que tanto

advogados quanto juízes realizavam análises nos diversos pareceres

constantes dos processos. Com sua experiência como analista ela deduziu que

uma possível informatização dos processos poderia contemplar uma classe

chamada Advogado e outra chamada Juiz, tendo como base uma classe

comum chamada Pessoa, com um método chamado AnalisarParecer. Este

método (definido na classe comum) se comportaria de maneira diferente para

as chamadas feitas a partir de uma instância de Advogado e para as

chamadas feitas a partir de uma instância de Juiz, em razão deles terem

responsabilidades diferentes em sua forma de analisar e opinar sobre os

pareceres.

Pela observação do método e seu comportamento, o princípio da orientação a

objetos aplicável no caso, fundamentalmente, é

a) a comunicabilidade.

b) o encapsulameto

c) a visibilidade.

d) o polimorfismo.

e) a estereotipagem.

8- (FCC - 2013 - AL-RN - Analista Legislativo - Analista de Sistemas)

José foi incumbido de modelar as classes do sistema que a empresa estava

desenvolvendo. Ele se deparou com as seguintes classes:

Classe 1, que possui os atributos data de nascimento, nome, sexo e um

método para calcular a idade no calendário Gregoriano.

Classe 2, que possui os atributos data de nascimento, nome, sexo,

telefone e um método para calcular a idade no calendário Chinês.

Page 91: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 91 de 109

www.exponencialconcursos.com.br

Classe 3, que possui os atributos data de nascimento, nome, sexo e um

método para calcular a idade no calendário Juliano.

Por ser conhecedor de técnicas de orientação a objetos, ele propôs que fosse

criada uma classe com os atributos comuns e o método de cálculo da idade.

Sugeriu que fossem criadas classes baseadas nessa primeira e que apenas

alterassem o que não fosse comum, como a inclusão do atributo telefone e

diferentes tipos de implementação para o método do cálculo da idade. Deste

modo ele utilizou, respectivamente, as técnicas de

a) herança e polimorfismo.

b) abstração e agregação.

c) encapsulamento e abstração.

d) polimorfismo e encapsulamento.

e) abstração e herança.

9- (FCC - 2014 - SABESP - Técnico em Gestão - Informática) Na

programação orientada a objetos, em uma classe que possui os atributos id,

nome, telefone e renda, os atributos devem ser normalmente e os

métodos getters e setters devem ser normalmente . Quando um objeto

desta classe é instanciado, para incluir valores nos atributos utilizam-se os

métodos setter e para obter os valores incluídos utilizam-se os métodos

getter. Esse processo está relacionado com o que chamamos de

encapsulamento.

As lacunas I e II são preenchidas correta e, respectivamente, por

a) privados e protegidos

b) privados e públicos

c) protegidos e públicos

d) públicos e protegidos

e) públicos e privados

10- (FCC - 2017 - TRF - 5ª REGIÃO - Analista Judiciário - Informática

Desenvolvimento) Na programação orientada a objetos são utilizados

classes e métodos. Um método

a) com determinado nome não pode aparecer mais de uma vez na mesma

classe, mesmo que receba parâmetros de tipos diferentes.

b) em uma superclasse pode ser sobrescrito nas subclasses de uma relação de

herança.

Page 92: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 92 de 109

www.exponencialconcursos.com.br

c) em Java pode receber diversos parâmetros e ter diversas operações de

retorno consecutivas de tipos diferentes.

d) deve ter assinatura e corpo quando aparecer em uma interface Java e deve

ser público.

e) construtor em uma classe Java pode ser sobrecarregado, desde que tenha

um tipo de retorno diferente de void.

11- (CESPE - 2015 - TRE-GO - Técnico Judiciário - Programação de

Sistemas) Julgue os item subsequente à luz do paradigma de orientação a

objetos.

Uma classe abstrata possui instâncias diretas, bem como suas classes

descendentes.

12- (FCC - 2010 - TRT - 20ª REGIÃO (SE) - Analista Judiciário -

Tecnologia da Informação) No desenvolvimento de sistemas, no âmbito

das relações intermodulares entre as classes, diz-se que o programa está bem

estruturado quando há

a) maior coesão e maior acoplamento.

b) menor coesão e maior acoplamento.

c) menor coesão e menor acoplamento.

d) maior coesão e menor acoplamento.

e) apenas coesão ou apenas acoplamento.

13- (FCC - 2013 - MPE-CE - Analista Ministerial - Ciências da

Computação) Em uma aplicação desenvolvida por uma equipe de TI deseja-

se:

Caso 1: obrigar um conjunto de classes a implementar um conjunto de

métodos para se obter um padrão. A ideia é centralizar um conjunto de

assinaturas de métodos em um componente para que um conjunto de classes

possa implementá-los da maneira como lhes convier.

Caso 2: centralizar os atributos e métodos comuns a um conjunto de classes

em uma única classe, de forma que esse conjunto de classes especializadas se

comporte como se tivessem em seu código fonte esses atributos e métodos

comuns.

Os principais conceitos da orientação a objetos que devem ser utilizados para

atender os Casos 1 e 2 são, respectivamente,

a) sobrecarga de métodos e sobrescrita de métodos.

b) pacote e generalização.

Page 93: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 93 de 109

www.exponencialconcursos.com.br

c) interface e herança.

d) generalização e especialização.

e) encapsulamento e herança.

Programação Orientada a Objetos (POO).

14- (FCC - 2018 - DPE-AM - Assistente Técnico de Defensoria -

Programador) O paradigma de programação Orientada a Objetos − OO

utiliza, como um de seus componentes essenciais, a classe. Uma classe, em

conformidade com os melhores padrões da OO,

a) deve ter alta coesão, que implica em ter um conjunto limitado de

responsabilidades, e baixo acoplamento, que implica em ter baixa dependência

de outros componentes.

b) deve ser completa, portanto, quanto mais atributos os métodos da classe

tiver em comum com outros métodos, mais completa ela se torna.

c) deve manter o número de colaborações com outras classes, por meio de

seus objetos, o mais alto possível para facilitar os testes.

d) que possui muitos métodos contribui para diminuir a complexidade da

árvore de herança, aumentando seu potencial de reutilização.

e) que possui métodos é chamada de superclasse e uma classe que não possui

métodos é chamada de subclasse.

15- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico -

Analista de Sistemas) Na orientação a objetos o entendimento dos conceitos

é fundamental para se explorar ao máximo os recursos disponibilizados neste

paradigma de programação. Um destes conceitos é o de

a) sobrecarga de construtores, que pode ocorrer na maioria das linguagens de

programação, exceto na linguagem Java.

b) polimorfismo, que ocorre quando não há sobrescrita nem sobrecarga de

métodos nas classes e interfaces da aplicação.

c) sobrescrita de métodos, que ocorre quando há métodos de mesmo nome na

classe, mas que recebem parâmetros diferentes.

d) sobrecarga de métodos, que ocorre quando um método recebe mais

parâmetros do que pode suportar.

e) herança múltipla, que ocorre quando uma subclasse possui duas ou mais

superclasses imediatas.

Page 94: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 94 de 109

www.exponencialconcursos.com.br

16- (FCC - 2016 - TRT - 14ª Região (RO e AC) - Técnico Judiciário -

Tecnologia da Informação) São, dentre outros, recursos essenciais em uma

aplicação orientada a objetos para se obter polimorfismo:

a) Herança e sobrescrita de métodos.

b) Classes estáticas, com métodos protegidos.

c) Interfaces, contendo métodos não abstratos e implementados.

d) Classes abstratas, sem subclasses.

e) Arrays unidimensionais ou multidimensionais.

17- (FCC - 2016 - TRF - 3ª REGIÃO - Técnico Judiciário - Informática)

A análise e o projeto orientados a objeto modelam um sistema em termos de

objetos, que têm propriedades e comportamentos, e de eventos, que

disparam operações que mudam o estado dos objetos. Considere, abaixo, os

fundamentos da Orientação a Objetos − OO:

I. Ato de empacotar ao mesmo tempo dados e objetos. O objeto esconde seus

dados de outros objetos e permite que os dados sejam acessados por

intermédio de seus próprios métodos. Protege os dados do objeto do uso

arbitrário e não-intencional. Separa a maneira como um objeto se comporta

da maneira como ele é implementado.

II. Refere-se à implementação de um tipo de objeto. Especifica uma estrutura

de dados e as operações permissíveis que se aplicam a cada um de seus

objetos.

III. Pode ser real ou abstrato. Possui informações (dados) e desempenha

ações (funcionalidades). É qualquer coisa, real ou abstrata, a respeito da qual

são armazenados dados e operações.

Os conceitos da OO indicados em I, II e III, são, correta e respectivamente,

a) Herança, Classe, Atributo.

b) Encapsulamento, Método, Objeto.

c) Polimorfismo, Superclasse, Método.

d) Encapsulamento, Classe, Objeto.

e) Herança, Método, Atributo.

18- (FCC - 2015 - DPE-RR - Analista de Sistemas) Os dois principais

paradigmas de programação amplamente conhecidos são o paradigma

orientado a objetos e o procedural. Na orientação a objetos,

a) ocorre herança múltipla quando uma superclasse herda características de

mais de uma subclasse.

Page 95: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 95 de 109

www.exponencialconcursos.com.br

b) a marca de um produto é considerada uma classe, porém, o preço é

considerado um atributo.

c) uma classe pode conter vários métodos com o mesmo nome, se recebem

parâmetros diferentes.

d) só é permitido um construtor em cada classe, independente da linguagem

de programação utilizada.

e) um método representa uma propriedade da classe, semelhante a um campo

em uma tabela.

19- (FCC - 2015 - TRE-PB - Técnico Judiciário - Área Apoio

Especializado - Programação de Sistemas) Na orientação a objetos, no

que se refere à sobrecarga de métodos, um método é considerado

sobrecarregado se

a) tiver nome diferente de outros métodos da mesma classe.

b) for público, estático e receber mais de um parâmetro.

c) tiver o mesmo nome de outro método da mesma classe, mas receber

parâmetros diferentes.

d) tiver, em uma subclasse, o mesmo nome de um método da superclasse.

e) a quantidade de parâmetros que receber excede o limite permitido.

20- (FCC - 2015 - TRE-AP - Técnico Judiciário - Programação de

Sistemas) Na orientação a objetos com Java as classes

a) permitem apenas um construtor, que pode ser declarado explicitamente ou

não.

b) estáticas são necessárias para se conseguir polimorfismo.

c) podem possuir variáveis com modificadores de acesso public, private,

protected e void.

d) precisam possuir um método main por meio do qual são instanciados os

objetos

e) podem possuir métodos com o mesmo nome, desde que recebam

parâmetros de tipos diferentes.

21- (FCC - 2015 - MPE-PB - Analista de Sistemas – Desenvolvedor)

Apresenta um conceito correto associado à Análise e Projeto Orientado a

Objetos (OO):

a) Atributos, também chamados de métodos ou serviços, fornecem uma

representação de um dos comportamentos da classe.

Page 96: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 96 de 109

www.exponencialconcursos.com.br

b) Subclasse é uma especialização da superclasse. Uma subclasse pode herdar

tanto atributos quanto operações de uma superclasse.

c) Classe abstrata, também chamada de classe bean, é uma generalização de

um conjunto de classes a ela relacionada.

d) Métodos são instâncias de uma classe específica que herdam os atributos e

operações da classe.

e) Objeto é uma descrição generalizada que descreve uma coleção de métodos

semelhantes e encapsula dados e abstrações procedurais necessárias para

descrever alguma classe do mundo real.

22- (FCC - 2015 - TRT - 4ª REGIÃO (RS) - Analista Judiciário -

Tecnologia da Informação) O uso de herança pode otimizar o tempo de

desenvolvimento das aplicações orientadas a objetos devido ao

reaproveitamento de código. Quando se implementa herança

a) uma subclasse pode se tornar uma superclasse a qualquer momento,

bastando para tanto que se derive uma subclasse a partir dela.

b) a superclasse herda os atributos da subclasse, incluindo os atributos

privados, públicos e protegidos.

c) múltipla na linguagem Java versão 6, a subclasse herda características de

mais de uma superclasse.

d) só é possível obter polimorfismo na aplicação se houver sobrecarga de

métodos.

e) os métodos de uma superclasse não podem ser sobrescritos nas subclasses,

porém, podem ser sobrecarregados.

23- (FCC - 2015 - TRT - 15ª Região (SP) - Analista Judiciário –

Tecnologia da Informação) A herança é uma das características mais

poderosas e importantes da orientação a objetos, pois permite o

reaproveitamento de atributos e métodos. Em aplicações que utilizam

herança,

a) não é possível sobrescrever em uma subclasse, um método de sua

superclasse.

b) cada superclasse pode ter apenas uma subclasse.

c) somente as superclasses poderão ter métodos ou construtores

sobrecarregados.

d) é possível se obter polimorfismo.

e) é possível a implementação de herança múltipla, em todas as linguagens

orientadas a objetos.

Page 97: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 97 de 109

www.exponencialconcursos.com.br

24- (FCC - 2014 - TCE-GO - Analista de Controle Externo - Tecnologia

da Informação) Em aplicações orientadas a objetos é possível construir

diferentes tipos de classes, como

a) classes abstratas, que podem possuir construtores e serem instanciadas

diretamente.

b) interfaces, que podem possuir construtores e serem instanciadas

diretamente.

c) classes abstratas, que podem conter métodos implementados e assinaturas

de métodos sem implementação.

d) interfaces, que podem possuir constantes, variáveis e atributos privados.

e) superclasses em relações de herança, que podem possuir métodos

abstratos, mas não podem ser instanciadas diretamente.

25- (FCC - 2014 - AL-PE - Analista Legislativo - Sistemas) O modelo de

dados a seguir deve ser utilizado para responder a questão.

Page 98: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 98 de 109

www.exponencialconcursos.com.br

Se fosse construída uma aplicação orientada a objetos para implementar o

modelo apresentado, a forma mais correta de construir as classes referentes

às entidades Juridico, Cliente e Fisico, seria utilizando o conceito de;

a) interface, onde a interface Cliente seria implementada pelas classes Físico e

Juridico.

b) polimorfismo, onde todos os objetos das classes Fisico e Juridico seriam

tratados como objetos da classe Cliente.

c) herança, onde Juridico e Físico seriam subclasses da classe Cliente.

d) abstração, onde uma classe abstrata Cliente teria atributos protegidos e

métodos privados que seriam implementados nas interfaces Juridico e Fisico.

e) encapsulamento, onde as classes Juridico e Fisico seriam encapsuladas na

classe Cliente, de forma que todas agissem como se fosse uma única classe.

26- (FCC - 2013 - MPE-MA - Técnico Ministerial - Tecnologia da

Informação) Uma aplicação possui quatro classes: A, B, C e D. As classes A

e B são subclasses de A. Nas classes A, B e C existem atributos diferentes e

um método chamado verificarSaldo() com a mesma assinatura mas que

executa operações que retornam valores do tipo double, porém, diferentes. A

classe D é a classe principal. No interior do método main da classe D foram

digitadas as seguintes instruções:

A obj = new B();

double v = obj.verificarSaldo();

A obj1 = new C();

double v1 = obj1.verificarSaldo();

Quando essas linhas foram executadas, a variável v recebeu o valor 100.00 e

a variável v1 recebeu o valor 125.00.

Note que tanto obj como obj1 são objetos do tipo A, porém, além de

possuírem atributos diferentes, ao chamar o método verificarSaldo() por

meio desses objetos, o retorno contido nas variáveis v e v1 foi diferente. Isso

mostra um exemplo de

a) encapsulamento.

b) sobrecarga de métodos.

c) herança múltipla.

d) generalização.

e) polimorfismo.

Page 99: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 99 de 109

www.exponencialconcursos.com.br

27- (FCC - 2013 - MPE-CE - Analista Ministerial - Ciências da

Computação) Esse conceito refere-se à separação dos aspectos externos de

um objeto, que são acessíveis a outros objetos, dos detalhes internos da

implementação, que estão escondidos de outros objetos. Isso evita que partes

de um programa se tornem tão independentes que uma pequena mudança

tenha grandes efeitos em cascata. Pode-se mudar a implementação de um

objeto sem afetar as aplicações que o utilizam. Pode-se querer mudar a

implementação de um objeto para melhorar o desempenho, reparar um erro,

consolidar código ou dar suporte à portabilidade. Esse conceito não é exclusivo

das linguagens orientadas a objetos, mas a capacidade de combinar estrutura

e comportamento de dados em uma única entidade o torna mais claro e mais

poderoso do que em linguagens como Cobol, Fortran e C.

O conceito citado no texto é conhecido como

a) compartilhamento.

b) generalização.

c) polimorfismo.

d) coleção.

e) encapsulamento.

28- (FCC - 2013 - MPE-MA - Analista Ministerial - Análise e

Desenvolvimento de Sistemas) Um dono de uma fábrica de brinquedos

solicitou que seus engenheiros criassem um mesmo controle remoto para os

brinquedos avião, carro e barco. A única restrição era que cada brinquedo

atendesse aos comandos específicos definidos pelo controle. O controle remoto

teria vários botões, sendo que todos eles seriam úteis para todos os

brinquedos. Por exemplo, quando o usuário apertasse o botão mover, o

controle enviaria o sinal MOVER para todos os brinquedos que estivessem em

um raio de 2 metros. Desta forma, quando o brinquedo recebesse o sinal

MOVER, ele se moveria de acordo com a sua função. Para o avião, mover

significa VOAR, para o barco significa NAVEGAR e, para o automóvel, significa

CORRER. Observe que os brinquedos respondem ao mesmo sinal de formas

diferentes.

Na programação orientada a objetos, este exemplo ilustra um caso de

a) Herança.

b) Polimorfismo.

c) Sobrecarga de métodos.

d) Classe abstrata.

e) Hierarquia de herança.

Page 100: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 100 de 109

www.exponencialconcursos.com.br

29- (FCC - 2013 - AL-RN - Analista Legislativo - Analista de Sistemas)

Um dos conceitos básicos de orientação a objetos é o fato de um objeto, ao

tentar acessar as propriedades de outro objeto, deve sempre fazê-lo por uso

de métodos do objeto ao qual se deseja atribuir ou requisitar uma informação,

mantendo ambos os objetos isolados. A essa propriedade da orientação a

objetos se dá o nome de

a) herança.

b) abstração.

c) polimorfismo.

d) mensagem.

e) encapsulamento.

30- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

O armazenamento de informações referentes às classes de um sistema é feito

em uma metaclasse.

31- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

Em um sistema de informação que contenha dados pessoais de clientes de

uma empresa de cartões de créditos, caso sejam criadas classes cliente e

pessoas, então a classe pessoas é uma classe de polimorfismo de sobrecarga.

32- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

Considere que, em um sistema de informações, um objeto possua dados de

uma pessoa, tais como: nome, endereço, data de aniversário e número do

cartão de crédito. Considere, ainda, que esse sistema exponha, de forma

pública, informações sobre o nome e a data de aniversário e deixe os dados do

cartão de crédito protegidos em formato privado. Nesse caso, o sistema estará

usando o recurso de interface.

33- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Julgue o item a seguir, relativo a projetos orientados a objeto.

Page 101: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 101 de 109

www.exponencialconcursos.com.br

A modelagem orientada a objetos demonstra como os objetos podem ser

classificados, a maneira como herdam atributos e operações, como são

compostos e de que forma interagem entre si.

34- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Julgue o item seguinte, quanto aos conceitos da programação estruturada e

da programação orientada a objetos e aos métodos de ordenação, pesquisa e

hashing.

Na programação orientada a objetos, uma das características do polimorfismo

é a independência do software que invoca o comportamento polimórfico em

relação aos tipos de objeto para os quais as mensagens são enviadas.

35- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

Um recurso de grande utilidade nesse tipo de programação consiste na

possibilidade de um objeto exercer o comportamento de outro objeto.

36- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

O tipo de herança mais eficiente e indicado é a herança de implementação,

pois possibilita que uma nova classe reutilize a implementação de outra classe

sem a necessidade de se recortar e colar o código de forma manual, tornando

o código automaticamente disponível, como parte da nova classe.

37- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

O encapsulamento permite que um programa seja dividido em várias partes

menores; contudo, as partes tornam-se dependentes umas das outras em

relação à implementação e em relação ao trabalho realizado.

38- (2018 - STM - Técnico Judiciário - Programação de Sistemas)

Julgue o item seguinte, a respeito de programação orientada a objetos.

O estado interno de um objeto pode ser alterado por meio de métodos

assessores.

39- (CESPE - 2017 - SEDF - Professor de Educação Básica -

Informática) A respeito das características da programação orientada a

objetos, julgue o item subsequente.

Page 102: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 102 de 109

www.exponencialconcursos.com.br

Com a utilização do conceito de polimorfismo, sempre que uma nova

funcionalidade for criada ou modificada, a aplicação deve ser compilada.

40- (CESPE - 2017 - SEDF - Professor de Educação Básica -

Informática) A respeito das características da programação orientada a

objetos, julgue o item subsequente.

No encapsulamento com acesso protegido aos métodos, o acesso se restringe

apenas à própria classe e suas subclasses.

41- (CESPE - 2017 - TRE-TO - Técnico Judiciário - Programação de

Sistemas) Na orientação a objetos, a alteração do comportamento dos

métodos herdados das superclasses para um comportamento mais específico

nas subclasses, de forma a se criar um novo método na classe filha que

contém a mesma assinatura e o mesmo tipo de retorno, relaciona-se a

a) sobrecarga.

b) overloading.

c) portabilidade.

d) abstração.

e) sobrescrita.

42- (CESPE - 2017 - TRE-TO - Técnico Judiciário - Programação de

Sistemas) Assinale a opção que apresenta o mecanismo a partir do qual os

detalhes da implementação dos métodos de uma classe são ocultos dos

usuários da classe.

a) herança múltipla

b) especialização

c) herança simples

d) classe abstrata

e) encapsulamento

43- (CESPE - 2017 - TRT - 7ª Região (CE) - Analista Judiciário -

Tecnologia da Informação) Acerca de orientação a objetos, assinale a

opção correta.

a) Os desenvolvedores de um sistema devem ter como objetivo a construção

de classes com baixa coesão e alto acoplamento.

b) O polimorfismo caracteriza-se pela possibilidade de vários métodos terem o

mesmo nome, porém com assinaturas diferentes.

Page 103: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 103 de 109

www.exponencialconcursos.com.br

c) Membros de dados podem ser acessados diretamente, mas somente podem

ser alterados por meio de métodos específicos.

d) Na agregação, diversos objetos distintos são reunidos para compor um

novo objeto.

44- (CESPE - 2017 - TRT - 7ª Região (CE) - Analista Judiciário -

Tecnologia da Informação)

No trecho de código apresentado, está em uso o conceito de orientação a

objeto do tipo

a) polimorfismo.

b) interface.

c) associação.

d) herança.

45- (CESPE - 2016 - TCE-PR - Analista de Controle - Tecnologia da

Informação) Em se tratando de orientação a objetos, o polimorfismo refere-

se

a) ao reconhecimento do comportamento variado de um método, o que

melhora o aproveitamento do código.

b) à transmissão dos métodos e atributos de uma classe para suas subclasses,

quando ad hoc.

c) à variação das saídas de um método com relação às entradas recebidas,

caso em que é considerado universal.

d) ao uso que um objeto faz dos recursos de outro objeto.

Page 104: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 104 de 109

www.exponencialconcursos.com.br

e) à utilização de métodos específicos para manipular dados com proteção por

meio de encapsulamento.

46- (CESPE - 2016 - FUB - Técnico de Tecnologia da Informação) A

respeito dos conceitos de análise orientada a objetos em engenharia de

software, julgue o seguinte item.

O conjunto de valores das características de determinado objeto é

denominado estado.

47- (CESPE - 2016 - FUB - Técnico de Tecnologia da Informação) A

respeito dos conceitos de análise orientada a objetos em engenharia de

software, julgue o seguinte item.

Denomina-se polimorfismo o fato de duas ou mais classes de superclasses

diferentes possuírem um método com a mesma assinatura, mas com

comportamentos diferentes.

48- (CESPE - 2016 - TCE-PA - Auditor de Controle Externo - Área

Informática - Analista de Sistema) A propósito de análise e projeto

orientados a objetos, julgue o item subsequente.

Objetos são componentes reusáveis, pois encapsulam um conjunto de

atributos e operações que fornecem serviços a outros objetos.

49- (CESPE - 2015 - TRE-RS - Analista Judiciário - Análise de

Sistemas) Considere três classes: Prova, Questão e PerguntaSimples. A

classe Prova tem os atributos Data e Assunto, além do método criar(..). A

classe Questão tem os atributos NúmeroDaQuestão e Pergunta, além do

método asssociarÀprova(..). A classe PerguntaSimples tem os atributos

RespostaCerta e Referência, além do método corrigir(..). De acordo com essa

descrição, é possível identificar entre as classes Prova e Questão e entre as

classes Questão e PerguntaSimples, respectivamente, os seguintes conceitos

da orientação a objetos.

a) especialização e agregação

b) herança e especialização

c) agregação e decomposição

d) agregação e especialização

e) classificação e decomposição

Page 105: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 105 de 109

www.exponencialconcursos.com.br

50- (CESPE - 2015 - TRE-MT - Analista Judiciário - Análise de

Sistemas) No que se refere à modelagem orientada a objetos, assinale a

opção correta.

a) No processo de encapsulação, toda a informação é empacotada sob um

nome, podendo ser reutilizada com uma especificação ou componente de

programa.

b) Em uma herança, as subclasses se tornam mais genéricas e a junção de

todas as subclasses resultam na superclasse.

c) Entidades externas, diferentemente das ocorrências, podem ser

classificadas como objetos.

d) Na característica serviços necessários, o objeto em potencial será útil

durante a análise somente se a informação sobre ele precisar ser lembrada

para que o sistema possa funcionar.

e) O polimorfismo está diretamente associado a um atributo por meio de uma

referência a subclasse.

51- (CESPE - 2015 - Telebras - Engenheiro - Engenharia da

Computação) Julgue o item subsequente, referentes à programação

orientada a objeto.

O polimorfismo permite a associação de um único nome ou operador a

diferentes operações — dependendo do tipo do dado considerado — e a

redefinição de um método dentro de uma classe derivada.

52- (CESPE - 2015 - TJ-DFT - Analista Judiciário - Analista de

Sistemas) Acerca de análise e projetos orientados a objetos, julgue o item

que segue.

A combinação de dados com o código que os manipula em um único objeto é

denominada encapsulamento.

53- (CESPE - 2015 - TJ-DFT - Analista Judiciário - Analista de

Sistemas) Acerca de análise e projetos orientados a objetos, julgue o item

que segue.

Recurso de classes é a propriedade dos objetos que viabiliza a implementação

de hierarquia entre objetos.

54- (CESPE - 2015 - MEC - Analista de Teste e Qualidade) Com relação

à orientação a objetos, julgue o item subsecutivo.

O foco da orientação a objetos está nos procedimentos a serem contemplados

pelo sistema e nas informações que este manipulará e(ou) armazenará.

Page 106: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 106 de 109

www.exponencialconcursos.com.br

55- (CESPE - 2015 - MEC - Analista de Teste e Qualidade) Com relação

à orientação a objetos, julgue o item subsecutivo.

Em um sistema bem elaborado, os métodos são o único meio de se interagir

com os objetos.

56- (CESPE - 2015 - TCE-RN - Assessor Técnico de Informática - Cargo

1) No que se diz respeito a análise, projeto e modelagem orientada para

objeto e linguagem de modelagem unificada (UML), julgue o item que se

segue.

O processo de herança permite a reutilização de código, como também o

reaproveitamento de atributos e métodos. Assim, em aplicações que utilizam

herança, a obtenção de polimorfismo é uma possibilidade.

57- (CESPE - 2015 - STJ - Analista Judiciário - Análise de Sistemas de

Informação) Julgue o item subsequente, acerca da linguagem de

programação Delphi e da programação orientada a objetos.

O princípio da responsabilidade única estabelece que uma classe deva

executar apenas uma tarefa; dessa forma, caso uma classe possua mais uma

responsabilidade, deve-se considerar sua decomposição em duas ou mais

classes.

58- (CESPE - 2015 - STJ - Analista Judiciário - Análise de Sistemas de

Informação) Julgue o item subsequente, acerca da linguagem de

programação Delphi e da programação orientada a objetos.

O encapsulamento, característica da programação orientada a objetos, é uma

técnica utilizada para ocultar os detalhes da implementação de um objeto.

59- (CESPE - 2015 - FUB - Engenheiro - Mecatrônica) A respeito de

análise de algoritmos, programação estruturada e orientada a objetos e

estruturas de dados, julgue o item a seguir.

Os conceitos de classe, método, abstração, encapsulamento, associação,

herança e polimorfismo são derivados da programação estruturada, cuja

característica é estabelecer um processo de desenvolvimento de algoritmos

independentemente da linguagem de programação a ser utilizada na

codificação.

Page 107: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 107 de 109

www.exponencialconcursos.com.br

60- (CESPE - 2015 - FUB - Analista de Tecnologia da Informação) A

respeito de programação orientada a objetos e bancos de dados, julgue o

item a seguir.

Diferentemente da programação estruturada, a programação orientada a

objetos baseia-se em classes, as quais possuem atributos e métodos

acoplados.

61- (CESPE - 2010 - Banco da Amazônia - Arquitetura de Tecnologia)

Quanto aos conceitos de linguagens de programação, julgue o item que se

segue.

A herança é um conceito implementado por todas as linguagens de

programação orientadas a objeto. No entanto, algumas delas somente

permitem o uso de herança simples, não sendo possível a criação de classes

por meio de herança múltipla.

62- (CESPE - 2015 - TRE-GO - Técnico Judiciário - Programação de

Sistemas) A respeito de desenvolvimento e manutenção de sistemas, julgue

o item seguinte.

No desenvolvimento mediante a utilização da metodologia estruturada, têm-se

os dados e as funções separados; já na orientação a objeto, os objetos são

compostos de dados e das funções que os modificam, podendo interagir entre

eles por meio da troca de mensagens.

63- (CESPE - 2013 - TRT - 17ª Região (ES) - Analista Judiciário -

Tecnologia da Informação) Acerca da orientação a objetos, julgue o item

seguinte.

Ao se criar um objeto, seus atributos são acessados por qualquer outro objeto,

sem restrições.

64- (CESPE - 2014 - TJ-SE - Analista Judiciário - Banco de Dados)

Tendo como base os padrões de projeto de software, julgue os itens a seguir.

O polimorfismo na programação orientada a objetos é caracterizado quando

duas ou mais classes distintas têm métodos de mesmo nome, de forma que

uma função possa utilizar um objeto de qualquer uma das classes

polimórficas, sem necessidade de tratá-lo de forma diferenciada conforme a

classe desse objeto.

Page 108: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 108 de 109

www.exponencialconcursos.com.br

65- (CESPE - 2014 - TJ-SE - Analista Judiciário - Banco de Dados) No

que diz respeito aos modelos hierárquico, relacional, de entidade-

relacionamento e de modelagem orientada a objeto, julgue os itens a seguir.

Na modelagem orientada a objetos, o conceito de herança permite que uma

subclasse herde tanto operações quanto propriedades.

66- (CESPE - 2018 - ABIN - Oficial Técnico de Inteligência - Área 9)

Acerca de conceitos básicos e tratamentos de exceção em programação

orientada a objetos, julgue o item subsequente.

Se o sistema de informação tiver uma consulta sobre o estado de conservação

do automóvel, será considerado que o estado é um atributo do objeto carro.

67- (CESPE - 2016 - FUB - Técnico de Tecnologia da Informação) A

respeito dos conceitos de análise orientada a objetos em engenharia de

software, julgue o seguinte item.

Uma das vantagens de se utilizar encapsulamento em orientação a objetos é

impedir o acesso direto aos atributos de um objeto.

68- (CESPE - 2015 - Telebras - Engenheiro - Engenharia da

Computação) Julgue o item subsequente, referente à programação orientada

a objeto.

A herança permite a extensão de uma classe existente, mas requer a

repetição ou a reescrita do código original.

69- CESPE - 2015 - STJ - Técnico Judiciário - Tecnologia da

Informação) No que concerne a análise, projeto e modelagem orientada a

objetos, julgue o item que se segue.

O polimorfismo de objeto pode criar objetos que herdam comportamento de

uma classe e pode possibilitar que o desenvolvedor programe um

comportamento diferente para os métodos de classes existentes, mas, para

que seja da forma sobrescrita, o polimorfismo precisa possuir a mesma

assinatura.

Page 109: Curso: Tecnologia da Informação Teoria e Questões ...Aula 00 Curso: Informática – Teoria e Questões comentadas p/ TRF Aula 00 Professor: – Aula Demonstrativa Gustavo Cavalcante

Curso: Tecnologia da Informação

Teoria e Questões comentadas Prof. Yuri do Carmo

Prof. Yuri do Carmo 109 de 109

www.exponencialconcursos.com.br

7. GABARITO

1 E 11 E 21 B 31 E 41 E 51 C 61 C

2 C 12 D 22 A 32 E 42 E 52 C 62 C

3 E 13 C 23 D 33 C 43 D 53 E 63 E

4 B 14 A 24 C 34 C 44 D 54 E 64 C

5 C 15 E 25 C 35 C 45 A 55 C 65 C

6 A 16 A 26 E 36 E 46 C 56 C 66 C

7 D 17 D 27 E 37 E 47 E 57 C 67 C

8 A 18 C 28 B 38 E 48 C 58 C 68 E

9 B 19 C 29 E 39 E 49 D 59 E 69 C

10 B 20 E 30 C 40 C 50 A 60 C

8. REFERÊNCIAS

DEITEL, Paul. Java Como Programar. 8ª Edição. São Paulo: Prentice Hall,

2010.

BARNES, David. Programação Orientada a Objetos com Java. 4ª Edição.

São Paulo: Prentice Hall, 2009.

WEST, David. POLLICE, Gary. Use a Cabeça! Análise e Projeto Orientado

ao Objeto. Alta Books, 2007.

SANTOS, Rafael. Introdução à programação orientada a objetos usando

Java. Campus, 2003.

LARMAN, Craig. Utilizando UML e Padrões. Bookman Editora, 2002.

ORACLE. Object-Oriented Programming Concepts. Disponível em:

<https://docs.oracle.com/javase/tutorial/java/concepts/index.html >

Acesso em: 10 jan. 2019.

CAELUM. Java e Orientação a Objetos. Disponível em:

<https://www.caelum.com.br/apostila-java-orientacao-objetos/> Acesso em:

12 jan. 2019.