Download - 3.1 orientação objetos
![Page 1: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/1.jpg)
Conceitos de Orientação a Objetos
Frank Coelho
![Page 2: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/2.jpg)
O objetivo desta apresentação é fornecer conceitos introdutórios sobre Orientação a Objetos que podem servir de base para o aprendizado de qualquer linguagem de programação com suporte para esse paradigma.
C#
![Page 3: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/3.jpg)
Paradigmas de Programação
Todo programa de computador é composto de dois elementos principais:
Na programação tradicional (programação estruturada) dados e operações são tratados separadamente, no que chamamos de programação procedural ou programação orientada a procedimentos.
Já, a programação orientada a objetos é um novo paradigma em que dados e operações são tratados em uma única unidade de programação chamada de OBJETO.
![Page 4: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/4.jpg)
DadosDados Dados
Processamento(Operações)
![Page 5: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/5.jpg)
![Page 6: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/6.jpg)
• Orientação à objetos é uma estratégia para organizar sistemas como coleções de objetos que interagem entre si e combinam dados e operações
• Objeto é uma entidade que combina estrutura de dados e comportamento funcional
• Estamos sempre identificando qualquer objeto ao nosso redor. Para isso os classificamos em grupos, de acordo com suas características, ou seja, separamos os objetos em classes.
• Esses objetos se relacionam uns com os outros, podendo compartilhar dados e operações comuns.
![Page 7: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/7.jpg)
• Abstração• Classes, objetos, atributos e métodos
• Encapsulamento• Hereditariedade• Polimorfismo
![Page 8: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/8.jpg)
• Ato de separar um ou mais elementos de uma totalidade complexa, os quais só mentalmente podem ser separados
• Ignorar aspectos não relevantes• É a capacidade de focalizar o essencial e ignorar detalhes acidentais não relacionados com o objetivo estabelecido.
![Page 9: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/9.jpg)
![Page 10: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/10.jpg)
• Os Objetos do mundo real possuem duas características:
• Exemplos:• Aluno
• Estado: Nome, RA, Notas, Etc.• Comportamento: Calcular Média,Verificar situação, Etc.
• Bicicletas• Estado: Marcha atual, velocidade atual, Etc.• Comportamento:Trocar marcha, freiar, Etc.
• Conta Corrente• Estado: Saldo, Correntista, Etc.• Comportamento: Sacar, Depositar, Etc.
estadocomportamento
![Page 11: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/11.jpg)
Exemplos de Objetos
Objeto Automóvel:Opala placa XYZ-9999
Objeto Aluno: JoãoNota: 10
Objeto Pessoa:Gisele Bündchen
![Page 12: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/12.jpg)
• Identificar o estado e o comportamento de objetos do mundo realo primeiro passo para começar a pensar em programação OO.
• Observe um objeto e pergunte:
é
• Quais os possíveis estados que esse objeto pode estar? Ou seja, quais são os atributos ou propriedades ou dados que ele apresenta e pode armazenar?
• Quais os possíveis comportamentos que ele pode executar? Ou seja, quais as operações que podemos realizar com esses dados?
![Page 13: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/13.jpg)
• A unidade fundamental de programação em orientação a objetos (POO) é a classe.
• Classes contém:
•Atributos: determinam o estado do objeto
•Métodos: são as operações, os comportamentos disponíveis para manipular os atributos
![Page 14: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/14.jpg)
Fazendo uma analogia, uma classe é como se fosse um gabarito, umaplanta de uma casa. As casas seriam os objetos.
![Page 15: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/15.jpg)
Classe Instâncias
atributos
métodosMaria195.31.022-58,7
João193.31.098-77,5
AlunoNome Matrícula Notas
calcularMedia()verificarSituacao()...
• As classes provêm a estrutura para a construção de objetos estes são ditos instâncias das classes
![Page 16: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/16.jpg)
![Page 17: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/17.jpg)
![Page 18: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/18.jpg)
Herança
• Mecanismo simples e poderoso do paradigma OO que permite que uma nova classe seja descrita a partir de uma classe já existente.
• Herança é um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe
• Classe mãe: superclasse, classe base
• Classe filha: subclasse, classe derivada
• Classe filha (mais específica) herda atributos e métodos da classe mãe (mais geral)
• Classe filha possui atributos e métodos próprios.
![Page 19: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/19.jpg)
Classe B
Classe A
Entre uma classe e a sua superclasse, é estabelecida uma relação de especialização que estabelece as seguintes propriedades entre uma subclasse B e a sua superclasse A: 1. B herda de A todas as variáveis e métodos de instância (exceto os privados)2. B pode definir novas variáveis e novos métodos próprios.3. B pode redefinir variáveis e métodos herdados.
![Page 20: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/20.jpg)
–
•2•2
atributosoperações
superclasse(mais
genérica)
Salário
subclasse subclasse(mais
específica)•4 atributos•4 operações
(mais específica)•3 atributos•4 operações
especialização
generalização
TrabalhadorCargo
RegistrarCalcular Salário
Estudante
SerieNotasmatricularCalcular Média
Pessoanomeendereçocomerdormir
![Page 21: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/21.jpg)
carro luxo
Balãoaviãocarro
aéreoterrestre
transporte
![Page 22: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/22.jpg)
• Todopode
método definido em um ancestralser acessado através dos
descendentes
• O polimorfismo ocorre quando um métododefinido no ancestral é redefinido nodescendentediferente.
com um comportamento
![Page 23: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/23.jpg)
• As classes fazem a mesma operação (método), mas de forma diferente.
![Page 24: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/24.jpg)
• O objeto “chamador” apenas precisa referenciar o método.
![Page 25: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/25.jpg)
• POLI (muitas) + MORPHOS (formas)• Está estritamente relacionado com a herança.
![Page 26: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/26.jpg)
• Ocultar aspectos não relevantes
• Os dados e operações em uma única entidade(objeto).
• Benefícios:• Permite alterações sem afetar demais
partes do sistema.
• Modularidade - O código é independente deoutros
• Níveisobjetos
de acesso: As Informações podemser Públicas ou Privadas, de acordo coma necessidade (Information Hiding).
![Page 27: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/27.jpg)
![Page 28: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/28.jpg)
voltar() pausar(
)alterarHora()
avancar()
carregarDisco()
parar() tocar(
)
• Esconde a implementação interna da especificação externa
• Clientes conhecem somente a interface• Clientes dependem da interface e não da implementação
![Page 29: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/29.jpg)
ContabilizaçãoCadastrosBásicos
Utilitários
• Mecanismo para organizar elementos em grupos
• Essencial para estruturar sistemas complexos
![Page 30: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/30.jpg)
• Com o encapsulamento um objeto determina a permissão que outros objetos terão para acessar seus membros(atributos e métodos)• Alguns graus de visibilidade:• Pública: acessível a todo o sistema• Privada: acessível somente dentro da classe• Protegida: acessível dentro da classe e suas especializações (herança)• Pacote: acessível às classes de um mesmo pacote
![Page 31: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/31.jpg)
visibilidade pública
![Page 32: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/32.jpg)
visibilidade privada
![Page 33: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/33.jpg)
visibilidade protegida
![Page 34: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/34.jpg)
visibilidade de pacote
![Page 35: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/35.jpg)
Membros
Acesso
atributo1
Todas as classes
atributo2
Classe B
metodo1
Classe B e D
metodo2
Classe A e B
![Page 36: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/36.jpg)
• Permite alta reutilização de código;• Reduz tempo de manutenção de código;• Reduz complexidade através da melhoria do grau de
abstração do sistema;• Aumenta qualidade e produtividade oferece maiores
facilidades ao desenvolvedor;• Adoção (aceitação) comercial crescente.
![Page 37: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/37.jpg)
• Pensar no paradigma OO simplesmente como uma linguagem;
• Programar sem planejar;• Pensar na OO como uma solução para tudo;• Programação Egoísta:• É preciso documentar!
![Page 38: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/38.jpg)
http://webx.sefaz.al.gov.br/posEngSoft/documentos/moo/2-OO.ppt
http://www.joinville.udesc.br/portal/professores/parra/materiais/introducao_OO_2.ppt
http://www.datainfo.inf.br/marcio/download/aoo/aoo.ppt
http://www.ic.uff.br/~anselmo
![Page 39: 3.1 orientação objetos](https://reader036.vdocuments.site/reader036/viewer/2022062522/588773cd1a28ab22358b6e95/html5/thumbnails/39.jpg)
apresentacao.close()