Slide 1 - WordPress.com

Propaganda
Linguagem de Programação – Aula 04
Prof. Me. Ronnison Reges Vidal
CONTEÚDO

Unidade 2 – Conceitos de Orientação a Objetos
– Método estático
– Classe Math, a constante PI e os métodos pow, sqrt,
entre outros.
– Atributo estático
– Sobrecarga ou overload de construtores
– Objeto como parâmetro de método
– Construtor cópia
Tema:
Conceitos de Orientação a Objetos com aplicação na criação de programas em Java.
2
Objetivos





3
Compreender os conceitos sobrecarga, métodos static e
atributos static.
Conhecer métodos e constante da classe Math
Compreender um dos usos do this
Aplicar os conceitos acima na criação e teste de
programas em Java.
Compreender construtor cópia
Método estático

Em alguns casos precisamos implementar alguns
métodos que independem dos objetos de uma classe.
Nesse caso, chamamos esses métodos de métodos da
classe. Tais métodos são implementados usando a
palavra static.
– Todos os métodos da classe Math são estáticos
4
Método Estático

A principal diferença entre os métodos estáticos e os
métodos de instância está na sua chamada.
– Exemplos:
• double x = 12.2;
• double y = Math.sqrt(x); // calcula a raiz quadrada
de x
• long z = Math.round(y); // arredonda o valor de y
• Constante estática PI: Math.PI
5
Método Estático

Métodos da classe Math : abs, acos, asin, atan, ceil, cos, exp, floor,
log, max, min, pow, random, round, sin, tan, sqrt. Destaque para abs,
max, min, pow, round, sqr

Regra para chamar um método estático : Classe.Método O operador
ponto é usado.

Atributos estáticos
– No caso de atributos estáticos só existe UMA cópia desse
atributo na memória que é COMPARTILHADA por todos os
objetos da classe.
– Assim como os métodos estáticos, os atributos estáticos são
chamados atributos da classe e, por isso, podem ser acessados
6
diretamente a partir da classe
Atributos Estáticos

No caso de atributos estáticos só existe UMA cópia desse
atributo na memória que é COMPARTILHADA por todos
os objetos da classe.

Assim como os métodos estáticos, os atributos estáticos
são chamados atributos da classe e, por isso, podem ser
acessados diretamente a partir da classe.
7
Diferenças importantes

Métodos de instância :
– 1) Só podem ser chamados a partir de objetos da
classe.
– 2) Podem acessar (ler ou alterar) atributos da
instância ou atributos da classe (estáticos).

Métodos estáticos :
– 1) São chamados a partir da própria classe.
– 2) Só podem acessar (ler ou alterar) atributos da
classe (estáticos).
8
Sobrecarga ou overload

De construtores : construtores na mesma classe e que se
diferenciam pela passagem de parâmetros

De métodos : dois ou mais métodos na mesma classe,
com mesmo nome e que se diferenciam pela lista de
parâmetros. O Java não confunde os dois métodos
porque eles têm assinaturas diferentes !

Assinatura diferente significa que os métodos têm:
– quantidades de parâmetros diferentes,
– tipos dos parâmetros diferentes ou
9
– ordem dos parâmetros diferente
O parâmetro é um objeto

Note que o parâmetro passado para um construtor ou método pode
ser objeto de uma classe. Para manipulá-lo pode ser possível usar a
referência this.

this
– Nesta aula veremos que a referência this referencia o objeto
que está sendo construído ou está usando o método. Assim,
quando no construtor queremos diferenciar o atributo do
parâmetro e ambos possuem o mesmo nome, usamos this.

10
Regra : this.atributo = parâmetro_de_mesmo_nome_que_atributo
O parâmetro é um objeto

Construtor cópia
– Imagine o seguinte trecho de código:
• int a, b;
• a = 10;
• b = a; //b é uma cópia de a
– Com objetos, essa situação é diferente:
• Retangulo r1, r2;
– r1 = new Retangulo(10, 20, 100, 200);
– r2 = r1;
11
O parâmetro é um objeto

Construtor cópia
– NOTE :
• 1) r2 vai referenciar o mesmo objeto que r1.
• 2) Um objeto só é criado quando usamos o
operador new com o construtor da classe.
12
O parâmetro é um objeto

Quando precisamos clonar um objeto, ou seja, criar um
novo objeto idêntico a um outro que já existe, precisamos
implementar um construtor cópia.

Como o nome já diz, um construtor cópia tem a finalidade
de criar um objeto como cópia de outro objeto.

Para definir um construtor cópia devemos criar um
construtor que recebe como parâmetro uma instância da
própria classe.

13
Dessa forma podemos copiar todos os atributos de uma
instância para a nova instância.
O parâmetro é um objeto

14
Exemplo :
– public class Retangulo{
– private int largura;
– private int altura;
– private int x;
– private int y;
– public Retangulo(Retangulo outro) {
– largura = outro.getLargura();
– altura = outro.getAltura();
– x = outro.getX();
– y = outro.getY();
– }
– }
O parâmetro é um objeto

Considere que uma classe Circulo também possui um
construtor cópia.
– public class Circulo {
– private int x;
– private int y;
– private int raio;
– public Circulo(Circulo outro) {
– x = outro.getX();
– y = outro.getY();
– raio = outro.getRaio();
– }
– }
15
O parâmetro é um objeto

Para usar o construtor cópia, basta passar o objeto que
será copiado:
– public class EditorGrafico {
– public static void main(String[] args) {
– Retangulo r1, r2;
– Circulo c1, c2;
– r1 = new Retangulo(10, 20, 30, 40);
– r2 = new Retangulo(r1);
– c1 = new Circulo(5, 15, 50);
– c2 = new Circulo(c1);
– }
16
Classes

As classes são os elementos básicos para construção de
programas OO em linguagens como C++, Java e C#. Assim,
para construir um programa OO devemos, inicialmente,
identificar as classes que fazem parte do problema que
estamos tentando resolver
– Ao analisar um problema a ser resolvido, as classes
normalmente são extraídas:
• 1. dos conceitos que compõem o domínio do problema;
• 2. dos conceitos adotados na solução do problema.
17
Classes

Explicar a ideia de pacote e lembrar do pacote da classe
Scanner

Sintaxe da definição de Classe:
[visibilidade] [abstract | final] class identificador
[extends identificador2]
[implements identificador3*] {
[Atributos]
[Métodos]
}
Também posteriormente, serão estudadas extends e
18
implements.
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
19
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.
– static: define que esse atributo é da classe (será visto
posteriormente)
– final: atributo constante (valor inicial não pode ser
alterado)
20
Atributos

Atenção !! Em outras aulas veremos package, protected,
static e final

Nesta aula, portanto, nos interessa :
– public: pode ser livremente lido ou alterado por
métodos de qualquer classe
– private: só pode ser lido ou alterado por métodos da
própria classe, ou seja, esse atributo não é visível fora
da class
21
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. Por
exemplo, valores numéricos com zero, boolean com falso
....
22
Inicialização de atributos:

Uma vez definida uma classe, podemos criar objetos ou
instâncias dessa classe

Para a criação de objetos usamos o operador new.
Teremos a partir daí, um objeto ou instância da classe.
Note que, 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 seja alocado espaço na memória para
o novo objeto
23
Inicialização de atributos:

Exemplo : Imagine uma classe Retangulo
– Retangulo r;
– r = new Retangulo();
Ou
– Retangulo r = new Retangulo();

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. Isso se chama sobrecarga (ou overload) de
24
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 têm nenhum tipo de retorno
– Construtores podem receber parâmetros que serão usados na
inicialização do objeto
– Quando não definimos nenhum construtor para a classe, o Java
gera automaticamente um construtor default ou padrão.
25
Métodos de acesso e métodos
modificadores

Métodos de acesso são usados para obter os valores dos
atributos privados e métodos modificadores são usados
para alterar os valores dos atributos privados

Regra :
public tipo get<nome do atributo>()
{
return atributo;
}
26
Métodos de acesso e métodos
modificadores
public void set<nome do atributo>(tipo novoValor)
{
atributo = novoValor;
}
27
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
28
(será visto posteriormente)
Exercícios

1) Imagine que desejamos implementar um editor gráfico que
irá manipular figuras
29

geométricas:

Retângulo

Triângulo

Círculo

Quais as classes candidatas para esse projeto ?
Exercícios

2) Sabendo que todo livro possui autor, editora e preço, crie
uma classe pública com construtor padrão e métodos
modificadores e de acesso. Depois, crie dois livros com dados
obtidos via console

3) Adicione código ao exercício anterior e altere os dados do
2o. livro da seguinte forma: autor para Harlan Coben, editora
Arqueiro e preço R$ 30,00

30
4) Adicione código ao ex. 2 e compare os preços dos dois
livros, imprimindo o nome da editora do livro de menor preço.
Download