Programação Orientada a Objetos com Java Aula 1 professor: Fábio Kimura e-mail: fkimura@yahoo.com
Agenda •  Distribuições da Tecnologia Java •  Tipos de Programas Java •  “ Key Features” da Tecnologia Java •  Conceitos errados sobre Java •  Palavras Reservadas •  Entendendo a Portabilidade do Java •  Entendendo a Java Runtime Enviroment •  Definição de Nomes •  Anatomia de uma Classe Java •  Aplicações Java Stand-Alone •  Discussão •  Exercícios •  Exercícios valendo nota.
Evolução do Java 3500 3000 2500 2000 1500 1000 500 0 Java 1.02 250 classes Lento e com bugs Applets/AWT Java 1.1 500 classes Um pouco mais rápido. Swing Java 2 (1.4) 2300 classes Muito rápido JME, JSE e JEE Applicações Web e Enterprise Java 5 3500 classes Mais poderoso, mais fácil de desenvolver 1996  1998  2000  2002  2004 HotSpot  JIT
Distribuições da Tecnologia Java •  Cliente/Servidor •  Applet/Swing •  Departamental •  Desktop JEE Enterprise Edition •  Telefone celular •  Pequenos dispositivos •  Móvel •  e-Business •  e-Commerce •  Corporativo JSE Standard Edition JME Micro Edition
Tipos de programas Java Stand-Alone Java Applets™ Java Servlets™ Java Midlets™ JavaBeans™
“ Key Features” da Tecnologia Java Simples Orientada a objetos Pronta para funcionar em rede (Network-savvy) Distribuída Robusta Segura Neutra em relação à plataforma Múltiplas linhas de execução (Multithreaded) Dinâmica Portável Alto desempenho Interpretada Buzzwords do Java (White papers)
Conceitos errados sobre Java Java é uma extensão do HTML. Java é apenas mais uma linguagem. Todos os programas Java executam em páginas Web. JavaScript é uma versão “Light” da linguagem Java. Java é interpretado, muito lento para aplicações sérias. Java é proprietário e deve ser evitado por isso. Java é uma linguagem de programação difícil de aprender. Java é um ambiente fácil no qual programar. Conceitos  errados  sobre Java: Mais em http://www.apl.jhu.edu/~hall/java/FAQs-and-Tutorials.html
Portabilidade Portabilidade x Neutra em relação à plataforma Código C e C++ podem ser portáveis? Um compilado Java pode ser dependente de plataforma? Write Once, Run Anywhere ™  (WORA) Código fonte x programa compilado Niklaus Wirth (criador do Pascal) – Máquina hipotética
Palavras reservadas As palavras  const  e  goto  são reservadas, porém não são utilizadas. true, false,  e  null  são considerados literais. while super native float const * volatile strictfp ** long finally class void static interface final char try short int extends catch transient  return instanceof enum **** case throws public import else byte throw protected implements double break this private if do boolean synchronized package goto * default assert *** switch new for continue abstract adicionada em 5.0    **** adicionada em 1.4    *** adicionadas em  1.2   ** não utilizadas   *
Plataforma - dependência de Plataforma O código é compilado através do compilador da linguagem escolhida
Plataforma - dependência de Plataforma O código gerado pela compilação passa por uma processo de linkagem onde será vinculado ao sistema operacional
Plataforma - dependência de Plataforma O programa compilado e linkado, roda em uma plataforma específica
Plataforma – independência de Plataforma Em uma linguagem interpretada, o código fonte passa apenas pelo processo de compilação
Plataforma – independência de Plataforma Após a compilação, o código gerado (bytecode) é interpretado por uma máquina virtual que é executada pelo sistema operacional do computador
Plataforma – independência de Plataforma Resumo do processo de desenvolvimento de software em Java
Plataforma – independência de Plataforma Através da JVM, a mesma aplicação pode rodar em múltimas plataformas diferentes
Entendendo a Plataforma Java JVM – Java Virtual Machine Máquina Virtual Java JRE – Java Runtime Environment Ambiente de Execução de aplicativos Java JDK – Java Development Kit Ambiente de Desenvolvimento Java
Entendendo a Java Runtime Environment
Anatomia de uma classe Java
Anatomia de uma classe Java Declaração da  Classe (palavra reservada  class ) Declaração e inicialização de  Atributos  (opcional) Declaração de  Métodos  (opcional)
Exemplo de classe Java public class Camisa { public int id = 0; // identificador da camisa public String descricao = “vazia”; // informações sobre a Camisa // Os códigos são: V=Vermelha, A=Azul, B=Branca, N=Não definida public char codigoCor = ‘N’; public double preco = 0.0; // preco em Reais public int quantidadeEmEstoque = 0; // Mostra os dados da Camisa public void mostrarDados() { System.out.println(“Identificador: “ + id); System.out.println(“Descrição:” + descricao); System.out.println(“Código da cor: “ + codigoCor); System.out.println(“Preço: “ + preco); System.out.println(“Quantidade em estoque: “ + quantidadeEmEstoque); } // fim do método mostrarDados } // fim da classe
Anatomia de uma classe Java Declaração de Classe Sintaxe: [ modificadores ] class  NomeDaClasse  { } Exemplo: public class Camisa { }
Anatomia de uma classe Java Declaração e inicialização de Atributos  Sintaxe: [ modificadores ]  [tipo]   nomeDoAtributo [= valorInicial]; Exemplo: public int id; public char codigoCor = ‘A’; OBS: Caso um atributo de classe não seja inicializado, a JVM por default irá inicializá-la com seu respectivo valor default (veremos mais na próxima aula).
Anatomia de uma classe Java Declaração de métodos  Sintaxe: [ modificadores ]  [tipoRetorno]   nomeDoMetodo([argumentos])  { } Exemplos: public void mostrarDados(String dados) { System.out.println(“dados:”+dados); } String recuperarNome() { return nome; }
Definição de Nomes •  Um nome pode ser composto por letras (minúsculas e/ou maiúsculas), dígitos e os símbolos _ e $.  •  Um nome não pode ser iniciado por um dígito (0 a 9).  •  Letras maiúsculas são diferenciadas de letras minúsculas.  (Full Case Sensitive)  •  Uma palavra-chave da linguagem Java não pode ser um identificador.
Aplicações Java Stand-Alone •  O método  main: public static void main(String args[])  { } • Toda classe Java que possuir o método acima, pode ser iniciada numa JRE exclusiva, no modo StandAlone •  Nem todas as classes Java necessitam ter esse método
Fazer o download do JDK no site  java . sun.com Deverá ser realizado o download de acordo com o sistema operacional de desenvolvimento. O processo de instalação, geralmente é realizado através de um wizard, onde não é necessário grandes interações. Após a instalação do Java, é necessário configurar o PATH para o subdiretório  bin  da instalação. A estrutura de diretórios da instalação do JDK é mostrada abaixo: Instalando e configurando o JDK jdk1.6.0_<version> ____________________|___________________ |  |  |  |  |  |  |  |  | |  |  |  |  bin lib  |  demo  | |  |  | LICENSE |  |  |  jre |  | COPYRIGHT  |  __|__ |  README.txt  include  |  | readme.html  bin  lib
Configurando PATH  – Adicionar o diretório de instalação  do Java seguido do subdiretório bin. PATH=C:\Arquivos de programas\Java\jdk1.6.0_02\bin; %PATH% (verificar o “;” depois do bin) Iniciar->Painel de Controle->Sistema Aba  “Avançado” Botão “ Variáveis de Ambiente”
Testando Iniciar->Executar...-> cmd Digitar: java –version  Verifica a versão da JVM javac –version  Verifica a versão do compilador Tela de sucesso: Tela de fracasso: (verifique o PATH) Tela de fracasso: (verifique o PATH e se você baixou a JDK e não a JRE)
Criando um programa Java Criar um arquivo com extensão (.java) em um editor de texto. O arquivo deve possuir o mesmo nome da Classe. Exemplo (menor classe possível em Java):  class Teste { } Salvar o arquivo como “Teste.java” Cuidado com maiúsculas e minúsculas! Java é “case sensitive”! “ Teste.java” é diferente de “teste.java” class Teste {   é diferente de   class teste { }  }
Exercício: Hello World (Windows) •  Criar um diretório C:\java e dentro dele: •  Criar um arquivo de nome “HelloWorld.java” contendo: class HelloWorld { public static void main(String args[])  { System.out.println(“Hello Java World!”); } } •  Abrir uma janela DOS (Iniciar -> Executar... -> cmd) •  Compilar o arquivo e arrumar eventuais falhas de programação que possam ocorrer durante o processo: javac HelloWorld.java •  Verificar se foi criado o arquivo .class correspondente ( HelloWorld.class ). •  Iniciar a JVM executando o método  main  da classe: java HelloWorld
Exercícios Dados os arquivos: Teste1.java Teste2.java Teste3.java Teste4.java Teste5.java Compile Conserte os erros de compilação se existirem Execute Conserte os erros de execução se existirem
Exercício em casa (Valendo nota). •  Envie um e-mail para  [email_address]  até às 17h da quarta-feira dia 13/08/2008 respondendo: “ Qual a importância de se escrever um código claro e legível?” •  Baixe e instale a JDK 6. •  Refaça os exercícios da aula. •  Com a JDK 6 instalada, compile e execute a classe Mensagem.java •  Não tente entender todo o programa agora, apenas exercite a compilação e execução. •  Envie a saída do programa para fkimura@yahoo.com até as 17h00 do dia 13/08/2008
Exercício em casa (Valendo nota). •  Com a JDK 6 instalada, compile e execute a classe Mensagem.java •  Não tente entender todo o programa agora, apenas exercite a compilação e execução. •  Envie a saída do programa para fkimura@yahoo.com até as 17h00 do dia 13/08/2008

Aula1

  • 1.
    Programação Orientada aObjetos com Java Aula 1 professor: Fábio Kimura e-mail: fkimura@yahoo.com
  • 2.
    Agenda • Distribuições da Tecnologia Java • Tipos de Programas Java • “ Key Features” da Tecnologia Java • Conceitos errados sobre Java • Palavras Reservadas • Entendendo a Portabilidade do Java • Entendendo a Java Runtime Enviroment • Definição de Nomes • Anatomia de uma Classe Java • Aplicações Java Stand-Alone • Discussão • Exercícios • Exercícios valendo nota.
  • 3.
    Evolução do Java3500 3000 2500 2000 1500 1000 500 0 Java 1.02 250 classes Lento e com bugs Applets/AWT Java 1.1 500 classes Um pouco mais rápido. Swing Java 2 (1.4) 2300 classes Muito rápido JME, JSE e JEE Applicações Web e Enterprise Java 5 3500 classes Mais poderoso, mais fácil de desenvolver 1996 1998 2000 2002 2004 HotSpot JIT
  • 4.
    Distribuições da TecnologiaJava • Cliente/Servidor • Applet/Swing • Departamental • Desktop JEE Enterprise Edition • Telefone celular • Pequenos dispositivos • Móvel • e-Business • e-Commerce • Corporativo JSE Standard Edition JME Micro Edition
  • 5.
    Tipos de programasJava Stand-Alone Java Applets™ Java Servlets™ Java Midlets™ JavaBeans™
  • 6.
    “ Key Features”da Tecnologia Java Simples Orientada a objetos Pronta para funcionar em rede (Network-savvy) Distribuída Robusta Segura Neutra em relação à plataforma Múltiplas linhas de execução (Multithreaded) Dinâmica Portável Alto desempenho Interpretada Buzzwords do Java (White papers)
  • 7.
    Conceitos errados sobreJava Java é uma extensão do HTML. Java é apenas mais uma linguagem. Todos os programas Java executam em páginas Web. JavaScript é uma versão “Light” da linguagem Java. Java é interpretado, muito lento para aplicações sérias. Java é proprietário e deve ser evitado por isso. Java é uma linguagem de programação difícil de aprender. Java é um ambiente fácil no qual programar. Conceitos errados sobre Java: Mais em http://www.apl.jhu.edu/~hall/java/FAQs-and-Tutorials.html
  • 8.
    Portabilidade Portabilidade xNeutra em relação à plataforma Código C e C++ podem ser portáveis? Um compilado Java pode ser dependente de plataforma? Write Once, Run Anywhere ™ (WORA) Código fonte x programa compilado Niklaus Wirth (criador do Pascal) – Máquina hipotética
  • 9.
    Palavras reservadas Aspalavras const e goto são reservadas, porém não são utilizadas. true, false, e null são considerados literais. while super native float const * volatile strictfp ** long finally class void static interface final char try short int extends catch transient return instanceof enum **** case throws public import else byte throw protected implements double break this private if do boolean synchronized package goto * default assert *** switch new for continue abstract adicionada em 5.0   **** adicionada em 1.4   *** adicionadas em 1.2   ** não utilizadas   *
  • 10.
    Plataforma - dependênciade Plataforma O código é compilado através do compilador da linguagem escolhida
  • 11.
    Plataforma - dependênciade Plataforma O código gerado pela compilação passa por uma processo de linkagem onde será vinculado ao sistema operacional
  • 12.
    Plataforma - dependênciade Plataforma O programa compilado e linkado, roda em uma plataforma específica
  • 13.
    Plataforma – independênciade Plataforma Em uma linguagem interpretada, o código fonte passa apenas pelo processo de compilação
  • 14.
    Plataforma – independênciade Plataforma Após a compilação, o código gerado (bytecode) é interpretado por uma máquina virtual que é executada pelo sistema operacional do computador
  • 15.
    Plataforma – independênciade Plataforma Resumo do processo de desenvolvimento de software em Java
  • 16.
    Plataforma – independênciade Plataforma Através da JVM, a mesma aplicação pode rodar em múltimas plataformas diferentes
  • 17.
    Entendendo a PlataformaJava JVM – Java Virtual Machine Máquina Virtual Java JRE – Java Runtime Environment Ambiente de Execução de aplicativos Java JDK – Java Development Kit Ambiente de Desenvolvimento Java
  • 18.
    Entendendo a JavaRuntime Environment
  • 19.
    Anatomia de umaclasse Java
  • 20.
    Anatomia de umaclasse Java Declaração da Classe (palavra reservada class ) Declaração e inicialização de Atributos (opcional) Declaração de Métodos (opcional)
  • 21.
    Exemplo de classeJava public class Camisa { public int id = 0; // identificador da camisa public String descricao = “vazia”; // informações sobre a Camisa // Os códigos são: V=Vermelha, A=Azul, B=Branca, N=Não definida public char codigoCor = ‘N’; public double preco = 0.0; // preco em Reais public int quantidadeEmEstoque = 0; // Mostra os dados da Camisa public void mostrarDados() { System.out.println(“Identificador: “ + id); System.out.println(“Descrição:” + descricao); System.out.println(“Código da cor: “ + codigoCor); System.out.println(“Preço: “ + preco); System.out.println(“Quantidade em estoque: “ + quantidadeEmEstoque); } // fim do método mostrarDados } // fim da classe
  • 22.
    Anatomia de umaclasse Java Declaração de Classe Sintaxe: [ modificadores ] class NomeDaClasse { } Exemplo: public class Camisa { }
  • 23.
    Anatomia de umaclasse Java Declaração e inicialização de Atributos Sintaxe: [ modificadores ] [tipo] nomeDoAtributo [= valorInicial]; Exemplo: public int id; public char codigoCor = ‘A’; OBS: Caso um atributo de classe não seja inicializado, a JVM por default irá inicializá-la com seu respectivo valor default (veremos mais na próxima aula).
  • 24.
    Anatomia de umaclasse Java Declaração de métodos Sintaxe: [ modificadores ] [tipoRetorno] nomeDoMetodo([argumentos]) { } Exemplos: public void mostrarDados(String dados) { System.out.println(“dados:”+dados); } String recuperarNome() { return nome; }
  • 25.
    Definição de Nomes• Um nome pode ser composto por letras (minúsculas e/ou maiúsculas), dígitos e os símbolos _ e $. • Um nome não pode ser iniciado por um dígito (0 a 9). • Letras maiúsculas são diferenciadas de letras minúsculas. (Full Case Sensitive) • Uma palavra-chave da linguagem Java não pode ser um identificador.
  • 26.
    Aplicações Java Stand-Alone• O método main: public static void main(String args[]) { } • Toda classe Java que possuir o método acima, pode ser iniciada numa JRE exclusiva, no modo StandAlone • Nem todas as classes Java necessitam ter esse método
  • 27.
    Fazer o downloaddo JDK no site java . sun.com Deverá ser realizado o download de acordo com o sistema operacional de desenvolvimento. O processo de instalação, geralmente é realizado através de um wizard, onde não é necessário grandes interações. Após a instalação do Java, é necessário configurar o PATH para o subdiretório bin da instalação. A estrutura de diretórios da instalação do JDK é mostrada abaixo: Instalando e configurando o JDK jdk1.6.0_<version> ____________________|___________________ | | | | | | | | | | | | | bin lib | demo | | | | LICENSE | | | jre | | COPYRIGHT | __|__ | README.txt include | | readme.html bin lib
  • 28.
    Configurando PATH – Adicionar o diretório de instalação do Java seguido do subdiretório bin. PATH=C:\Arquivos de programas\Java\jdk1.6.0_02\bin; %PATH% (verificar o “;” depois do bin) Iniciar->Painel de Controle->Sistema Aba “Avançado” Botão “ Variáveis de Ambiente”
  • 29.
    Testando Iniciar->Executar...-> cmdDigitar: java –version Verifica a versão da JVM javac –version Verifica a versão do compilador Tela de sucesso: Tela de fracasso: (verifique o PATH) Tela de fracasso: (verifique o PATH e se você baixou a JDK e não a JRE)
  • 30.
    Criando um programaJava Criar um arquivo com extensão (.java) em um editor de texto. O arquivo deve possuir o mesmo nome da Classe. Exemplo (menor classe possível em Java): class Teste { } Salvar o arquivo como “Teste.java” Cuidado com maiúsculas e minúsculas! Java é “case sensitive”! “ Teste.java” é diferente de “teste.java” class Teste { é diferente de class teste { } }
  • 31.
    Exercício: Hello World(Windows) • Criar um diretório C:\java e dentro dele: • Criar um arquivo de nome “HelloWorld.java” contendo: class HelloWorld { public static void main(String args[]) { System.out.println(“Hello Java World!”); } } • Abrir uma janela DOS (Iniciar -> Executar... -> cmd) • Compilar o arquivo e arrumar eventuais falhas de programação que possam ocorrer durante o processo: javac HelloWorld.java • Verificar se foi criado o arquivo .class correspondente ( HelloWorld.class ). • Iniciar a JVM executando o método main da classe: java HelloWorld
  • 32.
    Exercícios Dados osarquivos: Teste1.java Teste2.java Teste3.java Teste4.java Teste5.java Compile Conserte os erros de compilação se existirem Execute Conserte os erros de execução se existirem
  • 33.
    Exercício em casa(Valendo nota). • Envie um e-mail para [email_address] até às 17h da quarta-feira dia 13/08/2008 respondendo: “ Qual a importância de se escrever um código claro e legível?” • Baixe e instale a JDK 6. • Refaça os exercícios da aula. • Com a JDK 6 instalada, compile e execute a classe Mensagem.java • Não tente entender todo o programa agora, apenas exercite a compilação e execução. • Envie a saída do programa para fkimura@yahoo.com até as 17h00 do dia 13/08/2008
  • 34.
    Exercício em casa(Valendo nota). • Com a JDK 6 instalada, compile e execute a classe Mensagem.java • Não tente entender todo o programa agora, apenas exercite a compilação e execução. • Envie a saída do programa para fkimura@yahoo.com até as 17h00 do dia 13/08/2008