33
Programação Orientada a Objetos Prof. MsC Sílvio Bacalá Júnior

Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Embed Size (px)

Citation preview

Page 1: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Programação Orientada a Objetos

Prof. MsC Sílvio Bacalá Júnior

Page 2: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Princípios básicos de OO

Abstração

Encapsulamento

Modularidade

Herança

2013 POO - Bacalá 2

Page 3: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Abstração

Concentração nas características essenciais, gerenciando complexidade

Construção de um modelo para representação de uma realidade

cliente gado automóvel

2013 POO - Bacalá 3

Page 4: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Encapsulamento

Elimina dependência de implementação, escondendo-a do cliente

Uso de interfaces

Mudanças internas não têm impacto sobre os clientes

2013 POO - Bacalá 4

Page 5: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Modularidade

Decomposição de um problema em pequenos pedaços, para gerenciar complexidade

Construção de módulos desacoplados

Dividir para conquistar

2013 POO - Bacalá 5

Page 6: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Herança

Criação de hierarquias de abstração

Permite ordenar hierarquias relacionadas

Figura

Retângulo Triângulo

Polígono

2013 POO - Bacalá 6

Page 7: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Domínio e Aplicação

Domínio

composto pelas entidades, informações e processos relacionados a um determinado contexto

Aplicação

desenvolvida para automatizar ou tornar factível as tarefas de um domínio.

“reflexo” de um domínio.

2013 POO - Bacalá 7

Page 8: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Exemplo: domínio bancário

2013 POO - Bacalá 8

Page 9: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Objetos

As entidades identificadas no domínio devem ser representadas, numa aplicação OO por objetos.

Uma aplicação OO é composta por objetos.

Em geral, um objeto representa uma entidade do domínio.

Cliente João

2013 POO - Bacalá 9

Page 10: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Atributos

Algumas informações do cliente como nome, data de nascimento e sexo são importantes para o banco.

Já que são relevantes para o domínio, o objeto cliente também deve possuir essas informações.

Esses dados são armazenados nos atributos do objeto que representa o João.

Cliente João

João

2013 POO - Bacalá 10

Page 11: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Atributos

Variável que pertence a um objeto

Os dados de um objeto são armazenados nos seus atributos

O próprio objeto deve realizar operações de consulta ou alteração dos valores de seus atributos.

Essas operações são definidas nos métodos do objeto.

2013 POO - Bacalá 11

Page 12: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Métodos

Utilizados para possibilitar interações entre os objetos de uma aplicação.

As tarefas que um objeto pode realizar são definidas pelos seus métodos.

Um objeto é composto por

atributos e

métodos.

2013 POO - Bacalá 12

Page 13: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Exemplo

2013 POO - Bacalá 13

Page 14: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Objeto

Modelo de um objeto real

entidade física, conceitual ou de software

Possui comportamento, estado e identidade

2013 POO - Bacalá 14

Page 15: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Objetos, Métodos e Variáveis

OBJETO é um pacote de software contendo dados e procedimentos (código) relacionados

Os procedimentos são chamados MÉTODOS

Os dados dos objetos são chamados VARIÁVEIS ou COMPONENTES DO ESTADO

2013 POO - Bacalá 15

Page 16: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Objeto em UML

: Cliente

aquela :

Cliente

aquela

Apenas o nome da

classe

Apenas o nome do

objeto

Aquela Cliente

do ARIEL

Nome da classe e do

objeto

2013 POO - Bacalá 16

Page 17: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Classes

Define quais serão os atributos e métodos de um objeto.

Definição realizada por meio de uma classe elaborada por um programador.

A partir de uma classe, podemos construir objetos que executam a nossa aplicação.

2013 POO - Bacalá 17

Page 18: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Classe

Descrições de objetos com propriedades e comportamento comuns

Abstração que enfatiza o que é relevante

suprime o que não interessa

Classes são fábricas de objetos

Objetos são agrupados em classes

2013 POO - Bacalá 18

Page 19: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Classes e Instâncias

Classes - modelos que definem os métodos e as variáveis a serem incluídas em um tipo particular de objeto.

