programação orientada a objetos - mdkinformatica.com.br · eleva a programação e o...

55
Programação Orientada a Objetos O FOCO NO MUNDO REAL PAULO DAMICO

Upload: dinhhanh

Post on 09-Nov-2018

379 views

Category:

Documents


0 download

TRANSCRIPT

Programação Orientada a Objetos

O FOCO NO MUNDO REAL

PAULO DAMICO

Orientação a objetos A orientação a objetos (OO) foi concebida na década de 70.

Origem na linguagem SIMULA-67 (década de 60 -Noruega), que já implementava alguns conceitos da OO.

SIMULA-68 foi a primeira linguagem a suportar os conceitos da OO.

Smaltalk, criada pela Xerox, popularizou e incentivou a OO.

Outras linguagens OO: C++, Object Pascal (Delphi), C#, Java ...

Java, de fato, popularizou a Orientação a Objetos.

PAULO DAMICO

Orientação a objetosQuando precisamos modelar um sistema para solucionar um grande problema, este problema deve ser dividido em partes menores. O modelo OO divide um problema em partes menores, para facilitar a resolução.

PAULO DAMICO

Orientação a objetos A criação da Programação Orientada a Objetos (POO ou OOP),

eleva a programação e o desenvolvimento de sistemas para um novo patamar.

A OO é um mecanismo moderno que ajuda a definir a estrutura de programas baseada nos conceitos do mundo real, sejam eles reais ou abstratos.

A OO permite criar programas componentizados, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre sí, por meio de mensagens.

Essas partes do sistemas são chamadas de OBJETOS.

PAULO DAMICO

Orientação a objetosA OO é mais intuitiva e fácil de aprender do que as técnicas tradicionais, pois foca o problema em conceitos do mundo real.

Dentre as vantagens que a OO proporciona, podemos destacar:

PAULO DAMICO

Orientação a objetosaumento de produtividade

reuso de código

redução das linhas de código programadas

separação de responsabilidades

componentização

maior flexibilidade do sistema

facilidade na manutenção, dentre outras vantagens.

Orientação a objetosA OO introduz e enfatiza os seguintes conceitos: Objeto

Classe

Mensagem

Abstração

Encapsulamento

Herança

Polimorfismo

PAULO DAMICO

ObjetosUsamos o termo objeto para representar um determinado elemento do mundo real.

Como exemplos de objetos, podemos citar os objetos físicos (um livro, uma mercadoria), funções de pessoas para os sistemas (cliente, vendedor), eventos (uma compra, um telefonema), interações entre outros objetos (um item de uma nota fiscal é uma interação entre uma compra e um produto do estoque) e lugares (loja matriz, revenda norte).

PAULO DAMICO

ObjetosPor exemplo, vamos considerar um cachorro como nosso “objeto” de estudo:

PAULO DAMICO

ObjetosAnalisando este objeto, o cachorro, podemos deduzir que o mesmo possui

algumas características que pertencem apenas a ele próprio. Por exemplo, umUm nome,Uma idade,Um comprimento de pêlos,Uma cor dos pelos,Uma cor dos olhos,Um peso

PAULO DAMICO

Objetos

As características que descrevem um objeto são chamadas de

atributos

ObjetosAlém do conjunto de características que descrevem o cachorro, podemos também identificar um conjunto de ações que ele é capaz de executar:

Latir,

Babar,

Correr em círculos,

Pegar a bola,

Sentar,

Comer,

Dormir.

PAULO DAMICO

Objetos

As ações que um objeto pode executar são

chamadas de métodos.

Objetos

A única maneira de interagir com os objetos é através dos métodos que ele disponibiliza. Para interagir com o cachorro, utilizamos os métodos que relacionamos acima: para alimentá-lo, utilizamos o método “comer”, para brincar com ele, utilizamos o método “pegar a bola”, etc.

PAULO DAMICO

ObjetosAtributos e métodos:

Os objetos do mundo real possuem propriedades que possuem valores. Estes valores definem o estado do objeto. As propriedades recebem o nome de atributos em OO.

Podemos dizer que os atributos dos objetos são “variáveis” ou “campos” que armazenam os diferentes valores que as características dos objetos podem conter.

PAULO DAMICO

ObjetosO estado de um objeto é o conjunto de valores de seus atributosem um determinado instante. O comportamento de um objeto é como ele age e reage em termos de suas mudanças de estado e troca de mensagens com outros objetos.

