Orientação a Objetos & UML
Professor
Marcelo Bezerra de Alcântara
Orientação a Objetos (Marcelo Bezerra de Alcantara)
1
Agenda
Parte I: Orientação a Objetos
•
•
•
•
Módulo 1 - Introdução
Módulo 2 - Classes x Objetos
Módulo 3 - Relacionamentos
Módulo 4 - Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara)
2
Parte I: Orientação a Objetos
Módulo 1
Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara)
3
Agenda
Módulo 1 – Introdução
•
•
•
•
•
•
Análise Estruturada
Motivação
Análise Estruturada x Orientação à Objetos
Abstração
Definição
Características
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
4
Análise estruturada
Criada nos anos 60/70
•
•
•
•
Guerra Fria
Grandes Projetos
Ambientes de Grande Porte
Pouca maturidade em Programação
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
5
Análise estruturada
O objetivo principal era fazer com que o pessoal
de sistemas pensasse antes de agir;
Tentativa de impor alguma ordem à natureza
acidental da construção de programas;
Produziu um modelo rigorosamente seqüencial;
• análise;
• O que ?
• projeto;
• Como
• implementação.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
6
Análise estruturada
Tradicionalmente, a literatura tratava análise,
projeto e implementação como atividades
diferentes e, até certo ponto, desconexas pois
tinham:
• diferentes métodos;
• diferentes notações e
• diferentes objetivos.
Na necessidade de especificar o que está prestes
a ser implementado tratavam a análise e o projeto
como as únicas coisas que realmente interessam.
A implementação seria apenas algo inevitável.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
7
Motivação - Orientação a objetos
Crise do software e necessidade de mudar
Surgiu a idéia da orientação a objetos que
representa melhor o mundo real, uma vez que a
percepção e o raciocínio do ser humano estão
relacionados diretamente com o conceito de
objetos.
Objetivo principal da utilização do paradigma da
Orientação a Objetos, na construção de software:
• Rápido
• não perder muito tempo no desenvolvimento
• Barato
• linhas de montagem e reutilização de código
• Flexível
• fácil modificar ou estender
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
8
Estruturada x OO
Com a orientação a objetos procura-se eliminar
as diferenças entre as etapas de análise, projeto
e implementação, reabilitando a difamada tarefa
de implementação
O segredo é fazer com que os conceitos de
programação, e as notações para programação,
sejam suficientemente de alto-nível para que
possam servir apropriadamente como
ferramentas de modelagem.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
9
Estruturada x OO
Sistema de informação de
bibliotecas
A/P orientados a objetos
Decompor por objetos
ou conceitos
A/P estruturados
Decompor por funções
ou processo
Sistema
Catálogo
Livro
Bibliotecário
Registrar
empréstimos
Relatar
multas
Biblioteca
Adicionar
recursos
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
10
Definição
Uma nova maneira de pensar os problemas utilizando
modelos organizados a partir de conceitos do mundo
real. O componente fundamental é o objeto que
combina estrutura e comportamento em uma única
entidade.
(Rumbaugh)
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
11
Características
Software desenvolvido como hardware
Facilita o reuso
Permite um nível mais elevado de abstração
Linguagem padrão de representação: UML
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
12
Motivação - Orientação a Objetos
Conceitos Chaves
•
•
•
•
Abstração
Encapsulamento
Polimorfismo
Identidade
Mecanismos Básicos
•
•
•
•
•
Objetos
Atributos
Métodos ou Serviços
Relacionamentos
Herança
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
13
Abstração
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
14
Abstração
Processo de identificar as qualidades ou propriedades
importantes do fenômeno sendo modelado.
(Carlo Gezzi/ Mehdi Jazayeri)
Uma abstração descreve as características essenciais
de um objeto; aquelas que o distinguem de todos os
outros tipos de objeto e fornece assim, para aquele que
analisa um sistema, fronteiras conceituais bem
definidas.
(Booch)
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
15
Abstração
Nesta fase tenta-se retirar elementos e requisitos
que irão ajudar na resolução de um problema;
É o processo de retirar do domínio do problema os
detalhes relevantes e representá-los não mais em
uma linguagem do domínio e sim na linguagem da
solução.
O sucesso de um Programa Orientado a Objeto
está condicionado a uma boa abstração do
problema.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
16
Abstração
No paradigma da Programação Estruturada
identifica-se as funções como sendo "operações
abstratas que resolvem um problema de
programação", ou seja, ocorre a abstração de
procedimentos.
No paradigma da Orientação a Objetos, tem-se a
Abstração de Dados, onde uma estrutura de dados
deve incluir as operações que ocorrem com ela.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
17
Encapsulamento
É a propriedade de se implementar dados e
procedimentos correlacionados em uma mesma
entidade (objeto).
Trata-se de uma das principais vantagens da
Programação Orientada a Objetos sobre a
Programação Estruturada, principalmente na
reutilização de códigos.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
18
Encapsulamento
Código
Código
...
...
...
...
Código
Dado
Dado
Dado
Programação estruturada
...
...
Dado
Código
Código
Código
Dado
Dado
Dado
...
...
...
...
...
...
Orientação a Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
19
Encapsulamento
Pode-se entender intuitivamente o significado de
encapsulamento quando se observa o mundo real.
Nos objetos do mundo real, atributos e ações são
inerentes ao próprio objeto.
Exemplo :
• A um automóvel estão associados tanto atributos (modelo,
kilometragem, cilindradas, capacidade do tanque de
combustível, etc), quanto suas potencialidades (velocidade
média, consumo de combustível, etc).
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
20
Polimorfismo
O significado da palavra, originada do grego, é o de
"possuir várias formas".
Na A.O.O. é usado para indicar a propriedade de se
utilizar o mesmo nome para métodos diferentes.
Uma vantagem do polimorfismo é a relativa facilidade
de manutenção e extensão dos programas.
A idéia de polimorfismo está ligada com a indicação de
que os atributos só devem ter seus valores alterados
por métodos da sua classe.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
21
Polimorfismo
objGeral.getNI();
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
22
Polimorfismo
objGeral.getNI();
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
23
Polimorfismo
objGeral.getNI();
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
24
Identidade
Característica peculiar de um objeto que denota a
existência em separado do objeto, mesmo que ele
tenha os mesmos valores de atributos de outro objeto
Uma identificação única de cada objeto
Nome: Ricardo
Série: 2ª
Turma: A
Nome: Ricardo
Série: 2ª
Turma: A
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 1: Introdução
25
Parte I: Orientação a Objetos
Módulo 2
Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara)
26
Agenda
Módulo 2 – Classes x Objetos
•
•
•
•
•
•
•
Objetos
Classes
Classes x Objetos
Mensagens
Atributos
Operações
Encapsulamento
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
27
Classes e Objetos
• Objeto:
Conjunto de dados e procedimentos relacionados
utilizados para modelar coisas ou conceitos
• Classe:
Arcabouço que serve de molde para a criação de
objetos. Define os dados e procedimentos
comuns a todos objetos da classe
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
28
Objetos
• Nosso mundo é um mundo de objetos, para se
convencer disso basta tropeçar neles
(Castanheda)
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
29
Objetos ...
• Tem atributos, estado, comportamento e
identidade
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
30
Objetos ...
• Os atributos de um objeto definem as qualidades
e características da entidade que ele representa
• O estado de um objeto é o particular conjunto de
valores de seus atributos em um dado momento
• O comportamento de um objeto é definido pelas
alterações do seu estado em resposta a
mensagens que ele recebe (interação com outros
objetos)
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
31
Objetos ...
• Ex:
– uma árvore pode ser grande ou pequena, nova ou velha,
frutífera ou não, etc.
– produz clorofila, gás carbônico, sombra, faz fotosíntese
– pode estar doente ou não, com ou sem folhas
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
32
Classes
• Classes definem elementos de mesma natureza
• Modelam características comuns a estes
• Ex: árvores
classe árvore
objeto árvore
objeto árvore
objeto árvore
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
33
Classes x Objetos
Classe
Nome: Ricardo
Série: 2ª
Turma: A
Nome: Mafalda
Série: 1ª
Turma: B
Objeto
Objeto
Nome: André
Série: 1ª
Turma: B
Objeto
Nome: Ricardo
Série: 2ª
Turma: A
Objeto
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
34
Classes x Objetos
public class Aluno
{
private String nome;
private String serie;
private String turma;
Classe
Objetos
public void teste()
{
Aluno mafalda = new Aluno();
Aluno ricardo1 = new Aluno();
Aluno ricardo2 = new Aluno();
public String getNome()
{
return nome;
}
mafalda.setNome("Mafalda");
mafalda.setSerie("1ª");
mafalda.setTurma("B");
ricardo1.setNome("Ricardo");
ricardo1.setSerie("2ª");
ricardo1.setTurma("A");
public void setNome(String nome)
{
this.nome = nome;
}
...
ricardo2.setNome("Ricardo");
ricardo2.setSerie("2ª");
ricardo2.setTurma("A");
...
}
}
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
35
Instâncias
• Objetos são instâncias de classes
• Os atributos e métodos de uma classe tornam-se
disponíveis em cada objeto instanciado
Nome
Cargo
Nome1
Cargo1
Nome2
Cargo2
Classe Funcionário
Nome3
Cargo3
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
Objetos
36
Instâncias ...
• Uma classe declara os elementos que compõe
um objeto
• A declaração não aloca memória: a classe é
usada apenas para modelar as características de
um conjunto de objetos
• A instanciação de um objeto de uma classe
provoca a alocação de memória para conter os
seus atributos
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
37
Atributos
Representam os dados do objeto
Visibilidade
• Pública
• Todos os objetos têm acesso
• Faz parte da interface da classe
• Protegida
• Acessado por operações da classe e de suas
filhas
• Privada
• Só acessado de dentro da própria classe
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
38
Variáveis de Instância
• Os atributos dos objetos são definidos por
variáveis.
• As variáveis de instância definem atributos que
podem receber diferentes valores em objetos
distintos.
• Cada objeto tem sua própria variável de instância
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
39
Variáveis de Instância
• Ex:
– na classe funcionário, cada objeto instanciado modela
uma pessoa que tem seu próprio nome
– nome é, portanto, uma variável de instância
João
Cargo1
Carlos
Cargo2
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
Silvia
Cargo3
40
Variáveis de Classe
• Atributos comuns a todos os elementos da
classe são armazenados em variáveis de classe
• Uma variável de classe armazena informações
sobre a classe inteira, não apenas sobre um
determinado objeto
• Ex:
– na classe funcionário, o número de funcionários de uma
empresa seria uma variável de classe, pois não se refere
a nenhum funcionário em particular
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
41
Classes x Instâncias
• Ex:
uma empresa com 3 funcionários :
Nome
Cargo
Total: 3
João
Cargo1
Carlos
Cargo2
Variável de Classe
Silvia
Cargo3
Variáveis de Instância
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
42
Classes x Instâncias
• Ex: membros de uma família
Nome
Sobrenome: Silva
Idade
Sexo
Variável de Classe:
nome de família
Aldo
23
Masc
Bea
10
Fem
Ido
88
Masc
Aldo Silva
Bea Silva
Ido Silva
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
43
Métodos
• O comportamento de um objeto é definido a partir
de procedimentos que alteram seu estado
• Em OO estes procedimentos são chamados de
métodos
• Métodos são equivalentes a funções em C ou
C++, com a diferença que são definidos no
escopo de uma classe
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
44
Métodos ...
• Objetos comunicam-se entre si através de
métodos
• Através dos métodos é possível:
– consultar os valores de atributos (variáveis) de um
objeto
– alterar o valor de atributos do objeto
– solicitar um serviço ao objeto
– fornecer informações ao objeto
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
45
Métodos ...
• Ex:
– comportamento de um funcionário :
•
•
•
•
•
•
•
informa seu nome
informa seu cargo
toma cafezinho
executa um trabalho
dorme
reclama
etc.
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
46
Métodos
Tipos
• Construtora
• Operação que cria e/ou inicializa um objeto
• Primeira operação executada
• Executada no momento em que o objeto é instanciado
• Seletora
• Pode ler, mas não alterar o estado do objeto
• Modificadora
• Pode alterar o estado do objeto
• Destrutora
• Operação que finaliza um objeto
• Última operação executada
• Executada no momento em que o objeto é destruído
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
47
Métodos
Visibilidade
• Pública
• Protegida
• Privada
Parâmetros
• Recebidos através da mensagem
• Exemplo: parâmetros Altura e Largura na
operação CalcularAreaRetangulo
Tipo de Retorno
• Tipo do valor retornado opcionalmente para o
objeto invocador
• Exemplo: tipo de retorno float da operação
CalcularAreaRetangulo
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 2: Classes x Objetos
48
Parte I: Orientação a Objetos
Módulo 3
Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara)
49
Agenda
Módulo 3 – Relacionamentos
•
•
•
•
Associação
Agregação
Composição
Dependência
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 3: Relacionamentos
50
Associação
Relacionamento entre objetos de classes
independentes
Dependência estrutural
Associação Unária
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 3: Relacionamentos
51
Associação
Associação Binária
Associação Ternária
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 3: Relacionamentos
52
Associação
Classe de Associação
• Existência de atributos ou operações próprios da associação
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 3: Relacionamentos
53
Agregação
Caso particular da Associação
Relacionamento do tipo todo-parte
Agregação por referência
• Um atributo na classe “todo” é uma referência para um
objeto da classe “parte”
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 3: Relacionamentos
54
Composição
Caso particular da Agregação
Não faz sentido a existência do objeto “parte” sem a
existência do objeto “todo”
Agregação por valor
• O objeto “parte” é um atributo contido no objeto “todo”
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 3: Relacionamentos
55
Dependência
Dependência comportamental
Uma classe depende de algum serviço oferecido pela
outra
Uma alteração na classe independente pode afetar a
classe dependente
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 3: Relacionamentos
56
Parte I: Orientação a Objetos
Módulo 4
Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara)
57
Agenda
Módulo 4 – Herança e Polimorfismo
•
•
•
•
Herança
Classes Abstratas
Redefinição
Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
58
Herança de Classes
• Classes podem ser organizadas na forma de uma
árvore genealógica
• Assim como seres vivos herdam características
de seus projenitores, classes herdam o
comportamento e atributos de outras classes
• A classe filho é chamada de subclasse e a classe
pai de superclasse
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
59
Herança ...
• A herança permite estruturar o programa,
fatorando características comuns
• As subclasses podem ser especializadas de
forma a incorporar outros atributos e
comportamentos (diferentes da superclasse)
• Uma subclasse contém todas as características
de uma superclasse, mas o inverso não é
verdadeiro
– todos os homes são animais, nem todos os animais são
homens
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
60
Herança
As subclasses herdam atributos, operações e
relacionamentos da superclasse
É possível redefinir o que foi herdado
Superclasse
Subclasse
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
61
Classes Abstratas
Não podem ser instanciadas
Servem para modelar os atributos, operações e
relacionamentos comuns de uma hierarquia de
classes
Os objetos da hierarquia são instanciados a partir
das subclasses
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
62
Redefinição
Redefinição de métodos da classe pai
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
63
Herança ...
Classe
método
resolução de chamada de método
Classe
Classe
Classe
Classe
Objeto
Objeto
mensagem
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
64
Herança ...
Classe
Mascarando métodos
método
Classe
Classe
Classe
este método responde
Classe
método
Objeto
Objeto
mensagem
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
65
Polimorfismo
Muitas “formas”
Mesma operação se comporta de forma diferente
dependendo do tipo do objeto
Ligação tardia (late binding)
Figura
Circulo
desenhar()
Triangulo
Retangulo
Retangulo
Colorido
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
66
Exercício
Exercícios
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
67
Exercício
Qual a diferença entre Análise Estruturada e Análise
Orientada a Objetos;
Cite exemplos de operações polimórficas;
O que é encapsulamento?
Qual a relação entre Objetos e Classe?
Quais os tipos de visibilidade existentes para atributos
e métodos?
Qual a diferença entre atributo de instância e atributo
de classe?
Cite um exemplo de associações de agregação e
composição;
O que são classes abstratas?
Cite um exemplo do uso de herança;
Orientação a Objetos (Marcelo Bezerra de Alcantara)
Parte I: OO / Módulo 4: Herança e Polimorfismo
68