### Pri Oberono

1. OBERON-2
2. Heredado en Oberono

#### OBERON-2

OBERON-2 estas Ĝeneralcela objektema programada lingvo, daŭriganta la tradicion de Pascal kaj MODULA. Ĝiaj ĉefaj trajtoj estas modulemo, disa tradukado, rigora tipkontrolo (ankaŭ intermodula), heredado.

Objekto en OBERON-2 estas variablo de abstrakta datumtipo; ĝi konsistas el siaj privataj datumoj (la stato de la objekto) kaj proceduroj traktantaj tiujn datumojn kaj ligitaj al la objekto (en aliaj objektemaj programlingvoj oni nomas tiajn procedurojn «metodoj»). Abstraktaj datumtipoj estas deklarataj kiel etendeblaj rikordoj (kp klaso; vd ĉe heredado). Ĝenerale, en OBERON-2 por la nocioj de la objektema programado estas uzata la terminaro de la ordonemaj programlingvoj, kio minimumigas la nombron de proksimsencaj nocioj.

En nia Leksikono estas uzata esperantigo de OBERON-2 kiun ni nomas Oberono; ĝi servas por ilustri elementojn de la objektema programado en stilo kongrua kun Paskalo. La plimulto de la vortosimboloj estas tiuj samaj, kiel en Paskalo, la esperantigon de la kromaĵoj donas la sekva tabelo:

       Angle: BY ELSIF EXIT  IMPORT  IS    LOOP MODULE POINTER RETURN TO
       Esp-e: PO ALISE ELIRU IMPORTO ESTAS MAŜO MODULO REF     REEN   LIMO

Vd anglalingvan priskribon.

#### Heredado en Oberono

                     (*------------ ĝeneralaĵoj: -------------*)

    TIPO figuro = RIKORDO x, y, areo: reela FINO;

         figRef = REF figuro;

    PROCEDURO (f: figRef)livaEkstremo():reela; (* --- metodo-funkcio *)
       STARTO REEN f.x;
       FINO livaEkstremo;

              (*------------- subklasoj, aŭ etendaĵoj: -------------*)

    TIPO triangulo = RIKORDO(figuro)
                        latero: reela;
                        klino,alfo,beto: angulo;
                     FINO;

         ortogramo = RIKORDO(figuro)
                        lateroA,lateroB: reelo;
                        oblikvo: angulo;
                     FINO;

         cirklo    = RIKORDO(figuro) diametro: reelo FINO;

         cirRef    = REF cirklo;

    PROCEDURO (c: cirRef)livaEkstremo():reela; (* --- metodo-funkcio*)
      STARTO
         REEN c.x-c.diametro/2.0;
      FINO livaEkstremo;