Agentti-sovelluskehyksen soveltuvuus esimerkiksi
Itse asiassa tarkemmin katsoessani uudelleenmääriteltäviä luokkia oli
sentään muutama lisää. Lisäinformaatiota löytyy tietenkin itse gradusta. Sovelluskehys koostuu
osasovelluskehyksistä, joita on tässä tarkasteltu erikseen.
Tapahtumaohjauspalvelu
Tukee tapahtumaohjattua (event-based) ohjelmointia. Sallii ohjelmoijan
määritellä tapahtumia kuvaavia luokkia sekä määritellä tapahtumille
käsittelijöitä.
Uudelleenmääriteltäviä luokkia
- Event
- Mallintaa tapahtuman. Sisältää tapahtumaan liittyvän informaation.
Tämän luokan olio välitetään tapahtuman käsittelijälle tapahtuman
lauettua. Luokassa määritellään myös milloin tällainen tapahtuma on
lauennut.
- EventRequest
- Tapahtumankäsittelijä ilmoittaa kiinnostuksensa tapahtumaan
luomalla tämän luokan olion (vastaa rekisteröintiä). Täytyy
uudelleenmääritellä koska eri tapahtumat vaativat rekisteröinnin
yhteydessä erilaista tarkentavaa tietoa (esim tiedostokuvaaja tai
signaalin numero).
- EventReceiver
- Tapahtumankäsittelijä tehdään luomalla tästä luokasta aliluokka,
joka osaa käsitellä tapahtuman.
Suunnittelumalleja
- Singleton
- Tapahtumasilmukassa odottavaa Dispatcher-oliota pitää olla vain
yksi kappale, ja siihen täytyy päästä käsiksi globaalisti.
- Chain of Responsibilityn ja Factory Methodin yhdistelmä (tavallaan)
- EventRequest-oliot (siis EventRequest-luokan tai sen aliluokan
oliot) ovat listassa, ja kun jotain tapahtuu, käydään jokaiselta
kysymässä onko "sen" tapahtuma lauennut. "Kyllä"-vastauksena
annetaan tapahtumankäsittelijälle lähetettävä Event-olio, "ei" =
NULL. Poikkeaa tavanomaisesta CoR:ista sikäli että useampi olio voi
vastata myöntävästi, ja oliot itse eivät vie kyselyä eteenpäin.
Huomio: Suunnittelumallista voi olla useita, toisistaan
vähän poikkeavia versioita. FREDissä pitäisi ilmeisesti olla
mahdollisuus määritellä suunnittelumallille eri variaatioita.
Tilakoneet
Sovelluskehys on tarkoitettu tilakoneiden määrittelyyn. Tilakonetta,
tilaa, rakenteista tilaa ja siirtymää vastaavat omat luokkansa.
Sovelluskehyksen huonoin puoli on että se tullaan korvaamaan erillisellä
tilakonekielellä (tehokkaampaa ja helppokäyttöisempää).
Uudelleenmääriteltäviä luokkia
- State
- Tila-luokassa määritellään tilalle enter- ja exit-toiminnot.
Jokaiselle tilalle ei tarvitse tehdä omaa aliluokkaa, vain niille
joiden enter- ja exit-toiminnot eroavat toisistaan.
- NestedState
- Rakenteinen tila. Jokaiselle rakenteiselle tilalle täytyy
määritellä vastaava luokka jossa suoritetaan sen sisältämien
tilojen luominen.
- Transition
- Siirtymä. Jokaiselle siirtymälle ei välttämättä tarvita uutta
luokkaa, mutta jos siirtymään liittyvää toimintaa halutaan muuttaa,
täytyy uusi luokka määritellä.
Suunnittelumalleja
- Composite
- Rakenteiset tilat on toteutettu Composite-suunnittelumallin avulla.
- Chain of responsibility (tavallaan)
- Jokaiseen tilaan on liitetty lista sen siirtymistä, ja tullutta
tapahtumaa tarjotaan vuorollaan jokaiselle, kunnes jokin hyväksyy
sen (kukaan ei hyväksy => virhekäsittely, tn. pelkkä tapahtuman
sivuuttaminen)
- State
- Tilakone-luokka tietysti käyttää State-suunnittelumallia.
Tiedonsiirtopalvelu
Uudelleenmääriteltäviä luokkia
- IXU eli tietoalkio
- Eri tyyppisille tietoalkioille määritellään omat aliluokat jossa
kuvataan kuinka tällainen tietoalkio haetaan verkosta. IXU:t voivat
olla rakenteisia.
Suunnittelumalleja
- Strategy
- Tietoalkio määrittelee hakustrategian (ks. yllä).
- Composite
- Rakenteiset IXU:t käyttävät (mahdollisesti, ei vielä kiinnitetty)
Composite-suunnittelumallia.
Välimuisti
Uudelleenmääriteltäviä luokkia
- Metadata
- Eri tyyppisillä välimuistialkioilla on erityyppistä metatietoa
(tiedon pituus, talletusaika, tallettaja, jne). Koska tietoa
käsitellään Metadata-olioiden avulla, täytyy Metadata-luokasta
määritellä uusia aliluokkia eri tietoalkiotyypeille.
Suunnittelumalleja
- -
-
Yhteenveto
Tilakonesovelluskehyksen mukaan ottaminen on kyseenalaista, sillä
"lopullisessa tuotteessa" sitä ei ole. Ongelma on kuitenkin sinänsä
mielenkiintoinen, ja väsäilen sitä varmaan vielä jonkin verran
. Sen mukaan ottaminen ei kuitenkaan
välttämättä ole järkevää, joten olen alla laittanut sulkuihin luvut
jossa tilakonesovelluskehys on mukana.
Uudelleenmääritettäviä luokkia: 5 (8)
Suunnittelumalleja: 5 (6)
- Factory Method
- Singleton
- Chain of Responsibility
- Strategy
- Composite
- (State)
Kuten näkyy, sovelluskehys ei ole kovin laaja. Sen vuoksi olen
edelleen sitä mieltä, että jokin laajempi sovelluskehys soveltuisi
paremmin pääasialliseksi case studyksi. Tätä voisi tietysti käyttää
myös.
- comments?