Lmodels. Tekninen määrittely. Ryhmä Rajoitteiset

Koko: px
Aloita esitys sivulta:

Download "Lmodels. Tekninen määrittely. Ryhmä Rajoitteiset"

Transkriptio

1 Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija Lmodels Tekninen määrittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset Tuomas Luttinen Ensimmäinen alustava versio Tuomas Luttinen Enemmän sisältöä rungon päälle. Tätä iteraatiota koskemattomat otsikot on poistettu Tuomas Luttinen Lisäys translaattorin toiminnan kuvaukseen: semanttinen analyysi, hylätyt ratkaisut mukaan Tuomas Luttinen Palautteiden perusteella uuteen pohjaan muokattu versio Jouni Karppinen & Mitro Kuha Dokumentti tarkastettu ja korjattu PP-vaiheen palautusta varten Tuomas Luttinen Edelleen kehitetty versio ensimmäistä toteutusiteraatiota varten Tuomas Luttinen Ensimmäisen toteutusiteraation lopullinen versio Jouni Karppinen & Mitro Kuha Dokumentti tarkastettu ja korjattu I1-vaiheen palautusta varten.

2 Sisällysluettelo 1 Johdanto Tarkoitus ja kattavuus Tuote ja ympäristö Termit ja määritelmät Järjestelmän yleiskuvaus Sovellusalueen kuvaus Järjestelmän liittyminen ympäristöönsä Laitteistoympäristö Ohjelmistoympäristö Toteutuksen keskeiset reunaehdot Arkkitehtuurin kuvaus Suunnitteluperiaatteet Ohjelmistoarkkitehtuuri Moduulien välinen kommunikaatio Järjestelmän pakettirakenne Virheenkäsittely Moduulikuvaukset Nodes Solver Formats Processors Controller Server Client Util Muut luokat Hylätyt ratkaisut Kääntäjän tuottamistyökalut Lineaarinen ratkaisija Järjestelmän arkkitehtuuri päätasolla...17

3 1 Johdanto 1.1 Tarkoitus ja kattavuus Tämä dokumentti on Teknillisen korkeakoulun kurssille T Tietojenkäsittelyopin ohjelmatyö harjoitustyönä tehtävän lineaaristen rajoitteiden tyydyttämistehtävän ratkaisijan tekninen määrittely. Dokumentin ensisijainen tarkoitus on määrittää ja kuvata vaatimusmäärittelyssä esitettyjen toiminnallisuuksien tekninen toteutustapa ja toisekseen täydentää toiminnallista määrittelyä teknisestä näkökulmasta. Näin ollen dokumentti on suunnattu järjestelmän toteuttajille. Toisaalta se on tarkoitettu myös asiakkaan ja kurssin henkilökunnan arvioitavaksi. 1.2 Tuote ja ympäristö Tuotteen nimi on Lmodels. Se on lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija. Tuote tulee toimimaan verkkoyhteyden tarjoavassa tietokoneessa, jossa on Javavirtuaalikone. 1.3 Termit ja määritelmät Seuraavassa taulukossa on selitetty lyhyesti erikoistermistö, jota käytetään tämän asiakirjan eri kohdissa. Vaatimusmäärittelyssä esitettyjen termien ja määritelmien oletetaan olevan tuttuja lukijalle. Termi Määrittely GLPK (GNU Linear Programming Kit) GNU-lisenssin alla jaettava lineaaristen ongelmien ratkaisija. Java-virtuaalikone Jäsennyspuu Käännettyä Java-koodia sisällään ajava prosessi, joka tarjoaa Javasovellukselle kielen vaatimat palvelut, kuten roskankeruun. Eri alustoille tehdyt virtuaalikoneet mahdollistavat Java-sovellusten ajamisen eri ympäristöissä. Kielen terminaaleista ja nonterminaaleista muodostuva tietorakenne, jossa nonterminaalit sisältävät toisia nonterminaaleja ja puun lehdiksi jääviä terminaaleja. Jäsentäjä Muodostaa selaajalta syötteenään saamista terminaaleista nonterminaalien muodostaman jäsennyspuun, joka kuvaa annetun syötteen rakenteen. lp_solve Javalla toteutettu lineaaristen ongelmien ratkaisija. 1

4 Termi LP-kieli Määrittely Lineaaristen mallien määrittelyyn käytettävä kieli, jota esim. GLPK hyväksyy syötteenään. Open Source Ohjelmistoja, joiden lähdekoodi on vapaasti saatavilla ja muokattavissa ja jotka ovat muokattuinekin lähdekoodeineen vapaasti käytettävissä ja eteenpäin levitettävissä. RMI-rajapinta (Remote Method Invocation) Tämän rajapinnan avulla yhdessä Java-virtuaalikoneessa sijaitseva olio voi kutsua toisessa virtuaalikoneessa sijaitsevan olion metodia. Virtuaalikoneet voivat sijaita vaikka fyysisesti eri koneissa. Selaaja Servlet Tomcat Muodostaa tekstipohjaisesta syötteestä säännöllisten lausekkeiden avulla kielen syntaksin mukaisia terminaaleja. Tekniikka tehdä Java-sovellutuksia, jotka vastaavat HTTP-pyyntöihin interaktiivisesti muodostaen WWW-sivuja pyynnön mukana välitettyjen parametrien mukaan. Palvelinohjelmisto, joka tarjoaa servleteille sopivan ajoympäristön. UML (Universal ling Language) Ohjelmistojen mallintamiseen käytettäviä kaaviotyyppejä määrittelevä kieli. Taulukko 1: Termit ja määritelmät. 2

