Orientação à Objetos
1
Tópicos abordados
Paradigmas de desenvolvimento
Princípios de OO
Conceitos de OO
Benefícios
2
Objetivos
Compreender os conceitos básicos de
OO
Entender as diferenças entre os
paradigmas tradicionais
Entender exemplos práticos de
utilização de OO
3
Paradigma de Desenvolvimento
de Software
Ferramentas, metodologias e ambientes
dependem do Paradigma de
Desenvolvimento
Paradigma é a “filosofia” adotada na
construção do software:

Lógico, Funcional, Procedimental,
Orientado a Objetos, etc...
4
Paradigma Procedimental
Visão de desenvolvimento baseada em um
modelo entrada-processamento-saída
Dados são considerados separadamente das
funções
Funções, são ativas e têm comporta-mento
Dados são repositórios passivos de
informação afetados por funções
5
Paradigma Procedimental
Dados
Dados
Dados
Processamento
Resultado
6
Paradigma Procedimental
Exemplo: Calcular a folha de
pagamento de um departamento
Adiantamento
do João
Salário do
Pedro
Demissão da
Joana
Dependentes
da Maria
Processamento
Férias do
Antônio
Salário da
Maria
Prêmio da
Helena
Custo Total
7
Paradigma
Orientado a Objetos
Pressupõe que o mundo é composto
por objetos
Objeto é uma entidade que combina
estrutura de dados e comportamento
funcional
Os sistemas são modelados como um
número de objetos que se interagem
8
Paradigma OO
Utiliza uma perspectiva mais
humana de observação da realidade,
incluindo objetos, classificação e
compreensão hierárquica
9
Procedimental vs OO
10
O que é OO?
“Orientação à objetos é uma estratégia para organizar
sistemas como coleções de objetos que interagem entre
si e combinam dados e comportamento”
11
Princípios básicos de OO
Orientação à Objetos
Abstração Modularidade Encapsulamento Hierarquia
12
Abstração
Anfíbio
Computador
Construção
13
Abstração
Construção de um modelo para
representação de uma realidade
Foco em aspectos essenciais de uma
aplicação enquanto ignora os detalhes
Preserva a simplicidade do projeto
14
Abstração
Construção de um modelo para
representar a realidade
Automovel
modelo
preco
...
atualizaPreco()
...
15
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
16
Encapsulamento
Oferece os seguintes tipos de proteção


O estado interno de um objeto não pode
ser corrompido por um cliente
Mudanças internas não têm impacto sobre
os clientes
Facilita a manutenção e diminui o seu
custo
17
Objeto DVD
voltar()
pausar()
avancar()
carregarDisco()
alterarHora()
parar()
tocar()
18
Modularidade
Módulo de
estoque
Módulo de
faturamento
Módulo de
clientes
Sistema de
vendas
Módulo de
canais de
venda
19
Modularidade
A quebra de algo complexo em pedaços
menores que sejam gerenciáveis


Melhor entendimento do sistema
Partes podem ser desenvolvidas
separadamente
20
Modularidade
Cuidado com a coesão e o acoplamento!!!!
“Deve-se maximizar a coesão,
enquanto minimiza-se o
acoplamento.”
21
Aumenta a
abstração
Hierarquia
Define níveis de abstração
Animal
Forma
Polígono
Triângulo
Retângulo
Mamífero
Homem
Leão
Ave
Diminui a
abstração
22
Hierarquia
Criação de níveis de abstração
Base conceitual para permitir
extensibilidade do software
Reuso de código e comportamento
23
Conceitos básicos de OO
Objeto
Classe
Atributo
Operação
Interface (Polimorfismo)
Pacote
Relacionamentos
24
O que é um objeto?
“Um objeto é um conceito, abstração ou
coisa com limites e significado para uma
aplicação”
Um objeto deve ter:



