Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 38 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (20)

Anzeige

Ähnlich wie v (20)

Anzeige

Aktuellste (20)

v

  1. 1. Inteligência Artificial Reinaldo Bianchi FEI - Elétrica 2000
  2. 2. 3a. Aula Programação Java Básica
  3. 3. Vimos na aula passada <ul><li>Comandos de Decisão </li></ul><ul><li>Comandos de Repetição </li></ul><ul><li>Exercícios </li></ul>
  4. 4. Nesta aula veremos: <ul><li>Programação Orientada a Objetos </li></ul><ul><ul><li>Classes </li></ul></ul><ul><ul><li>Objetos </li></ul></ul><ul><ul><li>Atributos </li></ul></ul><ul><ul><li>Métodos </li></ul></ul><ul><ul><li>Variáveis locais e globais </li></ul></ul><ul><li>Exercícios </li></ul>
  5. 5. Programação Orientada a Objetos <ul><li>Em Java tudo é um objeto. </li></ul><ul><li>Características da POO: </li></ul><ul><ul><li>Abstração </li></ul></ul><ul><ul><li>Modularidade </li></ul></ul><ul><ul><li>Encapsulamento </li></ul></ul><ul><ul><li>Reutilização de Componentes </li></ul></ul>
  6. 6. Objetos e Classes de Objetos
  7. 7. Objetos e Classes de Objetos <ul><li>Objetos são entidades em um sistema de software que representam instâncias de entidades do mundo real e de algum sistema. </li></ul><ul><li>Classes são templates (formas) de objetos. Elas são usadas para criar objetos. </li></ul><ul><li>Classes podem herdar atributos e serviços de outras classes. </li></ul>
  8. 8. Objetos <ul><li>Um objeto é uma entidade que possui um estado e define um conjunto de operações que modificam este estado. </li></ul><ul><ul><li>O estado é representado por um conjunto de atributos. </li></ul></ul><ul><ul><li>As operações associadas com o objeto provêm serviços para outros objetos (clientes), os quais requisitam serviço quando alguma computação é necessária. </li></ul></ul>
  9. 9. Classes de objetos <ul><li>Objetos são criados de acordo com uma definição feita por uma classe de objetos . </li></ul><ul><li>Uma definição de classe serve como forma ( template ) para os objetos. Ela inclui declarações para todos os atributos e serviços que devem estar associados a um objeto daquela classe. </li></ul><ul><li>Classes são Fábricas de objetos </li></ul>
  10. 10. Classe Empregado (UML)
  11. 11. Classes <ul><li>Todo objeto pertence a uma classe. </li></ul><ul><li>Quando definimos uma classe de objetos, estamos na verdade definindo que propriedades e métodos o objeto possui, ou seja, que informações ele deve armazenar e que ações ele poderá executar. </li></ul><ul><li>Uma classe contém: </li></ul><ul><ul><li>atributos e métodos </li></ul></ul>
  12. 12. Classes - Exemplo moveForward() moveBackward() turnLeft() turnRight() stop() positionX : float positionY : float direction: short Robot
  13. 13. Declarando uma Classe <ul><li>public class Robot { </li></ul><ul><li>public float positionX = 0; </li></ul><ul><li>public float positionY = 0; </li></ul><ul><li>public short direction = 0; </li></ul><ul><li>void moveForward() { </li></ul><ul><li>// Comandos </li></ul><ul><li>} </li></ul><ul><li>void moveBackward() { </li></ul><ul><li>// Comandos </li></ul><ul><li>} </li></ul><ul><li>... </li></ul><ul><li>} </li></ul>Atributos Métodos
  14. 14. Atributos (ou Fields ) <ul><li>Atributos são variáveis em que o objeto armazena informações </li></ul><ul><li>Lembram: </li></ul><ul><ul><li>os campos de dados de um banco de dados </li></ul></ul><ul><ul><li>os campos de uma estrutura ( struct em C ou record em Pascal). </li></ul></ul>
  15. 15. Métodos <ul><li>Um método é uma seqüência de declarações e comandos executáveis encapsulados como se fossem um mini-programa. </li></ul><ul><li>Em outras linguagens, são chamados de: </li></ul><ul><ul><li>sub-rotinas </li></ul></ul><ul><ul><li>procedimentos </li></ul></ul><ul><ul><li>funções </li></ul></ul>
  16. 16. Métodos (II) <ul><li>Em Java, todo comando deve estar dentro de um método. </li></ul><ul><li>Métodos definem o que os objetos são capazes de fazer. </li></ul><ul><li>Características: </li></ul><ul><ul><li>Podem receber uma lista de parâmetros </li></ul></ul><ul><ul><li>Podem retornar um valor. </li></ul></ul>
  17. 17. Métodos - Exemplo <ul><li>Sem retorno de valor, sem parâmetros </li></ul><ul><ul><li>void limpaTela() { </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>Retorna um valor inteiro, com um parâmetro </li></ul><ul><ul><li>int quadrado (int x) { </li></ul></ul><ul><ul><li>return ( x * x); </li></ul></ul><ul><ul><li>} </li></ul></ul>
  18. 18. Usando um método: invocação de dentro da classe <ul><li>Sem retorno de valor, sem parâmetros </li></ul><ul><ul><li>... </li></ul></ul><ul><ul><li>limpaTela(); </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>Retorna um valor inteiro, com um parâmetro </li></ul><ul><ul><li>... </li></ul></ul><ul><ul><li>z = quadrado (10); </li></ul></ul><ul><ul><li>... </li></ul></ul>
  19. 19. Usando um método: invocação de fora da classe <ul><li>Retorna um valor inteiro, com um parâmetro </li></ul><ul><ul><li>... </li></ul></ul><ul><ul><li>z = objeto.quadrado (10); </li></ul></ul><ul><ul><li>... </li></ul></ul>
  20. 20. Objetos = Instância de uma Classe <ul><li>Ao definirmos uma classe, estamos apenas criando uma descrição do que objetos daquela classe são capazes de fazer. </li></ul><ul><li>A partir desta definição podemos criar objetos que serão capazes de realizar o que foi definido </li></ul><ul><li>O ato de criar objetos a partir de uma classe é chamado instanciação. </li></ul>
  21. 21. Exemplo de Objeto <ul><li>public class RoboticTeam { </li></ul><ul><li>Robot C3-PELE = new Robot(); </li></ul><ul><li>Robot R2D-DUNGA = new Robot(); </li></ul><ul><li>Robot ROBOMÁRIO = new Robot(); </li></ul><ul><li>void ataque() { </li></ul><ul><li>} </li></ul><ul><li>void defesa() { </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>Objetos
  22. 22. Comunicação entre Objetos (I) <ul><li>Conceitualmente, objetos se comunicam através da troca de mensagens. </li></ul><ul><li>Mensagens definem: </li></ul><ul><ul><li>O nome do serviço requisitado </li></ul></ul><ul><ul><li>A informação necessária para a execução do serviço </li></ul></ul><ul><ul><li>O nome do requisitante. </li></ul></ul>
  23. 23. Comunicação entre Objetos (II) <ul><li>Na prática, mensagens são implementadas como chamadas de função. </li></ul><ul><ul><li>Nome = o nome do procedimento. </li></ul></ul><ul><ul><li>Informação = a lista de parâmetros. </li></ul></ul><ul><ul><li>Requisitante = o procedimento que realizou a chamada. </li></ul></ul>
  24. 24. Exemplos de mensagens. <ul><li>// Call a method associated with a buffer // object that returns the next value // in the buffer </li></ul><ul><li>v = circularBuffer.Get () ; </li></ul><ul><li>// Call the method associated with a // thermostat object that sets the // temperature to be maintained </li></ul><ul><li>thermostat.setTemp (20) ; </li></ul>
  25. 25. Exercício <ul><li>Crie uma classe Termômetro, que possui um método que transforme graus Farenheigh em graus Celcius. </li></ul><ul><li>Um número complexo possui duas partes: a parte real e a imaginária: </li></ul><ul><ul><li>A + B i </li></ul></ul><ul><li>Crie uma classe de números complexos, com métodos de adição, subtração, encontrar o conjugado, ... </li></ul><ul><li>http://albert.math.uiuc.edu/complx1/complx1.htm </li></ul>
  26. 26. Variáveis Locais x Globais <ul><li>Variável Local: </li></ul><ul><ul><li>Definida dentro de um método. </li></ul></ul><ul><ul><li>Não pode ser usada por outros métodos. </li></ul></ul><ul><li>Variável Global: </li></ul><ul><ul><li>Definida como atributo de uma classe. </li></ul></ul><ul><ul><li>Pode ser usada dentro de qualquer método da classe e sub-classes. </li></ul></ul><ul><li>Regra: Sempre que possível use variáveis locais! </li></ul>
  27. 27. Modificadores de Acesso <ul><li>Palavras, que são colocadas na frente da definição de qualquer membro de uma classe (atributos ou métodos). </li></ul><ul><li>Especificam o acesso a uma definição em particular. </li></ul><ul><ul><li>“ friend ” </li></ul></ul><ul><ul><li>public </li></ul></ul><ul><ul><li>private </li></ul></ul><ul><ul><li>protected </li></ul></ul>
  28. 28. Tipos de modificadores <ul><li>“ friend ”: </li></ul><ul><ul><li>é o default , portanto, não precisa ser declarado. </li></ul></ul><ul><ul><li>Permite acesso a partir das classes do mesmo arquivo. </li></ul></ul><ul><li>public : </li></ul><ul><ul><li>Permite acesso irrestrito a partir de qualquer classe (mesmo que estejam em outros arquivos). </li></ul></ul>
  29. 29. Tipos de modificadores <ul><li>protected : </li></ul><ul><ul><li>Permite acesso a partir de uma classe que é herdeira de outra </li></ul></ul><ul><ul><li>Igual a “friendly” para classes da mesma “família”. </li></ul></ul><ul><li>private : </li></ul><ul><ul><li>Somente os membros da classe específica possuem acesso. </li></ul></ul><ul><ul><li>Acesso negado a todos os outros! </li></ul></ul>
  30. 30. Modificadores de Classes <ul><li>Palavras, que são colocadas na frente da definição das classes. </li></ul><ul><li>Especificam o acesso a uma classe (como foi feito aos métodos) </li></ul><ul><li>Classes podem ser apenas: </li></ul><ul><ul><li>public </li></ul></ul><ul><ul><li>abstract: não pode ser instanciada </li></ul></ul><ul><ul><li>final: não pode ter herdeiras </li></ul></ul>
  31. 31. Observação <ul><li>Em Java, pode haver apenas uma classe public por arquivo! </li></ul><ul><li>O nome do arquivo deve ser exatamente igual ao nome da classe public . </li></ul>
  32. 32. Inicialização e Finalização de objetos <ul><li>Construtores: </li></ul><ul><ul><li>Métodos usados para inicializar os atributos de um objeto recém criado </li></ul></ul><ul><li>Finalizadores (Destrutores): </li></ul><ul><ul><li>Métodos usados para “limpeza” ao final do uso do objeto. </li></ul></ul>
  33. 33. Características dos Construtores <ul><li>Possuem o mesmo nome da classe. </li></ul><ul><li>São chamados automaticamente quando declara-se um novo objeto. </li></ul><ul><li>Podem executar comandos. </li></ul><ul><li>Não retornam valores. </li></ul><ul><li>É um método “ public ”. </li></ul><ul><li>Pode haver mais de um construtor para uma mesma classe. </li></ul>
  34. 34. Exemplo - Construtores <ul><li>public Robot(int posX, int posY) { </li></ul><ul><li>street = posX; </li></ul><ul><li>avenue = posY; </li></ul><ul><li>} </li></ul><ul><li>public Robot() { </li></ul><ul><li>street = avenue = 0; </li></ul><ul><li>} </li></ul><ul><li>Se instanciarmos o objeto desta forma: </li></ul><ul><li>Robot karel = new Robot(2,3); </li></ul><ul><li>o primeiro construtor é executado. </li></ul>
  35. 35. Exemplo de construtor <ul><li>Ver programa Construtor.java </li></ul><ul><li>Exercício: use o ”for” para criar 10 pedras. </li></ul>
  36. 36. Finalizando um programa <ul><li>Para finalizar um programa, podemos criar uma função especial: </li></ul><ul><li>finalize(); </li></ul><ul><li>É executada quando o sistema realiza a “garbage collection” </li></ul><ul><li>É um método protected void </li></ul><ul><li>Usada para qualquer tipo de “limpeza” ao final da existência de um objeto (fechar arquivos, portas comm, ...) </li></ul>
  37. 37. Exercícios <ul><li>Crie um objeto círculo. Quais os seus atributos e métodos? Implemente todos os métodos. </li></ul><ul><li>Crie um objeto polígono. Quais os seus atributos e métodos? Implemente todos os métodos. </li></ul><ul><li>Implemente um objeto calculadora. </li></ul>
  38. 38. Exercícios para entregar na próxima aula: <ul><li>Exercícios de Programação do livro “Programming with Java” de John Hubbard: </li></ul><ul><li>Capítulo 5 (Métodos - página 98-100): </li></ul><ul><ul><li>5.1, 5.3, 5.7, </li></ul></ul><ul><li>Capítulo 6 (Classes páginas 84 - 85): </li></ul><ul><ul><li>6.1, 6.2, 6.20, 6.21, 6.22, 6.23, 6.24 </li></ul></ul>

×