5 2 Järjestelmän yleiskuvaus 2.1 Sovellusalueen kuvaus Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisijana Lmodels pyrkii löytämään ratkaisun malliin annettujen rajoitteiden vallitessa. Mikäli ratkaisu on olemassa, niin käyttäjälle annetaan mahdollisimman tiukat rajat, joiden sisältä kaikki mahdolliset ratkaisut löytyvät, sekä yksi yksiselitteinen ratkaisu. 2.2 Järjestelmän liittyminen ympäristöönsä Lmodels-järjestelmä koostuu palvelinohjelmasta, asiakasohjelmasta sekä komentorivityökalusta, joita ajetaan itsenäisinä kokonaisuuksina. Asiakasohjelma on riippuvainen palvelinohjelmasta, joka kuitenkaan itsenäisenä Java-ohjelmana ei ole sidottu tässä toteutuksessa tehtävään asiakasohjelmaan käyttöliittymineen, vaan sen tarjoamaa RMI-rajapintaa voivat yhtä hyvin hyödyntää ulkopuoliset ohjelmistot, jotka näin voivat käyttää sen tarjoamaa palvelua. 2.3 Laitteistoympäristö Lmodels ei aseta mitään erityisiä vaatimuksia sitä ajavan tietokoneen laitteistolle. Suorituskykyinen kone suurella muistilla on kuitenkin suositeltava, sillä ongelmakenttä, jota Lmodels:lla pyritään ratkaisemaan, on laskennallisesti kompleksinen ongelma. Ajoaika riippuu suuresti mallin koosta ja monimutkaisuudesta, koneen prosessoritehosta ja käytettävissä olevan muistin määrästä. Pienet ja yksinkertaiset mallit hoituvat nopeasti, kun taas suuret tai monimutkaiset mallit voivat viedä paljon aikaa tehokkaallakin koneella. 2.4 Ohjelmistoympäristö Lmodels-järjestelmän ajoa varten tarvitaan Java-virtuaalikone ja GLPK-ratkaisija. Lmodels:n asentamiseksi tarvitaan näin ollen joko C-kääntäjä GLPK:n kääntämiseksi tai valmiiksi käännetty GLPK. Haluttaessa käyttää mukana tulevaa asiakasohjelmaa käyttöliittymineen täytyy asentaa myös Java-servlettien ajon mahdollistava J2EE -standardia tukeva servletajoympäristö, koska käyttöliittymä toteutetaan Java-servletteinä. Kyseisenä palvelinohjelmistona tässä projektissa käytetään Tomcat:ia sen ilmaisuuden vuoksi. Java-kielestä käytetään versiota Ohjelmisto ei aseta rajoitteita käyttöjärjestelmän suhteen, mutta projektiryhmän tarjoama tuki toimii parhaiten Linuxalustalle, sillä kehitystyö tullaan tekemään pääasiallisesti sillä. 2.5 Toteutuksen keskeiset reunaehdot Ohjelmiston toteutuksessa käytetään vain ilmaisia, jos mahdollista Open Source, ohjelmistoja. Projektin dokumentit ovat suomenkielisiä, mutta itse ohjelmakoodi ja koodin kommentit ovat englanninkielisiä. Käyttöohje kirjoitetaan englanniksi. 3

6 3 Arkkitehtuurin kuvaus 3.1 Suunnitteluperiaatteet Järjestelmän toteutuskieli on Java useammastakin syystä, joista ensimmäinen on asiakkaan vaatimus. Lisäksi ryhmän jäsenet ovat tottuneet työskentelemään tällä kielellä, sitä tuetaan useassa ympäristössä, sille löytyy laajat valmiskirjastot sekä tämän projektin vaatimia kääntäjiin liittyviä työkaluja jäsentäjän automatisoituun tekemiseen. Järjestelmään liittyvä käyttöliittymä toteutetaan Java-servletteinä ja HTML-kieltä käyttäen. Vaikka järjestelmässä on mukana käyttöliittymä, niin tällä kertaa suunnittelun painopiste ja sitä eteenpäin ajava voima on teknisellä puolella. Käyttöliittymä on nimittäin tarkoitettu lähinnä testaamiseen, ja pääkäyttö järjestelmälle tulee olemaan osana integroitua suurempaa järjestelmää, jolloin Lmodels:n käyttäjiä ovat toiset ohjelmistojärjestelmät. Järjestelmä toteutetaan käyttäen oliopohjaista mallinnusta ja erilaisia UML-kaavioita eri osien mallintamiseen. Koska koodin toteutuskielenä on englanti, niin kaavioiden kielikin on näin ollen englanti. Eri komponentteihin viitataan pääsääntöisesti kuitenkin tämän dokumentin kielellä eli suomeksi, joten tätä tapaa käytettäessä on kaavioissa esiintyvä englanninkielinen nimi laitettu sulkuihin suomalaisen termin perään, mikäli sitä ei ole saatu liitettyä kontekstiin jouhevasti muulla tavoin. 3.2 Ohjelmistoarkkitehtuuri Yleistason kuva Lmodels-järjestelmästä on esitetty seuraavassa kaaviossa. formats CLIClient WWW client client server controller processors model nodes solver Kaavio 1: Lmodels-järjestelmä. Käyttäjällä on siis kaksi tapaa käyttää järjestelmää, joko paikallisesti komentorivikäyttöliittymällä tai verkon yli WWW-käyttöliittymällä. Molemmissa tapauksissa järjestelmän keskuksena toimii kontrolleri (controller), joka sisältää järjestelmän toimintalogiikan ja joka tuottaa vastaukset käyttäjän tekemiin kyselyihin. Seuraavassa sekvenssikaaviossa on esitettynä esimerkki, jossa Lmodels:ia käytetään komentorivityökalun avulla lineaarisen ongelman ratkaisuun. Komentoriviltä käynnistetään komentorivityökalu (CLIClient), joka käynnistää itselleen uuden kontrollerin (controller), jolle annetaan metodikutsun argumentteina ongelman malli tekstimuodossa ja kiinnitetyt muuttujat arvoineen. Kontrollerin tehtävänä on nyt päätellä mitä vaiheita tarvitaan mallin käsittelyyn ennen kuin se voidaan toimittaa varsinaiselle ratkaisimelle ratkaistavaksi. 4