Estado
Comportamento
Identidade única
25
Exemplos de Objetos
Opala placa AAM1921
Gisele Bündchen
Johnnie Walker
Black Label
26
Classe
Classes especificam a estrutura e o
comportamento dos objetos
Classes são como "moldes" para a
criação de objetos
Objetos são instâncias de classes
27
Exemplo de classes
Classe
Curso
Propriedades
Nome
Localização
Duração
Créditos
Comportamento
Adicionar um aluno
Remover um aluno
Atribuir professor
Atribuir sala
28
Objetos da classe Curso
Curso
•Adicionar um aluno
•Remover um aluno
•Atribuir professor
•Atribuir sala
•Nome = Análise I
•Localização = MAC
•Duração = 30h
•Créditos = 2
•Nome = SI
•Localização = MAC
•Duração = 30h
•Créditos = 2
•Nome
•Localização
•Duração
•Créditos
•Nome = Análise II
•Localização = MAC
•Duração = 15h
•Créditos = 4
29
Classes de Objetos
Quantas classes temos aqui?
30
Relação entre classe e objeto
Classe é uma definição abstrata de um
objeto


Ela define a estrutura e o comportamento
dos objetos
Serve como template para criação de
objetos
Objetos são agrupados em classes
31
Classes e objetos em Java
class Pessoa {
...
}
...
Pessoa p1 = new Pessoa();
Pessoa p2 = new Pessoa();
32
Exercício
Descrever as classes do sistema de
Reserva de passagem
33
Atributo
Propriedades de um objeto
O estado do objeto é definido pelo
conjunto de seus atributos
Fisicamente armazenado em uma
variável
34
Objetos da classe Curso
Curso
•Adicionar um aluno
•Remover um aluno
•Atribuir professor
•Atribuir sala
•Nome = Análise I
•Localização = MAC
•Duração = 30h
•Créditos = 2
•Nome = SI
•Localização = MAC
•Duração = 30h
•Créditos = 2
•Nome
•Localização
•Duração
•Créditos
•Nome = Análise II
•Localização = MAC
•Duração = 15h
•Créditos = 4
35
Atributos em Java
class Pessoa {
int idade;
String nome;
}
...
Pessoa p1 = new Pessoa();
Pessoa p2 = new Pessoa();
p1.nome = “Gibeon”;
P2.nome = “Adilson”;
36
Referência para outros objetos
Endereço
Pessoa
•Nome = Análise I
•Idade = 23
•Endereco
•Rua = Cruzeiro
•Numero = 262
•Bairro = Setubal
•Cidade = Recife
37
Atributo composto em Java
class Pessoa {
int idade;
String nome;
Endereco end;
}
class Endereco {
String rua;
String bairro;
int numero;
}
...
Pessoa p1 = new Pessoa();
p1.nome = “Gibeon”;
p1.endereco = new Endereco();
38
Operação
Modela comportamento das classes
Serviços que os objetos oferecem a
outros objetos (Troca de mensagens
entre objetos)
39
Objetos da classe Curso
Curso
•Adicionar um aluno
•Remover um aluno
•Atribuir professor
•Atribuir sala
•Nome = Análise I
•Localização = MAC
•Duração = 30h
•Créditos = 2
•Nome = SI
•Localização = MAC
•Duração = 30h
•Créditos = 2
•Nome
•Localização
•Duração
•Créditos
•Nome = Análise II
•Localização = MAC
•Duração = 15h
•Créditos = 4
40
Operações em Java
class Pessoa {
...
void aniversariar(){
idade = idade + 1;
}
}
...
Pessoa p1 = new Pessoa();
Pessoa p2 = new Pessoa();
p1.nome = “Gibeon”;
P1.aniversariar();
41
Troca de mensagens
B()
C()
A()
A()
D()
E()
42
Troca de mensagens em Java
class TipoA {
TipoB b = new TipoB();
void m1(){
b.m2();
}
}
class TipoB {
void m2(){
...
}
}
43
Exercício
Adicionar atributos e métodos às
classes selecionadas
44
Polimorfismo
Habilidade de esconder diferentes
implementações através de uma única
interface
Manufactor A
Manufactor A
Manufactor C
45
Interface
Interfaces formalizam polimorfismo
Aumentam o nível de reusabilidade
Viabilizam o uso de componentes
Reduzem o esforço de evolução da
aplicação
46
Interface
Interfaces definem um tipo especificando
apenas a assinatura de seus métodos
Interfaces não possuem atributos e seus
métodos não têm corpo
Classes implementam interfaces

