BT18 Conteudo Programacao Orientada A Objetos PDF
BT18 Conteudo Programacao Orientada A Objetos PDF
BT18 Conteudo Programacao Orientada A Objetos PDF
com
SISTEMAS OPERACIONAIS DE REDE
Homepage
https://fundacao.bradesco/
Autoria
Departamento de Educação Profissional e Educação de Jovens e Adultos
Coordenação
Departamento de Educação Profissional e Educação de Jovens e Adultos
Rosa Maria Pires Bueno
Allyson Luiz De Cayres Lino
Evelin Vanessa Correia Dos Santos
Publicação
2017
2/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
SUMÁRIO
3/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
4/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
ENCERRAMENTO ........................................................................................................................ 72
5/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
6/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
CARTA AO ALUNO
Caro aluno,
Este conteúdo foi elaborado pensando em seu processo de aprendizagem. Nele você encontrará
conceitos importantes sobre Programação Orientada a Objetos (POO), largamente utilizada em muitas
linguagens de programação atuais, tais como Java, C #, PHP, Python, C++, entre outras.
Ao longo do estudo, você será convidado a fazer atividades e reflexões que contribuirão para seu
desenvolvimento profissional na área de programação. Essas atividades são importantes para que
você tenha uma visão teórica e prática da utilização dos conceitos de POO no desenvolvimento de
sistemas. Fique atento a todo o conteúdo do curso para que você tenha um aprendizado significativo e
condições de aplicar os conhecimentos em suas atividades.
Para alcançar os objetivos propostos, lembramos que sua dedicação e seu comprometimento são
fundamentais. Leia o conteúdo com atenção, responda aos exercícios propostos, e aproveite as dicas e
os recursos educacionais disponibilizados sobre os assuntos relacionados a sua área de atuação.
Ao término de seus estudos, você realizará uma avaliação para verificar sua compreensão a respeito
dos assuntos abordados.
7/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
ESTRUTURA DO CONTEÚDO
Este conteúdo está estruturado em três capítulos:
8/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Conteúdos:
Histórico
Principais conceitos
Objetos
Atributos
Métodos
Classes.
Introdução
Antes de iniciarmos nosso estudo, imagine a seguinte situação:
Para ajudá-la, você vai ao supermercado comprar o ingrediente. No entanto, você precisa ser
rápido, porque está com pressa para sair com os amigos.
Ao chegar no supermercado, você leva um susto. Todos os produtos estão misturados nas
prateleiras – carnes ao lado de enlatados, biscoitos junto com detergentes... As prateleiras
estão um verdadeiro caos!
9/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Vamos entender melhor o conceito de programação orientada a objetos a partir de sua origem, sua
nomenclatura e suas técnicas.
Nesse sentido, veremos como utilizamos a POO no desenvolvimento de uma solução, no âmbito da
programação.
A programação orientada a objetos (POO) é um modelo desenvolvido para aproximar o mundo real do
mundo virtual, simulando o real no computador.
Nesse processo de programação, são criadas coleções de objetos com estrutura e comportamentos
próprios. Tais objetos interagem entre si e executam as ações solicitadas.
Dessa forma, a POO é a interface entre a representação escrita de como nós pensamos e agimos, e de
como a codificação e a CPU do computador vão entender e executar o que escrevemos.
3. Software – A palavra
"software" está relacionada à
toda codificação feita pelos
desenvolvedores na
composição de um aplicativo.
De modo coloquial,
chamamos o software de
programa de computador.
10/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
De modo geral, a execução do código por ordenação causava uma dependência enorme no
processamento.
Além disso, gerava complexidade no código e dificuldade em futuras manutenções ou correções, pois
não havia muito reaproveitamento do código já escrito.
12/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Sem um conhecimento profundo da codificação, o desenvolvedor preferia reescrever uma função, sem
verificar se ela já existia ou se estava adequada ao que pretendia executar.
13/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
O que é um objeto?
Como você certamente percebeu, a POO é um jeito de se pensar e de se organizar o código de
programação dos softwares, cujo objetivo é possibilitar a reutilização de trechos de programação e,
com isso, ganhar tempo e tornar a codificação mais “inteligente”.
Vídeo
Como o próprio nome sugere, os objetos são muito
importantes neste tipo de programação e, justamente por
isso, indicamos que você assista, no ambiente on-line, ao
audiovisual O que é um objeto?, em que o professor
Gustavo Guanabara explica e exemplifica os conceitos
fundamentais da POO.
14/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Objetos
Tal como você acabou de ver no vídeo indicado, os objetos são os elementos do mundo real que serão
representados na programação do sistema de software. Para efeito prático, somente objetos relevantes
para a solução do problema é que devem ser utilizados.
Objetos reais
Podem ser objetos reais: uma pessoa, um livro, um carro, um avião, um eletrodoméstico,
um notebook etc.
Objetos abstratos
Podem ser objetos abstratos: as funções de pessoas nos sistemas – cliente, vendedor,
representante, gerente, usuário etc.
Outros objetos
Podem ser considerados outros tipos de objetos:
eventos – venda, compra, ligação
interações com outros objetos – um item de nota fiscal é uma interação entre o objeto
nota fiscal e um produto
lugares – revenda, matriz, filial etc.
Atributos
Para entendermos o conceito de atributo, pensemos em um objeto bem comum em nosso dia a dia: o
veículo, por exemplo.
nome modelo
potência combustível
estado tipo
15/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
As características que descrevem o objeto Veículo são também os valores do objeto. Esses valores são
chamados de atributos.
Métodos
Já vimos o que são objetos e o que são atributos (características). Agora, está na hora de entendermos
o que são métodos.
Na programação orientada a objetos, a única maneira de interagir com os objetos é por meio dos
métodos (ações) que ele possui. Chamamos de interface o conjunto de métodos que um objeto
possui.
16/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Desafio
Antes de prosseguirmos, vamos ver se os conceitos de atributos e métodos estão claros. Para isso,
preparamos um rápido desafio para você!
Considerando o objeto “livro”, classifique cada palavra listada abaixo como sendo um atributo ou um
método:
Atributo Método
título
autor
cadastrar
consultar
gênero
alterar
ano
reservar
Comentário
Tal como dito anteriormente, os atributos são características (adjetivos) e os métodos, por sua vez, são
sempre ações (verbos).
17/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exemplo
Agora, pense no objeto "celular". Você consegue listar, mentalmente ou em um rascunho, cinco
atributos e cinco métodos desse objeto?
Atributos Métodos
modelo ligar()
marca desligar()
cor fazerchamada()
peso receberchamada()
dimensao_tela enviarmensagem()
capacidade_memoria acessaraplicativo()
Classes
Compare os dois carros a seguir:
Modelo Confortline EX
18/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Observe que os atributos dos objetos Gol e Palio são iguais, mas os valores são diferentes. Já os
métodos podem ser iguais ou diferentes.
O que tentamos fazer no exemplo anterior foi uma classificação dos objetos Veículos. Para isso,
colocamos esses objetos em uma ordem que nos possibilitasse entender cada um deles.
Na programação orientada a objetos, uma classe define o comportamento dos objetos por meio de
seus métodos e dos estados possíveis em que eles podem manter-se, devido a seus atributos.
Agora, vamos retomar os objetos Gol e Palio. Ambos são objetos do mundo real classificados como
veículos. Dessa forma, a classe dos dois objetos pode ser considerada a mesma, se pensarmos na
classe denominada Veículos.
Por exemplo:
Estado: ligado/desligado
Cor: prata
Combustível: flex
Métodos: acelerar(), frear(), transportar(), buzinar() etc.
19/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Fique atento! Atributos e métodos pertencem à classe. Já os valores dos atributos pertencem ao
objeto.
20/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Desafio
Além dos conceitos de atributos e métodos, queremos ver se você compreendeu os conceitos de classe
e instância.
Vamos lá?
Complete as frases a seguir, selecionando o conceito que completa corretamente cada uma delas.
Estado do Objeto
Para entender o conceito de estado de objeto, vamos analisar um exemplo.
Primeiramente, imaginemos o elevador de um edifício. Em seguida, vamos pensar nos métodos (ações)
e nos atributos (características) que podem ser atribuídos ao objeto Elevador.
Atributos Métodos
Direção transportar()
Porta abrirPorta()
Estado fecharPorta()
Tipo de carga atenderChamado()
A partir do estabelecimento dos métodos e atributos, podemos chegar a algumas conclusões. Vejamos
alguns exemplos.
21/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
O objeto Elevador faz parte de uma classe também chamada de Elevador. Tal classe tem como método
principal transportar.
Os atributos do objeto terão valores diferentes conforme o momento da operação em que esse objeto
se encontra. Chamamos de estado o conjunto de valores dos atributos de um objeto em um dado
momento.
Exemplo
Vamos analisar outro exemplo – o objeto chamado Connie.
A classe do objeto Connie será Cachorros. Nesse sentido, Connie tem nome, raça, cor, tamanho do
pelo, porte, peso, idade, dono, moradia etc.
Nome: Connie
Raça: Sem raça definida
Cor: Predominantemente caramelo
Tamanho do pelo: Longo
Porte: Médio
Peso: 6 kg
Idade: 4 anos
Dono: Mariana
Moradia: Rua do Aconchego, 1234
22/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Desse modo, os valores dos atributos serão diferentes para cada objeto Cachorro do mundo real. No
entanto, todos os atributos farão parte da classe Cachorros. Vejamos:
Classe: Cachorros
------------------------------
Atributos: nome, raça, cor, tamanho do pelo, porte, peso, idade, dono, moradia.
23/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exercícios de Fixação
Agora, veja o quanto você sabe sobre o assunto tratado neste tópico. Realize os exercícios a seguir e
aproveite para fixar melhor os conceitos vistos até aqui.
Questão 1
Como técnico em desenvolvimento de sistemas, você foi incumbido de passar algumas informações
sobre programação orientada a objetos aos novos estagiários da empresa.
Marque V para verdadeiro e F para falso em relação às informações sobre programação orientada a
objetos que serão passadas a eles:
informações V F
24/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Questão 2
Você trabalha como programador JAVA em uma empresa de TI e a pedido de seu coordenador precisa
preparar uma apresentação sobre POO para os novos programadores da empresa.
A. As características que descrevem o objeto são também os valores do objeto. Esses valores são
chamados de ______________ (atributos/dados).
Encerramento do Tópico
Neste tópico, entendemos melhor os conceitos relacionados à programação orientada a objetos a
partir de sua origem, sua nomenclatura e suas técnicas.
Agora, já sabemos identificar e classificar um objeto segundo a programação orientada a objetos, bem
como identificar atributos e métodos que compõem a classe de um objeto.
25/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Conteúdos:
Evento
Mensagens.
Evento
Quando falamos em evento, em que, geralmente, pensamos?
Ao encontrarmos amigos em uma festa, por exemplo, temos um evento em que as pessoas estão
interagindo, certo?
26/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Parâmetros do Método
Um método pode alterar o atributo da classe com que está interagindo, por meio de argumentos em
adição a seu objetivo (parâmetros). Isso significa que é possível passar parâmetros ou dados na
chamada do método.
O método é parte da classe, e não parte do objeto. Nesse sentido, o método pode também ser
herdado de outra classe. Em outro momento, veremos esse conceito de herança com mais detalhes.
O método é descrito por meio de um verbo, seguido de parênteses. Opcionalmente, podemos inserir
os parâmetros do método entre os parênteses.
27/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exemplo
Vamos retomar o exemplo do objeto Connie. Sua classe continua sendo Cachorros. A classe Cachorros
tem funções específicas – métodos específicos. Vejamos:
28/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Quem inicia a operação do objeto Elevador é alguém que quer utilizar os métodos desse objeto, ou
seja, as ações do elevador. Em outras palavras, tudo começa com alguém que necessita ser
transportado a algum andar por meio do elevador.
Nesse contexto, como o objeto João da Silva vai interagir com o objeto Elevador?
Como no mundo real, João vai chamar o elevador, esperar o elevador chegar, esperar a porta ser
aberta, entrar no elevador e escolher para qual andar quer ir. Em seguida, João vai aguardar que o
elevador chegue ao andar escolhido, esperar a porta ser aberta e sair.
29/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
O elevador é um tipo de objeto que sobe e desce carregando usuários o dia todo, não é mesmo? Isso
significa que a sequência de métodos se repete indefinidamente na utilização do objeto Elevador pelo
objeto Usuário.
Observe que a sequência de operação dos métodos deve seguir uma ordem específica. Mesmo
estando com os objetos, os métodos e os atributos corretos, se a ordem for alterada, há o risco de a
operação não funcionar.
30/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Por exemplo, o usuário não pode utilizar o método sairDoElevador() caso o elevador não execute o
método abrirPorta().
A complexidade nos relacionamentos entre os objetos sempre vai aumentar à medida que criamos
mais classes para definir novos objetos. Desse modo, precisamos definir, claramente, a que classe
os métodos e os atributos devem pertencer.
Mensagens
Agora que compreendemos como ocorre a interação entre objetos, vamos ao último conceito deste
capítulo: as mensagens.
Mensagens são trocas de informações entre os objetos. Tais informações são tratadas e devolvidas
pelos métodos, quando necessário.
31/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exemplo
Na classe Cachorros, como o objeto Connie vai executar os métodos que imaginamos?
Os estímulos listados são as mensagens. Com isso, podemos afirmar que as mensagens são criadas
pelas interações dos objetos com outros objetos. Vejamos:
32/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exercícios de Fixação
Agora, veja o quanto você sabe sobre o assunto tratado neste tópico. Realize os exercícios a seguir e
aproveite para fixar melhor os conceitos vistos até aqui.
Questão 1
Como especialista em POO, você foi chamado para fazer uma apresentação sobre essa tecnologia e
precisa resumir, em poucas frases, as interações entre objetos utilizando, como exemplo, os objetos
elevador e usuário.
Assim, você iniciou a sua apresentação destacando que o elevador é um tipo de objeto que sobe e
desce carregando usuários o dia todo. Isso significa que a sequência de métodos se repete,
indefinidamente, na utilização do objeto elevador pelo objeto usuário.
Dessa forma, pode-se observar que a sequência de operação dos métodos segue uma ordem
específica, mesmo estando com os objetos, os métodos e os atributos corretos. Se a ordem for
alterada, há o risco de a operação não funcionar.
TERMOS DEFINIÇÕES
A. Precisamos definir, claramente, a qual _______________ os
( 1 ) CLASSE métodos e os atributos devem pertencer.
( 2 ) OBJETOS
( 3 ) OPERAÇÃO B. Quanto mais detalhamos e especificamos a _____________,
( 4 ) MÉTODOS mais o código se aproxima do mundo real.
33/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Questão 2
Você recebeu um novo estagiário para compor a sua equipe e explicou a ele que métodos são ações
que o objeto pode realizar e que, na programação orientada a objetos, a única maneira de interagir
com os objetos é por meio dos métodos que ele possui. Complementando as informações, sugeriu a
ele que estudasse a respeito do método POO.
Agora, indique os termos entre parênteses que completam as afirmações a seguir, a respeito de
método em POO que você deverá trabalhar com o estagiário:
D. Um método pode alterar o atributo da classe com o qual está interagindo por meio de
________________ (argumentos/objetos) em adição a seu objetivo.
Agora, você já sabe como os objetos, as classes, os atributos e os métodos interagem entre si, de modo
a compor um roteiro de desenvolvimento de codificação em qualquer linguagem.
Você está prestes a concluir o capítulo. No ambiente on-line, para facilitar seus estudos,
disponibilizamos um PDF com um resumo dos conteúdos abordados neste capítulo, que se encontra
na próxima página.
34/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Síntese
Observe, a seguir, o mapa conceitual que sintetiza o conteúdo que acabamos de trabalhar:
35/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Conteúdos:
Abstração
Encapsulamento
Modularização.
Introdução
Antes de iniciarmos nosso estudo, imagine a seguinte situação:
Imagine que você tenha sido requisitado para cobrir as férias de um colega programador.
Logo no primeiro dia, pedem que você crie um novo módulo para um software que está sendo
desenvolvido.
Para isso, é preciso que seu colega tenha escrito tudo de forma modularizada.
36/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Abstração
A abstração consiste na habilidade de se concentrar nos aspectos essenciais de um contexto qualquer,
possibilitando a modelagem de conceitos, elementos, problemas e características do mundo real em
um domínio do sistema de software.
A abstração nem sempre produz os mesmos resultados. Desse modo, os resultados da abstração
dependem do contexto em que ela é utilizada.
37/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Para um mecânico, o carro é caracterizado por marca, modelo, potência, cilindradas, motor,
peças, defeitos, problemas etc.
Para o proprietário, o carro é caracterizado por cor, marca, modelo, potência, preço, ano,
consumo, status etc.
Para o Departamento de Trânsito (Detran), o carro é caracterizado por placa, marca, modelo,
proprietário, cor, chassi, IPVA, seguro obrigatório, licenciamento etc.
Imagine uma Pet Shop. Os atributos e os métodos da loja variam de acordo com o ponto de vista do:
Encapsulamento
A cápsula existe para proteger algo, certo? Um medicamento, por exemplo.
Por meio desse mecanismo, podemos impedir o acesso direto por outros objetos e garantir que todo o
processo de comunicação com o objeto aconteça por um conjunto predeterminado de operações.
38/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
A partir dos modificadores de acesso, o encapsulamento serve para controlar o acesso aos atributos
e métodos de uma classe.
Além de facilitar a manutenção de classes e a integridade dos atributos de um objeto por certo
momento, o encapsulamento ajuda a prevenir o problema da interferência indevida de um objeto
externo nos dados de outro objeto.
O usuário de um site de banco somente pode verificar seu saldo, mas não pode modificá-lo.
A modificação de saldo só pode ser feita pelo sistema do banco, mediante lançamento
contábil de débito ou crédito.
Nesse caso, usuário e senha são dados sensíveis que devem ser protegidos de acesso
indevido.
Se eles forem declarados como dados públicos erroneamente, qualquer objeto criado para
uso no desenvolvimento de um software poderá "enxergar" tais dados.
39/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exemplo
Vejamos mais um exemplo. Imagine que você está trabalhando para um hospital.
Observe os objetos da cena a seguir e pense em quais dados sensíveis desse contexto deveriam ser
preservados. Em seguida, vejamos alguns exemplos.
Desafio
Antes de prosseguirmos para outro pilar da orientação a objetos, vamos a mais um desafio?
Quais seriam os dados sensíveis de um relacionamento entre cliente e banco? Veja alguns exemplos de
respostas:
Dados pessoais:
Nome
Endereço de entrega
Telefone.
Movimentação bancária:
o Saldo da conta
o Créditos
o Débitos
o Senhas.
40/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Modularização
A modularização (ou componentização7) é o mecanismo que 7. Componetização – Alguns
permite que um sistema de software seja dividido em partes que autores chamam a
interagem entre si. Tais partes são chamadas de módulos. modularização de
componentização. O termo
representa a divisão do
Desse modo, o código desenvolvido é dividido em módulos sistema em componentes ou
independentes, que podem ser utilizados por qualquer objeto e a módulos.
qualquer tempo.
A modularização permite que uma parte do código possa ser alterada ou atualizada sem que todo o
código já desenvolvido seja alterado. Dessa maneira, fica muito mais fácil atualizar um software ou
corrigir um problema específico em um sistema.
Exemplo 1
Como vimos, a modularização é o mecanismo de
programação que permite que o desenvolvedor separe
em módulos as classes que têm métodos e atributos com
funções semelhantes.
Nesse caso, basta atualizar o módulo de impressão para que a correção tenha efeito.
41/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exemplo 2
O Sistema Operacional Windows utiliza muitos módulos chamados de DLLs – Dynamic-Link Libraries ou
bibliotecas de vínculo dinâmico. Desse modo, quando fazemos uma atualização no sistema
operacional, as DLLs são trocadas.
O desenvolvedor também pode encapsular suas classes em DLLs. Quando é feita a atualização de uma
DLL específica em parte do software, a atualização ocorre a partir da substituição dessa DLL. Para
ilustrar esse exemplo, veja uma representação gráfica da modularização:
Repare que separamos o aplicativo em três módulos principais – Comunicação, Gráficos e Banco de
Dados. Cada módulo cuida, especificamente, da parte que lhe compete.
Reutilização de Código
Antes de encerrarmos o tópico, vamos aprender a reutilizar códigos por meio de um exemplo.
Imagine que você esteja desenvolvendo um sistema para uma empresa de turismo. O sistema deve
englobar a parte de hotelaria e de reserva de passagens. Será que é possível aproveitar a codificação
de um sistema para o outro?
Partindo do conceito de modularização, já sabemos que o software pode ser dividido em partes ou
módulos independentes. Com isso, é possível realizarmos a atualização e a correção de problemas
específicos.
No entanto, repare que há uma vantagem que vai além da resolução de problemas. O maior ganho
com a modularização está na melhoria do fluxo do programa e na viabilidade de reuso dos códigos.
Se é viável reutilizar códigos, como podemos fazer isso na prática? Vamos descobrir!
42/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Observe que alguns métodos podem ser utilizados em ambos os sistemas. Desse modo, os métodos
comuns poderão ser reutilizados com a modularização.
Exercícios de Fixação
Agora, veja o quanto você sabe sobre o assunto tratado neste tópico. Realize os exercícios a seguir e
aproveite para fixar melhor os conceitos vistos até aqui.
Questão 1
Você trabalha com o desenvolvimento de sistemas que utilizam programação orientada a objetos: um
padrão de desenvolvimento – seguido por muitas linguagens, com Java e C# – que tem evoluído muito
e está assentado em quatro grandes pilares, destacando questões voltadas para segurança e
reaproveitamento de código.
43/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Questão 2
Você está participando de um processo seletivo para a vaga de analista de programador de POO de
uma grande empresa de tecnologia da informação e, na parte teórica do processo seletivo, teve de
distinguir algumas informações em relação aos diagramas da UML.
informações V F
Encerramento do Tópico
Neste tópico, vimos como a programação orientada a objetos trata as tarefas repetitivas. Também
aprendemos como reutilizar e melhorar um código já escrito.
44/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Conteúdos:
Polimorfismo
Herança
Generalização
Especialização.
Polimorfismo
Agora, vamos conhecer o terceiro pilar da programação orientada a objetos: o polimorfismo.
Na POO, o polimorfismo denota uma situação em que um objeto pode comportar-se de maneiras
diferentes ao receber uma mensagem. O comportamento do objeto vai depender do modo como ele
foi concebido.
8. Driver – No contexto da
Imagine um aplicativo que faça a impressão de relatórios por
informática, a palavra "driver"
meio de uma classe chamada Impressão. se refere a um conjunto de
códigos escritos (instruções)
O aplicativo é uma interface de acesso às funcionalidades da que fazem a comunicação
entre o sistema operacional
impressora usada pelo usuário e funciona por meio de
de sua máquina e o hardware.
um driver8 fornecido pelo fabricante. Cada fabricante
disponibiliza o driver de sua impressora.
45/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Sabemos que uma impressora a laser tem um mecanismo de impressão totalmente diferente de uma
impressora a jato de tinta. No entanto, para o aplicativo, isso não importa, pois o envio da mensagem à
impressora para que ela possa imprimir é feito por meio de códigos ou instruções.
Como vimos, a maneira como a impressora imprime o relatório varia de acordo com o tipo do
equipamento. Nesse caso, a impressão ocorre de formas diferentes para a mesma mensagem de
impressão.
Reutilização de Código
Outro exemplo de sobrecarga de método ocorre quando enviamos o comando imprimir a partir de
um documento do Word.
Nessa situação, abre-se uma caixa de diálogo onde o usuário deve selecionar para qual impressora
será dada a função de imprimir.
Ao abrir um documento do Excel e solicitar sua impressão, a mesma caixa de diálogo aparecerá.
Você sabe como o módulo de impressão sabe a diferença entre um documento do Word, uma planilha
do Excel, uma imagem e uma fotografia?
Para que um documento visualizado na tela do computador se torne um documento impresso, muitos
métodos, classes, interfaces e códigos foram escritos. A partir daí, a operação imprimir se torna
extremamente simples.
Vamos adiante!
Exemplo
Vejamos um exemplo de polimorfismo para o método comunicar()?
Note que os diferentes objetos – criança, cão, gato e pássaro – comunicam-se de diferentes formas.
Desse modo, as respostas do método comunicar() são diferentes para cada um dos objetos.
46/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Isso significa que classes comuns podem conter mensagens diferentes se os objetos utilizarem essas
classes para um método comum.
Herança
Vimos que o polimorfismo é complementado também pelo conceito de herança – o quarto e último
pilar da POO.
A palavra "herança" significa aquilo que se herda, aquilo que é transmitido por hereditariedade.
Podemos entender a herança por meio da genética. Por exemplo, um filho herda as características
genética dos pais e possui suas próprias características. Por sua vez, repassa suas características a seus
filhos. Desse modo, os filhos do filho podem ter características dos avós e as próprias características
também.
A notação de uma herança é representada por um triângulo com o vértice apontado para a classe
base.
Outra notação muito aceita é a seguinte: coloca-se o nome da classe filha mais o símbolo de dois-
pontos (:) e, em seguida, coloca-se o nome da classe herdada, como podemos observar no esquema a
seguir.
47/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Desafio
Como vimos, o conceito de herança estabelece que uma classe pode herdar características de outra. A
partir disso, propomos a você um desafio!
48/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Pense em dois atributos e dois métodos comuns pelo menos. Vejamos exemplos de resposta.
De acordo com o exemplo, algumas características que podem ser herdadas da classe
Mamíferos pelas classes Seres Humanos, Cetáceos e Felinos são:
Atributos comuns:
Idade
Sexo
Métodos comuns:
alimentar()
procriar()
dormir()
Generalização
Segundo o conceito de generalização, a classe filha pode estender ou repassar seus métodos e
atributos para outra classe – classe mãe. Em outras palavras, novas classes são criadas por meio da
similaridade entre as classes. Vejamos um exemplo de generalização.
Inicialmente, vamos criar uma classe chamada Animais. Os métodos e atributos da classe
Animais serão:
Animais
Métodos Atributos
Tipo
andar()
Raça
alimentar()
Nome
dormir()
Idade
procurarAlimento()
Sexo
procriar()
Data de nascimento
49/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Agora, vamos criar outra classe chamada Ser Humano. Os métodos e atributos da classe Ser
Humano serão:
Ser Humano
Métodos Atributos
andar() Nome
alimentar() Etnia
dormir() Idade
procriar() Sexo
estudar() RG
trabalhar() CPF
jogar() Data de nascimento
Animais
Métodos Atributos
Tipo
andar()
Raça
alimentar()
Nome
dormir()
Idade
procurarAlimento()
Sexo
procriar()
Data de nascimento
Ser Humano
Métodos Atributos
andar() Nome
alimentar() Etnia
dormir() Idade
procriar() Sexo
estudar() RG
trabalhar() CPF
jogar() Data de nascimento
50/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Os métodos duplicados poderão fazer parte de uma classe superior, mais genérica,
chamada Seres Vivos. Desse modo, os atributos e os métodos comuns que formarão a classe
Seres Vivos são:
Seres Vivos
Métodos Atributos
andar() Nome
alimentar() Idade
dormir() Sexo
procriar() Data de nascimento
Agora, as classes Animais e Ser Humano conterão somente os atributos e métodos específicos delas.
Os demais atributos e métodos serão herdados da classe Seres Vivos.
Classe Animais
Atributos: Tipo, Raça.
Método: procurarAlimento()
Nesse exemplo, vemos que os atributos e métodos comuns (gerais) estão contidos em uma classe
superior chamada Seres Vivos.
A classe Seres Vivos é a generalização dos atributos e dos métodos comuns. Por outro lado, as classes
Animais e Ser Humano se tornaram mais específicas. Esse é o conceito da especialização.
51/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Especialização
Segundo o conceito de especialização, a classe deve ser o mais detalhada possível com relação ao
objeto que ela classifica, identificando as diferenças entre os objetos de mesma classe.
No exemplo da classe Animais, suponhamos que queremos separar os pássaros dos felinos e dos
caninos. Com isso, estaremos fazendo a especialização da classe Animais.
Observe o esquema.
Cada nova subclasse vai especializar e detalhar mais a classe Animais. Desse modo, serão criadas três
novas subclasses – Pássaros, Felinos e Caninos.
Agora, a classe Pássaros pode conter o método voar(), a classe Felinos pode conter o
método unhar() e a classe Caninos pode conter o método latir().
Note que os três métodos citados são específicos de cada objeto descrito. Em outras palavras, tais
métodos constituem as diferenças entre os objetos da classe Animais antes da especialização.
52/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exercícios de Fixação
Agora, veja o quanto você sabe sobre o assunto tratado neste tópico. Realize os exercícios a seguir e
aproveite para fixar melhor os conceitos vistos até aqui.
Questão 1
Você foi contratado para ser programador de POO sênior em uma empresa de Tecnologia da
Informação e precisa implementar, para um jogo de ação, um objeto carro e um objeto avião.
A melhor forma de realizar essa tarefa, com boas práticas de POO, é implementar um objeto:
Carro, que apresente os atributos: velocidade, combustível, passageiros e portas; e outro objeto
Avião, que apresente os atributos: velocidade, combustível, passageiros e autonomia de voo.
Questão 2
Você é programador OO e precisa programar um objeto Banco que poderá ser instanciado sem a
informação do saldo inicial ou com o valor do saldo inicial informado por meio de uma mensagem.
Você decidiu fazer uma classe com duas ocorrências do método banco ( ), sendo que, em uma delas, o
método será acionado juntamente com o saldo.
herança.
polimorfismo.
generalização.
especialização.
53/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Você está prestes a concluir o capítulo. No ambiente on-line, para facilitar seus estudos,
disponibilizamos um PDF com um resumo dos conteúdos abordados neste capítulo, que se encontra
na próxima página.
54/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Síntese
Observe, a seguir, o mapa conceitual que sintetiza o conteúdo que acabamos de trabalhar:
55/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Conteúdos:
Associação
Agregação
Multiplicidade.
Introdução
Você já reparou que as técnicas da POO estão presentes no funcionamento dos smartphones, na forma
como procedemos para pagar contas e em outras coisas do cotidiano?
A maioria das atividades comerciais e dos serviços passa pelo mundo da programação. Por esse
motivo, interfaces mais fáceis e agradáveis estão sendo desenvolvidas diariamente. Nesse contexto, a
programação orientada a objetos é fundamental.
No capítulo anterior, aprendemos que as classes devem interagir entre si para executar uma
mensagem ou tarefa comum. Será que essas classes precisam estar ligadas pelo mecanismo da
herança? Vamos descobrir!
Associação
As classes também podem se relacionar por meio de associação.
A associação ocorre quando duas classes independentes colaboram entre si, criando um
relacionamento entre tais estruturas. Esse relacionamento indica que objetos de uma classe estão
relacionados a objetos de outra classe.
Nesse sentido, a associação descreve os vínculos existentes entre as classes que interagem entre si.
56/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Agregação
Outra forma de relacionar classes é por meio da agregação. A agregação é um relacionamento
estrutural por meio do qual parte de uma classe é associada a outra classe e partes de objetos são
associados a outras partes de objetos. Com isso, temos uma sequência de montagem.
Na agregação, uma classe se agrega a outra, mas mantém sua identidade própria. Por conta disso, a
agregação é considerada um tipo especial de associação.
57/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
A notação de uma agregação é representada por losangos e retas que ligam as classes. Vamos ver um
exemplo?
Multiplicidade
A multiplicidade busca estabelecer como as classes que formam uma associação fornecem
informações umas às outras. Além disso, a multiplicidade permite especificar o nível de dependência
entre as classes envolvidas.
Normalmente, a multiplicidade descreve os valores mínimos e máximos que uma associação pode
conter. Tal informação aparece da seguinte forma nos diagramas:
Multiplicidade n ‒ muitos.
Indica que muitos objetos estão envolvidos nos relacionamentos.
58/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Relembrando Conceitos
Vídeo
Vamos aprender um pouco mais? No ambiente on-line, você
pode assistir ao audiovisual Relacionamento entre Classes
para rever alguns conceitos considerados neste capítulo.
59/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exercícios de Fixação
Agora, veja o quanto você sabe sobre o assunto tratado neste tópico. Realize os exercícios a seguir e
aproveite para fixar melhor os conceitos vistos até aqui.
Questão 1
Uma multinacional está desenvolvendo um software para uma revenda autorizada de automóveis.
Como programador, você foi encarregado de validar, junto com o analista de sistemas, o diagrama de
classes a seguir:
Analisando o diagrama, marque V para verdadeiro e F para falso em relação às afirmações a seguir.
informações V F
A identificação 1 e * representam a
cardinalidade dos relacionamentos.
60/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Questão 2
Um cliente solicitou uma consulta ao departamento de TI a respeito dos motivos de a programação
orientada a objetos ser considerada mais eficiente do que programação tradicional.
argumentos V F
Encerramento do Tópico
Neste tópico, aprendemos a identificar o relacionamento entre objetos.
Vimos como uma informação pode ser trocada entre as classes e seus objetos, modificando a forma
como um objeto se comporta em relação a outro objeto.
61/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Conteúdos:
Vantagens da POO
Dicas para a modelagem de um sistema orientado a objetos.
Com isso, nesse modelo de programação, existe total coerência entre dados e processos do
mundo real, e atributos e métodos do mundo da programação.
62/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Na POO, isso já está implícito. As classes, os objetos e seus relacionamentos definidos são
exatamente os mesmos que serão implementados.
Multidesenvolvimento
Os desenvolvedores podem programar partes do sistema a ser desenvolvido
simultaneamente. Isso pode ser feito a partir de um conjunto de bibliotecas disponíveis de
comum acordo. Cada uma dessas partes será acrescida ao projeto final do sistema.
Facilidade de manutenção
Quando necessitamos modificar ou corrigir uma classe, estamos dizendo que é possível
identificar qual classe está com problemas em seus métodos e atributos. Isso também indica
que podemos criar novas classes, métodos, atributos e relacionamentos facilmente, para
atender as novas demandas do sistema.
Tal possibilidade permite que novos códigos de programação sejam acrescidos ou excluídos
com igual facilidade. Da mesma forma, não teremos códigos sem função dentro do sistema.
63/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Uma vez estabelecidas as classes e os objetos, vamos ajustando as classes e seus relacionamentos,
melhorando o modelo. Esse é um processo natural e previsto.
Como podemos nos preparar para o desenvolvimento de um modelo de orientação a objetos? Observe
os principais passos.
Passo 1
Não inicie um modelo de objetos apenas definindo classes, atributos, métodos, associações e
heranças. A primeira coisa a fazer é compreender o contexto do problema a ser resolvido.
Passo 2
Tente manter o modelo simples. Evite complicações desnecessárias. Se necessário, faça uma
decomposição do problema em vários problemas simples.
Passo 3
Escolha os nomes com critério e cuidado. Os nomes corretos são importantes e carregam
conotações poderosas. Outros desenvolvedores terão dificuldades se o nome da classe não
for condizente com o que é executado. Os nomes devem ser descritivos, claros e não deixar
margem a dúvidas.
Passo 4
Identifique os métodos e os atributos essenciais. Não coloque identificadores de objetos
dentro de outros objetos como atributos. Modele os identificadores com clareza, indicando-os
como associações. Isso torna o modelo mais claro e independente da implementação.
64/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Passo 5
Identifique os relacionamentos necessários entre os objetos. Evite associações que envolvam
muitas classes de objetos. Na maioria das vezes, tais associações podem ser decompostas em
associações simples, tornando o modelo mais claro. É muito mais fácil descrever vários
relacionamentos simples do que um relacionamento entre várias classes.
Passo 6
Tente evitar hierarquias de generalização muito densas ou heranças complexas.
Passo 7
Sempre documente seus modelos de objetos, classes e relacionamentos. A UML – Unified
Modeling Language – é perfeita para isso.
Passo 8
A complexidade e o detalhamento de classes e objetos têm um limite. O limite está ligado a
seu uso prático. Não adianta definir muitos atributos e métodos se vamos utilizar somente
alguns. A quantidade de atributos e métodos depende da complexidade do problema.
Relembrando Conceitos
Vídeo
Vamos aprender um pouco mais? No ambiente on-line,
você pode assistir ao audiovisual Programação
Orientada a Objetos - POO para rever e fixar melhor
alguns conceitos vistos até aqui.
Em breve, você vai tornar-se um desenvolvedor de sistemas. Desse modo, com certeza, vai
fazer consultas frequentes à web para tirar dúvidas ou aprender a utilizar uma classe, uma
biblioteca ou um método.
Nessas ocasiões, antes de copiar e colar códigos escritos por terceiros, verifique se o autor
autorizou o uso por qualquer pessoa ou empresa, sem restrições.
É muito importante que a licença seja explícita. Caso contrário, você e a empresa em que
trabalha podem sofrer processos caríssimos de uso indevido de direitos autorais.
65/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Atualmente, existem softwares e bancos de dados que fazem uma busca completa em
seu software para ver se seu código não está infringindo leis de patentes ou de direitos
autorais.
Normalmente, empresas que compram serviços verificam se existe código escrito sem
permissão de uso. Por conta disso, não use o código se tiver dúvida sobre sua licença de uso.
Muitos desenvolvedores autorizam somente a cópia de seu código para uso individual. Desse
modo, quando o uso se torna comercial, devemos pagar pelos direitos de uso.
Pesquise os tipos de licença mais comuns de código aberto e suas restrições. Siglas como
GNU e GPL serão parte de seu mundo de desenvolvedor.
Jamais utilize componentes prontos – como DLLs ou executáveis –, mesmo que sejam
gratuitos.
Muitos hackers são desenvolvedores normais, mas fazem códigos maliciosos e distribuem-nos
pela web gratuitamente.
Tais códigos podem abrir portas em firewalls, replicar o que é digitado no teclado, capturar
senhas de usuários da rede de empresas, entre outras coisas. Há uma infinidade de códigos
que podem fragilizar a segurança de seu ambiente de desenvolvimento.
Se, ainda assim, valer a pena assumir os riscos, prefira componentes com código-fonte
distribuído pelo autor para ser averiguado.
Normalmente, essas licenças de uso são gratuitas. No entanto, não há garantias de que vão
funcionar adequadamente.
Como desenvolvedor, autor e produtor de softwares ou soluções, você deve assumir uma postura mais
séria. Você não vai querer que sua ideia seja copiada e reproduzida sem autorização, não é mesmo?
A linha do que é ético ou não é bem tênue. No papel, pode parecer "preto no branco", mas é bem
conflitante na vida real.
66/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Por exemplo, você faz download de filmes e músicas pela internet gratuitamente? Isso parece
ético com os autores, os cantores e os produtores do produto que você consome? Utilizar
trabalhos de outros e dizer que foi você quem desenvolveu é ético?
Nos países de primeiro mundo, a corrupção, o plágio, a cópia ilegal e a infração de direitos
autorais têm severas implicações legais e econômicas.
Antes de ser lei, ética é atitude. Ética é exercício contínuo de caráter. Não esqueça disso!
Saiba mais!
No Brasil, os princípios, as garantias, os direitos e os deveres para o uso da Internet são tratados pela
Lei 12.965/14, conhecida como o Marco Civil da Internet.
http://www.planalto.gov.br/ccivil_03/_ato2011-2014/2014/lei/l12965.htm
Exercícios de Fixação
Questão 1
Para um trabalho em grupo, do curso de programação, você foi encarregado de apresentar as
características e as vantagens da POO.
Assim, você iniciou sua apresentação explicando que a modelagem de um sistema baseado em
orientação a objetos é um meio de descrever os sistemas e as necessidades do mundo real.
67/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Questão 2
Como desenvolvedor de sistemas, você precisou fazer consultas na web para tirar dúvidas sobre uma
biblioteca, durante o atendimento a um cliente.
Nessa ocasião, para agir guiado pela ética, você optou por:
utilizar apenas códigos que não apresentavam licença explícita, para evitar problemas.
copiar e colar códigos que precisou utilizar, uma vez que estavam disponíveis na rede.
Agora, você compreende a importância da orientação a objetos e está preparado para realizar a
modelagem de um sistema!
Você está prestes a concluir o capítulo. No ambiente on-line, para facilitar seus estudos,
disponibilizamos um PDF com um resumo dos conteúdos abordados neste capítulo, que se encontra
na próxima página.
68/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
Síntese
Observe, a seguir, o mapa conceitual que sintetiza o conteúdo que acabamos de trabalhar:
69/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
LEITURA RECOMENDADA
Amplie seu conhecimento com algumas leituras.
CORREIA, Carlos Henrique; TAFNER, Malcon Anderson. Análise orientada a objetos. 2. ed. Florianópolis:
Visual Books, 2006. p. 105-108.
BARNES, David J.; KOLLING, Michael. Programação orientada a objetos com Java. 4. ed. São Paulo:
Prentice Hall, 2009. cap. 5.
70/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
REFERÊNCIAS BIBLIOGRÁFICAS
Apostila de orientação a Objetos com Java.
BARNES, David J.; KOLLING, Michael. Programação orientada a objetos com Java. 4. ed. São Paulo:
Prentice Hall – Br, 2009.
CAMARA, Fabio. Orientação a objeto com .NET. 2. ed. Florianópolis: Visual Books, 2006.
CARVALHO, Adelaide. Práticas de C# – Programação orientada por objetos. Lisboa: FCA, 2011.
CORREIA, Carlos Henrique; TAFNER, Malcon Anderson. Análise orientada a objetos. 2. ed. Florianópolis:
Visual Books, 2006.
71/74
PROGRAMAÇÃO ORIENTADA A OBJETOS
ENCERRAMENTO
Parabéns!
Chegamos ao final deste conteúdo! Esperamos que você tenha gostado das técnicas apresentadas de
Programação Orientada a Objetos (POO).
Sem dúvida, os conceitos serão mais bem-entendidos quando você iniciar a programação
propriamente dita.
Você verá que a POO vai facilitar muito suas tarefas. Principalmente, em relação à manutenção, às
melhorias e ao reuso de código já escrito.
Lembre-se de que, para ser um profissional de destaque, você precisa estar sempre se aperfeiçoando.
Então não pare por aqui, mantenha-se atualizado e faça de todas as suas experiências profissionais um
caso de sucesso.
72/74
SISTEMAS OPERACIONAIS DE REDE
3/74
SISTEMAS OPERACIONAIS DE REDE
4/74