7 Processor Format :CLIClient controller:controller processor:cnfnormaliser solver:glpksolver main(args[]) create() parser:lmformat :SolverFactory solversolution:=solve(text, limits) create() model:=parse(text) create() model:=processexpr(model) solver:=getsolver(glpk) create() solversolution:=solve(model, limits) Kaavio 2: Sekvenssikaavio komentorivityökalusta. Tässä tapauksessa malli on tekstimuodossa ilman, että sitä olisi normalisoitu tai linearisoitu. Siksi kontrolleri käy kaikki askeleet läpi käyttäen lm-muodon jäsentäjää (parser:lmformat) mallin jäsentämiseksi, CNF-muodon normalisoijaa (processor:cnfnormaliser) normalisointiin ja lopuksi ratkaisijatehdasta (SolverFactory) tuottamaan sopivan ratkaisijainstanssin, joka etsii mahdolliset ratkaisut annettuun ongelmaan. Tekniseltä kannalta kontrollerin ohjaamien moduulien voidaan katsoa muodostavan kääntäjän alkupuolen mukaisen selkeän peräkkäisrakenteen, jossa ensimmäinen askel on tekstimuotoisen syötteen jäsennys, minkä jälkeen seuraavat moduulit tekevät erilaisia muutoksia aikaansaatuun jäsennyspuuhun. Linjan viimeisenä oleva moduuli tuottaa jäsennyspuusta taas tekstimuotoista tulostetta. Tämä muoto on esitetty kaaviossa 3. Vasemmalla on esitetty yleinen malli, jossa syöte tuodaan tekstimuodossa sisään jäsentäjälle, sitä käsittelee yksi tai useampi puun käsittelijä (Processor) ja lopuksi se joko kirjoitetaan taas tekstimuodossa tiedostoon tai lähetetään ratkaisijalle (Solver). 5

8 0-x kpl General File String Format Processor Processor Translator Command line tool File LMFormat CNFNormaliser String LPX command line tool File LMFormat CNFNormaliser Lineariser String (Un)Bound vars User Results model Server mode User File String LMFormat CNFNormaliser Linearisator String Format / Solver File User Results model Kaavio 3: Lmodels kääntäjänä. LMFormat File String LPXFormat File String GLPKSolver Kaksi seuraavaa mallia kuvaavat komentorivityökalujen käyttöä ja niissä on abstraktien rajapintojen sijaan käytetty realisoituvia luokkia. Viimeisin esimerkki oikealla kuvaa palvelimen sisällä käytettyä ketjua ongelman saamiseksi ratkaistavaksi. 3.3 Moduulien välinen kommunikaatio Järjestelmässä on kaksi rajapintaa, joiden kohdalla se voidaan hajauttaa useampaan fyysiseen koneeseen ja kommunikaatio toimii verkkorajapinnan yli. Nämä rajapinnat ovat käyttöliittymän käyttämä HTTP-rajapinta selaimen ja servletpalvelimen välillä sekä järjestelmän sisäinen RMI-rajapinta, joka on esitelty seuraavassa kaaviossa. 6

9 Client RemoteClient +connect(): RMIServer +getconnector(): RemoteController <<RMI>> RMIServer starts ServerSolver returns Controller RMIServerImpl +getconnector(): RMIController returns RemoteController <<RMI>> RMIController RMIControllerImpl Controller 1 SimpleController Kaavio 4: RMI-arkkitehtuuri. Luokka ServerSolver käynnistää RMI-prosessin palvelimen puolella ja jää kuuntelemaan pyyntöjä. Asiakasohjelma käynnistyy ja pyytää itselleen asiakastehtaasta (ClientFactory) uuden asiakas-rajapinnan (Client) toteutuksen ja saa itselleen RMI:tä tukevan asiakasolion (RemoteClient). Tämä ottaa yhteyden palvelimeen ja saa itselleen viitteen RMI-palvelimeen (RMIServer), jolta asiakasolio saa viitteen palvelimen kontrolleriin (RMIController), joka tallennetaan asiakaspäässä omaan olioonsa (RemoteController). Tämän jälkeen asiakas voi käyttää oman päänsä kontrolleria (RemoteController) aivan normaaliin tapaan, koska RMI:n toteutus mahdollisine ongelmatilanteineen on upotettu sen sulkeviin luokkiin. Itse työn tekee palvelimen päässä tavallinen kontrolleri (SimpleController), jolle pyynnöt ohjataan RMI-rajapinnan yli. Kuvan keskellä kulkevan jakolinjan yli menevä liikenne voi tapahtua verkon välityksellä kahden eri fyysisen koneen välillä. Tällöin Lmodels voidaan jakaa kahdelle koneelle siten, että toinen näistä koneista ratkoo ongelmia toisen toimiessa palvelimena, joka tarjoaa käyttäjien selaimelle tarpeellisen WWW-palvelun. Integroitaessa Lmodels:ia asiakkaan laajempaan järjestelmään tulee yllä kuvattu RMI-rajapinta olemaan toisten ohjelmakomponenttien käyttöliittymä Lmodels-järjestelmään. 3.4 Järjestelmän pakettirakenne Järjestelmän pakettirakenne on esitetty kaaviossa 5. 7

