Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação...

17
Herança e Polimorfismo Herança e Polimorfismo Programação Orientada a Objetos Programação Orientada a Objetos Prof. Bruno Gomes Prof. Bruno Gomes [email protected] [email protected]

Transcript of Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação...

Page 1: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

Herança e PolimorfismoHerança e Polimorfismo

Programação Orientada a ObjetosProgramação Orientada a Objetos

Prof. Bruno GomesProf. Bruno Gomes

[email protected]@ifrn.edu.br

Page 2: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

Projeto Orientado a ObjetosProjeto Orientado a Objetos

• O que desejam?

– Produção de projetos conceitualmente simples o

bastantes para serem entendidos

– Poderosos o suficientes para resolver problemas – Poderosos o suficientes para resolver problemas

pesados de forma eficaz

• Uma Solução:

– Orientação a Objetos

Page 3: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

Projeto Orientado a ObjetosProjeto Orientado a Objetos

• Objetivos:

– Robustez

• Sistemas confiáveis, tolerante a falhas

– Adaptabilidade– Adaptabilidade

• Capacidade de reagir conforme o contexto

– Reutilizabilidade

• Reutilização do software

Page 4: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

Projeto Orientado a ObjetosProjeto Orientado a Objetos

• Princípios:

– Abstração

– Encapsulamento

– Modularidade– Modularidade

Page 5: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

AbstraçãoAbstração

• Decompor um sistema complicado em suas partes fundamentais

• Descrevê-las em uma linguagem simples e precisa

– Atribuir-lhes um nome e descrever suas funcionalidades

• Abstrair os detalhes desnecessários

• Modelar conceitos, entidades, elementos, problemas e características do mundo real levando em conta apenas os detalhes importantes

• Vantagem:

– Robustez

Page 6: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

EncapsulamentoEncapsulamento

• Diferentes componentes de um sistema não devem

revelar detalhes internos de suas respectivas

implementações

• Vantagens:• Vantagens:

– Liberdade na implementação dos detalhes do sistema

– Permite a adaptação (modificar partes de um programa

sem afetar outros componentes do mesmo)

Page 7: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

ModularidadeModularidade

• Divisão dos componentes do software em

unidades funcionais separadas

• Essas unidades se interagem entre si, fazendo

com que o sistema funcione de forma com que o sistema funcione de forma

adequada

• Vantagem:

– Reutilização de Software

Page 8: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

ModularidadeModularidade

• Modelo Hierarquico

Prédio

Apartamento Casa Prédio Comercial

Até 2

andares

Mais de 2

andares Térreo Sobrado Arranha-céu

Page 9: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

ModularidadeModularidade

• Modelo Hierarquico

Veículo

Moto Carro Caminhões

Page 10: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

Tipos de Modelo HierárquicoTipos de Modelo Hierárquico

• Tipos de Modelo Hierárquico:

– Herança

– Polimorfismo

Page 11: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

HerançaHerança

• Situação - 2 Tipos de Funcionários:

FuncionárioAtributos:

•Nome

•CPF

•Salário

• Problema:

– Repetição de alguns atributos para todos os funcionários

• Como Resolver?

Desenvolvedor GerenteAtributos:

•Nome

•CPF

•Salário

Atributos:

•Nome

•CPF

•Salário

•Senha

Método:

•Autenticar

Page 12: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

HerançaHerança

• Solução: Utilização de Herança

Atributos:

•Nome

•CPF

•Salário

Funcionário

Herdam

• Desenvolvedor e Gerente herdam os atributos e métodos de Funcionário

Desenvolvedor Gerente

•Salário

Atributo:

•Senha

Método:

•autenticar()

Herdam

Page 13: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

HerançaHerança

• Estrutura Hierárquica e modular

• Projeção de classes genéricas que podem ser

especializadas em classes mais particulares

Classes especializadas reutilizam o código das • Classes especializadas reutilizam o código das

mais genéricas AB

CA

BA

BC

D

E

Características

Herdadas

Classe Genérica

Classe

Especializada

Classe

Especializada

Page 14: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

HerançaHerança

• Classe genérica, classe base, superclasse ou pai:

– Define variáveis de instância “genéricas” e métodos

• Classe especializada, derivada, subclasse ou filha:

– Especializa, estende ou herda os métodos “genéricos” de – Especializa, estende ou herda os métodos “genéricos” de

uma superclasse

– Define apenas os métodos que são especializados

Page 15: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

PolimorfismoPolimorfismo

• Situação:

Método:

•respirar()Animal

Herdam

Cachorro Peixe

Herdam

Cachorro e Peixe respiram da mesma forma?

Page 16: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

PolimorfismoPolimorfismo

• Solução:

– Utilizar Polimorfismo para reescrita do método

herdado na subclasse

Page 17: Programação Orientada a Objetos - professor.pbaesse.net · Herança e Polimorfismo Programação Orientada a Objetos ... – Encapsulamento – Modularidade. Abstração • Decompor

PolimorfismoPolimorfismo

• Significa “várias formas”

• Habilidade de um mesmo tipo de objeto

poder realizar ações diferentes ao receber

uma mesma mensagemuma mesma mensagem

• Criação de múltiplas classes com os mesmos

métodos e propriedades, mas com

funcionalidades e implementações diferentes