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

v

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