10 lmodels client server controller model processors formats solver nodes util Kaavio 5: Lmodels:in pakettikaavio. Pakettien riippuvuudet ketjuuntuvat alaspäin vieviksi ketjuiksi ilman silmukoita. Ylimpänä tasona ovat palvelin- (server) ja asiakas- (client) paketit, jotka kommunikoivat kontrollerin (controller) kanssa, joka puolestaan käyttää muista paketeista löytyviä luokkia ja niiden metodeita ratkaistakseen lineaarisia ongelmia. 3.5 Virheenkäsittely Virheenkäsittely Lmodels-järjestelmässä perustuu pakettikohtaisiin poikkeuksiin, joita on yksi kutakin pakettia kohden. Yleisesti kyseisen paketin rajapinta ilmoittaa heittävänsä tämän poikkeuksen ongelmatilanteissa, johon rajapinnan hyödyntäjän tulee varautua. Jokaisesta kerroksesta pyritään tekemään mahdollisimman hyvin alemman kerroksen virheitä sietävä. 8

11 4 Moduulikuvaukset Seuraavissa kappaleissa on esitelty jokaisen paketin sisältö pääkohdittain, sekä mahdollinen rajapinta, jolla paketin sisältämiä luokkia voidaan käyttää. 4.1 Nodes Tämän paketin luokkien tarkoitus on muodostaa jäsennyspuu. Alla on kuvattu paketin luokkarakenne. Expr +getnew(...): Expr BooleanExpr +getnew(...): BooleanExpr FloatExpr +getnew(...): FloatExpr BinaryBooleanExpr Not Comparison BooleanVariable +left: BooleanExpr +Right: BooleanExpr +getnew(booleanexpr,booleanexpr) +leftexpr +getnew(booleanexpr) +left: FloatExpr +right: FloatExpr +getnew(floatexpr,floatexpr) +name: String +negated: Boolean BooleanConstant And Or Xor Equiv Impl EQ NEQ GT LT GE LE Sub Luokasta ei oteta instansseja, getnew palauttaa AINA toisen luokan instanssin. BinaryFloatExpr +getnew(floatexpr,floatexpr,) FloatVariable +mul: double +name: String Add Sub Mul Div UMinus +getnew(floatexpr) FloatConstant Kaavio 6: Paketin nodes luokkakaavio. Erityistä huomiota kannattaa kiinnittää siihen, että läheskään kaikista operaattoreista ei tulla luomaan oman luokkansa instansseja. Niiden sijaan käytetään toisten operaattoriluokkien instansseja, joilla saadaan sama asia ilmaistua toisella samanarvoisella tavalla. Tämän ansiosta lopullisen puun käsittelyssä selvitään vähemmällä vaivalla, koska erilaisia operaattoreita on rajoitetummin. Seuraavassa taulukossa on kuvattu puun muodostamisen apuna käytetyt operaattoreiden korvaavuudet. 9

12 Luokka Lause Korvattu lause Xor a xor b ( a and not b) or (not a and b) Equiv a equiv b not(a) xor b Implies a implies b not(a) or b Sub j - k j + -1*k Uminus -k -1 * k Div k/ * k Taulukko 2: Korvattavat operaattorit korvaavuuksineen. Alla olevassa kaaviossa on vielä kuvattuna esimerkkinä eräs jäsennyspuu konjunktiivisessa normaalimuodossa. Expr Tree in CNF and or and 3.1*A >= not K or or P NOT p and or 3*B 12 + >= 0 or K not T 3*A + K not T 3*B *D Kaavio 7: Jäsennyspuu konjunktiivisessa normaalimuodossa Seuraavassa kaaviossa on esitetty pakettien model ja solver sisältö luokittain. 10

