Programação Orientada a Objetos - mdkinformatica.com.br · eleva a programação e o...
Transcript of Programação Orientada a Objetos - mdkinformatica.com.br · eleva a programação e o...
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
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
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
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
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
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
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
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
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.
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
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