HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka / Luokka / Olio... 4 Suhteet... 6 Toimintaideat... 7 1. Abstraktio / Periytyvyys (Abstraction / Inheritance)... 7 2. Suojaus (Encapsulation)... 7 3. Monimuotoisuus (Polymorphism)... 8 Käyttöliittymä ja olioajattelu... 9 Käyttäjän näkökulma... 12 Suunnittelun ja toteutuksen näkökulma... 13 Tehtävä... 14
HELIA 2 (14) Käyttöliittymäolio Lähtökohta: Tietokeskeinen suunnittelu ohjelmakeskeisen suunnittelun sijasta Å Kaikkea käsiteltävää tieto ajatellaan dokumentteina Å.. Olioina Käyttöliittymän tulisi tarjota käyttäjälle ymmärrettävä ja yhdenmukainen kehys työskentelyä varten Käyttäjän tulisi voida keskittyä työhönsä Käyttäjän ei tarvetta huolehtia teknisistä ratkaisuista Å Metaforaksi olio Ä Kaksi erilaista hahmotustapaa! 1. Microsoft: Käyttöliittymässä oliot kuvaavat mitä tahansa informaatioyksikköä: taulukon soluja, kappaleita, merkkejä, kaavioita ja itse dokumentteja, missä ne sijaitsevat 2. Kuitunen & Burman: Käyttöliittymässä oliot kuvaavat kohdemaailman olioita ikkuna tyhjänä olioluokkaa tiedoilla varustettuna olion ilmentymää
HELIA 3 (14) Olioajattelun perusteet Tavoitteet 1. Ylläpidettävyys 2. Uudelleenkäytettävyys Ohjelmistot elävät usein vuosia, jopa vuosikymmeniä Toiminnan, tekniikan tms. muuttuessa sovelluksiin halutaan pieniä / suurempia muutoksia Å Ylläpitotehtävä Ohjelmiston tekijät vaihtavat työpaikkaa, tehtäviä, Dokumentointi jää usein huonoksi Muutoksia on tehty eri aikoina eri ihmisten toimesta Sovellukset voivat olla suuria & monimutkaisia Å Ylläpito-ongelma Ohjelmointityön tuottavuus on huono Ohjelmointi käsityövaltaista; kaikki tehdään alusta uudelleen Ä Ajatus valmiskomponenttien hyödyntämisestä (vrt. rakennusteollisuus) (ja selkeistä, pysyvistä rajapinnoista )
HELIA 4 (14) Peruskäsitteet Olio / Olioinstanssi / Olion esiintymä Olio on olio Käsite, abstraktio tai asia, jolla on selvät rajat ja joka on merkityksellinen tarkasteltavan ongelman kannalta Syntyy tietyn olioluokan jäseneksi Kullakin oliolla on identiteetti, joka on riippumaton kaikista sen ominaisuuksista ja eri kuin kaikilla muilla olioilla kyseisessä ympäristössä. Vrt erisnimet Ominaisuudet Oliolla on ominaisuuksia ja ominaisuuksilla arvoja. Esim. oliolla auto on ominaisuus väri, ja tietyn auton ominaisuuden väri arvo on punainen Toiminnot Mitä oliolle voidaan tehdä tai mitä sillä voi tehdä. Esim. olion kopiointi tai tuhoaminen Olioluokka / Luokka / Olio Joukko samankaltaisia olioita Luokan jäsenillä samankaltaiset ominaisuudet ja toiminnot Vrt. yleisnimet Esim. luokat opiskelija, opettaja, auto, tilaus,
HELIA 5 (14) Suhteet Olioilla on suhteita toisiin olioihin. Suhteet muihin oliohin vaikuttavat usein siihen miten olio käyttäytyy tai miten se näkyy. 1. Tavallinen suhde (association) PONI LAPSI 2. Luokkahierarkia (inheritance) HEPO PONI 3. Kokoelma (aggregation) VALJAKKO PONI KÄRRY Microsoftilla omat suhteet : 1. Collection joukko 2. Constraint rajoitus / vaikutus 3. Composite aggregaatti 4. Container tallentaja
HELIA 6 (14) Toimintaideat 1. Abstraktio / Periytyvyys (Abstraction / Inheritance) Jokainen aliluokka tarjoaa emoluokkansa tiedot ja toiminnot (mutta mahdollisesti uudelleenmääriteltyinä eli emoluokasta jossain määrin poikkeavalla tavalla) Aliluokka voi sisältää uusia tietoja ja toimintoja Kaikkia aliluokan olioita voidaan käsitellä emoluokan esittelemillä operaatioilla Open Closed periaate: Closed / Suljettu : Kun olioluokka on julkaistu sitä ei enää muuteta! Tällä taataan ylläpidettävyys, eli kaikki ko olioluokkaa käyttävät toiminnot voivat käyttää sitä jatkossakin entiseen malliin. Open / Avoin : Olioluokan toimintaa voidaan kehittää / muuttaa tekemällä sen pohjalta aliluokkia, jotka tarjoavat emoluokan tietojen ja toiminnallisuuden lisäksi mahdollisesti jotain muutakin 2. Suojaus (Encapsulation) Olion sisäinen toteutus piilotetaan Olioon tarjotaan vain rajapinta (julkiset toiminnot) joita muut oliot / ohjelmoija voi käyttää Å Sisäistä toteutusta voidaan tarvittaessa muuttaa, kunhan rajapinta ulospäin säilyy samana (so. miten kutsutaan, mitä palauttaa)
HELIA 7 (14) 3. Monimuotoisuus (Polymorphism) Järjestelmässä viitattu kohde selviää tarkasti vasta ajoaikana (ns. myöhäinen sidonta): Esim. (ns. operaatiopolymorfismi) Ollaan määritelty luokka hevonen ja sille aliluokka poni. Ohjelmassa käsitellään hevosta operaatiolla ota_kiinni. Mikäli käsiteltävä hevonen onkin poni, sen kiinniotto poikkeaa muiden hevosten kiinniotosta HEVONEN numero nimi... --------------------- ota_kiinni (x) = lassoa PONI rotu --------------------- ota_kiinni(x) = anna kauraa
HELIA 8 (14) Käyttöliittymä ja olioajattelu Tarkastelun kohteena käyttöliittymän asiakirjaikkuna Asiakirjaikkunassa on 2 keskeistä elementtijoukkoa 1. Tiedot 2. Toiminnot Tiedot esitetään pääasiassa käyttöliittymäikkunan työalueella Toiminnot seitetään vaihtelevammin: Valikkorivin valintoina Työkalurivin ikoneina Komentopainikkeina Olioluokka Määrittelee luokkaan kuuluvien olioiden tietorakenteen ja toiminnot Ikkuna vastaaa käyttöliittymässä olioluokkaa: 1. työalueelta löytyvät tiedot 2. valikkoriviltä (mm.) löytyvät toiminnot l. metodit. Olion ilmentymä olioluokan jäsen, Ikkunassa tietyllä hetkellä käsiteltävänä olevat tiedot vastaavat olion ilmentymää. Ikkunassa on tavallisesti käsiteltävänä vain yhden olion tiedot kerrallaan. Esim. yhden asiakkaan tiedot kerrallaan Käytettävissä on myös muun tyyppisiä ikkunoita, joissa voi esiintyä useamman olion tiedot kerrallaan Å Ns. joukko-olio sisältää tiedot oliojoukosta. Esim ikkunassa saattaa olla monen asiakkaan tiedot
HELIA 9 (14) Käyttäjän näkökulma Käyttäjä näkee olion ainoastaan käyttöliittymän välityksellä Ä Huom: samaa oliota voidaan usein katsella useamman käyttöliittymän (ikkunan) kautta! Käyttöliittymäolion tulee olla tarkoituksenmukaisella tavalla samankaltainen kuin sitä vastaavan todellisuuden olion Kohdetodellisuuden tuntee parhaiten käyttäjä Å Käyttöliittymäolion rajauksen ja määrittelyn on lähdettävä käyttäjän näkökulmasta. Ä monta käyttäjää = monta näkökulmaa! Taloudellisesti ei ole mahdollista tehdä kullekin käyttäjälle omaa sovellusta / käyttöliittymää Integroidaan käyttäjien näkemykset yhteiseksi näkemykseksi, Yhteisen näkemyksen pohjalta voidaan tarvittaessa tehdä muutama versio (aliluokka) eri käyttäjäryhmien erilaisiin tarpeisiin
HELIA 10 (14) Suunnittelun ja toteutuksen näkökulma Suunnittelijan näkökulma: Käyttöliittymäolio on eräs tapa mallintaa käyttöliittymiä suunnitteluvaiheessa. Käyttöliittymäolio on siis termi ja dokumentointiyksikkö, joka on osa laajempaa suunnitelukokonaisuutta Toteuttajan näkökulma Käyttöliittymäoliosta tai niiden joukosta muodostuu itsenäinen sovellusohjelma Käyttöliittymän tietosisällön mallinnusta ei kannata irrottaa koko sovelluksen tietosisällön mallinnuksesta Käyttöliittymän näkökulmasta mielenkiinnon kohteeksi tulevat lisäksi: tiedoille tehtävät toiminnot, tiedon esitysmuoto muut ikkunan visuaaliset elementit ohjeet Kun toimintaa mallinnetaan oliomenetelmällä tulokseksi saadaan sovelluksen oliomalli Käyttöliittymäoliot on pyritty irrottamaan sovelluksen olioista erillisen rajapinnan avulla sovelluksen ylläpidettävyyden ja siirrettävyyden parantamiseksi Sovelluksen oliomallin tuntemus on paras lähtökohta käyttöliittymän suunnittelussa. Sovelluksen oliomalli on luotu käyttäjien antaman tiedon pohjalta.
HELIA 11 (14) Tehtävä Miten kuvaisit Notepadillä käsiteltävää olioluokkaa?