13 model 1 1 Vmap Solution solver SolverFactory solvable: boolean 1 1 SolverSolution cputime: int modelsize: int Solver AbstractSolver * Variable 1..* VariableSolution SolverEvent GLPKSolver VariableLimits SolverListener Kaavio 8: Pakettien model ja solver luokkakaavio. Paketin model pääluokka on mallin () sisältävä luokka, joka sisältää muuttujien määritelmät omassa luokassaan (Vmap). Tämän luokan sisäinen toteutus on linkitetty hajautustaulu, johon on säilötty muuttujia omassa luokassaan (Variable). Malli yhdessä kiinnitettyjen muuttujien (VariableLimits) kanssa muodostaa ongelman. Sille on olemassa ratkaisu (Solution), joka puolestaan sisältää ongelman jokaiselle muuttujalle ratkaisun (VariableSolution), joka puolestaan sisältää muuttujan rajat ja käyvän ratkaisun, mikäli sellainen löydettiin. 4.3 Solver Paketissa solver on ratkaisijaan liittyviä luokkia. Seuraavassa taulukossa on esitelty paketin rajapinnat. Rajapinta Merkitys Solver Ratkaisijan määrittelevä rajapinta. Sisältää metodit lineaarisen ongelman ratkaisemiseksi sekä kuuntelijan (SolverListener) lisäämiseen ja poistamiseen. SolverListener Kuuntelija, joka seuraa ratkaisijan työn edistymistä. Ratkaisija tiedottaa edistymisestään tapahtumilla (SolverEvent). Taulukko 3: Rajapinnat solver-paketissa. Erilaisten ratkaisijatyyppien tuottamiseksi paketissa on tehdasluokka (SolverFactory), joka luo ratkaisijoita annetun tekstitunnisteen mukaan. Muita paketin luokkia ovat tapahtuma (SolverEvent), jolla tiedotetaan ratkaisijan edistymisestä, sekä SolverSolution, joka sisältää ongelman ratkaisun sekä tähän ratkaisuun liittyvää oheistietoa, kuten käytetyn koneajan ja mallin koon. 11

14 4.4 Formats Seuraavassa kaaviossa on esitetty tämän paketin luokkarakenne. formats Format parse(string): format(): String LMFormat LPXFormat Kaavio 9: Paketin formats luokkakaavio. Tämä paketti sisältää seuraavan rajapinnan ja sen toteuttavia luokkia. Rajapinta Merkitys Format Muotoilijan (Format) määrittelevä rajapinta. Sisältää metodit lineaarisen mallin muodostamiseen tekstisyötteestä sekä lineaarisen mallin tulostamiseksi tekstimuotoon. Taulukko 4: Rajapinta formats-paketissa. Rajapinnan toteutusluokkia tehdään kaksi kappaletta. Näistä ensimmäinen käsittelee määrittelemäämme lm-kieltä ja toinen lineaaristen mallien kuvaamiseen yleisesti käytettyä lpx-kieltä. 4.5 Processors Kaaviossa 10 on esitetty tämän paketin luokkarakenne. Tämä paketti sisältää edellisen paketin tavoin yhden rajapinnan sekä sen toteuttavia luokkia. 12

15 processors Processor +process(m:): Lineariser Normaliser CNFNormaliser DNFNormaliser Kaavio 10: Paketin processors luokkakaavio. Rajapinta Processor Merkitys Mallin prosessoijan (Processor) määrittelevä rajapinta. Tämän rajapinnan ainoa metodi on process, joka ottaa sisäänsä argumenttina annetun mallin ja palauttaa uuden prosessoidun mallin. Taulukko 5: Rajapinta processors-paketissa. Toteuttavia luokkia on processors-paketissa useampia, ja ne jakautuvat kahteen lajiin: mallin linearisoijaan (Lineariser) ja normalisoijiin. Jälkimmäisiä on yksi isäluokka (Normaliser) ja kaksi toteutusta kahdelle eri normaalimuodolle (CNFNormaliser, DNFNormaliser). 4.6 Controller Seuraavassa kaaviossa on esitetty tämän paketin luokkarakenne. 13

16 controller Controller SimpleController Tämä paketti sisältää edellisten pakettien tavoin yhden rajapinnan sekä sen toteuttavan luokan. Tämän rajapinnan toteuttava luokka on myös paketissa client liittyen kontrollerin käyttöön RMI-rajapinnan yli. Rajapinta Merkitys Controller Rajapinta Controller määrittelee metodit, joilla mallia voidaan järjestelmän ulkopuolelta käsitellä. Taulukko 6: Rajapinta controller-paketissa. Yksinkertainen kontrolleri (SimpleController) on rajapinnan ainoa täysi toteutus, joka sisältää tarpeellisen logiikan mallin vaatiman käsittelyn selvittämiseen annettujen parametrien ja mallin itsensä avulla. Muiden saman rajapinnan toteuttavien luokkien toiminta palautuu tämän luokan metodien kutsumiseen. 4.7 Server Kaavio 11: Paketin controller luokkakaavio. Seuraavassa kaaviossa on esitetty tämän paketin luokkarakenne. server RMIServer RMIController RMIServerImpl +getconnector(): RMIController RMIControllerImpl Kaavio 12: Paketin server luokkakaavio. Paketti server sisältää RMI-rajapinnan palvelimen puolen toteutuksen sekä rajapinnat 14

17 näiden toteutusten viitteen toimittamiseksi RMI-yhteyden yli, jotta metodikutsut voidaan välittää toiseen koneeseen. Rajapinta Merkitys RMIServer Rajapinta RMIServer määrittelee RMI-rajapintaa kuuntelevan palvelimen ja sen metodin getconnector, jolla saadaan toimitettua viite kontrollerista RMI-rajapinnan toiselle puolelle. RMIController Taulukko 7: Rajapinnat server-paketissa. Rajapinta RMIController määrittelee samat metodit kuin rajapinta Controller mallin käsittelemiseksi RMI-rajapinnan yli. Palvelimen toteutus (RMIServerImpl) on siis konkreettinen olio, joka toimii RMIpalvelimena. Kontrollerin RMI-toteutus (RMIControllerImpl) puolestaan käyttää suoraan tavallista kontrolleria (SimpleController) toteuttaakseen mallin käsittelyn metodit. 4.8 Client client ClientFactory +getclient(): Client creates Client LocalClient +getconnector(): Controller RemoteClient +connect(address:string) +getconnector(): Controller returns returns RemoteController controller Controller SimpleController Kaavio 13: Pakettien client ja controller luokkakaavio. 15

