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