provêem implementação para os métodos
especificados em uma interface
47
Exemplo de Interface
voltar()
pausar()
avancar()
parar()
carregarDisco()
tocar()
alterarHora()
48
Interface em Java
interface DVD {
void voltar();
void avancar();
void parar();
void tocar();
}
class DVDSony implements DVD{
void voltar(){}
void avancar(){}
void parar(){}
void tocar(){}
}
class DVDGradiente implements
DVD{
void voltar(){}
void avancar(){}
void parar(){}
void tocar(){}
}
49
Generalização/Especialização
É um relacionamento entre um
elemento genérico e um mais específico
Também chamada de Herança
O objeto da classe
filha “herda” todas
as características
da classe pai
50
Herança
Class Animal{
...
}
Animal
Mamífero
Homem
Leão
Class Mamifero extends Animal{
...
}
Ave
Class Ave extends Animal{
...
}
Class Homem extends Mamifero{
...
}
51
Características da herança
Uma subclasse herda os atributos,
operações e relacionamentos de seu pai
Uma subclasse pode:

Adicionar atributo, operações e
relacionamentos
52
Classe abstrata
Classe abstrata é aquela que não possui
instância
Em geral, possui pelo menos um
método abstrato
Métodos abstratos não têm corpo

subclasses não abstratas são obrigadas a
fornecer uma implementação para eles
53
Exemplo de classe abstrata
Poligono
•Mover(x,y)
•Area()
•numeroLados()
Pentagono
Quadrilatero
Triangulo
54
Classe abstrata em Java
abstract class Poligono {
void mover(int x,int y){...}
double area(){...}
int numeroLados();
}
class Quadrilatero extends Poligono{
int numeroLados(){return 4;}
}
55
Classes, Interfaces e Classes
Abstratas
Interfaces
• Assinaturas dos métodos
Classes
• Atributos
• Métodos
Classes Abstratas
• Atributos
• Métodos
• Assinatura de Métodos
56
Classes abstratas x Interfaces
Herança de tipos x herança de código
Classes descrevem propriedades
fundamentais de um objeto
Interfaces descrevem papéis
desempenhados por um objeto em
determinadas situações
Interfaces são úteis para implementar
herança múltipla
57
Exercício
Identificar oportunidades de
generalização ou especialização
58
Pacote
Mecanismo para organizar elementos em
grupos
Facilita entendimento do sistema
Favorece modularidade e reuso em larga
escala
Essencial para estruturar sistemas complexos
nome do
pacote
59
Coesão e Acoplamento
Acoplamento é a medida de quão conectadas
duas classes são

cuidado com herança
Coesão é a medida de quão auto-contida
uma classe é
Sistemas devem ter baixo acoplamento e alta
coesão

bom para manutenção
60
Visibilidade de acesso
Existem quatro tipos básicos de
modificadores de acesso




Public
Private
Protected
Friendly
Dependendo do escopo (classe, método ou
atributo), podem ter significados diferentes
Mecanismo que facilita o encapsulamento
61
Visibilidade em classes
Public – Qualquer outra classe pode
acessá-la
Private – Apenas classes presentes no
mesmo arquivo podem acessá-la
Friendly – Apenas classes no mesmo
pacote podem acessá-la
62
Visibilidade de métodos e
atributos
Public – São visíveis para quaisquer
classes invocar/acessar
Private – São visíveis apenas na própria
classe
Protected – São visíveis apenas para
subclasses ou classes do mesmo pacote
Friendly – São visíveis apenas para
classes do mesmo pacote
63
Um Sistema OO
64
Benefícios
Único paradigma (Tudo é baseado em
classes)
Facilita o reuso de código e arquitetura
Reflete o mundo real
Estabilidade

“Pequenas mudanças nos requisitos
exigem poucas mudanças no código”
65
Suporte
Métodos e técnicas
Linguagens de modelagem: UML, OMT
Linguagens de programação
Ferramentas, Ambientes
Padrões de projeto OO
Etc.
66
FIM!!!
67
Download

Orientação à Objetos - Sefaz-AL