Upload
internet
View
106
Download
0
Embed Size (px)
Citation preview
Orientação a Objetos (Marcelo Bezerra de Alcantara) 1
Orientação a Objetos & UML
Professor Marcelo Bezerra de Alcântara
Orientação a Objetos (Marcelo Bezerra de Alcantara) 2
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) 3
Parte I: Orientação a Objetos
Módulo 1Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 4
Agenda
Módulo 1 – Introdução• Análise Estruturada• Motivação• Análise Estruturada x Orientação à Objetos• Abstração• Definição• Características
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 5
Análise estruturada
Criada nos anos 60/70• Guerra Fria• Grandes Projetos• Ambientes de Grande Porte• Pouca maturidade em Programação
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 6
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.
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 7
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.
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 8
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
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 9
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.
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 10
Estruturada x OO
Catálogo Bibliotecário
Livro Biblioteca
Sistema
Registrar empréstim
os
Adicionar recursos
Relatar multas
A/P orientados a objetos
Decompor por objetos ou conceitos
A/P estruturados
Decompor por funções ou processo
Sistema de informação de bibliotecas
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 11
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)
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 12
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
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 13
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
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 14
Abstração
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 15
Abstração
Processo de identificar as qualidades ou propriedades importantes do fenômeno sendo modelado.
(Carlo Gezzi/ Mehdi Jazayeri)
Parte I: OO / Módulo 1: Introdução
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) 16
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.
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 17
Abstração
Parte I: OO / Módulo 1: Introduçã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) 18
Encapsulamento
Parte I: OO / Módulo 1: Introdução
É 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) 19
Encapsulamento
Código. . .. . .
Código. . .. . .
Código. . .. . .
Dado Dado DadoDadoProgramação estruturada
Código. . .. . .
Dado
Código. . .. . .
Dado
Código. . .. . .
Dado
Orientação a Objetos
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 20
Encapsulamento
Parte I: OO / Módulo 1: Introdução
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) 21
Polimorfismo
Parte I: OO / Módulo 1: Introdução
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) 22
Polimorfismo
objGeral.getNI();
P essoa
NI
getNI()
P essoaFis ica
getNI()
P essoaJuridica
getNI()
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 23
Polimorfismo
objGeral.getNI();
P essoa
NI
getNI()
P essoaFis ica
getNI()
P essoaJuridica
getNI()
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 24
Polimorfismo
objGeral.getNI();
P essoa
NI
getNI()
P essoaFis ica
getNI()
P essoaJuridica
getNI()
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 25
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: RicardoSérie: 2ªTurma: A
Nome: RicardoSérie: 2ªTurma: A
Parte I: OO / Módulo 1: Introdução
Orientação a Objetos (Marcelo Bezerra de Alcantara) 26
Parte I: Orientação a Objetos
Módulo 2Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 27
Agenda
Módulo 2 – Classes x Objetos• Objetos• Classes• Classes x Objetos• Mensagens• Atributos• Operações• Encapsulamento
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 28
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 29
Objetos
• Nosso mundo é um mundo de objetos, para se convencer disso basta tropeçar neles (Castanheda)
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 30
• Tem atributos, estado, comportamento e identidade
Objetos ...
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 31
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)
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 32
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 33
Classes
• Classes definem elementos de mesma natureza
• Modelam características comuns a estes
• Ex: árvores
classe árvore
objeto árvore
objeto árvore
objeto árvore
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 34
Classes x Objetos
Parte I: OO / Módulo 2: Classes x Objetos
Nome: MafaldaSérie: 1ªTurma: B
Nome: RicardoSérie: 2ªTurma: A
Nome: AndréSérie: 1ªTurma: B
Nome: RicardoSérie: 2ªTurma: A
Classe
Objeto
ObjetoObjeto
Objeto
Orientação a Objetos (Marcelo Bezerra de Alcantara) 35
Classes x Objetos
public class Aluno
{
private String nome;
private String serie;
private String turma;
public String getNome()
{
return nome;
}
public void setNome(String nome)
{
this.nome = nome;
}
...
}
Parte I: OO / Módulo 2: Classes x Objetos
public void teste()
{
Aluno mafalda = new Aluno();
Aluno ricardo1 = new Aluno();
Aluno ricardo2 = new Aluno();
mafalda.setNome("Mafalda");
mafalda.setSerie("1ª");
mafalda.setTurma("B");
ricardo1.setNome("Ricardo");
ricardo1.setSerie("2ª");
ricardo1.setTurma("A");
ricardo2.setNome("Ricardo");
ricardo2.setSerie("2ª");
ricardo2.setTurma("A");
...
}
Classe
Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 36
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
Classe FuncionárioClasse FuncionárioNomeCargo
ObjetosObjetosNome1Cargo1
Nome2Cargo2
Nome3Cargo3
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 37
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 38
Atributos
Representam os dados do objeto
Parte I: OO / Módulo 2: Classes x Objetos
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) 39
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 40
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ãoCargo1
CarlosCargo2
SilviaCargo3
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 41
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 42
Classes x Instâncias
• Ex: uma empresa com 3 funcionários :
Variável de ClasseVariável de Classe
NomeCargo
Variáveis de InstânciaVariáveis de Instância
JoãoCargo1
CarlosCargo2
SilviaCargo3
Total: 3
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 43
Classes x Instâncias
• Ex: membros de uma família
Sobrenome: SilvaIdade
Aldo23
Sexo
Masc
Bea10
Fem
Ido88
Masc
Aldo Silva Bea Silva Ido Silva
Variável de Classe:nome de família
Variável de Classe:nome de família
Nome
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 44
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 45
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 46
Métodos ...
• Ex:– comportamento de um funcionário :
• informa seu nome
• informa seu cargo
• toma cafezinho
• executa um trabalho
• dorme
• reclama
• etc.
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 47
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 48
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
Parte I: OO / Módulo 2: Classes x Objetos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 49
Parte I: Orientação a Objetos
Módulo 3Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 50
Agenda
Módulo 3 – Relacionamentos• Associação• Agregação• Composição• Dependência
Parte I: OO / Módulo 3: Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 51
Associação
Relacionamento entre objetos de classes independentes
Dependência estrutural
Associação Unária
Parte I: OO / Módulo 3: Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 52
Associação
Associação Binária
Associação Ternária
Parte I: OO / Módulo 3: Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 53
Associação
Classe de Associação• Existência de atributos ou operações próprios da associação
Parte I: OO / Módulo 3: Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 54
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”
Parte I: OO / Módulo 3: Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 55
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”
Parte I: OO / Módulo 3: Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 56
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
Parte I: OO / Módulo 3: Relacionamentos
Orientação a Objetos (Marcelo Bezerra de Alcantara) 57
Parte I: Orientação a Objetos
Módulo 4Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 58
Agenda
Módulo 4 – Herança e Polimorfismo• Herança• Classes Abstratas• Redefinição• Polimorfismo
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 59
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
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 60
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
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 61
Herança
As subclasses herdam atributos, operações e relacionamentos da superclasse
É possível redefinir o que foi herdado
Parte I: OO / Módulo 4: Herança e Polimorfismo
Superclasse
Subclasse
Orientação a Objetos (Marcelo Bezerra de Alcantara) 62
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
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 63
Redefinição
Redefinição de métodos da classe pai
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 64
Herança ...
Classe
Classe Classe
Classe Classe
ObjetoObjeto ObjetoObjeto
mensagem
métodoresolução de chamada de métodoresolução de chamada de método
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 65
Herança ...
Classe
Classe Classe
Classe Classe
ObjetoObjeto ObjetoObjeto
mensagem
métodoMascarando métodosMascarando métodos
método
este método respondeeste método responde
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 66
Polimorfismo
Muitas “formas” Mesma operação se comporta de forma diferente
dependendo do tipo do objeto Ligação tardia (late binding)
Parte I: OO / Módulo 4: Herança e Polimorfismo
Figura
Circulo
Triangulo
Retangulo
RetanguloColorido
desenhar()
Orientação a Objetos (Marcelo Bezerra de Alcantara) 67
Exercício
Exercícios
Parte I: OO / Módulo 4: Herança e Polimorfismo
Orientação a Objetos (Marcelo Bezerra de Alcantara) 68
Exercício
Parte I: OO / Módulo 4: Herança e Polimorfismo
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;