38
Inteligência Artificial Reinaldo Bianchi FEI - Elétrica 2000

Documentv

Embed Size (px)

DESCRIPTION

java http://www.dm.ufscar.br/~waldeck/curso/java/

Citation preview

Page 1: Documentv

Inteligência Artificial

Reinaldo Bianchi

FEI - Elétrica

2000

Page 2: Documentv

3a. Aula

Programação Java Básica

Page 3: Documentv

Vimos na aula passada

Comandos de Decisão Comandos de Repetição Exercícios

Page 4: Documentv

Nesta aula veremos:

Programação Orientada a Objetos– Classes – Objetos– Atributos– Métodos– Variáveis locais e globais

Exercícios

Page 5: Documentv

Programação Orientada a Objetos

Em Java tudo é um objeto. Características da POO:

– Abstração– Modularidade– Encapsulamento – Reutilização de Componentes

Page 6: Documentv

Objetos e Classes de Objetos

Page 7: Documentv

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.

Page 8: Documentv

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.

Page 9: Documentv

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

Page 10: Documentv

Classe Empregado (UML)

Employee

name: stringaddress: stringdateOfBirth: DateemployeeNo: integersocialSecurityNo: stringdepartment: Deptmanager: Employeesalary: integerstatus: {current, left, retired}taxCode: integer. . .

join ()leave ()retire ()changeDetails ()

Page 11: Documentv

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

Page 12: Documentv

Classes - Exemplo

moveForward()moveBackward()turnLeft()turnRight()stop()

positionX : floatpositionY : floatdirection: short

Robot

Page 13: Documentv

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

Page 14: Documentv

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).

Page 15: Documentv

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

Page 16: Documentv

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.

Page 17: Documentv

Métodos - Exemplo

Sem retorno de valor, sem parâmetrosvoid limpaTela() {

} Retorna um valor inteiro, com um

parâmetroint quadrado (int x) {

return ( x * x);

}

Page 18: Documentv

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);

...

Page 19: Documentv

Usando um método: invocação de fora da classe Retorna um valor inteiro, com um

parâmetro

...

z = objeto.quadrado (10);

...

Page 20: Documentv

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.

Page 21: Documentv

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

Page 22: Documentv

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.

Page 23: Documentv

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.

Page 24: Documentv

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) ;

Page 25: Documentv

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 + Bi

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

Page 26: Documentv

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!

Page 27: Documentv

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

Page 28: Documentv

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).

Page 29: Documentv

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!

Page 30: Documentv

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

Page 31: Documentv

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.

Page 32: Documentv

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.

Page 33: Documentv

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.

Page 34: Documentv

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.

Page 35: Documentv

Exemplo de construtor

Ver programa Construtor.java

Exercício: use o ”for” para criar 10 pedras.

Page 36: Documentv

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, ...)

Page 37: Documentv

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.

Page 38: Documentv

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