Conceitos de Orientação a Objetos

Post on 29-Jun-2015

553 views 3 download

description

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.

Transcript of Conceitos de Orientação a Objetos

Introdução

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.

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.

Programação Estruturada

Processamento

(Operações)

Dados

Dados

Dados

Programação Orientada a Objetos

Orientação a 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.

Princípios da OO

• Abstração

• Classes,objetos,atributos e métodos

• Encapsulamento

• Hereditariedade

• Polimorfismo

Abstração

• 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.

Abstração

Classes, Objetos, Atributos e Métodos

• Os Objetos do mundo real possuem duas características: estado e comportamento.

• 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.

Classes, Objetos, Atributos e Métodos

Exemplos de Objetos

Objeto Automóvel:

Opala placa XYZ-9999 Objeto Pessoa:

Gisele Bündchen

Objeto Aluno:

João

Nota: 10

• 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?

Classes, Objetos, Atributos e Métodos

• 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

Classes, Objetos, Atributos e Métodos

Fazendo uma analogia, uma classe é como se fosse um gabarito, uma

planta de uma casa. As casas seriam os objetos.

Classes, Objetos, Atributos e Métodos

• As classes provêem a estrutura para a construção de objetos - estes são ditos

instâncias das classes

Classe

Aluno Nome

Matrícula

Notas

calcularMedia()

verificarSituacao()

...

Instâncias

João

193.31.098-7

7,5

Maria

195.31.022-5

8,7

atributos

métodos

Classes, Objetos, Atributos e Métodos

Classes, Objetos, Atributos e Métodos

Classes, Objetos, Atributos e Métodos

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.

Mecanismo da Heranç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.

Classe A

Classe B

Herança – Exemplo

Pessoa nome

endereço comer

dormir

Estudante

RA

Notas matricular

Calcular Média

Trabalhador

RF

Salário

Registrar

Calcular Salário

superclasse

(mais genérica)

subclasse

(mais específica)

subclasse

(mais específica)

gen

eralização

•2 atributos

•2 operações

•3 atributos

•4 operações

•4 atributos

•4 operações

especialização

Herança – Hierarquia

transporte

terrestre aéreo

carro avião OVNI

carro luxo

• Todo método definido em um ancestral

pode ser acessado através dos

descendentes

• O polimorfismo ocorre quando um método

definido no ancestral é redefinido no

descendente com um comportamento

diferente.

Polimorfismo

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

diferente.

Polimorfismo

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

Polimorfismo

• POLI (muitas) + MORPHOS (formas)

• Está estritamente relacionado com a herança.

Polimorfismo

• 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 objetos

• Níveis de acesso: As Informações podem

ser Públicas ou Privadas, de acordo com

a necessidade (Information Hiding).

Encapsulamento

Encapsulamento

• Esconde a implementação interna da especificação externa

• Clientes conhecem somente a interface

• Clientes dependem da interface e não da implementação

Encapsulamento

parar()

pausar()

avancar()

voltar() alterarHora()

tocar() carregarDisco()

• Mecanismo para organizar elementos em grupos

• Essencial para estruturar sistemas complexos

Encapsulamento - Pacotes

Utilitários Cadastros Básicos

Contabilização

Encapsulamento - Visibilidade

• 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

Encapsulamento - Visibilidade

visibilidade privada

Encapsulamento - Visibilidade

visibilidade protegida

Encapsulamento - Visibilidade

visibilidade de pacote

Encapsulamento - Visibilidade

Classe A e B metodo2

Classe B e D metodo1

Classe B atributo2

Todas as classes atributo1

Acesso Membros

Encapsulamento - Visibilidade

Porque programar OO?

• 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.

Armadilhas

• 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!

apresentacao.close()