Veto-visualisointityökalu



Samankaltaiset tiedostot
Suunnittelumallit (design patterns)

T SEPA - päiväkirja: Design Patterns. ETL työkalu

T SEPA - päiväkirja: Design Patterns. ETL työkalu

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Massaeditorikoulutus KANSALLISKIRJASTO - Kirjastoverkkopalvelut

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Visual Basic -sovelluskehitin Juha Vitikka

4. Lausekielinen ohjelmointi 4.1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Esimerkki 8. Ratkaise lineaarinen yhtälöryhmä. 3x + 5y = 22 3x + 4y = 4 4x 8y = r 1 + r r 3 4r 1. LM1, Kesä /68

Tapahtumapohjainen ohjelmointi

SEPA - Design Patterns

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Matematiikan tukikurssi


Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

T Henkilökohtainen harjoitus: FASTAXON

Muusta kuin vesisioista

Viestinvälitysarkkitehtuurit

Kauden vaihtaminen. Tom Hedman Jopox oy;

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Avoimen lähdekoodin ohjelmien ylläpito ja evoluutio

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Hirviö. Design Patterns

Osio 4: Graafinen käyttöliittymä

Kalenterimerkintöjen siirtäminen Notesista

Eclipse & WindowBuilder

8/20: Luokat, oliot ja APIt

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Message Broadcasting. Käyttöympäristö. Message Broadcasting -laajennuksen asentaminen. Viestien luominen

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Viestinvälitysarkkitehtuurit Lähtökohta:

Mobiiliturva Palvelun käyttöönotto

Ohjelmistojen suunnittelu

Luotettavuuden mittaamisesta. Ilkka Norros ja Urho Pulkkinen

Java UI-komponentit (JTable) Juha Järvensivu 2007

Ohjelmistoarkkitehtuurit. Kevät

Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja)

5. Suunnittelumallit. TTY Ohjelmistotekniikka

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät

Darwin: Tutkimusprojektin esittely

Lääketeollisuuden investoinnit Suomeen

Ilmoittautuminen kansalliseen, SM-, AM- tai avoimeen kilpailuun

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Käyttöjärjestelmät: Virtuaalimuisti

Ohjelmistotuotanto. Luento

Asenna myös mikroskopian lisäpala (MBF ImageJ for Microscopy Collection by Tony Collins)

9 Edistynyt PHP-ohjelmointi

Hirviö. Design Patterns

15. Ohjelmoinnin tekniikkaa 15.1

Hae Opiskelija käyttöohje

Lisää segmenttipuusta

Kehittyneet ominaisuudet

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohje PhotoPortaalin käytöstä

OHJ-1151 Ohjelmointi IIe

Toimialan ja yritysten uudistuminen

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Ohjelmistoarkkitehtuurit. Syksy 2007

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Kuksa -jäsenrekisterin käyttöohje ryhmänjohtajille

Racket ohjelmointia I

Kuvapankki Imagebank Independent

Testitapaukset. Hannu Hautakangas Nikolai Koudelia Joel Lehtonen Johan Nysten. Versio 0.1 Julkinen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Sovellusarkkitehtuurit

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

Ohjelmistokehykset (software frameworks)

c) Määritä paraabelin yhtälö, kun tiedetään, että sen huippu on y-akselilla korkeudella 6 ja sen nollakohdat ovat x-akselin kohdissa x=-2 ja x=2.

Koodimalli Code Model

KÄYTTÖOHJE FLSNIF KÄYTTÖÖNOTTO V2.2 ( ) 1 (5)

Web Services tietokantaohjelmoinnin perusteet

Ohjelmistojen mallintaminen, suunnittelumalleja

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

Testivetoinen ohjelmistokehitys

Mikä on RSS-syöte? RSS -syötteen tilaaminen sähköpostiin

Taulukkolaskenta II. Taulukkolaskennan edistyneempiä piirteitä

