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



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

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja. Komponenttien palveluja ei tiedetä tarkasti etukäteen

Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2

Palveluperustaiset arkkitehtuurityylit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Arkkitehtuurityylejä ja ratkaisumalleja


Graafinen käyttöliittymä, osa 1

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

6. Architectural styles

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

Ohjelmistoarkkitehtuurit, syksy

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Hakemistojen sisällöt säilötään linkitetyille listalle.

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Graafisen käyttöliittymän ohjelmointi

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Hirviö. Design Patterns

Osio 4: Graafinen käyttöliittymä

TIE Ohjelmistojen suunnittelu

Hirviö. Design Patterns

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tapahtumapohjainen ohjelmointi

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

4. Lausekielinen ohjelmointi 4.1

15. Ohjelmoinnin tekniikkaa 15.1

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Oppimistavoitteet. Arkkitehtuurityylejä ja patterneja. Tyylien ja patternien käytöstä. Kolmitasoarkkitehtuuri (N-Tier) Kolmitasoarkkitehtuuri (N-Tier)

Ohjelmistotuotanto. Luento

Arkkitehtuurityylejä ja patterneja

4. Luokan testaus ja käyttö olion kautta 4.1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Johdatus rakenteisiin dokumentteihin

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmoinnin perusteet Y Python

5. HelloWorld-ohjelma 5.1

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Johdanto PHP PostgreSQL. PHP & PostgreSQL. Paul Tötterman 5. helmikuuta PHP & PostgreSQL.

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Harjoitustyö (TKO_2023)

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

T Henkilökohtainen harjoitus: FASTAXON

Kehyspohjainen ohjelmistokehitys

3. Komponentit ja rajapinnat

Oliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

käännös käännösvaiheessa tarkasettaan linkitys

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

7/20: Paketti kasassa ensimmäistä kertaa

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

TIETOKANNAT JOHDANTO

Java-kielen perusteet

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

12. Kehysarkkitehtuurit

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

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

TIE Ohjelmistojen suunnittelu

4. Lausekielinen ohjelmointi 4.1

Kehittyneet ominaisuudet

15. Ohjelmoinnin tekniikkaa 15.1

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Java-kielen perusteet

Ohjelmistoarkkitehtuuri

SEPA - Design Patterns

5. HelloWorld-ohjelma 5.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Testidatan generointi

Java ja tietokannan käsittely (JDBC)

A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Muusta kuin vesisioista

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Valikot ja työkalupalkit. 2008

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

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

JS-kehitys - yleiskuvaus. TIEA255 - Juho Vepsäläinen

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Transkriptio:

Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen tilasta pitäisi pystyä antamaan erilaisia näkymiä Käyttöliittymän pitäisi välittömästi heijastaa sovelluksen tilan muutoksia Käyttöliittymää pitäisi olla helppo muuttaa Sovellus pitäisi voida kohtuullisella työllä siirtää toiselle graafiselle alustalle 1

Perusajatus komento vaste Ohjain Näkymä sovelluksen toiminto Malli sovelluksen tilan muutos 2

Esimerkiksi Näkymä TextField Malli Sovelluslogiikka Ohjain Button Kuuntelija 3

Vastuut Malli Tarjoaa sovellukseen liittyvät loogiset toiminnot ja tiedot Rekisteröi sovelluksen tilasta kiinnostuneet näkymäkomponentit Ilmoittaa rekisteröityneille komponenteille tilan muutoksista Näkymä Huolehtii sovelluksen tilan näyttämisestä näytöllä Ohjain Ottaa vastaan käyttäjän komentoja Muuntaa komennot sovelluksen toiminnoiksi 4

MVC malli Observer Model update() * update() attach(observer) detach(observer) notify() getdata() service() attach() getdata() View initialize(model) makecontroller() activate() display() update() Controller initialize(model,view) handleevent() update() attach() service() 5

MVC vuorovaikutus Controller Model View handle- Event service suorita toiminto notify update getdata display 6

Kerroksittainen MVC (Esim. verkonhallintasovellukset) Näkymä Käyttäjän komennot Toiminto pyynnöt Ohjain Sovelluslogiikka Model Sovellusaluelogiikka Näytä tulokset Tuota tulokset 7

MVC:n edut ja ongelmat Etuja Helppo toteuttaa useita näkymiä samaan tietoon Kaikki näkymät ovat automaattisesti synkronoituja Uusia näkymiä voidaan ajoaikana liittää järjestelmään Käyttöliittymän ulkoasu suhteellisen helposti vaihdettavissa Ongelmia Mahdollisesti turhia näkymien päivityskutsuja Mallidatan kyselyt voivat lisätä suoritusaikaa 8

