Classes – Inheritance e Override – Abap

Publicado: 25 de fevereiro de 2014 em Abap

Inheritance (herança)

Programação orientada a objetos permite que classes possam herdar estados e comportamentos comuns usados de outras classes. Neste exemplo, bicicleta torna-se agora a superclasse de MountainBike. Na linguagem de programação, cada classe é permitido ter uma superclasse direta, e cada superclasse tem o potencial para um número ilimitado de subclasses.

Override

Métodos Override (substituição), em programação orientada a objeto, é um recurso de linguagem que permite que uma subclasse ou classe filha possa fornecer uma implementação específica de um método que já é fornecido por uma de suas superclasses ou classes pai.

A implementação Override das subclasses substitui a implementação na superclasse, fornecendo um método que tem o mesmo nome, mesmos parâmetros ou assinatura, e mesmo tipo de retorno como o método na classe pai.

Final e Abstract

Abap possui o conceito de classes e métodos finais, uma classe final não pode ter uma subclasse. Um método final não pode ser redefinido em uma subclasse. Eles concluem uma árvore de herança.

Um método abstrato é definido em uma classe abstrata e não pode ser implementado na classe. Em vez disso, ele é implementado em uma subclasse da classe. Classes abstratas não podem ser instanciadas.

Redefinition

É a instrução na qual cria um método override. A implementação da redefinição na subclasse obscurece a implementação original na superclasse.

Exemplo:

Utilizando o exemplo de classes anterior onde definimos e implementamos a classe ZBICICLETA no Class Builder vamos criar uma subclasse desta superclasse, para isto precisamos modificar o parâmetro da classe que por default no R/3 é marcado como uma classe final, siga os passos abaixo:

  1. Entre no Class Builder,  trasação SE24.
  2. Escolha a classe que criamos anteriormente ZBICICLETA e clique no botão Change.
  3. Na aba Properties, desmarque a opção Final, use como referencia a imagem abaixo:

FinalClass

Neste exemplo damos a classe BICICLETAMONTANHA todos os mesmos campos e métodos da classe bicicleta, e ainda permite que seu código se concentre exclusivamente sobre as características que a tornam única. Isso faz do código de suas subclasses fáceis de ler. Usamos métodos Override neste exemplo, para substituir o método BICICLETA da superclasse na subclasse.

No entanto, você deve tomar cuidado para documentar corretamente o estado e o comportamento que cada superclasse define, uma vez que o código não irá aparecer no arquivo de origem de cada subclasse.

Abap

*&---------------------------------------------------------------------*
*& Report  ZHERANCA
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Herança e Override
*&---------------------------------------------------------------------*

REPORT  ZHERANCA.

* Cria uma herança da classe ZBICICLETA

CLASS BICICLETAMONTANHA DEFINITION INHERITING FROM ZBICICLETA.

PUBLIC SECTION.

DATA:   marchas       TYPE STRING,
        amortecedores TYPE STRING,
        garrafa       TYPE STRING,
        gps           TYPE STRING.

METHODS BICICLETA REDEFINITION.

ENDCLASS.

CLASS BICICLETAMONTANHA IMPLEMENTATION.

METHOD BICICLETA.

CALL METHOD super->BICICLETA.

WRITE : / ' Marchas:', marchas.
WRITE : / ' Amortecedores:', amortecedores.
WRITE : / ' Garrafa:', garrafa.
WRITE : / ' Gps:', gps.

ENDMETHOD.

ENDCLASS.

* Cria Instancia da Classe Herdada
START-OF-SELECTION.
DATA BIKE1 TYPE REF TO BICICLETAMONTANHA.
CREATE OBJECT BIKE1.

* Propriedades (Atributos) da classe ZBICICLETA.

MOVE 'TRACK X100'       TO BIKE1->MODELO.
MOVE 'Fibra de Carbono' TO BIKE1->QUADRO.
MOVE 'Disco'            TO BIKE1->FREIOS.
MOVE 'Aluminio'         TO BIKE1->RODAS.

* Propriedades (Atributos) da classe BICICLETAMONTANHA

MOVE '18'              TO BIKE1->MARCHAS.
MOVE 'PRO III S'       TO BIKE1->AMORTECEDORES.
MOVE 'Aluminio 500 ml' TO BIKE1->GARRAFA.
MOVE 'Discovery PRO'   TO BIKE1->GPS.

* chama método OVERRIDE.

WRITE : / 'Bicicleta Montanha é uma herança da classe Bicicleta', / .

CALL METHOD BIKE1->BICICLETA.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s