Class of ?

Olioita kehässä

1

258

    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. Joensuun kaupunki levittelee tonttitietoja Keskisuomalaiselle

      Sähköposteja ja tonttitietoja levitellään mm. Pasi Koivumaalle
      Joensuu
      19
      2600
    2. Oletko nainen alkanut kammoamaan minua

      Sinua ei näy eikä kuulu, ja ilmeisesti kiertelet tilanteita. Oletko huomannut, että olet vieläkin ajatuksissani luvattom
      Ikävä
      67
      1659
    3. Tiesitkö tätä ex-miehistä? Noriko Salo jysäytti yllätyspaljastuksen

      Noriko Salo ja ex-F1 kuski Mika Salo olivat naimisissa v. 1999-2022. Kirsi Salon ex-mies puolestaan on muusikko Sammy A
      Kotimaiset julkkisjuorut
      7
      1607
    4. Saako 60 v vielä töitä? Arto Nyberg puhuu suoraan elämästä ilman töitä

      Arto Nyberg täyttää tänään 60 v. Onnea! Nyberg totuttiin näkemään suoran haastatteluohjelman kapteenina vuodesta toise
      Maailman menoa
      112
      1579
    5. Kuka? Riehui valtuuston kokouksessa tänään ?

      Onko puolangan puolesta porukkaa. Vaikuttaa siltä. Sairasta.
      Puolanka
      47
      1503
    6. Huh, huh! Sofia Belorf ei ole itse pessyt hiuksiaan kolmeen vuoteen

      Sofia Belorf elää ökyelämää Dubaissa. Sofian arjessa kulta, raha ja luksus ovat vahvasti läsnä. Luksuselämään tottuneell
      Kotimaiset julkkisjuorut
      91
      1434
    7. Toivoisitko Rakas vielä?

      Haluaisitko vielä? Uskoisin osaavani näyttää sinulle, kuinka ainutlaatuinen nainen olet.
      Ikävä
      68
      1356
    8. Keskustelua kasteesta

      You tubessa kaksi pappia keskustelivat kasteesta ja kritisoivat raamatullista uskovien kastetta. Toinen heistä yritti
      Kaste
      400
      1214
    9. Ihan pieni näkeminen vaan

      👋 ja minä olisin valmis jo vaikka mihin sun kanssa. Nämä on näitä.. 🤫🫣😘💥
      Ikävä
      31
      1137
    10. En haluaisi kaiken kuihtuvan pois

      ilman, että olemme voineet jutella rauhassa kasvotusten... Mutta mistä ihmeestä löydän sinut?
      Ikävä
      52
      1096
    Aihe