Métodos Estáticos,Pacotes, Data e hora

Propaganda
Fundamentos em Java
Métodos Estáticos
 Pacotes
 Manipulação de
Data e Hora

Professor: Armando Hage
Métodos e Campos
Static(estáticos)




As classes podem ter tanto campos estáticos quanto
métodos estáticos. Os campos estáticos não mudam de
uma instância de classe e outra,nem os métodos
estáticos de uma classe operam em uma instância.
Os métodos static só podem ser chamar outros métodos
static diretamente e não podem se referir a this ou super
de nenhuma maneira.
Declarando uma variável static, você estará criando uma
variável global.
Ex.: Métodos: double x = Console.readDouble();
double x = Math.pow(3,0.1);
Campos:Math.PI
System.out
Pacotes





São recipientes para classes usados com a
finalidade de manter o espaço do nome de
classe compartimentalizado.
Os pacotes são armazenados de maneira
hierárquica e são importados explicitamente
para novas definições de classe.
São convenientes para organizar o trabalho e
separá-lo de bibliotecas outras bibliotecas.
A biblioteca padrão Java é distribuída em
inúmeros pacotes.Ex.: java.lang,
java.util,java.net, e vários outros.
Um motivo para se usar pacotes é garantir e
exclusividade dos nomes dos pacotes.
Pacotes

As classe públicas de um pacote podem ser
acessadas de duas maneiras.Fornecendo o
nome completo do pacote.
Java.util.Date d =new Date()

Usando a palavra import para referenciar a
classe do pacote sem informar nomes
completos.
import java.util.Date;
Date d=new Date();

Pode-se importar um pacote inteiro usando-se
o *.
import java.util.*;
Definindo um Pacote


package NomeDoModulo;
Indica ao compilador que as classes
declaradas no arquivo pertencem ao módulo
NomeDoModulo.



As classes de um módulo podem ser declaradas
em mais de um arquivo.
Todas as classes (arquivos “.class”) de um
pacote devem estar agrupadas em um diretório
com mesmo nome do módulo.
Importando classes de um pacote...
import NomeDoPacote.NomeDaClasse
 import NomeDoPacote.*

Exemplos em Java



int i = corejava.Console.readInt();
java.util.GregorianCalendar hoje = new
java.util.GregorianCalendar;
Forma mais simples:
import corejava.*;
 import java.util.*;
 import java.corejava.Console;


É mais simples importar todas as classe de um
pacote. Não ocorre perda de tempo na compilação
ou aumento no tamanho do arquivo.
Criando um Pacote