O cachorro do nosso exemplo poderia ser representado pelos seguintes atributos:

PAULO DAMICO

Cachorro

Nome Pluto

Idade 2 anos

Comprimento dos pêlos curtos

Cor dos pêlos marrom

Cor dos olhos preto

Peso 5Kg

ObjetosUm outro objeto “cachorro” apresentaria valores diferentes para os mesmos atributos, por exemplo:

PAULO DAMICO

Cachorro

Nome Rabugento

Idade 5 anos

Comprimento dos pêlos curtos

Cor dos pêlos beje

Cor dos olhos castanho

Peso 6Kg

ObjetosMétodos:

os métodos são as ações que o objeto pode realizar

Um objeto exibe algum comportamento (executa uma operação) quando recebe um estímulo de outro objeto.

Um objeto requisita a ação de algum outro objeto, enviando uma mensagem para ele.

PAULO DAMICO

ObjetosDefina os atributos e métodos para os seguintes objetos:

a) gato, cavalo, baleia, morcego, formiga

b) Cadeira, porta, armário,

c) Geladeira, impressora

d) Quadrado, círculo

PAULO DAMICO

Notação

Nome

Idade

Peso

Cor olhos

Comer

Dormir

ATRIBUTOS

MÉTODOS

Nome do obj

ClassesUma classe representa um conjunto de objetos que possuem características e comportamentos comuns e de agora em diante, diremos que um objeto é uma instância de uma determinada classe, ou seja, criaremos nossos objetos baseados nas características definidas nas classes.

A ênfase da metodologia orientada a objetos é dada na criação das classes, e não dos objetos, como se poderia pensar pelo nome.

PAULO DAMICO

ClassesObjetos de mesma classe possuem a mesma definição tanto para métodos quanto para atributos.

Tomemos uma classe gatos formada de objetos “gato”. Estes objetos possuem as seguintes características: nome, idade, peso, cor de pelos, cor de olhos e comprimento de pelos. Além disso, o objeto possui as seguintes ações: miar, comer, dormir, subir na árvore.

PAULO DAMICO

CLASSE GATOS

ClassesMuitos objetos do mundo real possuem características comuns e podem ser agrupados de acordo com elas. Uma classe representa um gabarito (MODELO) para muitos objetos e descreve como estes objetos estão estruturados internamente.

As classes Cães e Gatos possuem características e métodos comuns

ex:

Características comuns: nome, idade, peso, cor de pêlos, cor de olhos e

comprimento de pêlos,

Métodos comuns: pegar a bola, comer, dormir.

PAULO DAMICO

ClassesSubclasse e superclasse.

Ex: superclasse de mamíferos:

PAULO DAMICO

SUBCLASSE GATOS

SUBCLASSE CÃES

SUBCLASSE

EQUINOS

SUBCLASSE ROEDORES

SUPERCLASSE MAMÍFEROS

ClassesDentro da SuperClasse Mamíferos temos pelo menos 4 Subclasses:

PAULO DAMICO

características em comum:

●nome,

●idade,

●peso,

●cor dos olhos

●cor dos pêlos.

métodos em comum:

●comer,

●Sentar,

●dormir.

ClassesPodemos distinguir quatro categorias diferentes de animais: cães

gatos,

equinos

roedores

Existem sete objetos na super classe mamíferos, sendo distribuídos em quatro subclasses

Essa é a diferença entre classe e objeto: a classe é um modelo e todos os objetos daquela classe possuem atributos comuns, mas esses atributos possuem valores distintos, e os métodos também são comuns.

PAULO DAMICO

ClassesSó serão definidos no objeto os atributos e métodos particulares desse objeto que não são atribuídos aos outros objetos da mesma classe.

As classes das quais as outras dependem → ANCESTRAIS

As classes originadas a partir de outra → DESCENDENTES

A classe “mamíferos” tem: um ancestral (animais) dois descendentes (cães e gatos)

Em cada descendente só é preciso descrever os atributos e métodos que

apresentam alteração em relação à descrição do ancestral.

PAULO DAMICO

PAULO DAMICO

ANIMAIS

MAMÍFEROS RÉPTEISAVES

CÃES GATOS

Nome

Idade

Peso

Cor olhos

Comer

Dormir

Latir

Pegar bola

Miar

Subir na árvore

Cor pêlos

