Aula 10 (FT7): Programação Orientada a Objetos

Propaganda
Linguagens de Programação Orientadas a Objetos
Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa
Marco Fagundes
[email protected]
Aulas 10 e 11 - Programação Orientada a Objetos
http://www.ufpa.br/sampaio/bd2003/lpoo
 Prof. Marco Fagundes
1 de 20
Roteiro








Introdução
Classes e Objetos
Atributos
Métodos
Instanciando Classes
Mensagens
Construtores e Finalizadores
Encapsulamento
2 de 20
Introdução
Programação Orientada a Objetos (POO) surgiu desde a
introdução da linguagem Simula em 1967
 Entretanto, ela veio tornar-se um paradigma de
programação nos meados da década de 1980
 POO difere da programação tradicional (programação
estruturada) devido colocar dados e operações que
manipulam estes dados em uma simples estutura de
dados
 Este modelo assemelha-se ao mundo real, onde todos os
objetos tem atributos e atividades associadas a eles
 Java é uma linguagem orientada a objetos pura, o que
significa que tudo em Java é acessado através de classes
e objetos. Diferente de linguagens híbridas tais como
C++ e Object Pascal

3 de 20
Classes e Objetos
Uma Classe é uma definição de tipo
 Um Objeto é uma declaração de variável
 Uma vez criada a Classe pode-se criar vários objetos
desta Classe
 O processo de criação do Objeto a partir de uma Classe é
denominado instanciando um Objeto ou criando uma
instância de uma Classe
 Objetos são elementos de software compostos de dados e
operações que atuam sobre estes dados.
 As operações são implementadas através dos métodos e
determinam o comportamento do objeto.

Objeto = dado
+ método
Objeto = estado + comportamento
4 de 20
Classes e Objetos
Objetos
Op1
operações/métodos/
comporamento
Um Objeto
Op2
Op4
propriedades/dados/
variáveis
Op3


Todo acesso aos dados ou propriedades do objeto é feito
através de sua interface (Op1,Op2,Op3 e Op4), o que
caracteriza o encapsulamento (visto adiante)
Por exemplo: O objeto DVD Player da Marca xxx .... Neste caso a
Classe seria DVD Player, sem especficar Marca...
5 de 20
Classes e Objetos
Classes
 Uma classe de objetos descreve um grupo de objetos com:
• Propriedades e comportamentos semelhantes
• Relacionamentos comuns com outros objetos
Classificação
Instanciação
Objetos/Instâncias
Aeronave
capacidade
prefixo
...
decolar
manter
pousar
...
6 de 20
Classes e Objetos



Em uma Análise OO de um dado problema, substantivos são classes
potenciais e verbos podem ser métodos
A UML é uma linguagem padrão para especificar, visualizar,
documentar e construir artefatos de um sistema e pode ser utilizada
ao longo de todo o ciclo de desenvolvimento e através de diferente
tecnologias de implementação
Uma classe UML apresenta a seguinte representação gráfica:
Implementação em Java
Nome da Classe (obrigatório)
public class Sala{
int codigoSala;
public void consultarSalas(){...}
Atributos da Classe (opcional)
}
Implementação em Delphi
Operações da Classe (opcional)
type
TSala = class
private
codigoSala: integer;
public
procedure consultarSala;
7 de 20
Classes e Objetos

Por exemplo em um sistema de controle acadêmico
podemos considerar o seguinte:
• Possíveis Classes: Aluno, Sala, Turma, Disciplina ...
• Possíveis Métodos: Incluir Aluno(classe Aluno),
Consultar Sala(classe Sala), Criar Turma (Classe
Turma)...
8 de 20
Classes e Objetos
Declarando e Instanciando Classes
 Java considerada uma classe vazia como válida. Por
exemplo:
class Aluno{
Aluno
}

Para criar uma instância da classe deve-se inicialmente
criar uma referência através de uma variável do tipo
definido pela classe
Aluno al;

Em seguida, deve-se alocar recursos para a referência
criada(no caso acima “al”). Esta alocação é feita pelo
operador new
al = new Aluno();
9 de 20
Classes e Objetos



O operador new chama o construtor, que é similar a um
método
Uma vez criado o objeto, as variáveis membro (ou de
instância) e métodos da classe podem ser acessados
usando o operador “.”
Não se deve preocupar em destruir um objeto, isto é
feito automaticamente pelo garbage collector
10 de 20
Atributos


