Interface gráfica_ by pptfiles

VIEWS: 60 PAGES: 26

									Inteligência Artificial

Reinaldo Bianchi FEI - Elétrica 2000

5a. Aula
Reutilização de programas em Java

Vimos na aula passada


Construção de interfaces gráficas em Java:
– Componentes – Eventos – Ações – Entrada e Saída



Exercícios

Nesta aula veremos:
  

Como reutilizar programas existentes? Composição Herança em Java:
– Conceitos básicos – Sintaxe – Exemplos



Polimorfismo

Reutilização (ou Reuso)




Reutilização de código é o “Santo Graal” da programação atualmente. Diversas maneiras:
– Cópia direta do código (método porco). – Composição (bibliotecas de funções) – Herança (linguagens Orientadas a Objetos).

Reutilização via Composição




Permite a reutilização de programas, criando objetos dentro de novas classes. Maneira mais simples de reutilização de programas:
– reutiliza o código.



É a maneira pela qual já utilizamos os componentes gráficos (botões, labels, ...) definidos na linguagem Java.

Composição = “Tem um?”
  

Quando utilizar a composição? Regra: realizar a pergunta “Tem um?” Exemplos:
– Gorgonzola tem Mofo? – Carro tem Volante?



Para a composição utilizamos uma instância de uma classe. Sintaxe:
– String nome = new String (“Reinaldo”);

Exemplo de Composição
public class RoboticTeam { Robot C3-PELE = new Robot(); Robot R2D-DUNGA = new Robot(); Robot ROBOMÁRIO = new Robot();

Objetos

void ataque() {
} void defesa() { } }



Ver exemplo Bath.java

Herança


 

 

Característica básica das linguagens orientadas a objetos. Permite a reutilização de programas. Permite a criação de novas classes (derivadas) com base em classes já existentes (debugadas e testadas). Permite a generalização das idéias. Quando usada na Análise do Projeto, cria sistemas mais organizados, ...

Herança (II)








Cria uma nova classe como uma extensão de uma classe já existente. A nova classe é um tipo da classe já existente. Permite utilizar a forma da classe existente, adicionando código, sem destruir a classe existente. A nova classe herda os atributos e os métodos da classe existente.

Exemplo de Herança
Employee

Ma nager budgetsControlled dateAppointed

Project Manager define Programmer o método: projects() project progLanguage e herda: dateAppointed() budgetControlled()
Strategic Ma nag er responsibilities

Project Ma nag er projects

De pt. Ma nager dept

Herança = “É um?”
  

Quando utilizar a herança? Regra: realizar a pergunta “É um?” Exemplos:
– Gorgonzola é um Queijo? – Carro é um Veículo? – Aluno é uma Pessoa? – Gerente é um Empregado?

Sintaxe


Para criar uma classe herdeira de outra:

class B extends A { ... }




A classe B é uma sub-classe de A A classe A é a super-classe de B (ou classe base)

Herança Permite


 



Herdar os atributos e os métodos da super-classe. Definir novos atributos e métodos. Modificar um método definido na superclasse. Que um método da sub-classe utilize um método da super-classe.

Exemplo
class Cleanser { String s = new String(”Cleanser"); public void dilute() {} public void scrub() {} } public class Detergent extends Cleanser { public void scrub() {} // Modifica public void foam() {} // Adiciona }


Ver Exemplo Detergente.java

Usando métodos das superclasses


Para utilizarmos um método de uma super-classe utilizamos a palavra chave super:

public void esfregar() { append(" Detergent.scrub()"); // Chamando o método da superclasse super.esfregar(); }

Dicas:






Em um grupo de classes relacionadas, coloque os atributos e métodos comuns na super-classe. Use a herança para criar sub-classes sem ter que repetir código. Herde somente da classe mais parecida com a que você precisa. Herdar classes maiores desperdiça memória e processamento.

Inicialização


Devemos inicializar todas as classes utilizadas em uma hierarquia.
– Ex: ao usar o Detergente, precisamos inicializar também o MaterialDeLimpeza





Para isso, fazemos uma “cascata” de construtores. Ver exemplos:
– Cartoon.java – Chess.java (construtores com argumentos)

Chamada do construtor da superclasse
class BoardGame extends Game { BoardGame(int i) { i = i * 2; super(i); // Chamada ... }

Modificadores de classes


Lembram-se que classes podem ser modificadas com palavras reservadas:
– public – abstract – final



Testem os modificadores abstract e final.

Exercícios


Defina (usando UML) a hierarquia de classe para os objetos:
– Ponto – Círculo – Cilindro

 

Implemente estas classes. Teste sua implementação.

Polimorfismo


  

Terceira característica essencial da programação Orientada a Objetos (após encapsulamento e herança). Separa o “o que” do “como”. Melhora a organização do código. Também chamado de “ligacão dinâmica” ou “ligação tardia”.

Polimorfismo: Idéia central






Definimos métodos com os mesmos nomes em diversas classes. Ao chamar um método, o programa decide automaticamente qual dos métodos existentes deve ser executado. Overloading x Overriding

Polimorfismo: Exemplo
Shape draw() erase()

Circle draw() erase()
Ver

Square draw() erase()

Line draw() erase()

exemplo Shapes.java

Exercício


Crie uma hierarquia para roedores:
– ratos – camundongos – hamsters...





Na classe base crie os métodos comuns aos roedores Use polimorfismo para definir comportamentos diferentes para estes métodos dependendo do tipo de roedor.

Interfaces
  



Interface == Abstract class nao poden ter nada alem da definicao class nome implements ver HorrorShow.java


								
To top