Conceitos de Orientação a Objetos

39
Conceitos de Orientação a Objetos Compilado com base nas referências por José Augusto Cintra Professor da Faculdade Sumaré – SP Analista de TI da Empresa PRODAM – SP [email protected] htttp://www.html-apps.info

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

Page 2: 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.

Page 3: Conceitos de Orientação a 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: Conceitos de Orientação a Objetos

Programação Estruturada

Processamento

(Operações)

Dados

Dados

Dados

Page 5: Conceitos de Orientação a Objetos

Programação Orientada a Objetos

Page 6: Conceitos de Orientação 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.

Page 7: Conceitos de Orientação a Objetos

Princípios da OO

• Abstração

• Classes,objetos,atributos e métodos

• Encapsulamento

• Hereditariedade

• Polimorfismo

Page 8: Conceitos de Orientação a Objetos

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.

Page 9: Conceitos de Orientação a Objetos

Abstração

Page 10: Conceitos de Orientação a Objetos

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.

Page 11: Conceitos de Orientação a Objetos

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

Page 12: Conceitos de Orientação a Objetos

• 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

Page 13: Conceitos de Orientação a 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

Classes, Objetos, Atributos e Métodos

Page 14: Conceitos de Orientação a Objetos

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

Page 15: Conceitos de Orientação a Objetos

• 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

Page 16: Conceitos de Orientação a Objetos

Classes, Objetos, Atributos e Métodos

Page 17: Conceitos de Orientação a Objetos

Classes, Objetos, Atributos e Métodos

Page 18: Conceitos de Orientação a 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: Conceitos de Orientação a Objetos

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

Page 20: Conceitos de Orientação a Objetos

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

Page 21: Conceitos de Orientação a Objetos

Herança – Hierarquia

transporte

terrestre aéreo

carro avião OVNI

carro luxo

Page 22: Conceitos de Orientação a Objetos

• 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

Page 23: Conceitos de Orientação a Objetos

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

diferente.

Polimorfismo

Page 24: Conceitos de Orientação a Objetos

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

Polimorfismo

Page 25: Conceitos de Orientação a Objetos

• POLI (muitas) + MORPHOS (formas)

• Está estritamente relacionado com a herança.

Polimorfismo

Page 26: Conceitos de Orientação a 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 de

outros objetos

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

ser Públicas ou Privadas, de acordo com

a necessidade (Information Hiding).

Encapsulamento

Page 27: Conceitos de Orientação a Objetos

Encapsulamento

Page 28: Conceitos de Orientação a Objetos

• 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()

Page 29: Conceitos de Orientação a Objetos

• Mecanismo para organizar elementos em grupos

• Essencial para estruturar sistemas complexos

Encapsulamento - Pacotes

Utilitários Cadastros Básicos

Contabilização

Page 30: Conceitos de Orientação a Objetos

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

Page 31: Conceitos de Orientação a Objetos

visibilidade pública

Encapsulamento - Visibilidade

Page 32: Conceitos de Orientação a Objetos

visibilidade privada

Encapsulamento - Visibilidade

Page 33: Conceitos de Orientação a Objetos

visibilidade protegida

Encapsulamento - Visibilidade

Page 34: Conceitos de Orientação a Objetos

visibilidade de pacote

Encapsulamento - Visibilidade

Page 35: Conceitos de Orientação a Objetos

Classe A e B metodo2

Classe B e D metodo1

Classe B atributo2

Todas as classes atributo1

Acesso Membros

Encapsulamento - Visibilidade

Page 36: Conceitos de Orientação a Objetos

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.

Page 37: Conceitos de Orientação a Objetos

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!

Page 39: Conceitos de Orientação a Objetos

apresentacao.close()