Java Kickstart, day 2
Semelhanças com linguagem C
Strings
• Criação:String name = “Bond”;ou
String name = new String(“Bond”);
• Manipulaçãoname = 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
• 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 precisalowerLeft.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.ORBPackagepackage br.usp.lsi.DBConnect;package com.sun.java.swing.plaf.*;