Escolar Documentos
Profissional Documentos
Cultura Documentos
Revisão
– Classes: encapsulam dados (atributos) e
operações sobre os dados (métodos)
– Objetos: instâncias de classes, têm estado
(definido pelos atributos) e comportamento
(definido pelos métodos)
Classes
1
Modificadores de acesso
– Permitem definir o encapsulamento de
atributos e métodos
– Dois modificadores principais:
• private: visível apenas na classe atual
• public: visível para qualquer classe externa
Recomendações
– A menos que hajam razões fortes, os atributos de
uma classe devem ser definidos como private
(encapsulamento) e os métodos que são
chamados de fora da classe devem ser public
(interface de acesso).
– Métodos que devem ser usados somente dentro
da própria classe, devem ser especificados como
private.
Encapsulamento
Objetivo:
– Esconder como as coisas funcionam por
trás de uma interface de acesso.
Implementado através dos
modificadores de acesso.
2
Métodos get
– Retornam o valor dos atributos de um
objeto, uma vez que não é possível acessá-
los diretamente.
Métodos set
– Permitem alterar o valor de um atributo.
– Estes métodos são chamados por alguns
autores de transformadores.
Métodos:
...
public void setNome(String n) {
nome = n;
}
public String getNome() {
return nome;
}
public void setMatricula(int m) {
matricula = n;
}
public int getMatricula() {
return matricula;
}
...
3
...
public void setCargaHoraria(int c) {
cargaHoraria = c;
}
public int getCargaHoraria() {
return cargaHoraria;
}
public void setSalarioHora(double s) {
salarioHora = s;
}
public double getSalarioHora() {
return salarioHora;
}
public double getSalario() {
return salarioHora * cargaHoraria;
}
}
Notação Gráfica
Notação UML
– Classe: retângulo dividido em três
partes
• primeira parte: nome da classe
• segunda parte: atributos
• terceira parte: métodos
Professor
– Atributos e métodos - nome: String
• private: - - matricula: int
- cargaHoraria: int
• public: + - salarioHora: double
+ setNome (n: String)
+ getNome ( ): String
+ setMatricula (m: int)
+ getMatricula( ): int
+ setCargaHoraria (c: int)
+ getCargaHoraria( ): int
+ setSalarioHora(s: double)
+ getSalarioHora( ): double
+ getSalario( ): double
4
Instanciação
– Um objeto depois de criado, conterá todos
os atributos e métodos descritos em sua
classe.
– Para instanciar um objeto em Java
utilizamos o operador new.
– Ex.:
Professor prof1;
prof1 = new Professor();
prof1:Professor
nome=null
prof1 matricula=0
cargaHoraria=0
salarioHora=0.0
prof1 NULL
5
Como executar um programa em Java?
– Um programa é composto de várias
classes e objetos.
– Como indicar por onde o programa
começa?
– Em Java temos um método especial que o
interpretador assume como o início do
programa: main.
• public static void main (String args[ ])
Escopo de Variáveis
O escopo de uma variável informa onde
ela pode ser utilizada.
Ex.:
1: public class VerificaEscopo{
2: private int escopoA;
3: public void metodo(int escopoB){
4: int escopoC;
5: }
6: }
6
– escopoA é atributo da classe e seu escopo
vale em qualquer lugar a partir da linha 1
– escopoB e escopoC são variáveis locais
cujo escopo é válido somente dentro do
método
Inicialização de Variáveis
Atributos de uma classe são
inicializados com valores padrão:
– 0 -> byte, short, int, long
– 0.0 -> float, double
– false -> boolean
– \u0000 -> char
– null -> Object
7
Referências
Quando criamos um objeto em Java,
mantemos uma referência para o objeto
na memória.
Ex.:
Professor prof1, prof2;
prof1 = new Professor();...
prof2 = new Professor();...
prof1:Professor prof2:Professor
prof1:Professor prof2:Professor
nome="Júlio" nome="Isabel"
prof1 matricula=123 prof2 matricula=321
cargaHoraria=14 cargaHoraria=40
salarioHora=21.5 salarioHora=21.5
prof3
prof1 nome="Júlio"
matricula=123
cargaHoraria=12
prof3 salarioHora=21.5
8
Exercícios
Inicialização de Objetos
Objetos:
– Estado: definido pelos atributos declarados
na classe
– Comportamento: definido pelos métodos
declarados na classe
Quais valores os atributos do objeto
possuem após a sua instanciação?
Como definir o estado inicial do objeto?
9
Exemplo: classe Circulo
public class Circulo {
private int centrox;
private int centroy;
private int raio;
public double area(){
return (3.14 * raio * raio);
}
public double circunferencia(){
return (2 * 3.14 * raio); Circulo
} -centrox:int
public int diametro(){ -centroy:int
return (2 * raio); -raio:int
} +area():double
} +circunferencia():double
+diametro():int
circ:Circulo circ:Circulo
centrox=??? centrox=0
centroy=??? centroy=0
raio=??? raio=0
10
Construtores
Um construtor em Java:
– Possui o mesmo nome da classe
(respeitando maiúsculas e minúsculas);
– Pode possuir ou não parâmetros;
– Não possui um tipo de retorno, nem mesmo
void.
<modificador_de_acesso> <nome_classe>(<parâmetros>)
{
//corpo do construtor
}
11
Circulo circ = new Circulo(5,1,1);
circ:Circulo circ:Circulo
centrox=??? centrox=5
centroy=??? centroy=1
raio=??? raio=1
Construtor Default
Se nenhum construtor é definido para
uma determinada classe, Java irá
definir um construtor padrão (chamado
construtor default)
– Não possui argumentos de entrada e não
faz nada.
– Foi o construtor utilizado até agora!
– Caso qualquer construtor seja definido na
classe, Java não irá disponibilizar o
construtor default.
12
Exercícios
1) Adicione os seguintes comportamentos à
classe Circulo:
- mover um circulo para qualquer posição;
- aumentar o tamanho de um círculo em uma
unidade;
- diminuir o tamanho de um círculo em uma
unidade;
- informar uma representação textual do círculo,
contendo seu ponto central e raio;
13
4) Suponha que uma casa é formada por 3 peças: uma
cozinha circular, uma sala retangular e um banheiro
quadrado. Vamos implementar um programa que
permita definir as dimensões das peças da casa e
calcular sua área. Para tanto implemente as
seguintes classes:
- classe Cozinha: um método que calcula a área da
cozinha, e os atributos e demais métodos
necessários para isto;
- classe Sala: um método para cálculo da área, e os
atributos e demais métodos necessários para tanto;
- classe Banheiro: idem.
- classe Casa: que tenha 3 atributos (para as três
peças da casa), um método para calcular a área da
casa, e os atributos e demais métodos necessários.
- uma aplicação (uma classe com o método main() )
que instancie 3 casas, calcule e exiba suas áreas.
14