Comprim. pelos

Sentar

Amamentar

Cor penas

Tam penas

Botar ovos

Tipo escamas

Tam cauda

Rastejar

ATRIBUTOS

MÉTODOS

As classes são definições de como os objetos devem ser e não existem na realidade.

Somente os objetos têm existência.

Ex: quando vamos mostrar nosso cachorro a alguém, não dizemos “esse é um cão”, e sim “esse é o pluto”, ou “rabugento”.

O que se pode ver não é uma classe de seres,mas um cachorro específico, um objeto

PAULO DAMICO

PAULO DAMICO

Nome

Comer

ATRIBUTOS

MÉTODOS

CLASSE

Instanciação:

A instanciação é quando a classe produz um objeto, como se ela fosse uma espécie de modelo ou gabarito para a criação de objetos.

objeto é a instância de uma classe.

Pelo exemplo que estamos estudando, cada cachorro que for armazenado é um novo objeto, uma nova instância da classe “Cães”. A classe serve de modelo para a criação de novos objetos.

PAULO DAMICO

PAULO DAMICO

Latir

Pegar bola

CLASSE CÃES

REX

RABUGENTO PULGUENTO

PLUTO

TOTÓ

INSTANCIAÇÃO:

PAULO DAMICO

Latir

Pegar bola

CLASSE CÃES

CÃO A

Nome Pluto

Idade 2 anos

Comprimento dos pêlos curtos

Cor dos pêlos marrom

Cor dos olhos preto

Peso 5Kg

CÃO B

Nome Rabugento

Idade 5 anos

Comprimento dos pêlos curtos

Cor dos pêlos beje

Cor dos olhos castanho

Peso 6Kg

Nome

Idade

Comp pelos

Cor pelos

Cor olhos

peso

UMA CLASSE COM DUAS INSTÂNCIAS

Classes puras ou abstratas:

Classes puras são classes das quais os objetos nunca são instanciados diretamente, mas sempre por uma classe descendente dela. Essas classes são criadas para facilitar o processo de estruturação.

Ex:

classe Pessoa, que contém:

●atributos (nome, endereço, telefone, etc.)

●métodos (alteração de endereço, imprimir ficha, etc.)

necessários para manusear dados de pessoas em um sistema de informação.

A partir dessa classe genérica, criam-se classes descendentes específicas para manusear funcionário, gerente, etc.

PAULO DAMICO

PAULO DAMICO

A classe Pessoa nunca terá um objeto a ela instanciado, ela só existe para unificar todos os atributos e métodos comuns as classes Gerente e Funcionário evitando assim a redundância. Pelo exemplo acima, “Pessoa” é uma classe pura.

PESSOA

FUNCIONÁRIO GERENTE

CLASSE PURA

CLASSE QUE PODE SER INSTANCIADA

classe-&-classe

classe-&-objeto

Visibilidade de atributos e métodos+ visibilidade pública: significa que todos têm acesso

podendo o atributo e/ou método ser utilizado por método declarados dentro de outras classes. É parte da interface de uma classe e é visível por qualquer parte do código;

# visibilidade protegida: significa que o atributo e/ou método é acessado através de métodos dentro da mesma classe e por métodos de classes ao longo do pacote no qual a classe é definida;

- visibilidade privada: declaração que é parte da interface de uma classe, mas não é visível a quaisquer outras classes – o atributo e/ou método pode apenas ser acessado por métodos declarados dentro da mesma classe.

PAULO DAMICO

PAULO DAMICO

MENSAGEM

MensagemUm objeto por si só não significa muito em um sistema. Para ter algum sentido e valor esses objetos precisam interagir e comunicar-se entre si.

Os objetos se comunicam por meio de mensagens.

Quando um objeto A quer se comunicar com um objeto B é enviada uma mensagem de A para B.

PAULO DAMICO

Nome

FALAR

ATRIBUTOS

MÉTODOS

Nome

ATRIBUTOS

MÉTODOS

QUAL O SEU NOME?

mensagem FALAR

MensagemEnviar uma mensagem significa executar um método.

Então, se A envia uma mensagem para B, podemos entender como o objeto A executando um método do objeto B.

As mensagens são compostas por três partes:

●Objeto a quem a mensagem é endereçada

●Nome do método a ser chamado

●Parâmetros que o método recebe

PAULO DAMICO

PAULO DAMICO

ABSTRAÇÃO

AbstraçãoO termo “abstração”, aplicado ao desenvolvimento de sistemas, significa a “grosso modo” que só deve ser representado aquilo que vai ser usado.

Pelo princípio da abstração nós isolamos os objetos que queremos representar do ambiente complexo em que se situam, e nesses objetos representamos só as características que são relevantes para o problema em questão.

Ex: Automóvel (Mecânico, Depto. de trânsito, consumidor)

PAULO DAMICO

PAULO DAMICO

AbstraçãoPor exemplo:

●toda pessoa tem um atributo para “cor dos olhos”, mas em um sistema de folha de pagamento, essa informação não é relevante, portanto, ela não será incluída na relação de características de pessoas que queremos armazenar em nossosistema.

●Da mesma maneira, apesar de uma boa parte das pessoas ter animais de estimação, é completamente irrelevante para um sistema de folha de pagamento implementar um objeto para armazenar animais de estimação, e relacioná-los com as pessoas.

PAULO DAMICO

ENCAPSULAMENTO

Encapsulamento

PAULO DAMICO

Na OO, encapsulamento é o mecanismo utilizado para disponibilizar métodos que operam sobre os dados e que protegem o acesso direto indevido aos atributos de uma instância fora da classe onde estes foram declarados.

O encapsulamento ajuda a prevenir o problema deinterferência externa indevida sobre os dados de um

objeto, como objetos que possam alterar os dados de outros objetos indevidamente.

Ex: Alteração de uma conta bancária

O saldo certamente não pode ser alterado ou manipulado diretamente, mas sim através de métodos adequados para isso, como métodos que fazem lançamentos de débitos e créditos.

A alteração direta do saldo causaria um problema de cálculos e inconsistência de dados.

PAULO DAMICO

Saldo

ATRIBUTOS

MÉTODOS

Extrato

Debitar

Creditar

A principal vantagem do

encapsulamento é esconder a complexidade do código. Outra, é proteger o dados.

HerançaA palavra herança, conforme um dicionário da lingua portuguesa , significa:

Aquilo que se herda;

Aquilo que se transmite por hereditariedade.

Um exemplo simples de explicar a herança é a própria genética. Ou seja, um filho herda características genética dos pais, e por sua vez, repassa essas características aos seus filhos.

Na OO, Herança é o mecanismo pelo qual uma classe obtém as características e métodos de outra para expandi-las ou especializá-las de alguma forma, ou seja, uma classe pode “herdar” características, métodos e atributos de outras classes. Da mesma maneira uma transmite suas características para outras classes, tornando aquelas que recebem suas características suas herdeiras

PAULO DAMICO

Herança“Herança significa que todos os atributos e métodos programados no ancestral já estarão automaticamente presentes em seus descendentes sem necessidade de reescrevê-los.”

PAULO DAMICO

PAULO DAMICO

HerançaHerança Simples

A herança é denominada simples quando uma classe herda características de apenas uma superclasse

PESSOA

FUNCIONÁRIO CLIENTE

Nome

RG

CPF

Endereço

Salário

Limite Credito

Preferências

Nome

RG

CPF

Endereço

HerançaHerança Múltipla

A herança é denominada múltipla quando uma classe herda características de

duas ou mais superclasses.

PAULO DAMICO

PAULO DAMICO

PESSOA

FUNCIONÁRIO CLIENTE

Nome

RG

CPF

Endereço

Salário

Limite Credito

Preferências

Nome

RG

CPF

Endereço

CLIENTE

Limite Credito

Preferências

CLIENTE

Limite Credito

Preferências

FUNCIONÁRIO - CLIENTE

Desconto especial

PAULO DAMICO

POLIMORFISMO

Miau!

O Polimorfismo é a capacidade de uma variável se referir em tempo de execução a objetos de diversas classes. Podemos defini-lo também como sendo o nome dado à capacidade que objetos diferentes têm de responder a uma mesma mensagem.

Uma mesma mensagem pode apresentar formas de execução diferentes, próprias de cada objeto. Com esta característica o usuário pode enviar uma mensagem genérica e abandonar detalhes sobre a exata implementação sobre o objeto receptor.

PAULO DAMICO

PAULO DAMICO

Polimorfismo

GRAVAR

“O polimorfismo ocorre quando um método que já foi definido no ancestral é redefinido no descendente com um comportamento diferente.”

PAULO DAMICO