Liite 1. Tietorakenteiden muokkaus käyttöliittymissä

 

1. Käyttöliittymän tarjoamat toiminnot tietorakenteiden muokkaamiseksi niiden esitysmuotojen kautta

Käyttöliittymän tulee tarjota toiminnallisuutta tietorakenteiden niiden esitysmuotojen kautta tapahtuvaan muokkaukseen.  Käyttöliittymässä on käytettävissä seuraavanlaisia esitysmuotojen alkioihin kohdistettavia operaatioita.

Napsautus: Hiiren painikkeella tehtävä nopea painallus (painike alas + painike ylös). Napsautus tehdään jonkin graafisen objektin päällä (esim puun solmu).

Näppäin-napsautus: Napsautus samanaikaisesti, kun jokin näppäimistön näppäin alaspainettuna.Napsautus tehdään jonkin graafisen objektin päällä (esim puun solmu).

Kaksoisnapsautus: Hiiren napsautus nopeasti kaksi ketaa peräkkäin. Napsautukset tehdään jonkin graafisen objektin päällä (esim puun solmu).

Vedä ja tiputa: Hiiren painikkeen alaspainaminen, hiiren siirto ja painikkeen vapautus. Hiiren painike painetaan alas jonkin graafisen objektin päällä, siirretään hiiren kursori jonkin graafisen objektin päälle ja vapautetaan hiiren painike. Hiiren siirron aikana valittu objekti "seuraa" hiiren kursoria.

Näppäin-vedä ja tiputa: Kuten vedä ja tiputa, mutta hiiren painikkeen alaspainamisen aikana on jokin näppäimistön näppäin alaspainettuna.

Lisäksi joidenkin semanttisten rakenteiden (esim. punamustapuu) tiettyjä operaatioita varten joudutaan mahdollisesti käyttämään popup-valikoita, joista niihin liittyviä monimutkaisempia operaatioita voidaan toteuttaa.

Se, miten esitysmuotojen alkiot ja niiden taustalla olevat tietorakenteet reagoivat käyttöliittymässä suoritettuihin operaatioihin, riippuu tietorakenteiden esitysmuodoille määritellystä semantiikasta.
 

2. Esitysmuotojen käyttöliittymäoperaatioita vastaava semantiikka

Esitysmuotojen käyttöliittymäoperaatioita vastaava semantiikka (merkitys) määrää sen miten tietorakenteet reagoivat niihin esitysmuotojen kautta kohdistettujen käyttöliittymäoperaatioiden seurauksena. Tämä semantiikka on "sisäänrakennettu" esitysmuotojen toteutukseen.  Siirtosemantiikka on osa semantiikkaa, joka määrittelee tietorakenteen käytöksen tilanteessa, jossa käyttäjä valitsee sen esitysmuodon jonkin alkion liittääkseen tämän valitun alkion johonkin muuhun (tai samaan) tietorakenteeseen jonkin esitysmuodon välityksellä.

Järjestelmän kullekin tietorakenteille määritellään jokin seuraavanlaisista siirtosemantiikoista:

Move: Alkio siirtyy tietorakenteesta toiseen. Se siis häviää toisesta, ja siirtyy toiseen tietorakenteeseen.

Copy: Alkio kopioituu toiseen tietorakenteeseen.

Swap: Alkio siirtyy toiseen tietorakenteeseen. Paikasta johon alkio siirtyy, siirtyy puolestaan alkio takaisin siirretyn alkion lähtöpaikkaan. Tietorakenteiden alkiot siis vaihtavat paikkaa.

Alla olevassa kuvassa on havainnollistettu eri siirtosemantiikkoja.


 

           Kuva 1: Erilaiset siirtosemantiikat.

Siirtosemantiikka ja muu semanttinen merkitys käyttöliittymän tietorakenteiden esitysmuotojen objektehin kohdistuville  käyttöliittymätoiminnoille on "sisäänrakennettu" esitysmuotojen toteutukseen.

Tarkka semantiikka käyttöliittymän tietorakenteiden muokkaamiseen liittyville käyttöliittymätoiminnoille määritellään useimpien tietorakenteiden osalta projektin tulevissa vaiheissa. Toistaiseksi keskitytään määrittämään semantiikka tarkkaan joidenkin tärkeimpien (prioriteettitaso 1 vaatimusmäärittelyssä) tietorakenteiden osalta. Nämä määritelmät löytyvät jäljempänä tästä dokumentista (kohta 3 ->)

