Buscar

Slides: Objetos e Classes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Presbiteriana Mackenzie
Utilizando Objetos
Profa. Ana Cristina dos Santos
Faculdade de Computação e Informática
Linguagem de Programação I
1
Objetivos
• Formalizar o conceito de objeto em sob o pontos 
de vista de programação
• Aprender o processo de construção de objetos
em Java
• Aprender o mecanismo de referência a objetos e 
o processo de garbage collection em Java
• Aprender o conceito de estado de um objeto e 
sua alteração através da invocação de métodos
Utilizando Objetos 2
3
Referência Bibliográfia
• A referência para esta aula é o Capítulo 2 
(Utilizando Objetos) do nosso livro-texto:
• Horstmann, C. Conceitos de Computação com 
Java. 5.ed. Porto Alegre: Bookman, 2009.
Utilizando Objetos
Objeto
• Entidade que você pode manipular no seu 
programa. 
• Manipulamos objetos por meio da invocação de 
seus métodos.
• Pensamos o objeto como uma caixa-preta com 
uma interface pública (os métodos que 
podemos chamar) e uma implementação 
oculta (o código e seus dados)
• Ele tem um comportamento bem-definido.
4Utilizando Objetos
Exemplo de Objeto
• Um objeto “velho conhecido”.
– System.out
– Construído a partir da classe PrintStream.
5Utilizando Objetos
Objetos e Métodos
• A manipulação de objetos é feita através da 
invocação de seus métodos. 
• Um método é uma sequência de instruções que 
pode acessar os dados internos de um objeto. 
• Já utilizamos dois métodos de System.out: 
println e print.
6Utilizando Objetos
Objetos e Classes
• Objetos são construídos a partir de classes. 
• System.out é um objeto da classe 
PrintStream.
7Vetores e ArrayList
Métodos e Classes
• Uma classe define os métodos que você pode 
aplicar aos objetos dela. 
• A classe PrintStream define, entre outros 
métodos, os métodos println e print a 
todos os seus objetos. 
8Utilizando Objetos
Exemplo - String
String greeting = “Hello, World!”;
int n = greeting.length(); 
String river= “Mississippi”;
String bigRiver = river.toUpperCase(); 
9Utilizando Objetos
Exemplo - String
• Podemos invocar os métodos length() e 
toUpperCase() porque eles pertencem à 
interface pública da classe String. 
• A interface pública de uma classe especifica o 
que você pode fazer com os objetos dela. 
10Utilizando Objetos
Métodos – Parâmetros e retornos
• Os métodos podem ter parâmetros e 
retornos. 
• Parâmetros compõem a entrada para um 
método.
• O retorno é a saída do método.
• Somente os métodos que estão na interface 
pública de uma classe podem ser invocados 
nos objetos dela. 
11Utilizando Objetos
Métodos – Parâmetros e retornos
• Parâmetro explícito é toda informação que o 
método precisa para executar uma tarefa ou 
sua informação de entrada.
• O parâmetro implícito de uma chamada de 
método é o objeto em que o método é 
invocado.
12Utilizando Objetos
System.out.println(“Hello, World”);
• Temos a string “Hello World” funcionando com 
um parâmetro explícito para o método 
println do objeto System.out.
• Parâmetro implícito é o objeto System.out.
13Utilizando Objetos
int n=greeting.length();
• Não temos parâmetro na invocação
• Temos um valor de retorno ( do tipo int).
14Utilizando Objetos
System.out.println(greeting.length())
• O retorno de invocação de um método pode 
ser utilizado como parâmetro para invocação 
de um outro método.
15Utilizando Objetos
Métodos – Definição
• Podemos saber quais são os parâmetros e os 
retornos de um método e sua visibilidade
observando a sua definição dentro da classe. 
• Exemplo: Método length() da classe String.
public int length()
• O método é publico, não possui nenhum parâmetro 
e tem um retorno do tipo int. 
16Utilizando Objetos
Criando Objetos
• O processo de criação de um objeto a partir de sua 
classe é chamado instanciação.
• Um objeto é uma instância de uma classe.
• Para instanciar um objeto
– Alocamos espaço em memória ou criamos um objeto com o 
operador new
– Inicializamos este espaço de memória com os parâmetros 
passados no construtor
– Atribuímos a referência a uma variável, ou seja, retornamos o 
objeto
17Utilizando Objetos
Criando Objetos
• A sintaxe do processo de instanciação em Java é 
mostrada abaixo:
NomeDaClasse objeto = new
NomeDaClasse(parâmetros);
• Exemplo:
String s = new String (“Maria”); 
18Utilizando Objetos
new e Método Construtor
• Observe que pode haver mais de uma maneira 
de se construir um objeto. 
• O operador new não aparece sozinho. Ele 
necessita de um método especial especificado 
pela classe chamado construtor. 
– O construtor, em Java e em várias outras linguagens 
orientadas a objetos, deve sempre ter o mesmo 
nome da classe.
19Utilizando Objetos
Construtor
• Uma mesma classe pode definir vários construtores 
diferentes:
20Utilizando Objetos
String() Constrói uma string vazia, isto é, sem caracteres.
String(byte[] bytes)
Constrói uma string a partir de um vetor de bytes.
String(char[] value) Constrói uma string a partir de um vetor de 
caracteres.
String(String original)
Constrói uma string a partir outra string.
String(StringBuffer buffer)
Constrói uma string a partir de um StringBuffer.
String(StringBuilder builder)
Constrói uma string a partir de um StringBuilder.
Exercício
• As classes e métodos da biblioteca de classes da 
linguagem Java estão definidos na documentação da 
API (Application Programming Interface) Java. 
• A documentação da API da versão 8 da linguagem 
Java pode ser encontrada em:
http://docs.oracle.com/javase/8/docs/api/
• Desta documentação, vamos considerar a classe 
Rectangle mostrada parcialmente a seguir:
21Utilizando Objetos
Exercício
22Utilizando Objetos
Exercício
23Utilizando Objetos
Exercício
• A partir desta documentação, construa um 
retângulo chamado box que tenha canto 
superior esquerdo na coordenada (5,10), 
comprimento 20 e altura 30. 
24Utilizando Objetos
Exercício com Discussão em Duplas
• Com base na documentação do método translate da 
classe Rectangle, faça uma translação do retângulo 
criado no exercício anterior de 15 pixels para a 
direita no eixo X e 25 pixels para baixo no eixo Y.
25Utilizando Objetos
Instanciação
• Processo através do qual se realiza a criação
de um objeto a partir de uma classe
• Um objeto (tipo de dado) deve ser instanciado
para que possamos utilizá-lo
Referência e Garbage Collection 26
Variável de Referência
• As variáveis de Referência apontam para 
instâncias de classes.
• O fato de declarar uma variável não significa que 
o objeto foi instanciado
• Quando se declara uma variável, ela aponta para 
NULL, até que um objeto seja instanciado.
Referência e Garbage Collection 27
Ponto p1;
…
p1 = new Ponto();
Variável de Referência
• No nosso último Exercício, criamos um objeto da classe 
Retângulo com o seguinte código:
Rectangle box;
box = new Rectangle(5,10,20,30);
• Podemos ler o nosso código da seguinte forma:
– Declaramos uma variável de referência chamada box para 
objetos da classe Rectangle.
– Criamos uma instância de Rectangle em memória com o 
canto superior esquerdo em (5,10) com largura 20 e altura 
30 e referenciamos este objeto com a nossa variável de 
referência box.
28Referência e Garbage Collection
Variável de Referência
• O operador new retorna o endereço de memória, 
chamado referência, dentro da JVM (Java Virtual 
Machine) onde foi alocado o objeto. Este endereço 
é armazenado dentro da variável que nomeamos o 
objeto. No exemplo acima, box.
29Referência e Garbage Collection
Alocação de Memória
• O acesso ao objeto criado é feito de formaindireta via o endereço (referência).
• A variável armazena esta referência (endereço) 
ao objeto. 
• Em outras linguagens chamamos esta forma de 
referência de ponteiro (ou pointer). 
• Ponteiros são alocados em uma região especial 
de memória chamada HEAP e o processo de 
alocação de memória nesta região é chamada 
alocação dinâmica. 
30Referência e Garbage Collection
Variável de Referência
Rectangle box;
box = new Rectangle(5,10,20,30);
box2 = box;
• Logo que a variável de referência box é declarada, ela não faz 
referência a nenhum objeto em memória. O valor dela é null.
• Em seguida, a variável de referência box passa a referenciar 
um retangulo.
• Note que a variável de referência box2 referencia o mesmo 
retangulo que box.
31Referência e Garbage Collection
Referência e Métodos
Rectangle box;
box = new Rectangle(5,10,20,30);
box.translate(10,10);
• Chamamos o método translate do objeto da classe 
Rectangle, referenciado pela variável box.
• Não há como chamar métodos do objeto se não tivermos 
uma variável o referenciando.
32Referência e Garbage Collection
Variáveis e Instâncias
• Mesmo que duas instâncias de uma classe 
contenham os mesmos dados, elas NÃO SÃO 
iguais.
• Referências são independentes: se duas 
referências apontam para uma instância e a 
primeira instância é modificada para apontar 
para outra instância, a segunda instância 
continua apontando para a primeira instância.
Referência e Garbage Collection 33
Garbage Collection
• Note que se não tivermos nenhuma variável 
de referência apontando para um objeto em 
memória, nunca mais conseguiremos utilizar 
este objeto.
• Não conseguiremos encontra-lo na memória 
heap.
• O objeto fica “perdido”.
• Muitos objetos “perdidos” poderiam esgotar a 
memória heap.
34Referência e Garbage Collection
Memory Leak?
Rectangle box;
while(true){
box = new Rectangle(5,10,20,30);
}
35Referência e Garbage Collection
Memory Leak?
36Referência e Garbage Collection
MEMORIA ESGOTADA?!
Lixo (Garbage)
37Referência e Garbage Collection
Lixo (Garbage)
38Referência e Garbage Collection
• Os objetos “perdidos”, sem nenhuma variável 
que o referencie são candidatos a coleta pelo 
Garbage Collector.
• O Garbage Collector identifica objetos sem 
referência (e que portanto não são mais 
utilizados) e o retira da memória (coleta e 
apaga).
• A coleta de lixo ocorre de tempos em tempos 
de forma automática.
Garbage Collection
39Referência e Garbage Collection
• Tem como função vasculhar a memória atrás 
de blocos alocados que não tenham mais 
como ser referenciados pela aplicação. 
• Quando o garbage collector se depara com 
uma situação desse tipo, ele desaloca a 
memória, tornando-a disponível para ser 
usada novamente pela aplicação.
Obrigada
Profa. Ana Cristina dos Santos
anacristina.santos@mackenzie.br
40Utilizando Objetos

Continue navegando