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