3.1 orientação objetos

39
Conceitos de Orientação a Objetos Frank Coelho

Transcript of 3.1 orientação objetos

Page 1: 3.1  orientação objetos

Conceitos de Orientação a Objetos

Frank Coelho

Page 2: 3.1  orientação objetos

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

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

DadosDados Dados

Processamento(Operações)

Page 5: 3.1  orientação objetos
Page 6: 3.1  orientação objetos

• 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

• Abstração• Classes, objetos, atributos e métodos

• Encapsulamento• Hereditariedade• Polimorfismo

Page 8: 3.1  orientação objetos

• 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
Page 10: 3.1  orientação objetos

• 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

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

• 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

• 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

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

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
Page 17: 3.1  orientação objetos
Page 18: 3.1  orientação objetos

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

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

•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

carro luxo

Balãoaviãocarro

aéreoterrestre

transporte

Page 22: 3.1  orientação objetos

• 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

• As classes fazem a mesma operação (método), mas de forma diferente.

Page 24: 3.1  orientação objetos

• O objeto “chamador” apenas precisa referenciar o método.

Page 25: 3.1  orientação objetos

• POLI (muitas) + MORPHOS (formas)• Está estritamente relacionado com a herança.

Page 26: 3.1  orientação objetos

• 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
Page 28: 3.1  orientação objetos

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

ContabilizaçãoCadastrosBásicos

Utilitários

• Mecanismo para organizar elementos em grupos

• Essencial para estruturar sistemas complexos

Page 30: 3.1  orientação objetos

• 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

visibilidade pública

Page 32: 3.1  orientação objetos

visibilidade privada

Page 33: 3.1  orientação objetos

visibilidade protegida

Page 34: 3.1  orientação objetos

visibilidade de pacote

Page 35: 3.1  orientação objetos

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

• 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

• 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

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

apresentacao.close()