Yleistäen semantiikoista voi sanoa että käyttöliittymän napsautus -operaatio valitsee objektin ja vedä ja tiputa -toiminnolla siirretään objekteja (alkioita) esitysmuotojen välillä. Näppäin-napsautuksella, näppäin-vedä ja tiputa -operaatiolla ja kaksoisnapsautuksella suoritetaan jokin monimutkaisempi toimenpide.  Kaikkien tietorakenteiden kohdalla käyttöliittymän perusoperaatiot eivät tule riittämään. Esimerkiksi joissain semanttisissa rakenteissa (esim punamustapuu) niihin liittyviä moninaisia toimintoja voidaan valita esimerkiksi popup-valikosta, joka saadaan näkyviin esim. kaksoisnapsautuksella.
 

3. Esimerkki: Taulukko; käyttöliittymäoperaatioiden semantiikka ja seuraukset järjestelmässä

Esitysmuotona taulukolle käytetään taulukkoa.
Tämä esitysmuoto toteuttaa "Copy" -siirtosemantiikkaa.
 

Taulukkoon tulee pystyä lisäämään alkioita ja siitä tulee pystyä poistamaan alkioita. Lisäksi taulukon alkio tulee pystyä valitsemaan.

Seuraavassa on esitetty taulukko-tietorakenteen muokkaamiseen tarvittavat toiminnot, niiden toteuttamiseksi tarvittavat käyttöliittymätoiminnot, käyttäjän tavoite,  toiminnon vaikutukset tietorakenteisiin ja esitysmuotoihin sekä operaation "käänteisoperaatio".  Esitysten muoto on seuraava:

Toiminto: tarvittava käyttöliittymätoiminto: [ehtoja]
1. Tavoite:  Selitys eli mitä käyttäjä tekee / haluaa tehdä
2. Vaikutus: Vaikutus tietorakenteeseen -> vaikutus esitysmuotoihin
3. Käänteisoperaatio: Käänteisoperaatio tai operaation vaikutuksen "peruutus"
 

Muita termejä:
Maaliesitysmuoto: Tietorakenteen esitysmuoto, jonka aikioon vedä ja tiputa toiminnon tiputa-osatoiminto kohdistuu.
Maalialkio: Maaliesitysmuodon alkio, johon vedä ja tiputa toiminnon tiputa-osatoiminto kohdistuu.

Taulukon alkion merkintä: Napsautuksella:
1. Tavoite: Taulukon alkio  merkitään "hilight"
2. Vaikutus: Ei vaikutusta tietorakenteeseen -> Taulukossa kevyt korostus alkiolle.
3. Käänteisoperaatio: Merkityn alkion "merkintä" uudelleen tai mikä tahansa käyttöliittymän esitysmuotojen objektiin kohdistuva operaatio

Alkion lisäys:  avaimen tuominen alkioon vedä ja tiputa -toiminnolla:
1. Tavoite: Alkiolle annetaan avain eli "sisältö"
2. Vaikutus: Tietorakenteen "indeksi" (alkio) saa avaimen  -> esitysmuototaulukkon alkioon ko.avain
3.Käänteisoperaatiotio: Saman indeksin alkion lukeminen

Alkion lukeminen: avain "siirretään" solmusta vedä ja tiputa -toiminnolla:
1. Tavoite:  Solmun sisältö "kopioidaan" johonkin näytön esitysmuotoon
2  Vaikutus: Ei vaikutusta tietorakenteeseen -> Esityamuototaulukossa kevyt häivytys alkiolle
3. Käänteisoperaatio: Ei ole atomista käänteisoperaatiota. (toiminnon voi peruuttaa Edit-valikon Undo-komennolla)
 

4. Esimerkki: Binääripuu; käyttöliittymäoperaatioiden semantiikka ja seuraukset järjestelmässä

Opettajan luodessa tehtävää binääripuulla voidaan ajatella olevan kaksi vaihtoehtoista roolia: "maali" tai "alkiolista".
Opettajan luodessa binääripuu-tietorakenteeseen liittyvän tehtävän tai esimerkin, jossa binääripuu on "maalitietorakenteena", siis tietorakenteena, johon alkioita on tarkoitus muista rakenteista sijoittaa,  piirtyy näytölle vain tämän binääripuun "tyhjä" juuri (juuren avaimena jokin "undefined" -olio). Tällöin tehtävää suoritettaessa solmuihin tuodaan avaimia, jonka seurauksena puu kasvaa. Toisaalta luotu binääripuu voi toimia "alkiolistana", josta alkioita on tarkoitus siirtää "maalitietorakenteeseen". Tällöin tehtävässä tai esimerkissä kuvataan "valmis" binääripuu alkioineen.

Binääripuun solmut on myös kyettävä merkitsemään läpikäydyiksi, jotta kyetään havainnollistamaan jonkin algoritmin etenemistä puussa.Binääripuun muokkaamiseen tarvittava toiminnallisuus on siis varsin monipuolista. Binääripuu tulee voida kasvattaa juuresta, sen solmuihin tulee voida antaa avain, solmusta tulee voida poistaa avain, sen vasemmaksi / oikeaksi alipuuksi tulee voida asettaa jokin binääripuu ja sen solmut tulee voida merkitä läpikäydyiksi. Solmuja tulee myös voida poistaa rakenteellisesti.  Joissain toiminnoissa vaikutus riippuu myös muille tietorakenteiden esitysmuodoille määritellystä siirtosemantiikasta.