18 Kaaviossa 13 on esitetty tämän paketin luokkarakenne ja rakenteen ymmärtämisen kannalta tarpeellisia luokkia myös controller-paketista. Seuraava taulukko esittelee tämän paketin sisältämän rajapinnan. Rajapinta Client Merkitys Rajapinta Client määrittelee asiakkaan metodit, joilla otetaan yhteys palvelimeen ja saadaan viite kontrolleriin. Taulukko 8: Rajapinta client-paketissa. Paketti sisältää tehdasluokan (ClientFactory), jolla luodaan asiakas (Client) tilanteen mukaan. Kyseisen rajapinnan toteuttavista luokista paikallinen asiakas (LocalClient) toteuttaa vain metodin getconnector, jolla se luo uuden tavallisen kontrollerin (SimpleController). Etäasiakas (RemoteClient) toteuttaa metodin connect, jolla luodaan yhteys palvelimeen. Tämän luokan metodi getconnector pyytää palvelimen puolelta viitteen RMI-kontrolleriin (RMIController), joka suljetaan etäkontrolleriluokan (RemoteController) olioon RMI-yhteyden piilottamiseksi ulkopuoliselta käyttäjältä. 4.9 Util Paketti util sisältää yleisesti hyödyllisiä apuluokkia metodeineen, kuten tiedoston käsittelijän luku- ja kirjoitusoperaatioineen Muut luokat Yllämainittujen alipakettien lisäksi paketti lmodels sisältää kolme Java-luokkaa, jotka ovat main-metodin sisältävinä luokkina tarkoitettu käynnistämään järjestelmä eri toimintamuotoihin eli komentorivityökaluna, palvelimena ja asiakasohjelmana. 16

19 5 Hylätyt ratkaisut Projektin päästyä toteutuksen tasolle on eteen tullut jo kohtuullinen määrä valintatilanteita, joissa on otettu kantaa teknisen toteutuksen moniin kohtiin alkaen kääntäjän tuottamiseen käytettävistä työkaluista aina kokonaistason arkkitehtuuriin. 5.1 Kääntäjän tuottamistyökalut Ensimmäisenä asiana on translaattorin luomisessa apuna käytettävät kääntäjän tuottamistyökalut, joiksi päätettiin ottaa CUP ja JLex. Näiden vaihtoehtona oli kehittyneempi, myös itsensä Sunin tukema Open Source työkalu JavaCC, joka on sekä jäsentäjän että selaimen generoiva työkalu. Emme kuitenkaan valinneet tätä mentorimmekin suosittelemaa työkalua, vaan käytämme jäsentäjän generointiin CUP:ia ja selaimen generointiin JLex:iä, koska asiakkaamme oli vanhempien työkalujen puolella ja ryhmällä itsellään on kokemusta niiden käytöstä päinvastoin kuin JavaCC:n kohdalla. 5.2 Lineaarinen ratkaisija Toinen hylkäävä ratkaisu on myös tehty lineaarisen ratkaisijan kohdalla, sillä ratkaisijaksi oli GLPK:n lisäksi tarjolla Javalla toteutettu lp_solve. Vaikka tätä ratkaisua olisi voinut puolustaa toteutuskielen yhtenäisyydellä, niin hylkäämiseen johtaneet seikat veivät voiton. Vaikka lp_solve on toteutettu Javalla, niin se vaikutti tehdyn automaattisesti aikaisemmasta C-toteutuksesta. Myöskään sen ylläpidosta ei ollut minkäänlaisia takeita, sillä sen toteuttamiseen käytetty Java-versiokin oli jo aika vanha. 5.3 Järjestelmän arkkitehtuuri päätasolla Suunnitteluvaiheessa oli esillä suuremmista kokonaisuuksista koostuva arkkitehtuuri järjestelmän toteuttamiseksi. Tästä kuitenkin luovuttiin, koska nämä suuremmat kokonaisuudet koettiin liian raskaiksi ja kömpelöiksi, joten lopullisen arkkitehtuurin kohdalla päädyttiin käyttämään pienemmistä osista koostuvaa ketjua, jonka lisäksi järjestelmässä on erillinen logiikka, joka ohjaa ketjun käyttäytymistä. Tällöin tämä logiikka voi jättää vaikka osan ketjusta pois, mikäli sisään syötetään jo osin käsiteltyä syötettä, kuten esimerkiksi normalisoitu malli. 17

L models. Tekninen määrittely. Ryhmä Rajoitteiset

L models. Tekninen määrittely. Ryhmä Rajoitteiset Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Tekninen määrittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

L m o d els. Tekninen määrittely. Ryhmä Rajoitteiset

L m o d els. Tekninen määrittely. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L m o d els Tekninen määrittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

L models. Käyttöohje. Ryhmä Rajoitteiset

