Baixe o app para aproveitar ainda mais
Prévia do material em texto
LINGUAGEM DE PROGRAMAÇÃO - EDO0400 Semana Aula: 4 Unidade 2 - Conceitos de orientação a objetos Tema Conceitos de Orientação a Objetos com aplicação na criação de programas em Java. Palavras-chave Classe, objeto, sobrecarga, static. Objetivos O aluno deverá ser capaz de: 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 Estrutura de Conteúdo 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 >>>>>>>>>>>>>>>>>> Detalhando <<<<<<<<<<<<<<<<<<<<<<<<<< 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. 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 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, sqrt. 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 diretamente a partir da classe. 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). Sobrecarga ou overload : definido na aula 3. 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 - 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. Regra : this.atributo = parâmetro_de_mesmo_nome_que_atributo 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; 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. 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. Dessa forma podemos copiar todos os atributos de uma instância para a nova instância. 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(); } } 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(); } } 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); } Estratégias de Aprendizagem Para que o aprendizado seja proveitoso, o aluno deve se envolver ativamente na participação da aula, deve realizar as tarefas propostas, realizar testes por conta própria nos programas desenvolvidos e compartilhar sua experiência/conclusão com todos. Toda tarefa realizada pode ser conferida com o professor, para que haja certeza se está ou não correta. Indicação de Leitura Específica Aplicação: articulação teoria e prática Exercícios : 1) Crie um projeto com duas classes : classe Circulo e classe TestaCirculo (com a main), sabendo que todo círculo tem um raio e um centro no ponto (x,y). Neste projeto ... a) crie dois círculos : um com valores constantes definidos por você e outro com dados obtidos via console. b) implemente todos os sets e todos os gets c) use sobrecarga de construtores e crie cada círculo (item a) com um construtor. d) calcule a distância de um círculo a outro. Para isso, implemente um método float distancia(Circulo outroCirculo) que calcula a distância de um círculo a outro. e) calcule a área de cada círculo. Para isso, implemente um método de nome calcularArea. f) calcule o perímetro de cada círculo. Para isso, implemente um método de nome calcularPerimetro. g) imprima todos os dados de cada círculo. Para isso, implemente um método de nome imprimirDados. Considerações Adicionais
Compartilhar