Programação – JAVA Unidade 1 - Introdução Prof. Aparecido V. de Freitas Mestre e Doutorando em Engenharia da Computação pela EPUSP 1 Bibliografia • Beginning Java 2 – Ivor Horton – 1999 WROX • Java2 – The Complete Reference – Third Edition – Naughton / Schildt – Osborne • Core Java Fundamentals – Horstmann / Cornell – PTR • Inside the Java 2 – Virtual Machine Venners – McGrawHill • Understanding Object-Oriented Programming with JAVA – Timothy Budd – Addison Wesley • JAVA - How to program – Deitel & Deitel – Fifth Edition – Prentice Hall 2 Introdução • Linguagem de uso geral. • Possibilita escrever aplicações ou applets. • Indicada para aplicações que necessitam rodar em diferentes plataformas. • Applets permitem que páginas WEB se tornem dinâmicas. • Para código embutido na WEB a linguagem oferece recursos de controle para prevenir ocorrências de falhas. • Linguagem orientada a objetos. 3 As Origens de Java • 1992 – Linguagem Oak – Desenvolvimento de Software para Aparelhos de Informação: Celulares e PDAs. • • • • Pouco Sucesso e SUN abandona o projeto 1993 – Explosão do interesse pela Internet Requisitos semelhantes 1995 – Oak se transforma em JAVA 4 Java - Histórico – Originalmente projetado para dispositivos eletrônicos inteligentes. – Em seguida, foi empregado para criação de páginas dinâmicas com conteúdo dinâmico. – Agora também usado para: • Desenvolvimento de aplicações corporativas • Funcionalidades adicionais em servidores WWW • Aplicações de dispositivos diferenciados (celular...) 5 Características da Linguagem Java • • • • • Orientada a Objetos Distribuída Interpretada / Compilada Robusta / Segura Independente de Arquitetura / Portável 6 Programas Java • Applets ou aplicações. • As aplicações podem ser consoles ou gráficas. 7 Aprendendo Java • Estruturas do programa Java. • Programação básica: armazenamento de dados, execução de cálculos e tomada de decisões. • Classes. • Concorrência. • Interface Gráfica. 8 Ambiente Java • Programas Java rodam em diversas plataformas ! Por que ? • Um programa Java não roda diretamente em seu computador. Ele roda numa máquina virtual chamada JVM a qual é emulada dentro do computador por um programa. 9 Ambiente Java Fonte Java Compilador Java Java Virtual Machine Interpretador Java Código Objeto Java O programa é executado pelo interpretador !!! Sistema Operacional 10 Ambiente Java • O código fonte Java é convertido por um compilador Java para um programa binário composto por byte codes. • Byte Codes são instruções de máquina para a Java Virtual Machine. • Ao executar o programa, um outro programa chamado Interpretador inspeciona e decifra todos os bytes codes e executa as ações especificadas na Virtual Machine. 11 Portabilidade • Um programa Java consiste de byte codes ao invés de instruções nativas de máquina. • Assim, o programa Java é isolado e encapsulado da máquina em que é processado. • Qualquer computador que tenha o run-time Java será capaz de igualmente rodar o mesmo programa. 12 Desempenho • Em tempos passados houve problema de desempenho. • Atualmente, Java suporta compilação “JustIn-Time” a qual permite que byte codes sejam convertidos para instruções nativas de máquina, causando assim melhor desempenho. 13 Desenvolvimento Java - JDK • Sun – (FREE) • Download para diversas plataformas e sistemas operacionais. • Código Fonte tem extensão .java • Para compilar => javac MeuPrograma.java • Para executar => java MeuPrograma (.class) 14 Desenvolvimento Java • Ao se executar os byte codes, não se deve especificar a extensão .class • Applets também podem ser executados por programas presentes no JDK chamados AppletViewer. • Após compilar um applet e incluí-lo em uma página podemos executá-lo através do comando: appletviewer MeuApplet.html 15 Adicionando um Applet no HTML <HTML> <HEAD> <TITLE> A Simple Program </TITLE> </HEAD> <BODY> <HR> <APPLET code = "Exerc_01.class" width = 300 height = 200 > </APPLET> <HR> </BODY> </HTML> 16 Exemplo import javax.swing.JApplet; import java.awt.Graphics; public class Exerc_01 extends JApplet { public void paint(Graphics g) { g.drawString("Olá ! Benvindo ao curso de Introdução ao JAVA!!!", 20, 90); } } 17 Exemplo > javac Exerc_01.java > appletviewer Exerc_01.html 18 Java é Orientado a Objetos • OOP – Programação Orientada a Objetos tem se tornado extremamente popular nos últimos anos. Por que ? 19 Por que OOP ? • Aumento de produtividade • Facilidade de transição a partir de linguagens existentes • Similaridade com técnicas em outros domínios de problemas 20 Crise de Software • Desenvolvimento de software com produtividade, qualidade e confiabidade. OOP tem como meta resolver a crise de software 21 Paradigma Imperativo • • • • • Tradicional modelo de computação Estado Variáveis Loops Atribuições 22 Elementos da OOP • Tudo é objeto! • Ações em OOP são executadas por agentes chamados de instâncias ou objetos. • Ações em OOP são produzidas em respostas à requisições expressas em mensagens. • Um objeto ao aceitar uma mensagem executa uma ação e retorna um resultado. 23 Encapsulamento da Informação • Ao solicitar uma requisição a um objeto através de uma mensagem, o usuário não necessita conhecer os detalhes de como a ação será executada durante o atendimento desta requisição. • Tendo aceito uma mensagem o objeto terá a responsabilidade de executar a ação correspondente. 24 Classes • Um grupo de objetos similares. • O código a ser executado através das ações pertence à classe e não à um objeto em particular (instância da classe!) 25 Hierarquia de Classes • O atendente da floricultura é um florista, mas ele também é um funcionário do shopping, é um ser humano, etc. • À cada nível da hierarquia de classes, temos gravadas certas informações aplicáveis à todos os níveis inferiores da estrutura. 26 Hierarquia de Classes Objeto Material Vivo Não-vivo Animal Planta Réptil Mamífero Homem Dentista André Cão Pedra Ar Gato Florista Pedro 27 Herança • Classes são organizadas em uma estrutura do tipo árvore chamada hierarquia de herança. • A informação (dado e/ou código) armazenado num nível da hierarquia é automaticamente aplicável aos níveis inferiores desta hierarquia. 28 Exemplo class Chapeu { private String proprietario; private int tipo; public Chapeu (String p1, int p2) { proprietario = p1; tipo = p2; } } Atributos ou dados 29 Exemplo class Chapeu { private String proprietario; private int tipo; public Chapeu (String p1, int p2) { proprietario = p1; tipo = p2; } } Operações ou Métodos 30 Encapsulamento • Esconder os detalhes de implementação de um objeto. • Em Java, corresponde à definição de private para o item de dados ou para o método. 31 Exemplo class Chapeu { private String proprietario; private int tipo; public Chapeu (String p1, int p2) { proprietario = p1; tipo = p2; } O dado é somente acessado ou } modificado por métodos internos à classe 32 Estrutura de um programa Java • Um programa Java consiste em um número de classes. • Há ao menos uma classe num programa Java. • Tipicamente codificamos cada classe Java num arquivo em separado. 33 Estrutura de um programa Java class class class class class O programa completo é composto por 5 classes! 34 Biblioteca de classes Java • Um programa usualmente invoca código da Java Standard Class Library, a qual corresponde a um conjunto de classes. • Estas classes são agrupadas em arquivos relacionados que são chamados packages. • Cada package é armazenado num diretório em separado. 35 Packages standards • • • • • • • java.lang java.io java.util javax.swing java.awt java.awt.image java.awt.event 36 Biblioteca de classes • As classes do package java.lang são acessadas por default. • Para usarmos classes de outro package devemos usar a diretiva import para cada package necessário. • As classes standard não aparecem como arquivos ou diretórios no hard-disk. Elas são empacotadas em um único arquivo compressed, rt.jar, que é armazenado no diretório jre/lib 37 Arquivos .jar • É um Java Arquive – um arquivo compressed de classes java. • As classes que seu programa executável requerer são carregadas automaticamente a partir de rt.jar, de forma que não precisamos fazer referência direta ao arquivo. 38 Aplicações Java • Toda aplicação Java contém uma definição de classe a qual por sua vez contém um método chamado main( ). • O primeiro método a ser executado é sempre o método main( ). • O nome da classe deve ser sempre igual ao nome do arquivo com extensão .java. 39 Aplicações Java public class Exerc_02 Definição da classe do programa. Contém um único método main ( ) { public static void main (String[] args) { System.out.println("Ola! Estao gostando do curso de Java ??"); } } 40 Aplicações Java public class Exerc_02 { public static void main (String[] args) { System.out.println("Ola! Estao gostando do curso de Java ??"); } } Esta é a definição do método main( ) 41 Aplicações Java public class Exerc_02 { public static void main (String[] args) { System.out.println("Ola! Estao gostando do curso de Java ??"); } } Indica que o método é globalmente acessível 42 Aplicações Java public class Exerc_02 { public static void main (String[] args) { System.out.println("Ola! Estao gostando do curso de Java ??"); } } Assegura que o método é acessível mesmo quando nenhum objeto da classe existir. 43 Aplicações Java public class Exerc_02 { public static void main (String[] args) { System.out.println("Ola! Estao gostando do curso de Java ??"); } } Indica que o método não retorna valor. 44 Fontes em Unicode O Unicode 3.2 tem 38.885 caracteres. Os primeiros 128 são iguais ao ASCII. As fontes em ASCII são transformadas em Unicode. Para além das sequências de escape convencionais do C (ex: \n) podemos usar \uhhhh para um caracter em Unicode. Esta translação é feita antes da compilação. • Os identificadores e o conteúdo de variáveis do tipo char ou String podem ter qualquer caracter Unicode. static final double π = 3.1416; • • • • • Em Unicode \u20AC é o símbolo € do Euro. 45