Java Kickstart, day 2
Semelhanças com linguagem C
Strings Criação: String name = “Bond”; ou String name = new String(“Bond”); Manipulação name = + “,James Bond”;
Strings Objetos podem ser transformados em String com a invocação do toString(), quando necessário: int num = 15; System.out.println(“Valor” + 15);
Programas são feitos de classes
Composição das classes: Campos - Variáveis e objetos internos. São responsáveis pelo estado do objeto. Métodos - funções que operam sobre os campos para alterar o estado do objeto.
To infinite, and beyond... class BuzzLightYear { public static void main(String[] args){ System.out.println("To infinite..."); System.out.println(“and beyond”); }
Em detalhes A classe anterior só declara um método: main é um método especial em Java. É por onde as aplicações começam main tem como parâmetro um array do String, e é passado via linha de comando. System.out.println() : Observar a sintaxe objeto.objeto.método()
Mais classes e objetos Declarando mais uma classe: class Point { public double x,y; } Observar o acesso aos campos
Criando Objetos Sintaxe: Point lowerLeft = new Point(); O uso de new chama o construtor do objeto. No caso, um construtor default é chamado
Alterando campos: Se o acesso é public, pode ser feito diretamente: lowerLeft.x = 5.0; // O objeto precisa lowerLeft.y = 6.0; // ser criado antes Não é recomendado liberar acesso public aos campos dos objetos
Controle de Acesso private : Acesso possível apenas de dentro da classe package : Sem declaração explícita, o acesso é permitido a código dentro do mesmo pacote. Não é permitido a classes filhas em outros pacotes. protected : Acesso permitido a código do mesmo pacote e código em classes filhas. public : Acesso permitido de qualquer lugar.
Métodos de acesso Recomenda-se o uso de métodos get e set para cada propriedade (onde o acesso é necessário) do objeto. As propriedades podem então ter acesso restrito.
Métodos de acesso e construtor O novo Point: class Point { private x, y; public void setX(int num){ x = num; } public int getX(){ return x; } //continua...
Métodos de acesso e construtor public Point(int x, int y){ this.x = x; this.y = y; } public Point(){ } // falta método de acesso a y }
Conceitos: Controle de acesso Referência através de this Métodos de acesso Construtor não default O construtor deve ser aproveitado para criar um objeto válido
Criando subclasses A classe Point original: class Point(){ int x,y; public Point(int x, int y){ this.x = x; this.y = y; } }
Criando subclasses A subclasse: class Pixel extends Point { Color color; public Pixel (Color color, int x, int y){ this.color = color; super (x,y); } }
Subclasses Observar o uso do método super() super dá uma referência à classe mãe Um objeto da classe filha pode ser usado como objeto da classe mãe Todas as classes descendem da classe Object Não é permitido fazer heranças múltiplas
Uma classe só pode herdar uma outra classe
Interfaces Úteis para declarar métodos sem suprir implementação Modelo de tratamento de evento usa extensivamente interfaces
Interfaces Exemplo: public interface ActionListener{ void actionPerformed(ActionEvent e); } As classes que implementarem ActionListener devem declarar um método actionPerformed() não vazio
Packages Evitam conflitos entre nomes e também servem como mecanismo de proteção Exemplo: class Date1 { public static void main(String[] args){ java.util.Date now = new java.util.Date(); System.out.println(now); } }
Packages Poderia ter sido usado: import java.util.date; class Date2 { public static void main(String[] args){ Date now = new Date(); System.out.println(now); } }
Packages Convenção de nomenclatura: usar o nome do domínio na Internet invertido. Exemplos: package org.omg.CORBA.ORBPackage; domínio: omg.org, pacote: CORBA.ORBPackage package br.usp.lsi.DBConnect; package com.sun.java.swing.plaf.*;