Suunnittelumallien käyttö ohjelmistosuunnittelussa

Racket ohjelmointia. Tiina Partanen 2014

Graafisen käyttöliittymän ohjelmointi

3D/4D/5D-mallien hyödyntäminen älyrakennuksen käytössä ja ylläpidossa

Matematiikan tukikurssi

1. Olio-ohjelmointi 1.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Tech Conference Windows 10 viimeinen Windowsversio? Sami Laiho Senior Technical Fellow, MVP. #TechConfFI

Jypelin käyttöohjeet» Ruutukentän luominen

Ohjelmistoarkkitehtuurit kevät

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

Uudelleenkäytön jako kahteen

Transkriptio:

Ohjelmoinnin suunnittelumallit (design patterns) käyttöliittymissä Vanhin ja keskeisin lähde Gamma E., Helm R., Johnson R., Vlissides J., Design Patterns. Addison-Wesley, USA, 1994. Ajatus ohjelmoinnin design patterneista perustui Christopher Alexanderin talojen ja kaupunkien arkkitehtuurista esittämien ajatusten (1977-1979) soveltamiseen ohjelmointiin. Veto-visualisointityökalu Yksi glyyfi esittää yhtä taulukkomuotoisen datan riviä. Piirrettäviä rivejä on tyypillisesti 500-10 000. 10 000 samankaltaisen olion luominen olisi muistin käytön kannalta järjetöntä, koska data on jo kertaalleen esitettynä taulukkorakenteessa ja ajoympäristön (Java-tulkki) suorituskyky ei riitä näin monen olion hallintaan. Ratkaisu: Kaikki datapisteet piirrettiin yhdellä glyyfi- 1

Flyweight Veto-projektissa Glyph draw(). 768 riviä Flyweight Ongelma: Suuri määrä dataa, jonka instantioiminen olioiksi veisi liikaa muistia. Ratkaisu: Jaetaan yhtä pientä oliota kaikkien dataalkioiden kesken. Tyypillinen sovellus käyttöliittymissä: datan tai komponenttien piirtäminen, Edit-in-Place -ratkaisujen 2

