orientação à objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/fg/engenharia de...

41
Orientação à Objetos Aécio Costa

Upload: trankhue

Post on 09-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Aécio Costa

Page 2: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

O paradigma da orientação à objetos

Page 3: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosParadigma?

Um paradigma é uma forma de abordar um problema. No contexto da modelagem de um sistema de software, um

paradigma tem a ver com a forma pela qual esse sistema éentendido e construído.

A primeira abordagem usada para modelagem de sistemas desoftware foi o paradigma estruturado. Uso da técnica de decomposição funcional “divida sucessivamente um problema complexto em

subproblemas” Hoje em dia, praticamente suplantou o paradigma anterior, o

paradigma da orientação a objetos...

Page 4: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosO Paradigma da Orientação a Objetos

O paradigma da OO surgiu no fim dos anos 60. Alan Kay, um dos pais desse paradigma, formulou a chamada

analogia biológica. “Como seria um sistema de software que funcionasse como

um ser vivo?”

Alan Kay

Page 5: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosAnalogia Biológica

Cada “célula” interagiria com outras células através do envio de mensagens para realizar um objetivo comum.

Adicionalmente, cada célula se comportaria como uma unidade autônoma.

De uma forma mais geral, Kay pensou em como construir um sistema de software a partir de agentesautônomos que interagementre si.

Page 6: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosFundamentos da Orientação a Objetos

1. Qualquer coisa é um objeto.2. Objetos realizam tarefas através da requisição de

serviços a outros objetos.3. Cada objeto pertence a uma determinada classe.

Uma classe agrupa objetos similares.4. A classe é um repositório para comportamento

associado ao objeto.5. Classes são organizadas em hierarquias.

Page 7: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosPrincípios da Orientação a Objetos

Uma analogia...

PIZZARIA

Page 8: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Orientação a Objetos

O paradigma da orientação a objetos visualiza umsistema de software como uma coleção de agentesinterconectados chamados objetos. Cada objeto é responsávelpor realizar tarefas específicas. É através da interação entreobjetos que uma tarefa computacional é realizada.

Page 9: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Orientação a Objetos

Um sistema de software orientado a objetos consiste deobjetos em colaboração com o objetivo de realizar asfuncionalidades deste sistema. Cada objeto é responsável portarefas específicas. É através da cooperação entre objetos quea computação do sistema se desenvolve.

Page 10: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Conceitos da Orientação a Objetos

Classes e objetos Mensagens Encapsulamento Polimorfismo Herança

Page 11: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosConceitos e Princípios da OO

Conceitos Classe Objeto Mensagem

Princípios Encapsulamento Polimorfismo Generalização (Herança) Composição

Page 12: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Classes e objetos

O mundo real é formado de coisas.

Na terminologia de orientação a objetos, estas coisas domundo real são denominadas objetos.

Page 13: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Classes e objetos

Seres humanos costumam agrupar os objetos para entendê-los.

A descrição de um grupo de objeto é denominada classe deobjetos, ou simplesmente de classe.

Page 14: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosO que é uma classe?

Uma classe é um molde para objetos. Diz-se que um objetoé uma instância de uma classe.

Uma classe é uma abstração das características relevantesde um grupo de coisas do mundo real. Na maioria das vezes, um grupo de objetos do mundo real é

muito complexo para que todas as suas características e comportamento sejam representados em uma classe.

Page 15: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Exemplos de Classe

Cliente

Representante

Produto

Page 16: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosClasses e objetos

Importante: uma classe é uma abstração das característicasrelevantes de um grupo de coisas do mundo real.

Page 17: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosObjetos como abstrações

Uma abstração é uma representação das característicasrelevantes de um conceito do mundo real para umdeterminado problema.

Page 18: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Classe X Objeto

Page 19: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos Classes são definições estáticas, que possibilitam o

entendimento de um grupo de objetos. Objetos são abstrações de entidades que existem no mundo

real.

CUIDADO: estes dois termos muitas vezes são usadosindistintamente.

Page 20: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosMensagens

Para que um objeto realize alguma tarefa, deve haver um estímulo enviado a este objeto.

Pense em um objeto como uma entidade ativa que representa uma abstração de algo do mundo real Então faz sentido dizer que tal objeto pode responder a