Esitysnuotona binääripuulle voidaan käyttää talukkoa ja puuta.
Binääripuun esitysmuodot toteuttavat "Move" -siirtosemantiikkaa.

Seuraavassa on esitetty binääripuun muokkaamiseen tarvittavat toiminnot, niiden toteuttamiseksi tarvittavat käyttöliittymätoiminnot, käyttäjän tavoite,  toiminnon vaikutukset tietorakenteisiin ja esitysmuotoihin sekä operaation "käänteisoperaatio".  Esitysten muoto on seuraava:

Toiminto: tarvittava käyttöliittymätoiminto: [ehtoja]
1. Tavoite:  Selitys eli mitä käyttäjä tekee / haluaa tehdä
2. Vaikutus: Vaikutus tietorakenteeseen -> vaikutus esitysmuotoihin
3. Käänteisoperaatio: Käänteisoperaatio tai operaation vaikutuksen "peruutus"

Muita termejä:
Maaliesitysmuoto: Tietorakenteen esitysmuoto, jonka aikioon vedä ja tiputa toiminnon tiputa-osatoiminto kohdistuu.
Maalialkio: Maaliesitysmuodon alkio, johon vedä ja tiputa toiminnon tiputa-osatoiminto kohdistuu.
 

Solmun merkintä: Napsautuksella:
1. Tavoite: Puun solmu  merkitään "hilight"
2. Vaikutus: Ei vaikutusta tietorakenteeseen -> Taulukossa kevyt korostus alkiolle, esitysmuotopuussa kevyt korostus solmulle.
3. Käänteisoperaatio: Merkityn solmun "merkintä" uudelleen tai mikä tahansa käyttöliittymän esitysmuotojen objektiin kohdistuva operaatio

Avaimen lisäys:  avaimen tuominen solmuun vedä ja tiputa -toiminnolla:
1. Tavoite: Solmulle annetaan avain eli "sisältö"
2. Vaikutus: Tietorakenteen solmu saa avaimen ja sille muodostuu "tyhjät" (undefined" -olio) oikea ja vasen lapsi -> taulukkoon solmua vastaavaan alkioon ko.avain ja kaksi uutta tyhjää alkiota, esitysmuotopuuhun solmulle avain ja oikea ja vasen lapsisolmu, jotka "tyhjiä".
3. Käänteisoperaatio: Saman solmun vaimen lukeminen

Avaimen lukeminen (= rakenteellinen poisto): avain "siirretään" solmusta vedä ja tiputa -toiminnolla: [vain binääripuun toiseksi alimman tason solmut]
1. Tavoite:  Solmun sisältö "siirretään" johonkin näytön esitysmuotoon
2. Vaikutus: Tietorakenteen solmu sekä sen  tyhjät alipuut (vasen ja oikea lapsisolmu) poistuu (rakenteelliseti) -> Taulukosta poistuu solmua vastaava alkio ja sen "tyhjät" lapsialkiot, esitysmuotopuusta poistuu solmu ja sen "tyhjät" alipuut (lapsisolmut)
3. Käänteisoperaatio: Saman avaimen lisäys solmuun

Solmun merkintä läpikäydyksi: kaksoisnapsautuksella:
1. Tavoite:  Solmu merkitään läpikäydyksi esim. havainnollistamaan algoritmin toimintaa
2. Vaikutus: Ei vaikutusta tietorakenteeseen -> Taulukossa vahva korostus alkiolle, esitysmuotopuussa vahva korostus solmulle.
3. Käänteisoperaatio: Solmun uudelleenmerkintä kaksoisnapautuksella

Alipuun liittäminen solmuun: alipuu tuodaan esitysmuodon solmuun vedä ja tiputa toiminnolla:
1. Tavoite: Puuhun liitetään alipuu jonkin solmun "välityksellä"
2. Vaikutus:Alipuu liittyy puun valittuun solmuun -> Taulukkoon ja/tai esitysmuotopuuhun liitetään ko.alipuu.
3. Käänteisoperaatio: Solmuun liitetyn alipuun lukeminen

Alipuun lukeminen: Alipuu "siirretään" esitysmuodosta Näppäin-vedä ja tiputa -toiminnolla  "Control" -näppäin alaspainettuna:
1. Tavoite:  Alipuu siirretään johonkin näytön esitysmuotoon
2. Vaikutus: Alipuu poituu binääripuusta -> taulukosta ja/tai esitysmuotopuusta poitetaan ko. alipuu.
3. Käänteisoperaatio: Saman alipuun liittäminen samaan solmuun