Buscar

Aula 3 parte2 ATUALIZADO

Prévia do material em texto

Linguagem de Programação
Aula 3 
Parte 2
Professora : Jane
Mestre em Engenharia de Sistemas e Computação – COPPE/UFRJ
Objetivos
 Estudo e aplicação dos seguintes conceitos : 
abstração, classe, objeto, construtor, método, 
atributo, encapsulamento, especificadores de acesso 
private e public.
 Operador new
 Construtor padrão ou default
 Uso de métodos de acesso (get) e de métodos 
modificadores(set)
Professora Jane 2
Começando a implementar...
 Imagine que desejamos implementar um editor gráfico que irá 
manipular figuras geométricas em um plano cartesiano:
 Retângulo
 Triângulo
 Círculo
 Polígonos de 5 ou mais lados
 Quais as classes candidatas para esse projeto ?
Classes
 Imagine que desejamos implementar um editor gráfico que irá 
manipular figuras geométricas em um plano cartesiano:
 Retângulo
 Triângulo
 Círculo
 Polígonos de 5 ou mais lados
 Quais as classes candidatas para esse projeto ?
 Retângulo
 Triângulo
 Círculo
 Polígono
 Plano Cartesiano
 ...
Classes
 Tomando por base a implementação da classe Retângulo:
 Quais as características de um retângulo?
 Que operações gostaríamos de realizar com o retângulo ?
Classes
 Tomando por base a implementação da classe Retângulo:
 Quais as características de um retângulo?
 Altura, largura, posição (x, y) no plano, cor da borda, cor de 
preenchimento, ...
 Que operações gostaríamos de realizar com o retângulo ?
 Desenhar, mover, rodar, redimensionar, ...
 Vamos começar, então, definindo a classe Retangulo.
Classes
 Versão inicial da classe Retangulo:
package principal;
public class Retangulo {
}
 Vamos acrescentar atributos na classe Retangulo.
Preferencialmente, 
toda classe deve ser 
declarada dentro de 
um pacote
Por ser pública, a classe 
Retangulo é visualizada por 
todas as classes de todos 
os pacotes do sistema. 
Classes
 Para criar uma classe precisamos definir o lugar onde iremos colocar 
essa classe.
 No Java, esse lugar é chamado de pacote.
 Podemos imaginar o pacote como sendo um diretório ou uma pasta
onde colocamos a classe.
 Podemos definir quantos pacotes quisermos.
 O nome dos pacotes é definido pelo próprios desenvolvedores.
 Pelo padrão do Java, os nomes dos pacotes devem ter somente letras 
minúsculas.
Classes
 Da mesma forma que podemos ter uma hierarquia de pastas, 
também podemos ter uma hierarquia de pacotes.
 Quando temos um pacote dentro de outro usamos o ponto (.) 
para definir a hierarquia de pacotes:
java.mhs.unitri.javapos
Classes
 Sintaxe da definição de Classe:
[visibilidade] [abstract | final] class identificador 
[extends identificador2] 
[implements identificador3*] {
[Atributos]
[Métodos]
}
 visibilidade: public, private ou package. Veremos package depois.
 abstract: não podem ser criadas instâncias da classe (será visto 
posteriormente)
 final: não pode ter subclasses. Também veremos depois.
Classes
 Visibilidade da classe:
 public: pode ser livremente instanciada por qualquer outra classe.
 private: só é visível no arquivo onde foi criada.
 package: só pode ser instanciada por classes do mesmo pacote. É 
a visibilidade default.
Atributos
 Atributos são declarados da mesma forma que as variáveis locais, 
porém com uma sintaxe ligeiramente diferente:
[visibilidade] [static] [final] tipo atributo [ = inicialização];
 visibilidade: public, private, package ou protected. Veremos 
package (ou default) e protected posteriormente.
 static: define que esse atributo é da classe (será visto 
posteriormente)
 final: atributo constante (valor inicial não pode ser alterado)
Atributos
 Inicialização de atributos:
 Um atributo pode ser explicitamente inicializado, da mesma 
forma que as variáveis locais.
 Quando não for inicializado explicitamente, a máquina virtual 
do Java (JVM) se encarregará de fazê-lo, da seguinte forma:
 boolean: false
 char: ‘\0’
 byte, short, int, long: 0
 float, double: 0.0
 referência para outro objeto: null
Classes
 Uma vez definida uma classe, podemos criar objetos ou instâncias
dessa classe.
 Lembre-se: a classe é um molde a partir do qual podemos 
representar objetos reais.
Objetos
Classe
public class Retangulo {
private double base;
private double altura;
}
Classes
 Criação de objetos: o operador new
 É um operador usado para criar um objeto, ou seja, uma 
instância de uma classe.
 Ao declararmos uma variável do tipo de uma classe não 
estamos criando o objeto em si, mas somente uma referência
para o objeto.
 No momento da declaração da variável a referência está com 
valor null.
 Precisamos usar new para que o Java aloque espaço na 
memória para o novo objeto.
Classes
 Exemplo: criação de uma instância da classe Retangulo com o 
operador new.
Retangulo r;
r = new Retangulo();
Define uma variável r do tipo 
Retangulo. Inicialmente 
essa variável não referencia 
nenhum objeto, pois este 
ainda não foi criado.
r
?
Classes
 Exemplo: criação de uma instância da classe Retangulo com o 