L models. Käyttöohje. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Käyttöohje Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset 0.1

Lisätiedot

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset Teknillinen Korkeakoulu T-76.5 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Vaatimusmäärittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä www.niksula.cs.hut.fi/~jjkankaa// Demosovelluksen tekninen määrittely v. 0.6 Päivitetty 11.12.2000 klo 20:26 Mickey Shroff 2 (12) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite

Lisätiedot

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.5 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Vaatimusmäärittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Valppaan asennus- ja käyttöohje

Valppaan asennus- ja käyttöohje Versio Päiväys Muokkaaja Kuvaus 0.9 16.2.2006 Tuukka Laakso Korjattu versio 0.1 Antti Kettunen Alustava versio Sisällysluettelo 1 Johdanto...2 2 Valppaan asennus...3 2.1 Valppaan kääntäminen...3 2.2 Valmiiksi

Lisätiedot

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton 2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.

Lisätiedot

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3 Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2

Lisätiedot

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

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

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus 582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

L models. Testisuunnitelma. Ryhmä Rajoitteiset

L models. Testisuunnitelma. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Testisuunnitelma Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

TOIMINNALLINEN MÄÄRITTELY MS

TOIMINNALLINEN MÄÄRITTELY MS TOIMINNALLINEN MÄÄRITTELY 11.11.2015 MS YLEISTÄ 1/2 jäsennelty etenee yleiskuvauksesta yksityiskohtiin kieliasultaan selkeä kuvaa myös tulevan järjestelmän ympäristöä tarpeellisella tarkkuudella kuvaa

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

T harjoitustyö, kevät 2012

T harjoitustyö, kevät 2012 T-110.4100 harjoitustyö, kevät 2012 Kurssiassistentit T-110.4100@tkk.fi Tietotekniikan laitos Perustieteiden korkeakoulu Aalto-yliopisto 31.1.2012 Yleistä Kurssin osasuoritteita ovat kaksi osatenttiä,

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

TEKNINEN MÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0 (Luonnos 2)

TEKNINEN MÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0 (Luonnos 2) TEKNINEN MÄÄRITTELY Edited by Checked by Approved by Tuomo Marttila Luonnos 1 Tekninenmäärittely i Sisällysluettelo 1. JOHDANTO 2 1.1. Tarkoitus ja kattavuus 2 1.2. Tuote ja ympäristö 2 1.3. Määritelmät,

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi

Lisätiedot

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Teknillinen korkeakoulu 51 Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Versio Päiväys Tekijä Kuvaus 0.1 21.11.01 Oskari Pirttikoski Ensimmäinen versio 0.2 27.11.01 Oskari Pirttikoski Lisätty termit

Lisätiedot

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

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

T Testiraportti - järjestelmätestaus

T Testiraportti - järjestelmätestaus T-76.115 Testiraportti - järjestelmätestaus 18. huhtikuuta 2002 Confuse 1 Tila Versio: 1.0 Tila: Päivitetty Jakelu: Julkinen Luotu: 18.04.2002 Jani Myyry Muutettu viimeksi: 18.04.2002 Jani Myyry Versiohistoria

Lisätiedot

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0 CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved

Lisätiedot

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,

Lisätiedot

Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2

Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2 Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2 Sisällysluettelo Muutoshistoria...3 1 Johdanto...4 2 Palvelimen käyttöön tarvittavat ohjelmat...4 3 Palvelimelle kirjautuminen...4 4

Lisätiedot

L models. Projektisuunnitelma. Ryhmä Rajoitteiset

L models. Projektisuunnitelma. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Projektisuunnitelma Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

Projektisuunnitelma. Ryhmä Rajoitteiset

Projektisuunnitelma. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija Lmodels Projektisuunnitelma Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

Ohjelmistojen suunnittelu

Ohjelmistojen suunnittelu Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer

Lisätiedot

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Kieliversiointityökalu Java-ohjelmistoon. Ohje Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5

Lisätiedot

T Testiraportti - integraatiotestaus

T Testiraportti - integraatiotestaus T-76.115 Testiraportti - integraatiotestaus 16. huhtikuuta 2002 Confuse 1 Tila Versio: 1.1 Tila: Päivitetty Jakelu: Julkinen Luotu: 19.03.2002 Jani Myyry Muutettu viimeksi: 16.04.2002 Jani Myyry Versiohistoria

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu

Lisätiedot

UML:n yleiskatsaus. UML:n osat:

UML:n yleiskatsaus. UML:n osat: UML:n yleiskatsaus - voidaan hyödyntää hyvin laajasti. - sopii liiketoimintamallinnukseen, ohjelmistomallinnukseen sen jokaiseen vaiheeseen tai minkä tahansa pysyviä ja muuttuvia ominaisuuksia sisältävän

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Matematiikan oppifoorumi Projektisuunnitelma

Matematiikan oppifoorumi Projektisuunnitelma Matematiikan oppifoorumi Projektisuunnitelma Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen Ohjaaja Jukka Eskola Asiakas Mikko Mäkelä Ohjelmistotuotantoprojekti 29.10.1999

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

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

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

Lisätiedot

58160 Ohjelmoinnin harjoitustyö

58160 Ohjelmoinnin harjoitustyö 58160 Ohjelmoinnin harjoitustyö Testaus 30.3.2009 Tuntiop. Sami Nikander sami.nikander@helsinki.fi 58160 Ohjelmoinnin harjoitustyö, Sami Nikander 30.3.2009 1 Testaus Ohjelman systemaattista tutkimista

