Class of ?

Olioita kehässä

1

216

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Mika0800

      Class of = luokkatyyppityyppi

      siis:

      kun esimerkiksi:

      procedure NaytaKokonaisluku(I:Integer);
      begin
      ShowMessage('kokonaisluvun arvo on ' IntToStr(I) );
      end;

      voit kutsua tätä näin:

      NaytaKokonaisluku(3);
      NaytaKokonaisluku(5);

      Jos kuitenkin et etukäteen tiedä, minkä luvun haluat näyttää, tarvitset muuttujan:

      var
      K : Integer;

      jolloin voit näyttää muuttujan K sisältämän kokonaisluvun näin:

      NaytaKokonaisluku(K);

      aivan vastaavasti:

      Jos esim. olet määritellyt luokat:

      TKuvio = class(TGraphicControl)
      end;

      TKolmio = class(TKuvio)
      end;

      TNelio = class(TKuvio)
      end;

      TYmpyra = class(TKuvio)
      end;

      Voit luoda olion esim. näin:

      var
      Kuvio1 : TKuvio;

      begin
      // joko -tai (ei kannata luoda useita olioita ja ylikirjoittaa muuttujan vanhaa sisältöä

      Kuvio1 := TKolmio.Create(Self);
      Kuvio1 := TNelio.Create(Self);
      Kuvio1 := TYmpyra.Create(Self);


      end;

      mutta entä, jos et tiedä etukäteen, mitä kuviota olet luomassa ?

      Aivan kunten Integer määrittelee tyypin, johon voi tallentaa kokonaisluvun, niin Class of -rakenteella määritellään tyyppi, johon voi tallentaa luokan tyypin:

      TKuvioTyyppi = class of TKuvio;

      ja kun on määritelty tyyppi, seuraavaksi tarvitaan ko. tyyppiä oleva muuttuja,

      var
      KuvioLuokka : TKuvioTyyppi;

      KuvioLuokka := TKolmio;

      TAI

      KuvioLuokka := TNelio;

      TAI

      KuvioLuokka := TYmpyra;

      kun muuttujan KuvioLuokka arvo on asetettu (ja huom: sitä voi myöhemmin muuttaa koska tahansa), voidaan sitä käyttää kiinteän tyypin asemesta:

      sensijaan, että:

      Kuvio1 := TKolmio.Create(Self);

      voidaan yhtä hyvin:

      Kuvio1 := KuvioLuokka.Create(Self);

      tässä siis luodaan olio, jonka tyyppi on tallennettu muuttujaan KuvioLuokka, sensijaan, että se olisi kiinteästi esim. TKolmio tai TYmpyra.

      Eli aivan, kuten Integer on kokonaislukuTYYPPI, ja String on merkkijonoTYYPPI, niin TKuvioTyyppi on luokkatyyppiTYYPPI, johon siis tallennetaan luokkatyyppejä.

      Lisäksi, koska tässä on määritelty:

      TKuvioTyyppi = class of TKuvio;

      niin muuttujaa, joka on määritelty olevan tyyppiä ä TKuvioTyyppi (kuten esim. KuvioLuokka) voidaan tallentaa vain tyyppiä TKuvio tai tyyppejä, jotka on (suoraan tai epäsuoraan) periytetty luokasta TKuvio.

      Jos siis määrittelet:

      TVarillinenKolmio = class(TKolmio)

      niin vot asettaa myös:

      KuvioLuokka := TVarillinenKolmio

      sensijaan em. määrityksin yritys asettaa:

      KuvioLuokka := TStringlist;

      aiheuttaa kääntäjän virheilmoituksen, sillä vaikka TStringlist on luokkatyyppi, se EI periydy tyypistä TKuvio.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa

      En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod
      Ikävä
      22
      5124
    2. Huomenta ihana

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      25
      4278
    3. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      27
      2441
    4. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      34
      2234
    5. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      1988
    6. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      15
      1908
    7. En ole koskaan kokenut

      Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka
      Ikävä
      19
      1587
    8. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      12
      1521
    9. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      21
      1237
    10. Kerranki asiat oikein

      Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa
      Haapavesi
      10
      1164
    Aihe