operador new.
Retangulo r;
r = new Retangulo();
• Cria uma nova instância da classe 
Retangulo. A classe é instanciada.
• A variável r passa a referenciar esse 
objeto. 
• Os valores dos atributos são inicializados
r
base = 0
altura = 0
Construtores
 Quando criamos um objeto:
1. Precisamos definir os valores de seus atributos;
2. Evitar que os objetos sejam criados com valores de atributos 
inválidos.
 No nosso exemplo, não deveríamos ter um Retangulo com 
dimensões negativas, por exemplo.
 Para definir como as instâncias de uma classe podem ser criadas 
usamos construtores. Assim, podemos dizer que Construtores são 
métodos especiais usados para criar uma instância de uma classe 
(objeto).
 Podem existir várias formas diferentes de criarmos um objeto. 
Assim, podemos ter vários construtores diferentes para uma 
mesma classe.
Construtores
 Sintaxe básica de construtores:
public NomeDaClasse ([parâmetros]) [throws exceções] 
{
[ corpo do construtor ]
}
 Observe que:
 Construtores devem ter, obrigatoriamente, o mesmo nome 
da classe.
 Construtores não tem nenhum tipo de retorno. Nem void.
 Construtores podem receber parâmetros que serão usados 
na inicialização do objeto.
Construtores
 Quais construtores podemos definir para a classe Retangulo ? Lembre-
se que a instância deve ficar em um estado consistente.
public class Retangulo {
private double altura;
private double base;
public Retangulo() {
}
}
Construtores
 Outro construtor para a classe Retângulo:
package principal;
public class Retangulo {
private double altura;
private double base;
public Retangulo(double b, double a) {
base = b;
altura = a; 
}
}
Construtores
 Outro construtor para a classe Retângulo ... Outra forma de fazer :
package principal;
public class Retangulo {
private double altura;
private double base;
public Retangulo(double base, double altura) {
this.base = base;
this.altura = altura; 
}
}
Inicializa todos os atributos do Retangulo. 
O this é usado para referenciar o próprio 
objeto. Dessa forma diferenciamos o 
atributo base do parâmetro base.
Construtores
 Como ocorre a criação do objeto com operador new e construtor ?
Retangulo r1, r2;
r1 = new Retangulo(10, 20.5); //instancia a classe Retantulo
r2 = new Retangulo(5.6, 15);
Quando definimos as variáveis 
os objetos ainda não existem.
r1
?
r2
?
Construtores
 Como ocorre a criação do objeto com operador new e construtor ?
Retangulo r1, r2;
r1 = new Retangulo(10, 20.5);
public Retangulo(double base, double altura) {
this.base = base;
this.altura = altura;
}
A referência this é usada para 
informar que estamos acessando o 
atributo base ao invés do 
parâmetro base.
r1
base = 10
altura = 20.5
this
O operador new cria o 
objeto e, em seguida, 
inicializa os atributos do 
objeto.
Construtores
 Como ocorre a criação do objeto com operador new e construtor ?
Retangulo r1,r2;
r1 = new Retangulo(10, 20.5);
r2 = new Retangulo(5.6, 15);
Quando criamos outro 
Retangulo, todo esse 
processo se repete.
r1
base = 10
altura = 20.5
r2
base = 5.6
altura = 15
Construtores
 Resumo sobre Construtores:
 São métodos especiais usados para inicializar a instância com os valores 
desejados.
 O construtor sem parâmetros é chamado de construtor default.
 Construtores não retornam nenhum valor.
 Ao criar um construtor, nós definimos que parâmetros deverão ser 
passados para que o objeto seja criado de forma coerente.
 Podemos criar vários construtores para uma mesma classe.
 Construtores não podem ser chamados diretamente pelo nosso código.
 Construtores são chamados automaticamente pela máquina virtual Java, 
de acordo com o tipo dos parâmetros que estamos passando na sua 
chamada.
 Construtores são chamados após a inicialização dos atributos.
 Quando não definimos nenhum construtor para a classe, o Java gera 
automaticamente um construtor default.
Métodos de Acesso e 
Modificadores
Se os atributos são privados, 
como lemos ou alteramos 
os seus valores?
Métodos de Acesso
 Métodos de acesso são usados para ler ou alterar atributos e usam os 
seguintes padrões:
public tipo get<nome do atributo>() 
{ 
return atributo; 
}
public void set<nome do atributo>(tipo novoValor)
{ 
atributo = novoValor; 
}
Métodos de acesso e métodos 
modificadores
 Exemplo: métodos get e set para o atributo base.
public double getBase() { 
return base;
}
public void setBase(double base) { 
this.base = base; 
}
Métodos ... Outros métodos
 Método calcularArea():
package Principal;
public class Retangulo {
//Atributos ... Construtores ... 
// Outros métodos...
public double calcularArea() {
return base * altura;
}
}
Métodos
 Sintaxe de métodos da Classe:
visibilidade [static] [final] [abstract] tipo método ([parâmetros]) 
[throws exceções] 
{
[ corpo do método ]
}
 Visibilidade: public, private, package ou protected.
 static: método da classe (será visto posteriormente)
 final: método não pode ser sobrescrito (será visto posteriormente)
 abstract: método deve ser implementado nas subclasses (será visto 
posteriormente)
 Visto em aula, no quadro e com testes práticos.
 Classes :
 TestaRetangulo (com o método main)
 Retangulo
 Veja as tarefas propostas em aula.
Projeto TestaRetangulo

Continue navegando