Class of ?

Olioita kehässä

1

208

    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. Ja taas ammuttu kokkolassa

      Kokkolaisilta pitäisi kerätä pois kaikki ampumaset, keittiöveitset ja kaikki mikä vähänkään paukku ja on terävä.
      Kokkola
      62
      5821
    2. Mitä siellä ABC on tapahtunut

      Tavallista isompi operaatio näkyy olevan kyseessä.
      Alajärvi
      115
      5030
    3. Helena Koivu on äiti

      Mitä hyötyä on Mikko Koivulla kohdella LASTENSA äitiä huonosti . Vie lapset tutuista ympyröistä pois . Lasten kodista.
      Kotimaiset julkkisjuorut
      410
      2992
    4. Ovatko naiset lopettaneet sen vähäisenkin vaivannäön Tinderissa?

      Meinaan vaan profiileja selatessa nykyään valtaosalla ei ole minkäänlaista kirjoitettua tekstiä siellä. Juuri ja juuri s
      Nettideittailu
      96
      1475
    5. Suomi vietiin Natoon väärin perustein. Viides artikla on hölynpölyä. Yksin jäämme.

      Kuka vielä uskoo, että viides artikla takaa Suomelle avun, jos Suomeen hyökätään. Liikuttavasti täällä on uskottu ja ved
      Maailman menoa
      341
      1146
    6. Et ilmeisesti aio enää ikinä olla tekemisissä

      Että näinkö se menee
      Ikävä
      65
      981
    7. Kuvaile elämäsi naista

      Millainen hän on? Mikä tekee hänestä sinulle erityisen?
      Ikävä
      29
      968
    8. Sydämeni on sinun luona

      Koko ajan. Oli ympärilläni ketä oli niin sinä olet vain ajatuksissa ja tunteissa. En halua muiden kosketusta kuin sinun
      Ikävä
      46
      896
    9. Trump ja Venäjä

      Huomasitteko muuten... Käytännössä ainoat valtiot, joille Trump EI eilen asettanut typeriä tariffejaan, olivat Venäjä ja
      Maailman menoa
      109
      877
    10. Jatkuva stressitila

      On sinun vuoksesi kun en tiedä missä mennään mutta tunteeni tiedän ainoastaan
      Ikävä
      52
      849
    Aihe