Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java - Aula 4

Java - Aula 4

Aula 4 de Java para Android leccionada na FLAG.

Filipe Mendes

October 06, 2015
Tweet

More Decks by Filipe Mendes

Other Decks in Education

Transcript

  1. Terminologia Uma classe define um tipo de dados. • Específica

    os dados que qualquer objecto da classe tem. • Fornece métodos especificando as acções que uma instância da classe pode fazer. 7
  2. Terminologia Um objecto que satisfaz a definição da classe é

    uma instância da classe. Os dados e os métodos são referidos como membros da classe. Os dados associados com um objecto da classe denominam-se variáveis de instância. 8
  3. Demo //Definição da classe
 public class Pessoa {
 
 private

    int idade;
 private String nome;
 private double peso;
 
 
 public Pessoa(int idade, String nome, double peso) {
 this.idade = idade;
 this.nome = nome;
 this.peso = peso;
 }
 
 
 public int getIdade() {
 return this.idade;
 }
 
 public String getNome() {
 return this.nome;
 }
 
 public double getPeso() {
 return this.peso;
 }
 } 10
  4. Demo public class Pessoa {
 
 // Definição dos campos

    de cada instância
 private int idade;
 private String nome;
 private double peso;
 
 public Pessoa(int idade, String nome, double peso) {
 this.idade = idade;
 this.nome = nome;
 this.peso = peso;
 }
 
 
 public int getIdade() {
 return this.idade;
 }
 
 public String getNome() {
 return this.nome;
 }
 
 public double getPeso() {
 return this.peso;
 }
 } 11
  5. Demo public class Pessoa {
 
 private int idade;
 private

    String nome;
 private double peso;
 
 //Construtor
 public Pessoa(int idade, String nome, double peso) {
 this.idade = idade;
 this.nome = nome;
 this.peso = peso;
 }
 
 
 public int getIdade() {
 return this.idade;
 }
 
 public String getNome() {
 return this.nome;
 }
 
 public double getPeso() {
 return this.peso;
 }
 } 12
  6. Demo 
 public class Pessoa {
 
 private int idade;


    private String nome;
 private double peso;
 
 
 public Pessoa(int idade, String nome, double peso) {
 this.idade = idade;
 this.nome = nome;
 this.peso = peso;
 }
 
 //Métodos de acesso aos campos da instância
 public int getIdade() {
 return this.idade;
 }
 
 public String getNome() {
 return this.nome;
 }
 
 public double getPeso() {
 return this.peso;
 }
 } 13
  7. Demo //Definição da classe
 public class Pessoa {
 
 //

    Definição dos campos de cada instância
 private int idade;
 private String nome;
 private double peso; private int bi;
 
 //Construtor
 public Pessoa(int idade, String nome, double peso,int bi) {
 this.idade = idade;
 this.nome = nome;
 this.peso = peso;
 this.bi = bi;
 }
 
 
 //Métodos de acesso aos campos da instância
 public int getIdade() {
 return this.idade;
 }
 
 public String getNome() {
 return this.nome;
 }
 
 public double getPeso() {
 return this.peso;
 }
 
 public int getBi() {
 return this.bi;
 }
 } 14
  8. UML A unified modeling language (UML) é uma linguagem de

    modulação que auxilia a visualização do esquema de classes de um projecto. 15
  9. Construtor • O construtor serve para criar e inicializar uma

    instância de um objecto através da utilização da palavra reservada new. • Pode parecer um método mas não é . • Não tem retorno e tem o mesmo nome que a classe Scanner teclado = new Scanner(System.in); 18
  10. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 Pessoa joao = new Pessoa(21,"joao",70.4);
 
 System.out.print(joao.getNome());
 System.out.print(joao.getIdade());
 System.out.print(joao.getPeso());
 
 }
 
 } 19
  11. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 Pessoa p = new Pessoa("joao");
 
 p.nome = "antonio";
 
 // FORMA MENOS CORRECTA DE ACESSO
 String nome1 = p.nome; 
 // FORMA MAIS CORRECTA DE ACESSO 
 String nome2 = p.getNome(); 
 
 }
 } public class Pessoa {
 
 public String nome;
 
 public Pessoa( String nome ){
 this.nome = nome;
 }
 
 public String getNome() {
 return this.nome;
 }
 }

  12. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 Pessoa p = new Pessoa("joao");
 
 p.nome = "antonio";
 
 // FORMA MENOS CORRECTA DE ACESSO
 String nome1 = p.nome; 
 // FORMA MAIS CORRECTA DE ACESSO 
 String nome2 = p.getNome(); 
 
 }
 } public class Pessoa {
 
 public String nome;
 
 public Pessoa( String nome ){
 this.nome = nome;
 }
 
 public String getNome() {
 return this.nome;
 }
 }

  13. Visibilidade private - membros ou variáveis de instância privados só

    podem ser acedidos dentro da própria classe. Isto significa que no exemplo anterior (classe pessoa) o campo idade não é acessível. 24
  14. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 Pessoa p = new Pessoa("joao");
 
 // ERRO DE COMPILACAO;
 p.nome = "antonio";
 
 // ERRO DE COMPILACAO;
 String nome1 = p.nome; 
 // FORMA MAIS CORRECTA DE ACESSO 
 String nome2 = p.getNome(); 
 
 }
 } public class Pessoa {
 
 private String nome;
 
 public Pessoa( String nome ){
 this.nome = nome;
 }
 
 public String getNome() {
 return this.nome;
 }
 }

  15. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 Pessoa p = new Pessoa("joao");
 
 // ERRO DE COMPILACAO;
 p.nome = "antonio";
 
 // ERRO DE COMPILACAO;
 String nome1 = p.nome; 
 // FORMA MAIS CORRECTA DE ACESSO 
 String nome2 = p.getNome(); 
 
 }
 } public class Pessoa {
 
 private String nome;
 
 public Pessoa( String nome ){
 this.nome = nome;
 }
 
 public String getNome() {
 return this.nome;
 }
 }

  16. static - palavra reservada Campos instância estáticos - mantém apenas

    uma “cópia” desse campo ao longo de todas as instâncias dessa classe. Na maioria dos casos é má prática, a não ser que se utilizem como valores constantes. Métodos estáticos de uma classe - estão associados a uma classe e não são específicos de nenhuma instância de um objecto. 27
  17. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 
 Pessoa p = new Pessoa("joao");
 Pessoa p2 = new Pessoa("antonio");
 
 p.nome = "jorge";
 
 String nome1 = p.getNome();
 String nome2 = p2.getNome();
 
 System.out.println(nome1);
 System.out.println(nome2);
 
 }
 } public class Pessoa {
 
 public static String nome;
 
 public Pessoa( String nome ){
 this.nome = nome;
 }
 
 public String getNome() {
 return this.nome;
 }
 }

  18. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 
 Pessoa p = new Pessoa("joao");
 Pessoa p2 = new Pessoa("antonio");
 
 // Altera-se a variável estática do tipo Pessoa p.nome = "jorge";
 
 String nome1 = p.getNome();
 String nome2 = p2.getNome();
 
 System.out.println(nome1);
 System.out.println(nome2);
 
 // OUTPUT:
 jorge
 jorge
 
 }
 } public class Pessoa {
 
 public static String nome;
 
 public Pessoa( String nome ){
 this.nome = nome;
 }
 
 public String getNome() {
 return this.nome;
 }
 }

  19. Demonstração public class Main {
 
 public static void main(String[]

    args) {
 
 int result = FlagUtils.calculate(10);
 
 }
 }
 public class FlagUtils {
 
 public static int calculate(int val1){
 return -1;
 }
 }

  20. Class Math A class Math existe na API do java

    e define um conjunto de métodos estáticos utilitários para cálculos matemáticos. Math.round(8.6); 33
  21. Boas prácticas Geralmente quando se desenvolvem aplicações, a palavra reservada

    static só é utilizada na definição de métodos estáticos (utilitários). Quando se define um tipo de dados (classe) as suas variáveis de instância usualmente têm visibilidade privada (evitando alterações sem permissões de classes externas) sendo apenas acessíveis através de métodos públicos que retornam (ou afectam) o seu valor. Retornar e afectar os valores através dos métodos (em vez de afectar directamente nas variáveis) permite a existência de um mecanismo de segurança e controlo dos dados de cada instância. 34
  22. Exercício 1 Crie a classe Ponto que contém duas variáveis

    de instância x e y do tipo int e um método getX() e método getY() que retorna um inteiro com os valores passados no construtor. Crie um programa de teste onde instancia duas instâncias deste tipo e imprima os seus x e y correspondentes na consola de comandos. 35
  23. Exercício 2 Crie a classe Button a partir do seguinte,

    com a especial atenção no método performClick() em que apenas escreve na consola “Action Performed!”. Não se esqueça de criar um programa de teste.
  24. Bibliografia • Slides de Programação de Rui Joaquim, ISEL 2008

    • Java - An Introduction to Problem Solving & Programming, 4a Edição, Walter Savitch 37