Objetos que pertencem a uma classe são chamados de INSTÂNCIAS desta classe e contêm valores particulares para as suas variáveis.

Variáveis de um objeto são chamadas de VARIÁVEIS DE INSTÂNCIA

2013 POO - Bacalá 19

Page 20: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Classe em UML

Cliente

Nome da Classe Cliente

Atributos

Operações

nome

clienteID

criar()

salvar()

remover()

alterar()

estrutura

comportamento

2013 POO - Bacalá 20

Page 21: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Representação de Classes

2013 POO - Bacalá 21

Page 22: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Atributo

Armazenam estado dos objetos

são coisas que um objeto “sabe”

Propriedades de um objeto

Variáveis de instância

2013 POO - Bacalá 22

Page 23: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Atributo em UML

: Cliente

nome = Outra

clienteID = 12

: Cliente

nome = aquela

clienteID = 10

Cliente nome

clienteID

Valor do Atributo

Objeto

2013 POO - Bacalá 23

Page 24: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Operação

Modela comportamento das classes

São coisas que uma classe “faz”

Serviços que os objetos oferecem a outros objetos

Cliente

criar()

salvar()

remover()

alterar()

2013 POO - Bacalá 24

Page 25: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Classes e Objetos em Java

class Aviao { .. Asa asa[2]; Propulsor propulsor[]; LemeDeDirecao leme; .. void pouse(..) {

.. leme.reto(); .. asa[1].flapPBaixo(..); asa[2].flapPBaixo(..); .. propulsor.desligue(..); .. }

}

class Asa { .. void flapPBaixo(Grau graus) { .. } void flapPCima(Grau graus) { .. } } class Propulsor { Int potencia; void desligue(..) { .. } void ligue(..) { .. } }

2013 POO - Bacalá 25

Page 26: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Polimorfismo

Escondendo diferentes implementações através de uma única interface

Manufacturer B Manufacturer C Manufacturer A

Fonte: Rational

interface bem definida

2013 POO - Bacalá 26

Page 27: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Herança

Mecanismo através do qual uma classe de objetos pode ser definida como caso especial de uma classe mais geral.

A classe mais geral é chamada de SUPERCLASSE

Casos especiais de uma classe são chamados de SUBCLASSE.

2013 POO - Bacalá 27

Page 28: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Herança e Polimorfismo

Permitem que objetos sejam tratados de forma homogênea e segura um conjunto consistente de abstrações

2013 POO - Bacalá 28

Page 29: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Exercício

Represente os objetos que são necessários para fazer uma aplicação OO para controlar um:

1. Bar ou Restaurante

2. Escola de Inglês ou Natação

3. Pequeno Armazém que trabalha com contas de clientes (tipo caderneta)

2013 POO - Bacalá 29

Page 30: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Bar ou Restaurante

Conceitos do Domínio Produtos que compõem o cardápio

Contas associadas às mesas

Consumo de produtos associados às contas das mesas

Garçons responsáveis pelas contas

Etc...

Operações:

Abrir conta da mesa

Registrar pedidos na conta

Fechar conta

Receber conta

Etc...

2013 POO - Bacalá 30

Page 31: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Escola de Inglês ou Natação

Conceitos do Domínio Alunos

Professores

Turmas

Pagamentos

Etc...

Operações:

Matricular alunos em turma

Receber pagamento de aluno

Escalar professor para uma turma

Controlar frequência de alunos

Etc...

2013 POO - Bacalá 31

Page 32: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Armazém

Conceitos do Domínio Clientes

Caderneta do Cliente

Produtos

Estoque

Etc...

Operações:

Registra venda na caderneta

Receber pagamento do cliente

Consultar estoque de produtos

Etc...

2013 POO - Bacalá 32

Page 33: Programação Orientada a Objetos - facom.ufu.brbacala/POO/01 - Programação Orientada a Objeto… · Benefícios do Paradigma de Orientação a Objetos

Benefícios do Paradigma de Orientação a Objetos

Favorece modularidade, manutenibilidade e reuso

Aproxima-se do mundo real

Uso do mesmo conceito em todas as fases do desenvolvimento

2013 POO - Bacalá 33