POO - Criando Aplicações

Propaganda
Programação
Orientada a Objetos*
Criando Aplicações em Java
Prof. Isabel Cafezeiro
[email protected]
http://www.dcc.ic.uff.br/~isabel
*Baseado no livro Introdução à Programação Orientada a Objetos
usando JAVA – Rafael Santos – Editora Campus – Série SBC
A Aplicação em Java
Classes implementam modelos.
Aplicações ?
Programa ?
Sistema ?
Dinâmica da execução ?
A Aplicação em Java
programadores
de classes
prevêem e disponibilizam os
serviços a serem oferecidos
pela classe
contrato
programadores
usuários
usam as classes, através dos
serviços oferecidos, para
compor aplicações
A Aplicação em Java
No programa usuário (aplicação):
Ponto de entrada: classe com método main
public static void main (String[] nome)
O método main pode
ser usado por outra
classe.
O método main pode ser
chamado sem que seja
criada uma instância da
classe.
O método main não
tem dados de
retorno.
O método main pode
receber como
argumentos uma
quantidade arbitrária de
dados informados no
momento da execução
Recomenda-se: main: o único método de uma classe
A Aplicação em Java
main: único
método da
classe.
Ponto de
entrada da
aplicação.
Declara e
cria
instâncias
de datas.
Inicializa e
mostra
datas,
usando os
serviços da
classe Data.
class DemoData1
{
public static void main(String[] argumentos)
{
Data hoje = new Data();
Data amanhã = new Data();
hoje.inicializaData((byte)20,(byte)4,(short)2006);
hoje.mostraData();
amanhã.inicializaData((byte)20,(byte)4,(short)2006);
amanhã.mostraData();
Erro de compilação! Tentativa de acesso a campo
privado.
amanhã.mês = 10;
} // fim do método main
} // fim da classe DemoData
C:\>javac DemoData1.java
DemoData1.java:16: mês has private access in Data
amanhã.mês = 10;
^
1 error
DemoData1.java
A Aplicação em Java
Para usar um objeto da classe:
1.
2.
3.
Criar a instância: new
Declarar a referência para a classe.
Associar a referência à instância: atribuição
(2) Data hoje;
hoje = new Data( );
(1)
(3)
Data hoje = new Data( );
(2)
(1)
(3)
A Aplicação em Java
É possível criar múltiplas referências à instâncias:
Data hoje,d;
hoje = new Data( );
hoje.inicializaData((byte)20,(byte)4,(short)2006);
d = hoje;
20/04/2006
hoje
d
Referências que não são associadas à instâncias não
podem ser usadas:
Erro de compilação!!! Tentativa
Data d1;
de usar uma referência não
d1.inicializaData((byte)20,(byte)4,(short)2006);
instanciada.
C:\>javac DemoData1.java
DemoData1.java:20: variable d1 might not have been initialized
d1.inicializaData((byte)20,(byte)4,(short)2006);
^
1 error
A Aplicação em Java
Referências podem ser instanciadas com o valor null:
neste caso, a tentativa de uso permite a
compilação, mas não a execução.
Data d1 = null;
d1.inicializaData((byte)20,(byte)4,(short)2006);
Erro de execução!!! Tentativa de
usar uma referência que aponta
para o valor null.
C:\>java DemoData1
Exception in thread "main" java.lang.NullPointerException
at DemoData1.main(DemoData1.java:8)
A Aplicação em Java
A impressão dos dados de uma classe:
deve ser feita campo a campo, através do método print do campo out
da classe System
public void mostraData()
{
System.out.print(dia);
System.out.print("/");
System.out.print(mês);
System.out.print("/");
System.out.println(ano);
} // fim do método mostraData
System.out.println(dia+"/"+mês+"/"+ano);
Data.java
A Aplicação em Java
A impressão dos dados de uma classe:
Pode ser facilitada pela declaração do método toString: quando
declarado em uma classe, toString permite que os objetos da
classe sejam impressos diretamente, como se fosse uma string.
public String toString ()
{
String saída = dia + "/" + mês + "/" + ano;
return saída;
} // fim do método toString
Data d = new Data( );
d.inicializaData((byte)20,(byte)4,(short)2006);
System.out.print(d);
na classe Data.java
na classe usuária de
Data.java
A Aplicação em Java
A leitura dos dados de uma classe: Keyboard
class DemoData2
{
public static void main(String[] argumentos)
{
Data hoje = new Data();
System.out.print("Entre com o dia: ");
byte dia = Keyboard.readByte();
System.out.print("Entre com o mês: ");
byte mês = Keyboard.readByte();
System.out.print("Entre com o ano: ");
short ano = Keyboard.readShort();
hoje.inicializaData(dia,mês,ano);
hoje.mostraData();
} // fim do método main
} // fim da classe DemoData2
DemoData2.java
Download