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.
Dados
Dados
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
ObjetoAutomóvel:
Opala placa XYZ-9999
ObjetoAluno: João
Nota: 10
Objeto Pessoa:
Gisele Bündchen
• Identificar o estado e o comportamento de objetos do mundo real
o 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, uma
planta de uma casa.As casas seriam os objetos.
Classe Instâncias
atributos
métodos
Maria
195.31.022-5
8,7
João
193.31.098-7
7,5
Aluno
Nome
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
atributos
operaçõ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
Trabalhador
Cargo
Registrar
Calcular Salário
Estudante
Serie
Notas
matricular
Calcular Média
Pessoa
nome
endereço
comer
dormir
carro luxo
Balãoaviãocarro
aéreoterrestre
transporte
• Todo
pode
método definido em um ancestral
ser acessado através dos
descendentes
• O polimorfismo ocorre quando um método
definido no ancestral é redefinido no
descendente
diferente.
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 de
outros
• Níveis
objetos
de acesso: As Informações podem
ser Públicas ou Privadas, de acordo com
a 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çãoCadastros
Bá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()

3.1 orientação objetos

  • 1.
    Conceitos de Orientaçãoa Objetos Frank Coelho
  • 2.
    O objetivo destaapresentaçã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#
  • 3.
    Paradigmas de Programação Todoprograma 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.
  • 4.
  • 6.
    • 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.
  • 7.
    • Abstração • Classes,objetos, atributos e métodos • Encapsulamento • Hereditariedade • Polimorfismo
  • 8.
    • Ato deseparar 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.
  • 10.
    • Os Objetosdo 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
  • 11.
    Exemplos de Objetos ObjetoAutomóvel: Opalaplaca XYZ-9999 ObjetoAluno: João Nota: 10 Objeto Pessoa: Gisele Bündchen
  • 12.
    • Identificar oestado e o comportamento de objetos do mundo real o 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?
  • 13.
    • A unidadefundamental 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
  • 14.
    Fazendo uma analogia,uma classe é como se fosse um gabarito, uma planta de uma casa.As casas seriam os objetos.
  • 15.
  • 18.
    Herança • Mecanismo simplese 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.
  • 19.
    Classe B Classe A Entreuma 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.
  • 20.
    – •2 •2 atributos operações superclasse (mais genérica) Salário subclasse subclasse (maisespecífica) •4 atributos •4 operações (mais específica) •3 atributos •4 operações especialização generalização Trabalhador Cargo Registrar Calcular Salário Estudante Serie Notas matricular Calcular Média Pessoa nome endereço comer dormir
  • 21.
  • 22.
    • Todo pode método definidoem um ancestral ser acessado através dos descendentes • O polimorfismo ocorre quando um método definido no ancestral é redefinido no descendente diferente. com um comportamento
  • 23.
    • As classesfazem a mesma operação (método), mas de forma diferente.
  • 24.
    • O objeto“chamador” apenas precisa referenciar o método.
  • 25.
    • POLI (muitas)+ MORPHOS (formas) • Está estritamente relacionado com a herança.
  • 26.
    • Ocultar aspectosnã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 de outros • Níveis objetos de acesso: As Informações podem ser Públicas ou Privadas, de acordo com a necessidade (Information Hiding).
  • 28.
    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
  • 29.
    ContabilizaçãoCadastros Básicos Utilitários • Mecanismo paraorganizar elementos em grupos • Essencial para estruturar sistemas complexos
  • 30.
    • Com oencapsulamento 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
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    Membros Acesso atributo1 Todasas classes atributo2 Classe B metodo1 Classe B e D metodo2 Classe A e B
  • 36.
    • Permite altareutilizaçã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.
  • 37.
    • Pensar noparadigma OO simplesmente como uma linguagem; • Programar sem planejar; • Pensar na OO como uma solução para tudo; • Programação Egoísta: • É preciso documentar!
  • 38.
  • 39.