Lisätiedot

Pedacode Pikaopas. Web Service asiakasohjelman luominen

Pedacode Pikaopas. Web Service asiakasohjelman luominen Pedacode Pikaopas Web Service asiakasohjelman luominen Pikaoppaan sisältö Pikaoppaassa kuvataan, Netbeans-työkalulla luodaan valmista olemassa olevaa Web Service palvelua käyttävä asiakasohjelma. Opas

Lisätiedot

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE: 15.03.

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE: 15.03. EMVHost Online SUBJECT: COMPANY: COMMENTS: AUTHOR: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT NETS OY EMVHost Online Client sovelluksen käyttöohje NETS OY DATE: 15.03.2011 VERSION: 1.0 1 SISÄLLYS SISÄLLYS...

Lisätiedot

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille 13.6.2008. Meeri Nieminen

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille 13.6.2008. Meeri Nieminen EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille 13.6.2008 Meeri Nieminen Asiakkaan vaihtoehdot Asiakkaan vaihtoehdot EMCS-järjestelmän käyttöön XML-sanomarajapinta oman järjestelmän

Lisätiedot

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

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Visual Case 2. Miika Kasnio (C9767) 23.4.2008

Visual Case 2. Miika Kasnio (C9767) 23.4.2008 Visual Case 2 Miika Kasnio (C9767) 23.4.2008 Työn tarkasti: Jouni Huotari 24.4.2008 1 SISÄLTÖ 1. TYÖN LÄHTÖKOHDAT... 2 2. PERUSTIEDOT... 2 3. ASENTAMINEN... 2 4. OMINAISUUDET... 3 4.1. UML-kaaviot... 4

Lisätiedot

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Tentti Tentti Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla. Omia koneita ei saa käyttää. Sähköisessä tentissä on paperitentin tapaan osaamisen

Lisätiedot

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Sisällys. 11. Rajapinnat. Johdanto. Johdanto Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.

Lisätiedot

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

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

Dokumentin nimi LOGO:) Tampereen teknillinen yliopisto. Ryhmä XXX: Projektiryhmän nimi Projektin nimi

Dokumentin nimi LOGO:) Tampereen teknillinen yliopisto. Ryhmä XXX: Projektiryhmän nimi Projektin nimi Tampereen teknillinen yliopisto Ohjelmistotekniikan laitos OHJ-3500 Ohjelmistotuotannon projektityö LOGO:) Ryhmä XXX: Projektiryhmän nimi Projektin nimi Dokumentin nimi Jakelu: (Ryhmä) (Kurssihenkilökunta)

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin? Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin? Avoin verkkoalusta ihmisen ja koneen ymmärtämien tietomääritysten tekemiseen Riitta Alkula 20.3.2019 Esityksen sisältö

Lisätiedot

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42) Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

UCOT-Sovellusprojekti. Testausraportti

UCOT-Sovellusprojekti. Testausraportti UCOT-Sovellusprojekti Testausraportti Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 0.02 Julkinen 11. lokakuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä

Lisätiedot

T harjoitustehtävät, syksy 2011

T harjoitustehtävät, syksy 2011 T-110.4100 harjoitustehtävät, syksy 2011 Kurssiassistentit Tietotekniikan laitos Perustieteiden korkeakoulu Aalto-yliopisto T-110.4100@tkk.fi Yleistä Kurssin osasuoritteita ovat kaksi osatenttiä ja harjoitustehtävät

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

Tekninen suunnitelma - StatbeatMOBILE

Tekninen suunnitelma - StatbeatMOBILE Tekninen suunnitelma - StatbeatMOBILE Versio Päivämäärä Henkilö Kuvaus 1.0 13.12.2013 Pöyry Alustava rakenne ja sisältö 1.1 22.12.2013 Pöyry Lisätty tekstiä ilmoituksiin, turvallisuuteen ja sisäiseen API:in

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Pariohjelmointi. Ryhmä Rajoitteiset

Pariohjelmointi. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija Lmodels Pariohjelmointi Tuomas Luttinen Ryhmä Rajoitteiset Versio Päivämäärä Tekijä

Lisätiedot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5

Lisätiedot

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

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. 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

Lisätiedot

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

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

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

T SEPA - päiväkirja: Design Patterns. ETL työkalu T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti5004000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 4.6.2007,

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

Aki Taanila LINEAARINEN OPTIMOINTI

Aki Taanila LINEAARINEN OPTIMOINTI Aki Taanila LINEAARINEN OPTIMOINTI 26.4.2011 JOHDANTO Tässä monisteessa esitetään lineaarisen optimoinnin alkeet. Moniste sisältää tarvittavat Excel ohjeet. Viimeisin versio tästä monisteesta ja siihen

Lisätiedot

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1 Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1 Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

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

Hakemistojen sisällöt säilötään linkitetyille listalle. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ

Lisätiedot

Oliot viestivät metodeja kutsuen

Oliot viestivät metodeja kutsuen 6. Metodit 6.1 Sisällys Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit). Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest). 1 Virtualisoinnin avulla voidaan purkaa suora linkki suoritettavan sovelluksen (tai käyttöjärjestelmän tms.) ja sitä suorittavan laitteiston välillä. Näin saavutetaan joustavuutta laitteiston käytössä.

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot