v

Post on 25-May-2015

596 views 2 download

description

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

Transcript of v

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)

Employee

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

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

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 : floatpositionY : floatdirection: short

Robot

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

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âmetrosvoid limpaTela() {

} Retorna um valor inteiro, com um

parâmetroint 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 + 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

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