Desenvolva uma classe chamada Console.java que
deverá pertencer a um pacote chamado package
console, responsável pela entrada de dados via cia
console.
Crie um novo pacote chamado meupacote, contendo
três
classes(Ponto.java,Equacao.java,Triangulo.java),
contendo as definições de atributos e métodos de
cada uma das classe.
Faça uma classe que acesse as classe contidas em
cada uma dos pacotes.
package Console;//Definição de um pacote
Exemplo
import java.io.*;
import java.lang.*;
public final class Console{
//Le somente valores reais
public static double leDouble(){
try{BufferedReader entra=new BufferedReader(new
InputStreamReader(System.in));
String s = entra.readLine();
return Double.parseDouble(s);
}catch(IOException e){
System.out.println("Erro na entrada"); ...
Exemplo
(Ponto.java)
package geo;
public class Ponto
{float x,y;
public Ponto(float ax,float ay)
{this.x=ax;this.y=ay;
}
public float retornaX
......
package geo;
import java.io.*;
public class Equacao{
double a,b,c;
//Construtor default
Equacao(){}
//Construtor e seus parametros
package geo;
Equacao(double a,double b,double c){
import java.io.*;
this.a=a;this.b=b;this.c=c;
import console.*;
}
public class Triangulo{
.....
double base,altura;double area;
public Triangulo(){}...
Exemplo
import java.io.*;
import java.lang.*;
import console.*;
import geo.*;
public class Principal{
public static void main(String args[])throws
IOException{
String continua="SIM";
int escolha;
while(continua.equals("SIM")){
Como o compilador
Localiza os Pacotes


O compilador JDK e a maioria dos outros
compiladores Java armazenam os pacotes em
subdiretórios do sistema de arquivos ou dentro
de arquivos compactados com ZIPs ou JARs.
O caminho para se chegar a um pacote e através
da variável de ambiente CLASSPATH.

Ex.:Cria um caminho: c:\armando\meuspacotes.
Com os fontes (Ponto.java, Equacao.java,
Triangulo.java e Principal.java), no diretório
c:\fontes. Já a classe Console poderia ficar em
c:\console.
Como o compilador
Localiza os Pacotes

Para criar o pacote:
c:\console\javac –d c:\armando\meuspacotes Console.java
c:\fontes\javac –d c:\armando\meuspacotes Ponto.java
c:\fontes\javac –d c:\armando\meuspacotes Equacao.java
c:\fontes\javac –d c:\armando\meuspacotes Triangulo.java
 Com isso os arquivos (Ponto.class, Equacao.class e
Triangulo.class) serão direcionados para:
c:\armando\meuspacotes\geo. O arquivo Console.class será
criado em c:\armando\meuspacotes\console



classpath=c:\armando\meuspacotes\geo;
Em c:\fontes, compilar e executar Principal.java
Se estiver utilizando uma ferramenta com JBuilder
ou SunOne Studio 4 tudo que é criado
automaticamente é definido como um pacote.
Escopo de um pacote

public


private


Recursos marcados desta forma podem ser
utilizados por qualquer classe,sendo ou não do
mesmo pacote.Os atributos marcados desta
forma são herdados e podem ser acessados
pelas subclasses.
Visível apenas pelos métodos da classe que o
criou.Não são acessados diretamente por uma
subclasse, a não ser indiretamente por um
método não-privado.
proteced

São visíveis na própria classe, em todas as
subclasses e também nas classes que
pertencem ao mesmo pacote.
Escopo de um pacote

package


São visíveis na própria classe e por classes
definidas no mesmo pacote.Subclasses de
classes em outros pacotes não podem acessar
estes recursos.Classes pertencentes ao mesmo
pacote colaboram para atingir um objetivo, logo
devem conhecer os recursos das outras.
Utilização
Use public para métodos que devem ser visíveis
por clientes da classe.
 Use protected para recursos que podem ser
interessantes para quem quer criar subclasses
em outros pacotes.

Recomendação para
Projeto de Classes
Sempre mantenha os dados privados

Caso não seja obedecido, violará o encapsulamento.
Quando os dados são mantidos privados, as alterações
em suas representações não afetam o usuário da classe e
o erros são bem mais fáceis de detectar.
Sempre inicialize os dados

Java não inicializa variáveis locais automaticamente.
Não use tipo básicos em demasia numa classe


A idéia é substituir os usos relacionados de tipos de
dados básicos por outras classes.
Ex.:Em uma classe Cliente os campos:


private String rua; private String cidade; private String
estado; private int cep;
Estes campos poderiam forma a classe Endereco.
Recomendação para
Projeto de Classes
Nem todos os campos precisam de acessadores e
modificadores de campos individuais.

Use a forma padrão de construção de classes
Sempre listamos o conteúdo das classes na seguinte
ordem
Recursos públicos

Recursos de escopo de pacote

Recursos privados
Dentro de cada seção:

Constantes,construtores, métodos estáticos,variáveis
de instância, variáveis estáticas.

Recomendação para
Projeto de Classes
Divida as classe com muitas tarefas

Divida uma classe complicada em duas conceitualmente
simples.
Dê nomes às classes e métodos que representam suas
tarefas
 Assim como as variáveis devem ter nomes
representativos, as classes também devem seguir esta
metodologia.
 O nome da classe deve ser um
substantivo(Pedido,Cliente) ou substantivo junto a um
adjetivo(PedidoExpresso,EnderecoCobranca).
 Com os métodos,siga a convenção dos métodos
“acessadores” inicados por get(getDia,getSaldo) e
“modificadores” iniciados por set(setSalario,setSaldo)
Manipulação de Datas e
Hora


A manipulação de data e hora exige a utilização de uma
classe externa da linguagem Java(Date).
Exige a utilização da diretiva import. As diretivas import
devem ser inseridas antes da declaração do nome da
classe.



Sintaxe: import nome-do-pacote ou classe
Por exemplo se fosse necessário utilizar o pacote externo
Date, a diretiva seria: import java.util.Date, possibilitando
a criação de diversos objetos para a manipulação de data
e hora.
Ex.: Date data;
ou
Date data=new Date();
data = new Date;
Métodos para a
Manipulação da Data









A classe Date fornece muitos métodos úteis para a obtenção e
tratamento com datas e horas. Ex.: Date data=new Date();
data.getDate() – Retorna o dia do mês(1-31) armazenado no
objeto data.
data.getDay() – Retorna o dia da semana.
data.getMonth() – Retorna o mês.
data.getYear() – Retorna o ano de armazenamento no objeto
data.Retorna os dois últimos algarismos referentes ao ano.
Datas superiores a 2000 retornam três digitos.Ex.:2000 – 100 ,
2001- 101
data.setDate(dia)- difine o dia do mês para dia do objeto.
data.setMonth(mês) – Define o mês para o mês do objeto data.
data.setYear(ano)- Define o ano para o ano do objeto data.
data.toGMTString()-Retorna uma string representando o objeto
data com GMT, isto é, com a data e hora de Londres.
Métodos para a
Manipulação da Hora







Da mesma forma existem métodos para obtenção e
tratamento de horas.Ex.: Date data=new Date(“October
23,2001,10:42:15”);
data.getHours()- Retorna a hora(0-23) do objeto data.
data.getMinutes()-Retorna os minutos(0-59) do objeto
data.
data.getSeconds()-Retorna os segundos(0-59)do
objetos data.
data.getTime()-Retorna o número de milissegundos
decorridos desde 1º de janeiro de 1970,00:00:00.Esse
método é geralmente usado para realizar cálculos entre
datas.
data.getTimezoneoffset()-Retorna a diferença em
minutos da hora local em GMT.
data.parse(string)-Analisa a string e retorna o número
Métodos para a
Manipulação da Hora





data.setHours(horas)-Define a hora do objeto
data.
data.setMinutes(minutos)-Define os minutos
do objeto data.
data.setSeconds(segundos)-Define os
segundos do objetos data.
data.setTime(valor)-Define a hora para
valor,que representa o número de
milissegundos decorridos desde 1º de janeiro
de 1970,00:00:00.
data.toLocalString()-Retorna uma string
contendo a data e hora do objeto data,levando
em conta o fuso horário corrente.
import java.util.Date;
public class objdata{
public static void main(String args[]){
Date dt = new Date();
System.out.println("Hoje e " + dt.toString());
System.out.println("O ano e " + dt.getYear());
System.out.println("O mês e " + dt.getMonth());
System.out.println("O dia e " + dt.getDate());
System.out.println("\n Mudança de dia ");
dt = new Date(1997,11,25);
System.out.println("Hoje e " + dt.toString());
System.out.println("O ano e " + dt.getYear());
System.out.println("O mês e " + dt.getMonth());
System.out.println("O dia e " + dt.getDate());
}
}
Exemplo
Exemplo
import java.util.Date; //importa a classe Date
class Saudacao{
public static void main (String args[ ]) {
Date data = new Date(); // cria e inicializa um objeto data
int hora=0,min=0,sec=0;
hora=data.getHours();
min=data.getMinutes();
sec=data.getSeconds();
System.out.println("Agora são " + hora + "h:" + min + "m:" + sec +
"s");
if(hora>=0 && hora<6)
System.out.println("Boa Madrugada!");
if(hora>=6 && hora<12)
System.out.println("Bom Dia!");
if(hora>=12 && hora<18)
System.out.println("Boa Tarde!");
if(hora>=18)
System.out.println("Boa Noite!");
}
}
Exercício



Crie um programa que simule promoções em
um site de internet.A cada dia da semana ele
mostra uma promoção diferente.Por exemplo:
se for Domingo-Carro 0Km agora com 10% de
desconto, se for Segunda-Aproveite a
promoção de laranjas e assim por diante.
Crie um programa que mostre na tela o dia
atual no formato,Ex.: Hoje é Sexta-feira, dia 07
de Dezembro de 2002.Você pode utilizar uma
estrutura if ou switch-case.
Crie um pacote para suas classes criadas.
Download