F”r att b„ttre kunna hantera dessa gemensamma och olika karakt„ristika, anv„nder WPS "klasser". Den termen kommer fr†n objekt-orienterad programmering; en klass „r, s†-att-s„ga, ett abstrakt koncept, eller mall, f”r ett objekt. En klass „r d„rf”r inte synlig p† Skrivbordet, f”ljaktligen "existerar" den inte p† samma s„tt som objekt g”r, men den inneh†ller all information om egenskaper och m”jligheter hos ett objekt och den exekverbara koden f”r att f† ett objekt att utr„tta n†got.
Alla WPS klasser finns i
dynamic link libraries (DLL'er). Till exempel,
de flesta standard WPS klasserna finns i den stora PMWP.DLL filen i
\OS2\DLL katalogen. Alla &xwp; klasser finns i XFLDR.DLL i
&xwp;'s installationskatalog.
Nu „r varje objekt p† Skrivbordet en s†-kallad "instans" av n†gon klass. Namnen p† de flesta WPS klasser b”rjar med "WP": till exempel, en skrivare „r en instans av "WPPrinter" klassen, en mapp „r en av klassen "WPFolder", en datafil av "WPDataFile" och s† vidare.
Orsaken till kraften och flexibiliteten hos klasskonceptet „r att de olika klasserna kan vara nedstigande fr†n varandra. En s†dan avkomlingsklass kommer att „rva alla egenskaper och m”jligheter fr†n sin f”r„ldraklass. Det „r d„rmed m”jligt att g”ra vissa funktioner hos anv„ndarinterfacet mera abstrakt, i enlighet med den gamla principen: det b„sta s„ttet att hantera komplexitet „r abstraktion.
WPS inneh†ller m†nga klasser, vilken utg”r en v„ldigt t„nkv„rd hierarki ”ver arv. F”ljande utdrag fr†n WPS klasslista kanske kan g”ra den allm„nna strukturen mera ”versk†dlig (d„r linjerna representerar f”r„ldraskap):
WPObject ÃÄÄ WPAbstract ³ ÃÄÄ WPPrinter ³ ÃÄÄ WPProgram ³ ÀÄÄ WPShadow ÃÄÄ WPFileSystem ³ ÃÄÄ WPDataFile ³ ³ ÃÄÄ WPIcon ³ ³ ÀÄÄ WPProgramFile ³ ÀÄÄ WPFolder ³ ÃÄÄ WPDesktop ³ ÀÄÄ WPStartup ÀÄÄ WPTransientDu kan se att alla klasser „r arvingar till
WPObject,
vilken d„rf”r kallas "rotklassen" f”r alla WPS klasser. Denna implementerar alla
de funktioner som „r vanliga i Skrivbordsobjekt: som n„mnts tidigare, t.ex. &popmenu;er
och notb”cker med egenskaper. D„remot, „r WPObject klassen alldeles f”r abstrakt f”r att
f”rekomma som instanser: den h„r klassen implementerades endast f”r att ha andra
„rvande klasser. Objekt av den h„r klassen skulle inte fungera.
WPObject har endast tre arvingeklasser. Alla dessa klasser „r -- som WPObject -- endast avsedda att vara abstrakta f”r„ldraklasser, av vilka inga objekt skulle existera direkt.
WPAbstract „r en allm„n f”r„ldraklass f”r s†-kallade "abstrakta"
objekt, m.a.o. de objekt som inte existerar fysiskt p† disk, utan endast lagrar sina data
i OS2.INI. De mest v„lk„nda exemplen f”r detta „r klasserna WPPrinter
f”r skrivarobjekt, WPProgram f”r programobjekt, och WPShadow f”r
skuggor. Alla dessa objekt kan f”rekomma i mappar, men „r inte synliga om du skriver
DIR vid en kommandoprompt, till exempel.
WPFileSystem „r en allm„n superklass f”r objekt
vilka existerar fysiskt i ett filsystem p† en enhet. Det finns tv† subtyper:
mappar (WPFolder klass) och datafiler (WPDataFile).
I sin tur, finns det †tskilliga subklasser av WPDataFile, som WPIcon f”r
ikonfiler och WPProgramFile f”r programfiler (exekverbara, vanligtvis med
.EXE „ndelsen). Alla datafiler f”r vilka det inte existerar n†gra fler
specifika subklasser „r instanser av WPDataFile.
WPTransient anv„nds av WPS f”r objekt vilka inte
beh”ver spara sina data alls, utan existerar endast tempor„rt f”r att representera
n†got. Exempel p† det „r utskriftsjobb i ett skrivarobjekt och alla devicer i
H†rdvaruhanteraren.
XFolder
klassen sj„lv byter ut WPFolder klassen f”r att implementera alla nya
mappfunktioner.
En s†dan utbytesklass m†ste alltid vara arvinge till den klass som den skall
byta ut; "utbyte" av klassen betyder d† att WPS alltid kommer att anv„nda utbytesklassen
n„r originalklassen normalt skulle ha anv„nds. Som ett resultat, om &xwp; „r installerad,
blir alla mappar p† ditt system inte l„ngre instanser av WPFolder, utan
av XFolder. Men eftersom XFolder „r en arvinge hos
WPFolder, „rvs standardmapparnas karakt„ristik och existerar fortfarande
p† ditt system.
Genom att anv„nda klassutbyten kan programmerare implementera nya funktioner f”r en
klass utan att i detalj beh”va k„nna till hur en klass fungerar internt. Detta „r ett
enast†ende och kraftfullt koncept, vilket „r o”vertr„ffat av andra operativsystem.
Om du ”ppnar &xwp;'s
"WPS Klasslista" objektet, kommer alla de installerade
klasserna p† ditt system att visas. Regelm„ssigt, kommer detta att vara mer „n 100 klasser,
vilka kommer att upptr„da i en tr„dstruktur. Genom att anv„nda &popmenu;er, kan du registrera
och byta ut klasser h„r och „ven avregistrera klasser och †ngra klassutbyten. Dessutom,
kan du f”rs”ka skapa ett objekt (vilket betyder: en instans) av m†nga klasser p†
ditt Skrivbord.
Var v„nlig och notera att du m†ste vara mycket f”rsiktig n„r du manipulerar WPS
klasslista. Genom att utf”ra en felaktig „ndring, kan du g”ra ditt system oanv„ndbart!