Com dito anteriormente uma classe contém dados e
métodos
Atributos são variáveis membro que retêm informações
de estado/propriedades do objeto
Aluno Aluno
codMatricula:String
nome: String
anoIngresso:integer
class Aluno{
String codMatricula, nome;
int anoIngresso;
}
11 de 20
Métodos


Métodos implementam as operações que agem sobre os
atributos do objeto
class Aluno{
String codMatricula, nome;
Por exemplo:
int anoIngresso;
Aluno
Aluno
Aluno(pMat:String,
pNome:String,pAnoIng:int)
{
codMatricula = pMat;
nome = pNome;
anoIngresso = pAnoIng;
}
int permanenciaInst()
{return(2003 - anoIngresso);
}
codMatricula:String
nome: String
anoIngresso:integer
Aluno(pMat:String, pNome:String,
pAnoIng:integer)
permanenciaInst( )
Construtor
Obs:Apenas para ilustração
}
12 de 20
Instanciando Classes


Como visto anteriormente dois passos são envolvidos na
criação de uma instância da classe
1º Passo: Criação da referência para o objeto
Aluno aluno01;

2º Passo: Criação da instância da classe (objeto)
aluno01 = new Aluno(“0001”,“alTeste01”,1999);
Deve-se passar os
argumentos, caso a definição
requeira
13 de 20
Mensagens


Objetos interagem e comunicam-se através de
mensagens
As mensagens identificam os métodos a serem
executados no objeto receptor
permanenciaInst()
Emissor
Receptor
vPermInst = aluno01.permanenciaInst();
Esta variável deve ser
declarada, sendo do mesmo
tipo do retorno do método:
int vPermInst;
Indica o envio de
mensagem para o objeto
“aluno01”
14 de 20
Construtores e Finalizadores

Construtores:
• Servem como interfaces para inicializar objetos
• Sempre têm o mesmo nome da classe
• Similar a um método, mas não pode especificar um
valor de retorno
• Cuida da alocação de todos os recursos necessários
para o objeto e retorna uma instância do objeto
• Podem ou não conter parâmetros
• Pode haver mais de um por classe (overloading sobrecarga)
Aluno(pMat:String,pNome:String,
Por Exemplo:
pAnoIng:int)
{ codMatricula = pMat;
nome = pNome;
anoIngresso = pAnoIng;}
15 de 20
Construtores e Finalizadores

Finalizadores:
• Muitas linguagens OO têm métodos chamados de
destrutores, que desalocam todos os recursos
alocados pelo construtor
• Java cuida de liberar todos os recursos alocados para
um objeto que não é mais referenciado através do
garbage collector (GC)
• Existem algumas situações de limpeza que o GC não
efetua. Por exemplo, arquivos abertos ou conexão
com Banco de Dados
• Neste caso pode-se definir um método chamado de
finalizer. Este método é chamado imediatamente pelo
GC antes do objeto ser destruído
16 de 20
Encapsulamento

Conforme citado anteriormente (no exemplo do DVD
Player), o encapsulamento objetiva esconder detalhes de
implementação
Métodos Públicos
Métodos Privados
Atributos Públicos
Atributos Privados
17 de 20
Encapsulamento

Controle de Acesso: em geral, é conveniente proibir o
acesso a alguns atributos ou métodos de uma classe.
Java fornece os seguintes modificadores de acesso:
• public - permite acesso a partir de qualquer classe
• private - permite acesso apenas na própria classe
• protected e acesso de pacote (a serem estudado no
módulo avançado)
18 de 20
Encapsulamento

Consequências de tornar um atributo privado
• O componente privado quando acessado de fora da
classe ocasiona um erro de compilação
• Para tornar um atributo privado acessível, deve-se
definir um método público na própria classe, que
retorne o valor do atributo
19 de 20
Encapsulamento

Classe Aluno com atributos privados
class Aluno{
private String codMatricula;
private String nome;
private int anoIngresso;
Aluno(pMat:String,pNome:String,pAnoIng:int)
{ codMatricula = pMat;
nome = pNome;
anoIngresso = pAnoIng;}
int permanenciaInst() {return(2003 - anoIngresso);}
public String codMatricula(){return codMatricula;}
public String nome(){return nome;}
public int anoIngresso(){return anoIngresso;}
}
20 de 20
Download