Flyweight Esimerkki 2 Javan Swing-kirjasto: JTable Syötekenttä, jolla solun arvoja editoidaan, on monimutkainen komponentti. Jos jokainen taulukon solu on syötekenttä, ajoympäristö joutuu suorituskykyongelmiin (muisti, tapahtumahallinta, Todellisessa käyttötilanteessa käyttäjä voi editoida vain yhtä solua kerrallaan. Ratkaisu: Kun käyttäjä klikkaa solua muuttaakseen sen arvoa, siirretään editorikomponentti kyseisen solun kohdalle, kopioidaan solun sisältö siihen ja annetaan käyttäjän editoida solun sisältöä. Kun editointi päättyy, editori piilotetaan ja sen sisältö kopioidaan soluun. Vastaava ratkaisu: Editointi Excelissä Flyweight JTablessa Editoitava solu 3

Muut solut on piirretty sarakekohtaisella JLabel- Bookmark Scrollbar vastaavaan kohtaan 4

Bookmark Scrollbar -toteutus Visual Basicin tukema ohjelmointitapa: jokainen Tag-olio komentaa scrollbaria suoraan siirtämään thumbin oikeaan Toimii pienissä sovelluksissa. Johtaa suuremmissa sovelluksissa siihen, että kaikki komponentit viittaavat suoraan toisiinsa. Tällöin jos yksikin komponentti poistetaan, pahimmillaan kaikkien muiden koodia pitää muuttaa. Javan tukema ohjelmointitapa: jokaisella Tag-olioilla on lista, johon kaikki sen tilasta kiinnostuneet komponentit (mm. scrollbar) ilmoittautuvat. Kun käyttäjä klikkaa Tagoliota, se lähettää siitä tapahtuman (event) kaikille listalaisille, jolloin esim. scrollbar osaa siirtää thumbin. Riippuvuuksien määrä leikkaantuu puoleen edellisestä. Observer Ongelma: Kun olion tila muuttuu, kaikkien siitä riippuvien olioiden pitäisi päivittyä automaattisesti. Ratkaisu: Muuttuvalla oliolla on lista, johon olion tilasta kiinnostuneet muut oliot ilmoittautuvat ajon aikana. Kun olion tila muuttuu, listalaisia tiedotetaan siitä. Tyypillisiä sovelluksia käyttöliittymissä: Kaikenlaisten synkronointiongelmien perusratkaisu Käyttöliittymäkomponenttien riippuvuudet (mm. harmaannuttaminen) Komponentin uudelleenpiirtäminen, kun sen data on muuttunut (Model View) 5

Observer Bookmark Scrollbar Observable: kaikki Tagit Observer = Scrollbar, TagArea Tapahtumia TagAdded TagDeleted Siirry tähän kohtaan -pyyntö Airis Admin Center Ikkunassa on useita komponentteja, jotka vaikuttavat kaikki toistensa tiloihin. Miten tapahtumanhallinta ratkaistaan siten, että vältetään hajautettu riippuvuusverkkospagetti? 6

Riippuvuuksia Valinnat Raahauksen interaktio Taulukoiden uudet rivit Rivien poistaminen Tietokantamuutokset Mediator - Airis Admin Center Kaikki tapahtumanhallinta on keskitetty ikkunan taustapaneeliin. Paneeli huolehtii kaikkien sen sisältämien komponenttien tilojen päivittämisestä. Tapahtumia DragStart DragEnd CompanySelected ServiceInstalled AdminCenterFrame 7

Mediator Ongelma: Riippuvuusverkon hallinta. Kun olioiden välillä on paljon riippuvuuksia, kokonaiskuvan muodostaminen järjestelmän riippuvuuksista ja tiloista on vaikeaa. Jos kaikki toisistaan riippuvat olioit ovat tietoisia toisistaan => spagettimainen viittausverkosto. Ratkaisu: Keskitetään tilanhallinta ja riippuvuudet yhteen olioon, joka osaa päivittää muiden olioiden tilat, kun jonkin olion tila muuttuu. Tyypillinen sovellus käyttöliittymissä: yksittäisen ikkunan komponenttien riippuvuudet. Mediator MFC / Visual C++ Microsoftin Visual C++-ohjelmointiympäristö tukee Mediator-patternia komponenttien tapahtumankäsittelyssä: kun käyttäjä lisää komponentille tapahtumankäsittelijän, VC++ lisää sen komponentin sisältävän ikkunan metodiksi. Vertaa tätä esim. Visual Basiciin, jossa ympäristö lisää tapahtumankäsittelijän automaattisesti komponentin omaksi sisäiseksi metodiksi. 8

Patternien etuja Ongelmatilanteiden tunnetuille ratkaisutavoille on nyt olemassa nimi ja kuvaus => syntyy uusia korkean tason käsitteitä, ilmaisuvoimainen yhteinen kieli. Seurauksia Ohjelmoijien välinen kommunikointi tehostuu. Järjestelmiä voidaan dokumentoida tehokkaammin. Aiempaa monimutkaisempia ratkaisuja on nyt nopeampi Ohjelmoijien muistiyksiköt (chunk) ovat ilmaisuvoimaisempia. Ohjelmoijien tuottavuus ja ratkaisujen laatu paranevat. Hyvä ohjelmointitaito? Samat toteutusongelmat toistuvat sovelluksesta toiseen: Tämän olen ratkaissut jo joskus aiemmin Kokemus = aiempien hyvien ratkaisujen uudelleenkäyttäminen. Hyvien ratkaisujen taustalla olevat keskeiset periaatteet ja ratkaisustrategiat voidaan esittää design patterneina. 9