Java Kickstart, day 2
Semelhanças com linguagem C
Strings
• Criação:
String name = “Bond”;
ou
String name = new String(“Bond”);
• Manipulação
name = 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 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.*;
Download

Java Kickstart, day 2