View
9
Download
0
Category
Preview:
Citation preview
Conceitos de Orientação a Objetos
Frank Coelho
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#
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.
DadosDados Dados
Processamento(Operações)
• 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.
• Abstração• Classes, objetos, atributos e métodos
• Encapsulamento• Hereditariedade• Polimorfismo
• 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.
• 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
Exemplos de Objetos
Objeto Automóvel:Opala placa XYZ-9999
Objeto Aluno: JoãoNota: 10
Objeto Pessoa:Gisele Bündchen
• 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?
• 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
Fazendo uma analogia, uma classe é como se fosse um gabarito, umaplanta de uma casa. As casas seriam os 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
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.
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.
–
•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
carro luxo
Balãoaviãocarro
aéreoterrestre
transporte
• 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
• As classes fazem a mesma operação (método), mas de forma diferente.
• O objeto “chamador” apenas precisa referenciar o método.
• POLI (muitas) + MORPHOS (formas)• Está estritamente relacionado com a herança.
• 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).
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
ContabilizaçãoCadastrosBásicos
Utilitários
• Mecanismo para organizar elementos em grupos
• Essencial para estruturar sistemas complexos
• 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
visibilidade pública
visibilidade privada
visibilidade protegida
visibilidade de pacote
Membros
Acesso
atributo1
Todas as classes
atributo2
Classe B
metodo1
Classe B e D
metodo2
Classe A e B
• 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.
• 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!
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
apresentacao.close()
Recommended