Tulkkiarkkitehtuurit Tarve antaa toiminnallisia kuvauksia syötteenä järjestelmälle, esimerkiksi: tarve yhdistellä primitiivisiä toimintoja eri tavoin, jotka eivät ole tiedossa etukäteen tarve erottaa looginen, abstrakti suoritusalusta konkreettisesta (esim. jälkimmäisen vaihtamisen helpottamiseksi) 9

Tulkkiarkkitehtuurin perusidea toimintakuvauksen sisäinen esitys Tuloste Jokin toiminnallinen kuvaus (teksti, XML, graafinen, ym.) Tulkki kutsuu Konkreettinen suoritusalusta noudattaa 1 toteutus 2 Syöte Kielen määritys 10

Esimerkki 1: Java käännös toimintakuvauksen sisäinen esitys Tavukoodi Ohjelman tulokset Java-ohjelma JVM (C-ohj) kutsuu Suoritusalusta (C ympäristö) noudattaa toteutus Ohjelman syöte Javan määritys 11

Esimerkki 2: Taulukkolaskenta Laskettu taulukko sis.esitys Taulukkoskripti Skriptitulkki Taulukkolaskenta noudattaa toteutus Skriptikielen määritys Taulukon alkion arvo 12

Esimerkki 3: SQL kyselyt DBMS SQL-kysely SQLtulkki Tietokanta Kyselyn tulos Sovellus 13

Esimerkki 4: Tulkitseva DSL toimintakuvauksen sisäinen esitys Tuloste Sovelluksen kuvaus DSL-kielellä Tulkki kutsuu API Alusta noudattaa toteutus Syöte DSL-kielen määritys DSL = Domain-Specific Language 14

Tulkin suunnittelu: Tulkki-suunnittelumalli Ongelma: miten esittää tulkittava ohjelma olioina? Ratkaisu: Tulkki-suunnittelumalli (Interpreter) Interpreter AbstractStruct interpret(rep) * TerminalStruct interpret(rep) CompositeStruct interpret(rep) 15

Tulkki-suunnittelumallin johtaminen: Kielen rakenteiden esitys luokkina Ongelma: Miten esittää kielen rakenteet luokkina? Esimerkiksi: Script ::= "SCRIPT" Action {";" Action} "END" Action ::= "IF" Expr "THEN" Action "END" identifier "(" Expr ") Expr ::=... Luokkamalli? 16

Välisymbolit ja rakenteiset loppusymbolit esitetää ään n luokkina Esimerkiksi: Script, Action, PrimAction, CondAction, Expr, identifier => luokkia Ei-rakenteiset loppusymbolit (avainsanat, erikoismerkit ym.): SCRIPT END IF THEN ; ( ) Näitä tarvitaan vain jäsennyksen (ja lukemisen) tueksi, eivät olennaisia (nk. konkreettinen syntaksi) 17

Mitä tuotossää ääntö merkitsee luokkien kannalta? Ehdotus: Tuotossääntö merkitsee sitä, että oikean puolen luokat ovat osa-suhteessa vasemman puolen luokkiin. A ::= B C tarkoittaa: OK, mutta entä A ::= B C D E? A 1 1 B C 0..1 A 0..1 0..1 0..1 B C D E Ei hyvä... 18

Vaihtoehtoiset rakenteet aliluokiksi A ::= B C D E => A ::= A1 A2 A1 ::= B C A2 ::= D E A A1 A2 B C D E 19

Rekursiiviset rakenteet Statement ::= CompoundStatement AssignmentStatement CompoundStatement ::= { StatementList } StatementList ::= {Statement ; } Statement * AssignmentStatement CompoundStatement Rekursiokooste 20

Script interpret() 1..* Action interpret() 1 Esimerkki Script ::= "SCRIPT" Action {";" Action} "END" Action ::= CondAction PrimAction CondAction ::= "IF" Expr "THEN" Action "END" PrimAction ::= identifier "(" Expr ")" Expr ::=... CondAction PrimAction Expr interpret() interpret() 1 1 val(): float 1 Identifier name(): String 21

Tulkkiarkkitehtuurin edut ja ongelmat Edut: Ajoaikainen suoritusympäristö omassa hallinnassa Tulkittavaa kieltä suhteellisen helppo muuttaa Kielen merkitystä suhteellisen helppo muuttaa Suoritusympäristö voidaan helposti vaihtaa (rajapinnat) Ongelmat: Suorituskyky (epäsuora, ei-natiivi suoritus; sisäisen esityksen muodostaminen) Tilankäyttö (ohjelman sisäinen esitys esim. Tulkki-mallilla voi vaatia paljon tilaa) 22