estímulos a ele enviados Assim como faz sentido dizer que seres vivos reagem a

estímulos que eles recebem.

Page 21: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosMensagens

Independentemente da origem do estímulo, quando ele ocorre, diz-se que o objeto em questão está recebendo uma mensagem.

Uma mensagem é uma requisição enviada de um objeto a outro para que este último realize alguma operação.

Page 22: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosMensagens

Objetos de um sistema trocam mensagens isto significa que estes objetos estão enviando mensagens

uns aos outros com o objetivo de realizar alguma tarefa dentro do sistema no qual eles estão inseridos.

Page 23: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosMensagens

Page 24: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosAbstração

Uma abstração é qualquer modelo que inclui os aspectos relevantesde alguma coisa, ao mesmo tempo em que ignora os menosimportantes

O resultado de uma operação mental de abstração depende não tanto do fenômeno observado, mas do interesse do observador

Page 25: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosAbstração depende do observador

Page 26: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Page 27: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Quantas Colunas ??

Page 28: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Page 29: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Abstração na orientação a objetos

A orientação a objetos faz uso intenso de abstrações. Os princípios da orientação a objetos podem ser vistos

como aplicações do Princípio da Abstração. Princípios: Encapsulamento Polimorfirmo Herança

Page 30: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

Abstração na orientação a objetos

Page 31: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosEncapsulamento

Objetos possuem comportamento. O termo comportamento diz respeito a que operações são

realizadas por um objeto e também de que modo estasoperações são executadas.

De acordo com o encapsulamento, objetos devem “esconder”a sua complexidade...

Esse princípio aumenta qualidade, em termos de: Legibilidade Clareza Reuso

Page 32: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosEncapsulamento

Page 33: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosEncapsulamento

O encapsulamento é uma forma de restringir o acesso aocomportamento interno de um objeto. Um objeto que precise da colaboração de outro objeto para

realizar alguma tarefa simplesmente envia uma mensagema este último.

O método (maneira de fazer) que o objeto requisitado usapara realizar a tarefa não é conhecido dos objetosrequisitantes.

Page 34: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosEncapsulamento

Na terminologia da orientação a objetos, diz-se que umobjeto possui uma interface.

A interface de um objeto é o que ele conhece e o que elesabe fazer, sem descrever como o objeto conhece oufaz.

A interface de um objeto define os serviços que ele poderealizar e conseqüentemente as mensagens que elerecebe.

Page 35: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosEncapsulamento

Uma interface pode ter várias formas de implementação.

Mas, pelo Princípio do Encapsulamento, a implementação deum objeto requisitado não importa para um objetorequisitante.

Page 36: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosEncapsulamento

OBJETO

MEN

SAG

EM

MEN

SAGEM

INTERFACE

IMPLEMENTAÇÃO

Page 37: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosPolimorfismo

É a habilidade de objetos declasses diferentes responderema mesma mensagem dediferentes maneiras.

Page 38: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosHerança

A herança pode ser vista como um nível de abstração acima da encontrada entre classes e objetos.

Na herança, classes semelhantes são agrupadas em hierarquias. Cada nível de uma hierarquia pode ser visto como um nível

de abstração. Cada classe em um nível da hierarquia herda as

características das classes nos níveis acima.

Page 39: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosHerança

A herança facilita o compartilhamento de comportamento entre classes semelhantes.

As diferenças ou variações de uma classe em particular podem ser organizadas de forma mais clara

Page 40: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à ObjetosHerança - Exemplo FIGURA

FIGURA GEOMÉTRICA LINHA

QUADRADO CÍRCULO

Page 41: Orientação à Objetos - aeciocosta.com.braeciocosta.com.br/wp-content/uploads/FG/Engenharia de Software 2014... · Encapsulamento Polimorfismo ... O encapsulamento é uma forma

Orientação à Objetos

HIERARQUIA DE CLASSES DE CONTAS BANCÁRIAS

CONTA BANCÁRIA

CONTA CORRENTE

CONTA POUPANÇA

APLICAÇÃO CURTO PRAZO

APLICAÇÃO LONGO PRAZO

HIERARQUIA DE CLASSES DE CONTAS BANCÁRIAS