Class of ?

Mitähän class of tarkoittaa noin yleisesti ottaen?

Esimerkiksi alla olevasta linkistä löytyy muoto class of TWSocket;
http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=4500000000000646&posting=22000000035469438
1263
Äänestä

Muut lukivat myös

Vastaukset 1

Vanhimmat

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.

Äänestä

Kommentoi aloitusta


Olioita kehässä kirjoitti:

Mitähän class of tarkoittaa noin yleisesti ottaen?

Esimerkiksi alla olevasta linkistä löytyy muoto class of TWSocket;
http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=4500000000000646&posting=22000000035469438

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu