Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Vamos falar um pouco sobre OOP?
Message
 
À
24/01/2002 06:18:46
Information générale
Forum:
Visual FoxPro
Catégorie:
Programmation Orientée Object
Divers
Thread ID:
00609544
Message ID:
00609581
Vues:
11
Oi Breno,


Gostaria de saber mais sobre herança de implementação e interface ...


Vamos tentar...

Antes vamos só nivelar alguns conceitos, só para a explicação ficar coerente
com os termos:

CLASSE
Modelo para a criação de objetos. Onde são definidos os atributos (variáveis de instância) e os métodos que o objeto, após instanciado, terá.

CLASSE ABSTRATA
Uma classe que possui um ou mais métodos que não tem implementação, ou seja, o método é declarado mas não tem código no seu corpo. Resumindo, você define só a assinatura do método. Veja que podemos ter métodos não abstratos na classe abstrata, mas basta que tenhamos UM único método abstrato para que a classe seja dita abstrata. OBS.: O VFP NÃO reforça este conceito, mas ele pode ser simulado...

INTERFACE
A mesma coisa que uma classe que tem TODOS os métodos abstratos. Assim, numa interface só defino as assinaturas dos métodos e não a implementação dos mesmos. Veja que uma interface é "burra" por assim dizer, ou seja, ela só tem assinaturas de métodos e não a implementação deles. Então, para que serve isso? Para definir contratos entre classes.

HERANÇA
Conceito de OOP onde uma classe é criada a partir de outra, reaproveitando métodos e atributos que já tenham sido definidos na classe base.

Veja o exemplo a seguir (considerando o VFP 7.0):

1) Vamos definir uma classe PESSOA
DEFINE CLASS Pessoa
  Nome = ""

  FUNCTION Falar(tcFrase as String) as String
    RETURN LOWER(tcFrase)
  ENDFUNC

  FUNCTION Gritar(tcFrase as String) as String
    RETURN UPPER(tcFrase)
  ENDFUNC

ENDDEFINE
2) Vamos agora definir uma classe PROGRAMADOR que herda de PESSOA:
DEFINE CLASS Programador as Pessoa

  FUNCTION Trabalhar() as Void
    * Loop infinito
    DO WHILE .T.
    ENDDO
  ENDFUNC

ENDDEFINE
3) Agora vamos criar um objeto da classe PROGRAMADOR:
loMaluco = CREATEOBJECT("Programador")
?loMaluco.Falar("Eu Sou programador...")
?loMaluco.Gritar("VFP e demais!!!")
Notou que criei um objeto PROGRAMADOR mas usei os métodos "Falar" e "Gritar" que foram definidos na classe PESSOA? Isso é HERANÇA DE IMPLEMENTAÇÃO. Eu não precisei programar estes métodos na classe PROGRAMADOR. Eles foram implementadas na classe PESSOA e o VFP herdou o comportamento (implementação delas).

Para fazer a diferença entre herança de IMPLEMENTAÇÃO e de INTERFACE: Se lembra que uma interface é uma classe que tem métodos que não podem ter implementação? Pois é, está respondida a pergunta. Como eu não posso escrever código em um método que faz parte de uma interface eu teria que reescrever estes métodos na classe PROGRAMADOR!

OBS.: O VFP só reconhece o conceito de interfaces a partir da versão 7.0.

Um abraço!
-----
Fabio Vazquez
http://www.fabiovazquez.com
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform