2. Classe
• Uma classe é um gabarito para a definição de objetos.
• Assim com uma planta (construção) pode ser usada para criar
diversas construções, uma única classe pode ser usada para
criar quantos objetos forem necessários.
1
3. Objeto
• É a instância de uma classe.
Imagine uma planta de um apartamento. Pois bem, essa é nossa
classe, ou seja, define os cômodos, tamanho, número de quartos e
diversos outros aspectos dos objetos construídos, neste caso,
apartamentos. Percebeu a diferença? A classe é um molde para os
objetos. Quando se diz: “Instância de uma classe”, nada mais é do que
o objeto dessa classe.
Mundo Java
Planta do apartamento Classe
Apartamento 12 Objeto
2
4. Objeto
• Vamos adotar como exemplo um molde de
bonecos de gesso. Essa é a nossa CLASSE. Ela
define formato, tamanho e diversos outros
aspectos dos objetos fabricados (bonecos de
gesso).
Mundo Java
Molde Classe
Boneco de Gesso Objeto
3
5. Objeto
• O molde é sempre o mesmo, porém os objetos por ele
gerados podem ter características das mais variadas, mas
respeitando a estrutura básica do molde (classe).
• Imagine um molde de samurai:
Vamos criar três objetos
Os três objetos possuem
características (cor).
Poderiam ser várias outras,
tipo: cor dos olhos, do cabelo
e etc. Tais características são
chamadas de atributos do
objeto.
4
6. Atributos
• Atributos definem o estado do objeto em determinado momento.
Imagine uma classe “Pessoa”. Agora imagine um objeto Mulher do tipo
Pessoa. Com os seguintes atributos: corOlhos, corCabelo e tipoSanguineo.
Vamos assumir que os valores para esses atributos são respectivamente: azuis,
preto e tipo A.
Bom, nunca se sabe quando uma mulher vai trocar a cor do cabelo, mas
podemos, nesse instante, assumir que o estado para esse objeto é (azuis, preto e
tipo A), porém amanhã pode se que seu estado seja alterado, por exemplo na
cor do cabelo (corCabelo). O fato é, se um ou vários atributos forem alterados,
diz-se que seu estado (estado do objeto) também foi. 5
7. Métodos
Voltando a classe Pessoa citada anteriormente, além dos atributos, os objetos dessa
classe também possuem comportamentos, tais como: andar, dormir, acordar, etc.
Esses comportamentos são chamados de métodos.
Resumindo:
Os atributos de instância (ou de objeto) definem o estado desse objeto.
Os métodos de instância (ou de objeto) definem os comportamentos desse
objeto.
6
8. Regras de Sintaxe - Java
Tipos primitivos: São tipos de dados que não representam classes, mas sim valores
básicos. Eles existem para representar os tipos mais simples de dado, sendo eles
dados numérico, booleano e caractere. Os tipos primitivos da linguagem Java
são:
7
9. Variável e referência
- Todo objeto criado ficará armazenado em memória principal, ou seja, a sua
memória RAM.
- Como acessar este objeto (para alterar seu estado ou invocar um determinado
comportamento)? Através das referencias! Uma espécie de ponteiro ao objeto
em memória.
- As variáveis funcionam da mesma forma porém não referenciam um objeto e
sim um tipo primitivo.
8
10. Declaração e Inicialização
- Declaremos uma variável idade do tipo inteiro:
int idade;
- Sempre seguirá esse padrão: primeiro o tipo, que pode ser um tipo
primitivo ou um tipo de referência (classe), depois o nome
da referencia ou variável.
- Agora um exemplo de declaração de referência:
Samurai samu1;
Samurai é o tipo da referência, e samu1 é o nome dessa referencia;
9
11. Declaração e Inicialização
A Inicialização, como o próprio nome já nos dá uma dica, nada mais é do que
inicializar essa variável ou referência com alguma coisa, por exemplo:
int idade = 26;
E para a referência:
Samurai samu1 = new Samurai();
Essa é a maneira de instanciarmos (ou criarmos em memória) um objeto do
tipo Samurai e ao “mesmo tempo” amarrá-lo a uma referência também do
mesmo tipo, ou seja, diz-se que samu1 referencia esse objeto criado.
tipo (Samurai) da referência -> nome da referência (samu1) -> operador de
atribuição (=) -> operador de “instanciação” (new) -> chamada
do construtor da classe do objeto que estamos criando (Samurai()).
10
12. Declaração e Inicialização
O comando New Samurai() cria um objeto do tipo Samurai em memória e o
atribui a referência samu1. Esse será o seu elo de acesso ao objeto criado , pois
é através dele que esse objeto poderá ser manipulado.
11
13. Construtores
- O construtor é um método com o mesmo nome da classe.
- O construtor não possui retorno.
Se quisermos criar uma classe do tipo String precisamos utilizar o construtor
dessa classe:
String autor = new String (“Machado de Assis”);
Agora temos um objeto em memória referenciado por autor.
Obs.:
- Objetos String são os únicos em Java que podem ser
criados sem o operador new.
- Objetos String são imutáveis.
12
14. Modificadores de acesso
Modificadores de acesso a métodos, atributos e classes da linguagem Java, são
padrões de visibilidade e de acesso aos mesmos.
- Public – Pode ser acessada de qualquer lugar e por qualquer entidade que
possa visualizar a classe a que ela pertença.
- Private – Os membros da classe assim definidos não podem ser acessados
ou usados por nenhuma outra classe. Esse modificador não se aplica às
classes, somente para seus métodos e atributos. Classes herdadas também
não visualizam estes atributos e métodos.
- Protected - O modificador protected torna o membro acessível às classes
do mesmo pacote ou através de herança, seus membros herdados não são
acessíveis a outras classes fora do pacote em que foram declarados.
- default (padrão): A classe e/ou seus membros são acessíveis somente por
classes do mesmo pacote, na sua declaração não é definido nenhum tipo de
modificador, sendo este identificado pelo compilador.
13
15. Modificadores de acesso
- final - Quando é aplicado na classe, não permite estende-la, nos métodos
impede que o mesmo seja sobrescrito (overriding) na subclasse, e nos
valores de variáveis não pode ser alterado depois que já tenha sido atribuído
um valor.
- abstract - Esse modificador não é aplicado nas variáveis, apenas nas
classes. Uma classe abstrata não pode ser instanciada, ou seja, não pode ser
chamada pelos seus construtores. Se houver alguma declaração de um
método como abstract (abstrato), a classe também deve ser marcada como
abstract.
- Static - Ele muda o escopo do membro. Com o static, ao invés deles
pertencerem à instância do objeto, eles pertencem à classe.
- Getters e Setters: Para permitir acesso aos atributos private a prática
mais comum é criar dois métodos, um que retorna o valor e outro que muda
o valor. O padrão para estes métodos é colocar get ou set antes do nome do
atributo.
14
16. private default protected public
mesma classe sim sim sim sim
mesmo
pacote
não sim sim sim
pacotes
diferentes
(subclasses)
não não sim sim
pacotes
diferentes
(sem
subclasses)
não não não sim
Tabela dos modificadores de acesso
15
17. Modificador Public
class Pessoa{
public String nome;
public int idade;
}
E se alguem fizer isso?
Pessoa p = new Pessoa();
p.nome = "Fulano";
p.idade = -10;
class Pessoa{
private String nome;
private int idade;
public void setIdade(int idade){
if(idade > 0){
this.idade = idade;
}
}
19. Modificadores de acesso
- Protected - O protected é um intermediário entre public e private (É um segredo de
família). Por família entenda: a superclasse, as subclasses e classes do mesmo
package.
Ex.:
-Vamos criar dois pacotes: “Familia” e “Vizinho”.
- O pacote Família contem as seguintes classes: "Heranca", "Pai", "Filha" e "Neta”
- O pacote Vizinho contem a classe “Vizinho” .
19
22. public final class Imutavel {}
Qualquer tentativa de herança a partir da classe Imutavel irá causar um erro de compilação.
public class Impossivel extends Imutavel {}
Modificador final – Classes e Métodos
public class Transacao {
public final boolean verificarSenha() {
...
}
}
public class TransacaoPublica extends Transacao {
public final boolean verificarSenha() {
...
}
}
Classe:
Cannot inherit from final Imutavel !!!
Métodos
verificarSenha() in TransacaoPublica
cannot override verificarSenha()
in Transacao; overridden method is final 22
23. Modificador final – Atributos
Atributos final são constantes (não podem mudar de valor) a partir do momento
que se define o seu valor inicial, esse será o seu valor durante todo o ciclo de vida
do objeto.
public class Carro {
public final int numeroDeRodas = 4;
public int numeroDePortas = 4;
public static void main(String args[]) {
Carro c1, c2;
final Carro c3;
c1 = new Carro();
c1.numeroDeRodas = 5; //erro de compilacao
c2 = c3 = c1;
c2.numeroDePortas = 2;
c3.numeroDePortas = 2;
c3 = c2; //erro de compilacao
}
} 23
25. Exemplos Gerais:
25
Você escreve o código em um arquivo .java, compila, e é gerado um arquivo .class.
Esse arquivo .class é conhecido como bytecode.
A JVM irá ler/interpretar esse bytecode e executá-lo.