Title: Linguagens de Programa
1-
- Linguagens de Programação Orientadas a Objetos
- Pós-Gradução(Lato-Sensu) em Sistemas de Banco de
Dados - UFPa - Marco Fagundes
- mafm_at_cin.ufpe.br
- Aulas 10 e 11 - Programação Orientada a Objetos
- http//www.ufpa.br/sampaio/bd2003/lpoo
? Prof. Marco Fagundes
2Roteiro
- Introdução
- Classes e Objetos
- Atributos
- Métodos
- Instanciando Classes
- Mensagens
- Construtores e Finalizadores
- Encapsulamento
3Introduçã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
4Classes 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
5Classes e Objetos
operações/métodos/ comporamento
Um Objeto
propriedades/dados/ variáveis
6Classes 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
7Classes 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 public class Sala int
codigoSala public void consultarSalas()..
.
Implementação em Delphi type TSala class
private codigoSala integer public
procedure consultarSala
8Classes 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)...
9Classes 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()
10Classes 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
11Atributos
- 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
class Aluno String codMatricula, nome int
anoIngresso
12Métodos
- Métodos implementam as operações que agem sobre
os atributos do objeto - Por exemplo
class Aluno String codMatricula, nome int
anoIngresso Aluno(pMatString,
pNomeString,pAnoIngint) codMatricula
pMat nome pNome anoIngresso
pAnoIng int permanenciaInst()
return(2003 - anoIngresso)
Construtor ObsApenas para ilustração
13Instanciando 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
14Mensagens
- Objetos interagem e comunicam-se através de
mensagens - As mensagens identificam os métodos a serem
executados no objeto receptor
permanenciaInst()
Receptor
Emissor
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
15Construtores 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)
16Construtores 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
17Encapsulamento
- Conforme citado anteriormente (no exemplo do DVD
Player), o encapsulamento objetiva esconder
detalhes de implementação
Métodos Privados
Métodos Públicos
Atributos Públicos
Atributos Privados
18Encapsulamento
- 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)
19Encapsulamento
- 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
20Encapsulamento
- Classe Aluno com atributos privados
class Aluno private String codMatricula
private String nome private int anoIngresso
Aluno(pMatString,pNomeString,pAnoIngint)
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