Inteligência Artificial Reinaldo Bianchi FEI - Elétrica 2000
1a. Aula Desenvolvimento de Software Orientado a Objetos: Java
Aula de Hoje Programação Orientada a Objetos: JAVA
Objetivos Apresentar a linguagem de Programação JAVA Primeiros programas em Java JBuilder Entrada e Saída de Dados
A Linguagem JAVA Criada pela Sun Microsystems nos anos 90 Linguagem originalmente desenvolvida para programar eletrodomésticos como vídeo-cassetes, torradeiras, etc, e por isso deveria ser: Independente de plataforma Simples, confiável e compacta
JAVA - Histórico 1991: a Linguagem Oak é projetada por James Gosling 1993: Com a explosão das redes, o projeto foi direcionado à aplicações Internet 1994: A linguagem Oak passa a se chamar Java
Principal Característica  JAVA é independente de plataforma. Isto significa que: um mesmo programa escrito em Java funciona em qualquer outro tipo de computador, independentemente de sua linguagem de máquina, e em qualquer outro sistema operacional   “ Escreva uma vez, execute em    qualquer lugar”
Outras características É uma linguagem de propósito geral com características modernas de programação: Orientada a objetos e fortemente tipada. Robusta. Sem ponteiros e alocação direta de memória. Com tratamento de exceções Concorrente.
Funcionamento Java Quando um programa  fonte  Java é compilado, ele é traduzido em uma linguagem de máquina especial, chamada  bytecode O  bytecode  não é executado diretamente por nenhum computador real, mas por uma  Máquina Virtual específica.
A Máquina Virtual Java A Máquina Virtual Java, ou  Java Virtual Machine (JVM)   é um programa que traduz dinamicamente o  bytecode  para a linguagem de máquina correspondente à plataforma em que ele está sendo executado Assim, cada tipo de computador possui sua própria  Java Virtual Machine
Funcionamento Java Compilador Java Programa em  bytecode Programa Java Interpretadores   específicos
Funcionamento detalhado
Java e a Internet (I) A Internet é uma grande aplicação da arquitetura cliente/servidor Servidores: softwares que provêm informação Clientes: softwares que buscam informação e, preferencialmente, realizam localmente alguma tarefa do sistema. A Web facilita a conexão mas limita as funções do cliente (páginas HTML)
Java e a Internet:  Applets   Java possibilita a construção de mini-programas -  Applets  - que podem ser executados no  browser  do cliente: Applets  são automaticamente carregados da rede, dispensando a instalação de softwares no cliente. Os  Applets  são incorporados em páginas HTML adicionando: animações, sons, entrada/consistência de dados, acesso a bancos de dados, segurança, ...
Controle dos  Applets :  Java  Sandbox Applets  geram um problema de segurança ... Um mecanismo chamado  Sandbox  limita o que um  Applet  Java pode fazer. Como o programa é executado dentro de um ambiente controlado, isto dá segurança ao sistema.
Sandbox: Funcionamento A sandbox é composta de três mecanismos de defesa: Byte Code Verifier Class Loader Security Manager Os mecanismos de defesa executam verificações em tempo de carga e em tempo de execução para restringir a atuação do  Applet.
Restrições ao funcionamento de um  Applet  (I) Quanto aos arquivos NÃO se pode: Ler, Escrever, Apagar e Renomear arquivos no sistema cliente. Criar um diretório no sistema cliente. Listar o conteúdo de um diretório. Verificar se um arquivo existe. Obter informações sobre um arquivo, como tamanho, tipo e data da última modificação.
Restrições ao funcionamento de um  Applet (II) Quanto ao Acesso à Rede NÃO se pode: Criar uma conexão com qualquer outro computador que não seja o computador que originou a  Applet. Esperar ou aceitar conexões em qualquer porta no sistema cliente. Obter o username do usuário ou o nome do seu diretório home.
Restrições ao funcionamento de um  Applet (III) Propriedades do sistema: Executar qualquer programa no sistema cliente usando o método Runtime.exec() Fazer com que o interpretador Java seja finalizado. Carregar dinamicamente bibliotecas no sistema cliente usando os métodos load() ou loadLibrary() das classes Runtime ou System.
Porque Java? Adequado a Internet: A Internet é composta de computadores heterogêneos, portanto ser independente de plataforma é importante. A possibilidade de executar um programa diretamente de um browser diminui o custo da distribuição, instalação e atualização de programas Os mecanismos de segurança do Java permitem a execução segura de programas
Tipos de Programas Java Aplicações: Programas normais e autônomos São executados diretamente pela máquina virtual Não existem restrições de segurança Applets.
Programando em JAVA Criando programas Autônomos  (e não os  Applets )
Meu Primeiro Programa O primeiro programa agente nunca esquece: public class OlaMundo { public static void main(String[] args)  { System.out.println("Ola Mundo!"); } }
Detalhes... O Nome do arquivo deve ser o mesmo da definida na linha 1: OlaMundo.java A classe criada será chamada: OlaMundo.class A tela branca na parte de baixo é o interpretador JVM rodando.
Para esperar o término do programa: System.out.println("Tecle \"Enter\" para terminar."); try{ System.in.read(); } catch (Exception erro) { erro.printStackTrace(); }
Comentários em Java Em Java, comentários podem ser representados de duas formas: //  - Significa que o restante da linha é um comentário // Imprime mensagem /* */  - Significa que o texto entre /* e */ é um comentário /* A linha abaixo imprimirá na tela a mensagem Hello World */
Expressões Expressões avaliam (computam) o valor de uma seqüência de variáveis, valores, operadores e chamada de métodos. Exemplos: 2 2 * 4 a = 3 5 + 2 * 3 - a 2 * Math.sqrt(9)
Operadores Operadores para números e char: Relacionais: <  >  <=  >=  ==  != (result booleano) Aritméticos: +  -  *  /  %  (resultado numérico) ++  --    (incremento/decremento) & (and)  ^ (xor)  | (or) (para bits)
Operadores (II) Operadores lógicos: Booleanos: = =  !=  (resultado lógico) && (and)  || (or)  (resultado lógico) Atribuição: =  +=  -=
Variáveis Local onde as informações são armazenadas dentro de um programa. Uma variável tem este nome porque o seu valor pode mudar durante a execução do programa. Cada variável possui um  tipo   que define que tipos de valores ela é capaz de armazenar
Declaração de variáveis Para ser utilizada, uma variável deve ser primeiro  declarada Declarar uma variável significa criar um local para armazenar o seu valor Declaração em Java: int numDeSinalizadores = 0; Tipo da variável Valor Inicial Nome da variável
Tipos de dados primitivos Tipo  Tamanho  Valores Possíveis byte  8 bits  -128 a 127 short  16 bits  -32768 a 32767 int  32 bits  -2147483648 a 2147483647 long  64 bits -9223372036854775808 a ... float  32 bits  -10 38  a 10 38   double 64 bits  -10 308  a 10 308   char  8 bits  Qualquer caracter boolean  1 byte  true ou false
Exercício Variáveis É meio complicado fazer um exercício sobre variáveis sem ter entrada de dados no programa. Por isso, veremos agora...
Entrada de dados via teclado Interface gráfica é muito bom, mas existem casos onde necessitamos a entrada de dados diretamente via teclado: eletrônica embarcada (microondas, video, TV,...) JAVA não é muito bom para isso, pois prioriza interface gráfica.
Entrada de dados via teclado Definindo o dispositivo de entrada: BufferedReader teclado = new BufferedReader (new InputStreamReader (System.in)); Realizando a leitura do teclado: String nome = teclado.readLine(); Sempre lê uma string Precisa ter exceção “jogada”
“ Jogando” exceções Para usar a entrada via teclado precisamos definir que se algo der errado na leitura, este método retornará uma exceção:  public static void main(String[] args) throws java.io.IOException { // aqui vai o programa   }
Exemplo OlaFulano Ver exemplo OlaFulano.java
E para ler dados numéricos? JAVA só lê strings do teclado. Para ler um dado numérico é necessário ler a string e converter o valor para um número: Transformando string em int e float: int valorInteiro = Integer.parseInt(stringEntrada); float x = new Float(stringEntrada).floatValue();
Exercício Faça um programa que transforme uma temperatura em graus Celsius para Farenheight. Faça um programa que calcule quantos dias você viveu até hoje.
Conclusão A linguagem Java foi criada pela Sun Microsystems no início dos anos 90. Os programas escritos em Java podem ser executados em diferentes plataformas: “ Write Once - Run Anywhere” Um compilador java gera um código chamado Byte Code que é executado pela Máquina Virtual.
Conclusão (II) Os programas criados em  Java  podem ser aplicações normais ou  Applets. Applets  podem ser executadas diretamente em browsers. Entrada e saída via teclado Operadores e Variáveis
Exemplos de Applets A 3 dimensional Life System: http://www.biocrawler.com/reallife/ Visible Human: http://www.npac.syr.edu/projects/vishuman/VisibleHuman.html ou http://www.dhpc.adelaide.edu.au/projects/vishuman2/ Dicom Viewer: http://wwwusers.imaginet.fr/~sderhy/DicomApplet.html Projectile Motion: http://www.phys.virginia.edu/classes/109N/more_stuff/Applets/ProjectileMotion/jarapplet.html Voxel: http://www.javapowered.com/flight.html
Links Sociedade de Usuários Java (SouJava) www.soujava.com.br JavaWorld www.javaworld.com JavaSoft (Site oficial do Java) www.javasoft.com Thinking in Java (On-Line Book) http://www.eckelobjects.com/TIJ2/

ptt

  • 1.
    Inteligência Artificial ReinaldoBianchi FEI - Elétrica 2000
  • 2.
    1a. Aula Desenvolvimentode Software Orientado a Objetos: Java
  • 3.
    Aula de HojeProgramação Orientada a Objetos: JAVA
  • 4.
    Objetivos Apresentar alinguagem de Programação JAVA Primeiros programas em Java JBuilder Entrada e Saída de Dados
  • 5.
    A Linguagem JAVACriada pela Sun Microsystems nos anos 90 Linguagem originalmente desenvolvida para programar eletrodomésticos como vídeo-cassetes, torradeiras, etc, e por isso deveria ser: Independente de plataforma Simples, confiável e compacta
  • 6.
    JAVA - Histórico1991: a Linguagem Oak é projetada por James Gosling 1993: Com a explosão das redes, o projeto foi direcionado à aplicações Internet 1994: A linguagem Oak passa a se chamar Java
  • 7.
    Principal Característica JAVA é independente de plataforma. Isto significa que: um mesmo programa escrito em Java funciona em qualquer outro tipo de computador, independentemente de sua linguagem de máquina, e em qualquer outro sistema operacional “ Escreva uma vez, execute em qualquer lugar”
  • 8.
    Outras características Éuma linguagem de propósito geral com características modernas de programação: Orientada a objetos e fortemente tipada. Robusta. Sem ponteiros e alocação direta de memória. Com tratamento de exceções Concorrente.
  • 9.
    Funcionamento Java Quandoum programa fonte Java é compilado, ele é traduzido em uma linguagem de máquina especial, chamada bytecode O bytecode não é executado diretamente por nenhum computador real, mas por uma Máquina Virtual específica.
  • 10.
    A Máquina VirtualJava A Máquina Virtual Java, ou Java Virtual Machine (JVM) é um programa que traduz dinamicamente o bytecode para a linguagem de máquina correspondente à plataforma em que ele está sendo executado Assim, cada tipo de computador possui sua própria Java Virtual Machine
  • 11.
    Funcionamento Java CompiladorJava Programa em bytecode Programa Java Interpretadores específicos
  • 12.
  • 13.
    Java e aInternet (I) A Internet é uma grande aplicação da arquitetura cliente/servidor Servidores: softwares que provêm informação Clientes: softwares que buscam informação e, preferencialmente, realizam localmente alguma tarefa do sistema. A Web facilita a conexão mas limita as funções do cliente (páginas HTML)
  • 14.
    Java e aInternet: Applets Java possibilita a construção de mini-programas - Applets - que podem ser executados no browser do cliente: Applets são automaticamente carregados da rede, dispensando a instalação de softwares no cliente. Os Applets são incorporados em páginas HTML adicionando: animações, sons, entrada/consistência de dados, acesso a bancos de dados, segurança, ...
  • 15.
    Controle dos Applets : Java Sandbox Applets geram um problema de segurança ... Um mecanismo chamado Sandbox limita o que um Applet Java pode fazer. Como o programa é executado dentro de um ambiente controlado, isto dá segurança ao sistema.
  • 16.
    Sandbox: Funcionamento Asandbox é composta de três mecanismos de defesa: Byte Code Verifier Class Loader Security Manager Os mecanismos de defesa executam verificações em tempo de carga e em tempo de execução para restringir a atuação do Applet.
  • 17.
    Restrições ao funcionamentode um Applet (I) Quanto aos arquivos NÃO se pode: Ler, Escrever, Apagar e Renomear arquivos no sistema cliente. Criar um diretório no sistema cliente. Listar o conteúdo de um diretório. Verificar se um arquivo existe. Obter informações sobre um arquivo, como tamanho, tipo e data da última modificação.
  • 18.
    Restrições ao funcionamentode um Applet (II) Quanto ao Acesso à Rede NÃO se pode: Criar uma conexão com qualquer outro computador que não seja o computador que originou a Applet. Esperar ou aceitar conexões em qualquer porta no sistema cliente. Obter o username do usuário ou o nome do seu diretório home.
  • 19.
    Restrições ao funcionamentode um Applet (III) Propriedades do sistema: Executar qualquer programa no sistema cliente usando o método Runtime.exec() Fazer com que o interpretador Java seja finalizado. Carregar dinamicamente bibliotecas no sistema cliente usando os métodos load() ou loadLibrary() das classes Runtime ou System.
  • 20.
    Porque Java? Adequadoa Internet: A Internet é composta de computadores heterogêneos, portanto ser independente de plataforma é importante. A possibilidade de executar um programa diretamente de um browser diminui o custo da distribuição, instalação e atualização de programas Os mecanismos de segurança do Java permitem a execução segura de programas
  • 21.
    Tipos de ProgramasJava Aplicações: Programas normais e autônomos São executados diretamente pela máquina virtual Não existem restrições de segurança Applets.
  • 22.
    Programando em JAVACriando programas Autônomos (e não os Applets )
  • 23.
    Meu Primeiro ProgramaO primeiro programa agente nunca esquece: public class OlaMundo { public static void main(String[] args) { System.out.println(&quot;Ola Mundo!&quot;); } }
  • 24.
    Detalhes... O Nomedo arquivo deve ser o mesmo da definida na linha 1: OlaMundo.java A classe criada será chamada: OlaMundo.class A tela branca na parte de baixo é o interpretador JVM rodando.
  • 25.
    Para esperar otérmino do programa: System.out.println(&quot;Tecle \&quot;Enter\&quot; para terminar.&quot;); try{ System.in.read(); } catch (Exception erro) { erro.printStackTrace(); }
  • 26.
    Comentários em JavaEm Java, comentários podem ser representados de duas formas: // - Significa que o restante da linha é um comentário // Imprime mensagem /* */ - Significa que o texto entre /* e */ é um comentário /* A linha abaixo imprimirá na tela a mensagem Hello World */
  • 27.
    Expressões Expressões avaliam(computam) o valor de uma seqüência de variáveis, valores, operadores e chamada de métodos. Exemplos: 2 2 * 4 a = 3 5 + 2 * 3 - a 2 * Math.sqrt(9)
  • 28.
    Operadores Operadores paranúmeros e char: Relacionais: < > <= >= == != (result booleano) Aritméticos: + - * / % (resultado numérico) ++ -- (incremento/decremento) & (and) ^ (xor) | (or) (para bits)
  • 29.
    Operadores (II) Operadoreslógicos: Booleanos: = = != (resultado lógico) && (and) || (or) (resultado lógico) Atribuição: = += -=
  • 30.
    Variáveis Local ondeas informações são armazenadas dentro de um programa. Uma variável tem este nome porque o seu valor pode mudar durante a execução do programa. Cada variável possui um tipo que define que tipos de valores ela é capaz de armazenar
  • 31.
    Declaração de variáveisPara ser utilizada, uma variável deve ser primeiro declarada Declarar uma variável significa criar um local para armazenar o seu valor Declaração em Java: int numDeSinalizadores = 0; Tipo da variável Valor Inicial Nome da variável
  • 32.
    Tipos de dadosprimitivos Tipo Tamanho Valores Possíveis byte 8 bits -128 a 127 short 16 bits -32768 a 32767 int 32 bits -2147483648 a 2147483647 long 64 bits -9223372036854775808 a ... float 32 bits -10 38 a 10 38 double 64 bits -10 308 a 10 308 char 8 bits Qualquer caracter boolean 1 byte true ou false
  • 33.
    Exercício Variáveis Émeio complicado fazer um exercício sobre variáveis sem ter entrada de dados no programa. Por isso, veremos agora...
  • 34.
    Entrada de dadosvia teclado Interface gráfica é muito bom, mas existem casos onde necessitamos a entrada de dados diretamente via teclado: eletrônica embarcada (microondas, video, TV,...) JAVA não é muito bom para isso, pois prioriza interface gráfica.
  • 35.
    Entrada de dadosvia teclado Definindo o dispositivo de entrada: BufferedReader teclado = new BufferedReader (new InputStreamReader (System.in)); Realizando a leitura do teclado: String nome = teclado.readLine(); Sempre lê uma string Precisa ter exceção “jogada”
  • 36.
    “ Jogando” exceçõesPara usar a entrada via teclado precisamos definir que se algo der errado na leitura, este método retornará uma exceção: public static void main(String[] args) throws java.io.IOException { // aqui vai o programa }
  • 37.
    Exemplo OlaFulano Verexemplo OlaFulano.java
  • 38.
    E para lerdados numéricos? JAVA só lê strings do teclado. Para ler um dado numérico é necessário ler a string e converter o valor para um número: Transformando string em int e float: int valorInteiro = Integer.parseInt(stringEntrada); float x = new Float(stringEntrada).floatValue();
  • 39.
    Exercício Faça umprograma que transforme uma temperatura em graus Celsius para Farenheight. Faça um programa que calcule quantos dias você viveu até hoje.
  • 40.
    Conclusão A linguagemJava foi criada pela Sun Microsystems no início dos anos 90. Os programas escritos em Java podem ser executados em diferentes plataformas: “ Write Once - Run Anywhere” Um compilador java gera um código chamado Byte Code que é executado pela Máquina Virtual.
  • 41.
    Conclusão (II) Osprogramas criados em Java podem ser aplicações normais ou Applets. Applets podem ser executadas diretamente em browsers. Entrada e saída via teclado Operadores e Variáveis
  • 42.
    Exemplos de AppletsA 3 dimensional Life System: http://www.biocrawler.com/reallife/ Visible Human: http://www.npac.syr.edu/projects/vishuman/VisibleHuman.html ou http://www.dhpc.adelaide.edu.au/projects/vishuman2/ Dicom Viewer: http://wwwusers.imaginet.fr/~sderhy/DicomApplet.html Projectile Motion: http://www.phys.virginia.edu/classes/109N/more_stuff/Applets/ProjectileMotion/jarapplet.html Voxel: http://www.javapowered.com/flight.html
  • 43.
    Links Sociedade deUsuários Java (SouJava) www.soujava.com.br JavaWorld www.javaworld.com JavaSoft (Site oficial do Java) www.javasoft.com Thinking in Java (On-Line Book) http://www.eckelobjects.com/TIJ2/