Ohjelmistoarkkitehtuurit 2006 Harjoitustyön loppudokumentti. Robottisota. Ryhmä: <numero> Heikki Suontausta

Koko: px
Aloita esitys sivulta:

Download "Ohjelmistoarkkitehtuurit 2006 Harjoitustyön loppudokumentti. Robottisota. Ryhmä: <numero> Heikki Suontausta"

Transkriptio

1 Ohjelmistoarkkitehtuurit 2006 Harjoitustyön loppudokumentti Robottisota Ryhmä: <numero> Heikki Suontausta Päiväys:

2 1 Johdanto Harjoitustyön aiheena oli toteuttaa graafinen simulaatiokehys erilaisten simulaatioiden suorittamiseen. Tämän lisäksi toteutettiin simulaatiokehykselle erikoistus, joka mahdollistaa robottisota-pelin pelaamisen. Pelissä on tarkoituksena ohjelmoida robotille tekoäly ja kokeilla sen toimivuutta taistelusimulaatiossa muita vastaavia robotteja vastaan. 2 Vaatimukset järjestelmälle Simulaatiokehys käyttää valmiina annettua käyttöliittymäkirjastoa, joka puolestaan vaatii Eclipsen SWT-kirjaston (The Standard Widget Toolkit) toimiakseen. Tämä mahdollistaa sovelluksen käytön kaikilla alustoilla joille SWT ja Java ovat saatavilla. SWT:n ansiosta käyttöliittymä on luonnollisen näköinen kullakin alustalla. 2.1 Toiminnalliset vaatimukset Koko järjestelmän toiminnallisiin vaatimuksiin kuuluu luonnollisesti kaikki simulaatioiden ajamiseen liittyvä: Alkutilan asettelu Ajaminen Ajonaikaisen tilannekuvan näyttäminen Simulaatiokehyksen ja sen erikoistuksen välinen raja toiminnassa on vedetty siihen, että simulaatioille yhteiset toiminnot on toteutettu kehyksessä ja muu jää erikoistuksen huoleksi. Täten edellä mainitusta listasta simulaatiokehyksen vastuulla on alkutilan asettelu ja ajon aikaisen tilannekuvan näyttäminen, kun taas erikoistuksen vastuulle jää itse simulaation ajaminen. Esimerkkinä koko järjestelmän kattavasta toiminnasta olkoon seuraava käyttötapaus: Nimi: Suorittaja: Robottisotaerikoistuksen käyttö Loppukäyttäjä Käyttötapauksen kulku: 1. Käyttäjä käynnistää sovelluksen 2. Käyttäjä valitsee item-toolbar:sta haluamansa robotin yksi kerrallaan, ja sijoittaa sen taistelualueelle. Sijoitettuaan robotin, käyttäjä voi pyöräyttää robottia 30 asteen välein hiiren oikealla napilla. 3. Kun kaikki taisteluun osallistuvat robotit on sijoitettu alueelle, käyttäjä käynnistää taistelun painamalla simulation-toolbar:n painiketta play. 4. Simulaatio käynnistyy ja robotit aloittavat taistelun. 5. Simulaatio päättyy kun jäljellä on enää yksi robotti. 6. Käyttäjä sulkee sovelluksen 2/26

3 Poikkeukset: Simulaation ajamisen aikana kaksi tai useampi robottia ajautuu liian kauas toisistaan, jolloin tutka ei kanna riittävän pitkälle eikä niiden tekoälyyn ole ohjelmoitu tarkemmin muiden robottien etsimistä. Tästä on seurauksena ettei simulaatio tulisi koskaan päättymään. Tällöin käyttäjä voi pysäyttää simulaation painamalla simulation-toolbar:n painiketta stop. 2.2 Laatuvaatimukset Laatuvaatimukset jakautuvat tässä muunneltavuusvaatimuksiin ja suorituskykyvaatimuksiin. Muihin laadullisiin vaatimuksiin kuten saavutettavuuteen tai turvallisuuteen ei kiinnitetä sen enempää huomiota, koska kyseessä on yhden käyttäjän järjestelmä. Muunneltavuusvaatimukset simulaatiokehykselle ovat: Käyttöliittymään liittyvät Näkymien konfiguraatio mahdollisimman vapaata Oma työkalupalkki simulaation suorittamiselle Simulaatiomaailman koko, skaalaus Sovelluksen nimi Simulaatio-olioiden ulkoasu Simulaatio-olioiden tilan näyttö Toimintaan liittyvät Simuloinnin suoritus Erilaisia simulaatio-olioita Suorituskykyvaatimukset ovat: Vähintään 500 robottia mahdollista olla yhtä aikaa simulaatiossa Simulaation tulee reagoida nopeasti käyttäjän syötteeseen Muunneltavuusvaatimukset robottikehykselle ovat: Sovelluskohtaisen robotin luonti Sovelluskohtaisen robotin varustetyypin luonti Sovelluskohtaisen varusteen luonti Sovelluskohtainen engine esim. eri sääntöjä varten 3 Kehyksen arkkitehtuuri 3/26

4 3.1 Looginen näkymä Simulaatiokehyksen liittymistä käyttöliittymäkehykseen on havainnollistettu kuvassa 1. Observer rajapinnan toteuttavat simulaatiomaailmaa vastaava luokka SimulationWorld sekä yksittäistä simulaatio-oliota vastaava ItemModel. Nämä tiedottavat muutoksistaan käyttöliittymäkehykselle Observer rajapinnan välityksellä. WorldView käyttää maailman olioiden piirtoon ItemView:n toteuttamaa WorldViewItem rajapintaa. Tilanäkymä ItemStatus- View puolestaan käyttää StatusViewItem rajapintaa, jonka niin ikään ItemView toteuttaa. ItemModel käyttää rakentajassaan IdGeneratoria luomaan kullekin simulaatio-oliolle yksikäsitteisen Id-numeron. Tilanäkymä toteuttaa myös rajapinnan ActivationListener, jota käytetään tilanäkymässä olevien simulaatio-olioiden tietojen korostamiseen esim. valinnan yhteydessä. SimulationFactory on abstrakti kantaluokka, jonka toteutusten tehtävänä on luoda simulaatio-olioita sen createitem-funktion parametrina saadun luokan nimen perusteella. ItemController puolestaan on yhteinen rajapintaluokka kaikille kontrollereille. AbstractEngine:n perivä SimulationEngine on abstrakti kantaluokka kaikille erikoistusten engineille. Sen vastuulla on vain simulaation suorituksen hallinnointi (käynnistys, pysäytys yms.). SimulationToolbar on kehysten käyttämä käyttöliittymäkomponentti simulaation hallintaan. Lisäksi SimulationToolbar käyttää simulaatiomaailman koon muuttamiseen SizeDialog käyttöliittymäkomponenttia. SimulationToolbar:n käyttäminen on erikoistajan valinnan mukaista. Se on vain annettu valmiina toteutuksena ja se vaatii SimulationEngineInterface rapinnan toteutuksen erikoistajan enginessä. Kuvassa 1 esitetty myös robottikehyksen (RobotFW) liittyminen simulaatiokehykseen ja ajastimen osalta myös käyttöliittymäkehykseen. Robottikehyksen RobotM, joka perii simulaatiokehyksen ItemModel:n, edustaa yleistä robottien MVC arkkitehtuurimallin mukaista malliosaa. Vastaavasti simulaatiokehyksen ItemView rajapinnan toteuttava RobotV toteuttaa näkymäosan ja ItemController rajapinnan toteuttava RobotC kontrolleriosan. Robottien luonnista vastuussa on abstraktin SimulationFactory-luokan perivä RobotFactory, joka luo kontrolleriosan ja sen vastuulla puolestaan on robotin malli- ja näkymäosien luonti. Roboteilla on myös useita erilaisia varusteita, joita robottikehyksessä mallinnetaan Feature-luokalla, ja tästä perityillä abstrakteilla Armor, Motor, Gun ja Radar luokilla. Kukin Featureluokasta peritty yksittäistä varustelajia kuvaava abstrakti luokka määrittää mm. rajapinnan miten kyseistä varustelajia käytetään. Lisäksi tässä on mahdollista määrittää yleinen toteutus (esim. template method suunnittelumallin mukaisesti), jolloin erikoistetussa konkreettisessa varusteessa (esim. LightArmor) on mahdollista toteuttaa vain sopiva laskukaava vahingon laskemiseen. Varusteiden luonti tapahtuu AbstractFeatureFactory:n avulla, joka pitää erikoistaa erikoistuksessa luomaan kyseiseen erikoistukseen kuuluva varustekirjo. SimulationEnginen perivä RobotEngine, jonka vastuulla on robottisimulaatioiden hallinta. RoboTimer puolestaan huolehtii robottisimulaatioiden ajastustehtävistä. Robottikehykseen luuluvat vielä rajapinnat ShopAccount ja TurnCredit, sekä näiden toteutukset ShopAccountImpl ja TurnCreditImpl. Näiden tehtävänä on rajoittaa robotin varusteiden hankkimista ja yhden pelivuoron aikana tehtävää toimintaa. 4/26

5 Kuva 1: Simulaatiokehyksen liittyminen käyttöliittymäkehykseen ja robottikehyksen liittyminen simulaatiokehykseen Periaatteita: Simulaatiokehys huolehtii maailmasta ja siinä olevista simulaatio-item:eistä ja niiden sijainnista sekä asennosta maailmassa. 5/26

6 Erikoistajan huoleksi jää mallintaa item:eiden tarkempi malli, käyttäytyminen ja ulkoasu. Simulaation toiminnallisuuden saavuttamiseksi erikoistajan on erikoistettava ajastimesta sellainen joka tekee halutun toimenpiteen käyttäjän valitsemalla intervallilla. Varsinainen simulaation suoritus (esim. item:eiden vuorotus) kannattaa kuitenkin jättää erikoistetun sovelluksen moottorin huoleksi. Simulaatiokehyksen luokat ja rajapinnat: Luokka/rajapinta: SimulationWorld Vastuu: Vastaa simulaatioon osallistuvien simulaatio-olioiden hallinnasta Kuvaus: Sinällään jo toimiva toteutus että erikoistus ei ole välttämätöntä Muuntelu: Muuntelu tarpeen jos simulaatio-oliot tai engine tarvitsevat jotain lisätoiminnallisuutta. Luokka/rajapinta: ItemModel Vastuu: Yksittäisen simulaatio-olion MVC mallin mukainen malliosa Kuvaus: Sisältää perustoteutuksen simulaatio-oliosta, jonka oletetaan kaikkien simulaatioolioiden tarvitsevan. Toteutukseen kuuluu olion sijainti ja pyörähdyskulma maailmassa sekä yksikäsitteinen id. Lisäksi sijainnin ja pyörähdyskulman muutoksista ItemModel tiedottaa tarkkailija mallin mukaisille tarkkailijoilleen. Muuntelu: Muuntelu tapahtuu lisäämällä simulaatio-olion muu malliosan mukainen toteutus. Luokka/rajapinta: IdGenerator Vastuu: Yksikäsitteisten id-tunnusten generointi Kuvaus: Luo kokonaislukumuotoisia id-tunnuksia kasvavassa numerojärjestyksessä. Muuntelu: Ylikirjoittamalla tunnuksen luova metodi. Luokka/rajapinta: ItemView Vastuu: Tarvittava rajapinta simulaatio-olion näyttämiseen käyttöliittymäkehyksessä. Kuvaus: Perii sekä käyttöliittymäkehyksen simulaatiomaailman näkymän ItemView että tilanäkymän StatusViewItem rajapinnat. Muuntelu: Toteuttamalla rajapintafunktiot. Luokka/rajapinta: SimulationFactory Vastuu: Rajapinta simulaatio-olioiden luomiseen. Kuvaus: Tämän abstraktin luokan toteutusten tulee toteuttaa metodi simulaatio-olion luo- 6/26

7 miseen sen luokan nimen perusteella esim. Javan reflektiota käyttäen. Kantaluokka puolestaan toteuttaa metodin minkä tahansa pakkauksen luokkien listaamisen ajon aikana. Muuntelu: Toteuttamalla rajapintafunktio Luokka/rajapinta: ItemController Vastuu: Yhteinen rajapinta simulaatio-olioiden kontrollereille Kuvaus: Tässä vaiheessa toimii vain yhteisenä kantarajapintana eri kontrollereille. Ei siis sisällä yhtään funktiota. Muuntelu: Erikoistus lisää omat rajapintafunktionsa. Luokka/rajapinta: SimulationEngine Vastuu: Simulaation suorituksen hallinnointi Kuvaus: Perii käyttöliittymäkehyksen abstract enginen ja laajentaa sitä Muuntelu: Toteuttamalla puuttuvat abstraktit funktiot sovelluksen käyttöliittymän alustuksessa (käyttöliittymän muuntelu) sekä toteuttamalla simulaation suoritus ja sen hallinnointi. Robottikehyksen luokkien ja rajapintojen kuvaukset: Luokka: RobotM Vastuu: Robotin malli Kuvaus: Esittää yksittäisen robotin tilaa. Sisältää myös robotille asennetut varusteet (Feature:sta perityt suojat, moottorin yms.). Luokka: Feature Vastuu: Abstrakti kantaluokka robottien varusteille Kuvaus: Määrittelee yleisen varusteiden rajapinnan ja sisältää yhteisen toiminnan toteutuksen. Tästä perityissä luokissa on laajennettu Feature:n rajapintaa kuhunkin varusteeseen sopivaksi. Ja niistä on edelleen periytetty varsinaiset varusteet, joita kuvassa havainnollistetaan Basic -etuliitteellä. Luokka: RobotV Vastuu: Yksittäisen robotin ulkoasu Kuvaus: MVC mallin mukainen toteutus robotin ulkoasun määritykselle. Luokka: RobotC Vastuu: Robotin alustus ja toiminta 7/26

8 Kuvaus: Luo robotin malli ja näkymäosat ja huolehtii robotin toimenpiteistä vuoron aikana. Tästä perityille robotti-plugineille annetaan toteutettavaksi robotin varustaminen eri varusteilla ja robotin vuoron toimenpiteet. Luokka: RobotFactory Vastuu: Robottien luonti Kuvaus: Osaa listata minkä tahansa pakkauksen luokat Java:n hakemistorakenteen avulla ja luoda niistä reflektion avulla instansseja. Luotujen instanssien rakentajalle annetaan parametrina RobotEngine luokan olio siitä nimitys RobotFactory. Luokka: RobotEngine Vastuu: Simulaation pyöritys ja sovelluksen kulun hallinnointi Kuvaus: Sovelluksen moottori. Luokka: RoboTimer Vastuu: Ajastustehtävä Kuvaus: Määrittelee abstraktissa kantaluokassaan avonaiseksi määritellyn task()-funktion. Sen toteutus kutsuu RobotEngine:n timertick()-funktiota. Luokka: ShopAccount ja ShopAccountImpl Vastuu: Tilin rajapinta ja sen toteutus Kuvaus: Tätä rajapintaa ja sen toteuttavaa luokka paria käytetään robotin varustamisessa. Näitä käytetään rajoittamaan robotille hankittavia varusteita antamalla vain tietty määrä rahaa käyttöön. Robotin tekoälyntekijän käytössä on vain rajoitettu rajapinta, joten hän ei pysty tilin saldoa muuttamaan. Luokka: TurnCredit ja TurnCreditImpl Vastuu: Pelivuorolla tapahtuvien toimintojen rajoittaminen Kuvaus: Tätä rajapintaa ja sen toteuttavaa luokkaparia käytetään robotin pelivuoron aikana rajoittamaan robotin tekemiä toimintoja. Suunnittelumallit kehyksissä: Tarkkailija suunnittelumallin käyttöä simulaatio- ja käyttöliittymäkehysten yhteydessä on havainnollistettu kuvassa 2. Kuvassa oleva ItemModel toimii tarkkailtavana ja sille on rekisteröitynyt kaksi tarkkailijaa WorldView ja ItemStatusView. ItemModel:n ja kaikkien siitä periytettyjen luokkien vastuulla on tarkkailija-suunnittelumallin mukaisesti tiedottaa tarkkailijoilleen muutoksistaan Observer rajapinnan kautta. 8/26

9 Kuva 2: Tarkkailija suunnittelumalli Abstraktin tehtaan käyttöä robottikehyksessä on kuvattu kuvassa 3. Kuvassa olevat Feature-luokasta perityt Armor, Motor, Gun ja Radar ovat abstraktin tuotteen roolissa. Näistä pitää robottikehyksen erikoistajan luoda perinnän avulla konkreettiset tuotteet (ei kuvassa). On myös mahdollista, että robottikehyksen mukana tulee joistakin näistä oletustoteutus. AbstractFeatureFactory on puolestaan abstraktin tehtaan roolissa, ja siitäkin pitää erikoistajan tehdä oma toteutus jos erikoistaja on tehnyt myös omia tuotteita. Jos robottikehyksen mukana toimitetaan joistakin varusteista oletustoteutus, on myös mahdollista toimittaa tehtaastakin ns. oletustoteutus, joka osaa luoda näistä instanssit. Kuva 3: Abstrakti tehdas suunnittelumalli Operaatiorunko (engl. template method) suunnittelumallin käyttö robottikehyksessä on esitetty kuvassa 4. Tässä esimerkkinä on suojien tehon laskenta, jossa abstraktissa kantaluo- 9/26

10 kassa on toteutettu hit() -funktio käyttäen abstraktiksi määriteltyjä calculate alkuisia funktioita käyttäen. Näillä on tarkoituksena laskea paljonko kyseisestä osumasta aiheutuu vahinkoa itse suojalle, robotille ja muille varusteille. Selkeyden vuoksi kuvasta on jätetty pois kuinka calculate -funktioiden paluuarvoja käytetään hit()-funktiossa. Operaatiorunko suunnittelumallia käytetään myös muiden varusteiden kanssa. Kuva 4: Operaatiorunko suunnittelumalli 3.2 Variaationäkymä Simulaatiokehyksen erikoistamista on havainnollistettu kuvitteellisella luokkakaaviolla kuvassa 5. Kehyksen variointi tapahtuu toteuttamalla vaaditut rajapinnat ja lisäämällä tai muuntelemalla perittyihin luokkiin haluttu toteutus. 10/26

11 Kuva 5: Simulaatiokehyksen erikoistaminen Robottikehyksen luokkakaavio on esitetty vielä erikseen kuvassa 6. Kuvan jälkeen on esitettynä variaatiopisteittäin erikoistamismallit. Kuva 6: Robottikehys 11/26

12 Robottikehyksen variaatiopisteiden kuvaukset Muunneltavuusvaatimus: Uuden robotin lisäys Muunneltavuusvaatimuksen kuvaus: Vaatimuksella tarkoitetaan uudenlaisen tekoälyn ohjelmoimista robotille. Robotin tekoäly ilmenee sen alustusvaiheen varustehankinnoissa ja pelivuoron aikana tehtävissä toimenpiteissä. Muunneltavuuden kiinnitysaika: Robotit lisäsään dynaamisesti plugineina Rakenne Selitykset RobotC: Robottikehyksessä oleva abstrakti kantaluokka robottien toiminnallisuudelle MyRobotAI: Uusi sovelluskohtainen robotti initialize(): Tämän funktion avulla robotti sijoitetaan alkutilaansa: mm. sijainti maailmassa ja viitteet malli- ja näkymäosiin sekä engineen. construct(): Tätä kutsutaan kerran kehyksen toimesta kun robotin on aika hankkia varusteet kaupasta. turn(): Tätä kutsutaan jokaisella robotin pelivuorolla. Rajoitteet construct(): Hankittavien varusteiden määrää on rajoitettu käytettävissä olevien ostovarojen mukaan (account). Erikoistus ei saa luoda itse uutta ShopAccount rajapinnan toteuttavaa oliota. turn(): Vuoron aikana tehtävien toimenpiteiden määrää on rajoitettu käytettävissä olevien vuorokrediittien muodossa (credit). Erikoistus ei saa luoda itse uutta TurnCredit rajapinnan toteuttavaa oliota. 12/26

13 Muunneltavuusvaatimus: Uuden varustetyypin luonti Muunneltavuusvaatimuksen kuvaus: Uuden suojiin, moottoriin jne. rinnastettavan varustetyypin luonti Muunneltavuuden kiinnitysaika: Käännösaikana Rakenne Selitykset Feature: Kaikkien varusteiden kantaluokka. Armor, Motor, Gun ja Radar: Robottikehyksessä oletuksena olevat varustetyypit. Nämä määrittelevät kunkin varustetyypin käyttörajapinnan ja tarvittaessa myös osan toteutuksesta. RobotM: Yleinen robottien MVC-arkkitehtuurimallin mukainen malliosa. MyFeature: Oma varuste MyRobotM: Oma erikoistettu versio robotin malliosasta, joka voi koostua myös uudesta varustetyypistä. RobotC: Robottikehyksen mukainen robotin kontrolleriosa, joka mm. luo robotin malliosan. MyRobotC: Sovelluskohtainen robotin kontrolleriosa, joka tulee muuttaa luomaan robotin sovelluskohtainen malliosa. Rajoitteet MyRobotM: Perityn RobotM:n jäsenmuuttujien arvot pitää lukea get() funktioilla ja asettaa set() funktioilla MyFeature: Perityn Feature-luokan jäsenmuuttujien arvot pitää lukea get() funktioilla ja 13/26

14 asettaa set() funktioilla Muunneltavuusvaatimus: Uuden varusteen luonti Muunneltavuusvaatimuksen kuvaus: Uuden suojan, moottorin jne. tyyppisen varusteen luonti Muunneltavuuden kiinnitysaika: Käännösaikana Rakenne Selitykset Armor: Suojien kantatyyppi Light-, Basic-, ja HeavyArmor: Robottikehyksen mukana toimitettavat kolme erilaista suojatyyppiä. Näiden nimi mukailee suojan tehokkuutta. AbstractFeatureFactory: Abstrakti tehdas -suunnittelumallin mukainen tehdas, jonka avulla on mahdollista luoda robottikehyksen mukana toimitettavia varusteita (tarkat tyypit eivät ole kuvassa). MyFeatureFactory: Oma varustetehdas, joka osa vähintään luoda omia varusteita. Robottikehyksen mukana tulevista varusteista tehdas voi valita haluamansa joukon, jotka on sen avulla mahdollista luoda. MyArmor: Oma sovelluskohtainen suojatyyppi. Rajoitteet MyFeatureFactory: Tämän tulee tarjota metodi MyFeature tyyppisten varusteiden luomiseen 14/26

15 Muunneltavuusvaatimus: Uusi pelityyppi Muunneltavuusvaatimuksen kuvaus: Uudenlaisen pelityypin toteuttaminen erikoistuksessa. Muunneltavuuden kiinnitysaika: Käännösaikana Rakenne Selitykset RoboEngine: Robottisimulaatioiden hallinnasta vastaava luokka. RoboTimer: Ajastustapahtumista vastaava luokka. Kutsuu RoboEngine:n timertick() funktiota asetetuin väliajoin. MyEngine: Oma erikoistettu toteutus RoboEngine:stä. Rajoitteet MyEngine/timerTick(): Tämän tulee tarkastaa onko jokin robotti voittanut pelin ja jos ei ole, niin antaa kullekin robotille suoritusaikaa kutsumalla robotin kontrolleriosan turn() -funktiota. MyEngine/checkForWinner(): Tämän tulee palauttaa joko pelin voittanut robotti tai null. MyEngine/nextRobot(): Tämän tulee palauttaa seuraavana vuorossa oleva robotti. Erilaiset pelisäännöt enginessä voivat myös vaikuttaa robottien tekoälyn ohjelmointiin. 4 Arkkitehtuurin arviointi 15/26

16 4.1 Laatuvaatimukset ja skenaariot Laatuvaatimus Tarkempi kuvaus Skenaario Muunneltavuus Sovelluksen käyttöliittymän variointi Erikoistaja voi koodausaikana vaikuttaa sovelluksen käyttöliittymään. Sovelluskohtainen työkalupalkki Vaikka työkalupalkki kuuluukin käyttöliittymään niin käyttöliittymäkehys jättää tämän täysin auki, koska eri sovelluksissa tarvitaan erilaisia kontrollointitapoja simulaation ajoon. Simulaatiokehyksen on tarjottava yleiskäyttöinen työkalupalkki simulaatioiden ajoon. Erilaiset simulaatio-oliot Erilaisten simulaatio-olioiden tarve on on selvä, koska samassa simulaatiossa voi olla tarve erilaisille olioille. Simulaation suoritus Erikoistuksen on jollain tapaa suoritettava simulaatiota esim. askel kerrallaan. Simulaation visualisointi: ulkoasu Simulaatio-olioiden ulkoasu tulee olla erikoistajan päätettävissä Simulaation visualisointi: tilaikkuna Tilaikkunan tietoja varten Sovelluksen näytön eri osaalueiden (valikko, työkalupalkki tai näyttöalue) järjestyksen vaihtaminen tai oletustoteutuksen korvaaminen uudella. Onnistuu yhdessä työpäivässä. Erikoistaja tarvitsee sovelluskohtaista työkalupalkkia ja tekee sitä varten oman toteutuksen. Toteutus kestää kaksi työpäivää. Erikoistaja mallintaa simulaatio-oliot ja toteuttaa niiden käyttäytymisen ja ulkoasun. Yhden simulaatioolion toteuttaminen onnistuu työpäivässä. Erikoistaja tekee toteutuksen mitä tapahtuu simulaation käynnistyksen sovelluskohtaisesta työkalupalkista jälkeen ja miten simulaation suoritusta hallitaan. Toteutus valmistuu työpäivässä. Erikoistaja määrittelee simulaatio-oliolle vapaavalintaisen ulkoasun. Ulkoasun määritys onnistuu kahdessa tunnissa. Erikoistaja määrittää simulaatio-olion palauttamaan tarpeelliset tiedot. Tarpeellisten tietojen määritys onnistuu 16/26

17 Suorituskyky Laatuvaatimus Tarkempi kuvaus Skenaario simulaatio-olioiden tulee osata kertoa tarpeelliset tiedot Simulaatiomaailman variointi Maailman koon muuttaminen tulee olla mahdollista. Sovelluskohtaisen robotin luonti Robottikehyksen erikoistuksessa tulee olla mahdollista lisätä erilaisia robotteja Sovelluskohtaisen robotin varustetyypin luonti Robottikehyksen erikoistuksessa tulee olla mahdollista määrittää uusia varustetyyppejä Sovelluskohtaisen varusteen luonti Robottikehyksen erikoistuksessa tulee olla mahdollista määrittää uusia varusteita olemassa oleviin tyyppeihin Sovelluskohtainen engine esim. eri sääntöjä varten Robottikehyksen erikoistuksessa pitää pystyä vaikuttamaan simulaation kulkuun esim. erilaisten pelisääntöjen muodossa. Erikoistuksen käyttäjä haluaa tehdä ison simulaation ja sijoittaa simulaatio-olioita paljon maailmaan. Pieni vasteaika toiminnoissa kahdessa tunnissa. Sovelluksen erikoistajan tulee ilmoittaa maailman oletuskoko ja käyttäjä voi muuttaa kokoa myöhemmin ajon aikana. Toiminnallisuuden lisäämien onnistuu työpäivässä. Robottikehyksen erikoistaja haluaa määrittää uuden, muista erilaisesti käyttäytyvän robotin. Robotin luominen onnistuu työpäivässä. Robottikehyksen erikoistaja tarvitsee jotain mielivaltaista uutta varustetta robotissaan. Varustetyypin luominen onnistuu työpäivässä. Robottikehyksen erikoistaja haluaa määrittää jonkin olemassa olevan varusteen käyttäytymisen uudestaan. (esim. pidemmän kantaman tutka). Varusteen luominen onnistuu neljässä tunnissa. Robottikehyksen erikoistaja haluaa tehdä uudenlaisen pelisimulaation esim. erilaisilla säännöillä. Enginen toteutus onnistuu kahdessa työpäivässä. Vähintään 500 simulaatio-oliota samassa simulaatiossa Simulaation käynnistys on tapahduttava vähintään 17/26

18 Laatuvaatimus Tarkempi kuvaus Skenaario sekunnissa 4.2 Vaatimusten tarkastelu arkkitehtuurissa Vaatimus Toteutus Analyysi Sovelluksen käyttöliittymän variointi Sovelluskohtainen työkalupalkki Erilaiset simulaatio-oliot Simulaation suoritus Erikoistaja voi varioida käyttöliittymäkehyksen toteutusta ylikirjoittamalla metodit, jotka luovat valikon, työkalupalkit ja varsinaisen sovelluksen näyttöalueen (contents). Näyttöaluetta voi lisäksi varioida siten, että kunkin maailman, tilanäkymän tai lokin saa halutessaan jätettyä pois. Simulaatiokehys tarjoaa perustyökalupalkin uuden simulaation aloittamiseen, simulaation käynnistämiseen, tauon asettamiseen ja lopettamiseen. Lisäksi työkalupalkissa on säädin simulaationopeudelle. Erikoistettava kehys voi halutessaan ottaa tämän käyttöön tai tehdä itse uuden. Perimällä kehyksen luokka ItemModel ja toteuttamalla rajapinnat ItemView ja ItemController. Erikoistus määrittelee tarkemman toteutuksen erilaisille simulaatio-olioille. Simulaatiokehys tarjoaa perustoteutuksen olioiden malliosasta. Yksinkertainen tapa tuottaa tapahtumia määrävälein on käyttää GUI-kehyksen Timerluokkaa. Tätä ajetaan Käyttöliittymän variointi onnistuu helposti jos käyttöliittymän yleinen rakenne sopii sovellukseen (valikon työkalupalkkien yms. keskenäinen sijainti). Sama pätee näyttöalueeseen. Jos simulaatiokehyksen tarjoama perustyökalupalkki ei sovellu, pitää erikoistajan opetella työkalupalkin teko SWT:n avulla. Sovelluskohtainen työkalupalkki on kuitenkin mahdollista tehdä. Erikoistajalla kuluu kontrollerija näkymäosien toteutukseen luultavasti (ainakin ensimmäisillä kerroilla) jonkin verran aikaa. Malliosaan riittänee useimmiten tarpeellisten ominaisuuksien lisääminen ja niiden get/set -funktioiden toteutus. Yksinkertaisen ei reaaliaikaisen simuloinnin toteuttaminen onnistuu helposti, koska mm. synkronointiin ja 18/26

19 Vaatimus Toteutus Analyysi Simulaation visualisointi: ulkoasu Simulaation visualisointi: tilaikkuna Simulaatiomaailman variointi Sovelluskohtaisen robotin luonti käyttöliittymän kanssa samassa säikeessä jotta sen aiheuttamista tapahtumista voi käyttöliittymää piirtää. Tästä seuraa myös se, ettei ajastin ole erityisen tarkka, mutta riittänee yksinkertaiseen, ei reaaliaikaiseen simulointiin. Käyttöliittymäkehys ei tarjoa muita perusprimitiivejä simulaation visualisointiin kuin SWT:n Image-luokan jonka instanssin kehys pyytää piirtäessään simulaatio-olioita. Tämän kuvan käyttöliittymäkehys piirtää sen keskipisteen kohdalle halutulla pyöräytyksellä keskipisteen ympäri. Image luokan olion voi joko lukea tiedostosta (esim. jpg tai png) tai sitten piirtää itse käyttämällä SWT:n funktioita imagen käsittelyyn. Simulaatio-olion tulee toteuttaa StatusViewItem rajapinta, jota käytetään tilatietojen välittämiseen käyttöliittymäkehykselle. Tarkkailija suunnittelumallin mukaisesti simulaatio-olioiden tulee ilmoittaa tarkkailijoilleen muutoksistaan. Maailman kokoa muutettaessa se tyhjennetään ensin (tai ainakin maailmaa pienennettäessä tulee poistaa maailmalta pudonneet tai siirtää ne reunalle). Erikoistaja tekee uuden robotin perimällä abstraktin RobotC -luokan ja toteuttaa sen poissulkemiseen ei erikoistajan tarvitse kiinnittää huomiota. Jos simulaatiolle halutaan reaaliaikaominaisuuksia muuttuu toteutus monimutkaisemmaksi jo senkin takia ettei SWT salli käyttöliittymän widget:ien käsittelyä muualta kuin käyttöliittymän säikeestä. Ulkoasun määritys tapahtuu käytännössä piirtämällä sopiva kuva kuvankäsittelyohjelmalla ja lataamalla ko. kuva simulaatio-olion näkymää vastaavassa luokassa. Tämä riittää hyvin jos ulkoasua ei joudu skaalaamaan simulaation suorituksen aikana paljoa jolloin vektorigrafiikka olisi parempi. Lisäksi jos simulaatioolion ei halua pyörähtävän keskipisteensä ympäri, vaatii sen huomioon ottaminen kuvan keskipisteen koordinaattien muunnoksen eri pyörähdyskulmilla. Erikoistajalla on täysi kontrolli siitä, mitä tilatietoja näytetään. Tilatietoja ei kuitenkaan voi tämän avulla muokata Maailman koon muuttaminen onnistuu, koska se on toteutettuna jo simulaatiokehyksessä. Robotin käyttäytymisen muuttaminen onnistuu melko helposti. Jos tarvitaan muita 19/26

20 Vaatimus Toteutus Analyysi Sovelluskohtaisen robotin varustetyypin luonti Sovelluskohtaisen varusteen luonti Sovelluskohtainen engine esim. eri sääntöjä varten Vähintään 500 simulaatio-oliota samassa simulaatiossa abstraktit funktiot. Varustetyyppi luodaan perimällä robottikehyksen abstrakti luokka Feature. Tämän lisäksi joutuu myös lisäämään robotin malliosaan (RobotM), jotta varusteen voi ottaa käyttöön. Varuste luodaan perimällä haluttu abstrakti varustetyyppi ja toteuttamalla sen vaadittu rajapinta. Tämän lisäksi pitää myös lisätä varusteen luontimekanismi käytettyyn varustetehtaaseen. Enginen erikoistaminen tapahtuu perimällä robottikehyksen luokka RobotEngine ja ylimäärittämällä sen halutut funktiot. Esim. sääntöjen tapauksessa ko. funktiot ovat timertick(), checkforwinner() ja nextrobot(). Simulaatiokehyksen simulaatiomaailmaa vastaavan luokan eli SimulationWorld:n pitää tallentaa simulaatio-oliot sellaiseen tietorakenteeseen, joka mahdollistaa vaatimuksen täyttymisen muutoksia esim. robotin malliosaan, niin silloin joutuu toteuttamaan enemmän. Varustetyypin luominen on sinällään helppoa, mutta sen vaatimat muutokset robotin kontrolleri- ja malliosiin tekevät varustetyypin lisäämisestä kankeaa. Varusteen lisääminen onnistuu. Enginen erikoistaminen näiden funktioiden osalta onnistuu. Koska simulaatiokehys toteutetaan Java:lla voi simulaatiokehyksen SimulationWorld pitää simulaatio-oliot hajautustaulu muotoisessa tietorakenteessa (HashMap) avaimena olion id. Tällöin ei ole ongelmia selviytyä suuremmastakaan joukosta simulaatio-olioita. Raja simulaatio-olioiden määrälle tulee vastaan viimeistään kun SWT:n avulla piirtää olioita, jolloin alustasta riippuen kuviin liittyviä kahvoja (handle) ei ole rajatta tarjolla. Esim. win32 alustalla raja on kokeilujen mukaan /26

21 Vaatimus Toteutus Analyysi Pieni vasteaika toiminnoissa Simulaatiokehyksen toiminnot on tehty nopeasti suoritettaviksi. Koko järjestelmän suorituskykyyn vaikuttaa myös erikoistuksen suorituskyky. Skenaariona ollut simulaation käynnistyksen vasteaika on riippuvainen erikoistuksesta. Esim. Game-of-Life:ssa aluksi pelaaja asettaa elävät solut pelialueelle ja simulaation käynnistämisvaiheessa luodaan tarvittava määrä ei-eläviä soluja. Näitä ovat kaikki loput pelialueen solut. Suurella pelialueella tämä luonnollisesti kestää pidempään. 5 Esimerkkierikoistus Erikoistuksen luokkakaavio on havainnollistettu kuvassa 7. Kuva 7: Robottisota-erikoistuksen luokkakaavio 21/26

22 Luokka: Basic-, Light-, ja HeavyArmor Vastuu: Suojavarustetyypin sovelluskohtaiset erikoistukset Kuvaus: Nimiensä mukaisesti suojia on 3 eri tehoista ja hintaista vaihtoehtoa Luokka: BasicEngine Vastuu: Robotin liikkumisnopeuden laskeminen. Kuvaus: Perusmoottori robotille. Luokka: Laser ja Mortar Vastuu: Aseistus Kuvaus: Laser suora-ammunta-ase ja kranaatinheitin suoraan ja epäsuoraan tuleen. Luokka: FeatureFactory Vastuu: Robottisodan sovelluskohtaisten varusteiden luominen Kuvaus: Käytetään em. varusteiden luonnissa Luokka: BasicRadar Vastuu: Toisten robottien tutkaaminen Kuvaus: Perustutka Luokka: RobotWarGameEngine Vastuu: Robottisota pelin pyöritys Kuvaus: Toimii kaikki vastaan kaikki -säännöillä Luokka: ExplosionV, ExplosionM, TrailV ja TrailM Vastuu: Räjähdyksen ja aseen jäljen näyttäminen maailmassa Kuvaus: Vastaa em. olioiden näkymä ja malliosia. Koska nämä ovat vain yhden pelivuoron ajan näkyvillä, eivätkä ne osallistu simulaation millään tavalla, ei näillä tarvita kontrolleriosaa lainkaan. Luokka: Robot1AI ja Robot2AI Vastuu: Robottien 1 ja 2 tekoäly Kuvaus: Nämä kuvitteelliset luokat vastaavat robottisimulaatioon käyttäjän ohjelmoimia robotteja. Näissä luokissa on toteutettuna robotin varustaminen varusteilla sekä funktio, jota kutsutaan aina robotin pelivuorolla. 22/26

23 5.1 Käytetyt suunnittelumallit Tässä vain listattu käytetyt suunnittelumallit, [voisivat olla myös luvun 3 tapaan kuvattuna] Abstract factory FeatureFactory:n ja RobotFactoryn tapauksessa Mediator aseen käytön yhteydessä kun aseen ampumisen jälkeen lasketaan vahingot roboteille. 5.2 Pelisimulaation suorituksen kuvaus RoboEngine käyttää RoboTimer luokan oliota luomaan tapahtumia säännöllisin väliajoin simulaatiota ajettaessa. Tällaisen tapahtuman tapahtuessa RoboEngine antaa aina kullekin elossa olevalle robotille pelivuoron. Kuvassa 8 on esitetty yksittäisen pelivuoron eteneminen. Kuva 8: Pelivuoro Pelivuoron selostus 1. Simulaation ollessa käynnissä RoboTimer kutsuu tasavälein RoboEnginen timer- Tick() -funktiota. RoboEngine tarkastaa ensin, että onko jäljellä enää yksi robotti, jolloin se on voittaja. Muutoin jatketaan simulaation ajoa. 23/26

24 2. RoboEngine pyytää maailmaa poistamaan kaikki pelkästään näkymään kuuluvat item:t, kuten räjähdykset tai aseen jäljet. 3. Paluu 4. RoboEngine kutsuu vuorossa olevan robotin turn() -funktiota. 5. Robotille ohjelmoitu tekoäly saa tehdä vuoron aikana mitä tahansa: muuttaa ajonopeutta (säätämällä moottorin tehoa) tai -suuntaa ja käyttää ominaisuuksia vastustajien löytämiseen sekä tuhoamiseen. 6. Paluu 7. Paluu 8. RoboEngine kutsuu vuorossa olleen robotin mallia liikuttamaan itseään ajosuuntaansa säädetyn moottorin tehon edellyttämä matka. 9. Paluu 10. Paluu 5.3 Testaus Tähän on koottu esimerkin omaisesti joitakin järjestelmän toimintaa testaavia testitapauksia. Pelkästään simulaatiokehyksen toiminnan testaamiseen vaadittaisiin muutama erikoistus ja sama pätee myös käyttöliittymäkehykseen, joten tässä ei ole tarkoitus pyrkiä testaamaan järjestelmää kattavasti. Testitapauksen nimi: Simulaation toiminta Kuvaus: Testitapaus testaa simulaation suoritusta ja sen päättymistä. Lähtöehdot: Sovellus on käynnistetty ja simulaatiomaailma on tyhjä Sovellukseen on ohjelmoitu vähintään yksi robotti, joka osaa etsiä ja tuhota toisia robotteja Suoritus: 1. Testaaja sijoittaa vähintään kaksi robottia pelialueelle 2. Testaaja käynnistää simulaation 3. Robotit taistelevat kunnes on enää yksi hengissä 4. Simulaatio päättyy Loppuehdot ja hyväksyntä: Simulaatio päättyy kun yksi robotti on enää hengissä Jos käy niin, että robotit ajautuvat liian kauaksi toisistaan eivätkä ne enää osaa etsiä toisiaan, pysäytetään simulaatio ja aloitetaan testitapauksen suoritus alusta. Testitapauksen nimi: Robottien varusteiden toimivuus 24/26

25 Kuvaus: Tällä testitapauksella testataan erilaisten robottien varusteiden toimivuutta ja tehokkuutta. Lähtöehdot: Sovellukseen on ohjelmoitu kaksi robottia, joiden lähdekoodi on saatavilla muokkaamista varten. Näistä toinen on sellainen, että pysyy koko ajan paikallaan eikä ammu ja toinen on sellainen että etsii vihollisen ja yrittää tuhota sen. Sovellus on käynnistetty ja simulaatiomaailma on tyhjä Suoritus: 1. Testaaja laittaa yhden kumpaakin robottityyppiä simulaatiomaailmaan 2. Testaaja käynnistää simulaation 3. Testaaja tarkkailee paikallaan olevan energiaa ja suojien tasoa sekä liikkuvan robotin ampumatarkkuutta ja yleistä toimintaa. 4. Simulaatio päättyy 5. Testitapaus voidaan suorittaa useampaan kertaan vaihtamalla simulaation osallistuvien robottien varustusta Loppuehdot ja hyväksyntä: Testaajan tarkkailun perusteella päätellään ovatko simulaatioon osallistuneiden robottien varusteet toimivia. 5.4 Pelaajan toimien rajoittaminen (Tämä on itseasiassa toteutettu jo robottikehyksessä) Jotta peli olisi mielekäs, pitää robotin ohjelmoijan toimia rajoittaa. Toteutuksessa on huomioitu seuraavat rajoittamistavat: varusteiden ostaminen ja pelivuoron aikana tehtävät toimenpiteet. Lisäksi liikkumista on tavallaan rajoitettu siten, että kukin robotti liikkuu vasta vuoronsa päätteeksi. Varusteiden ostamista ja pelivuoroa on rajoitettu samalla menetelmällä: robotin tekijän toteuttaman funktiot saavat kutsunsa parametrina olion, jolla on tietty määrä krediittiä jäljellä. Kukin oletettu tapahtuma, jonka robotin ohjelmoija voi tässä tilanteessa tehdä, ottaa kyseisen olion parametrinaan ja vähentää rasituksensa mukaan olion krediittiä. Pelaajalle tarjotaan vain rajapinta kyseisten krediitti-olioiden käyttöön ja tästä rajapinnasta ei löydy funktioita krediittien kasvattamiseen. Varusteiden oston tapauksessa kyseessä krediitti-olio vastaa siis pankkitiliä ja pelivuoron tapauksessa kunkin varusteen käytöllä (lähinnä aseet ja tutka) on jokin tietty hinta. Aseiden ja tutkan tehon sekä tarkkuuden lisäksi niiden keskenäistä paremmuussuhdetta voidaan siis myös säätää käytön hinnan perusteella. 5.5 Oman robotin tekeminen Ohjeet robotin tekemiseksi Robotin toteuttavan luokan tulee kuulua pakkaukseen fi.tut.ohar.hsuontau.robo- Sim.plugins 25/26

26 Robotin tulee periä luokka fi.tut.ohar.hsuontau.robosim.controller.robotcontroller Robotin tulee toteuttaa funktio public void construct(featureshop shop, ShopAccount account) Tätä funktiota kutsutaan kerran robotin alustusvaiheessa. Sen tarkoituksena on varustaa robotti eri varusteilla (suojat, moottori, tutka ja aseet). Varusteet ostetaan parametrina saadulta FeatureShop oliolta. Ostetut varusteet on asetettava mallille tyyliin getmodel().setarmor(armor); Robotin tulee toteuttaa funktio public void turn(turncredit credit) Tätä funktiota kutsutaan kerran jokaisella robotin pelivuorolla Vuoron aikana tarkoitus on esim. etsiä muita robotteja ja niitä löydettäessä ampua niitä, tai mitä ikinä sitten kuuluukin kyseisen robotin taktiikkaan :-) Pelivuoron lopuksi robotti siirtyy ajosuuntaansa robotin tehoa vastaavan matkan. Robotin käännetty.class tiedosto tulee sijoittaa pakkauksen nimen osoittamaan hakemistoon fi/tut/ohar/hsuontau/robosim/plugins 26/26

Ohjelmistoarkkitehtuurit harjoitustyö RobotWarGame RobotFW SimulationFW SimulationGUIFW SWT/Java Kuva 1: Esimerkki arkkitehtuurin kerroskuvasta

Ohjelmistoarkkitehtuurit harjoitustyö RobotWarGame RobotFW SimulationFW SimulationGUIFW SWT/Java Kuva 1: Esimerkki arkkitehtuurin kerroskuvasta Ohjelmistoarkkitehtuurit harjoitustyö 2006 1 Johdanto Harjoitustyönä on toteuttaa kerroksittainen sovelluskehys erilaisten simulaatioon perustuvien pelien tekemiseen. Kehyksestä lisäksi erikoistetaan keskenään

Lisätiedot

12. Kehysarkkitehtuurit

12. Kehysarkkitehtuurit 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto

Lisätiedot

Harjoitustehtävät ja ratkaisut viikolle 48

Harjoitustehtävät ja ratkaisut viikolle 48 Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin

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

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

Kehyspohjainen ohjelmistokehitys

Kehyspohjainen ohjelmistokehitys Kehyspohjainen ohjelmistokehitys Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Kehyksen suunnittelu Suunnittelumallit Vaatimusmäärittely Muunneltavuusvaatimukset Kehysarkkitehtuuri Erikoistamisrajapinta

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

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

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

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

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen

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

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

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

KODU. Lumijoen peruskoulu

KODU. Lumijoen peruskoulu KODU Lumijoen peruskoulu Sisällysluettelo 1. Aloitus... 2 1.1 Pelin tallennuspaikka... 2 1.2 Kodu Game lab... 3 2 Maan luominen... 4 2.1. Seinän tekeminen... 5 2.2. Vesialueen tekeminen peliin... 6 2.3.

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

Mainosankkuri.fi-palvelun käyttöohjeita

Mainosankkuri.fi-palvelun käyttöohjeita Mainosankkuri.fi-palvelun käyttöohjeita Sisällys 1. Johdanto... 1 2. Sisäänkirjautuminen... 1 3. Palvelussa navigointi... 2 4. Laitteet... 2 5. Sisällönhallinta... 4 6. Soittolistat... 7 7. Aikataulut...

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti

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

Adobe Digital Editions -ohjeet

Adobe Digital Editions -ohjeet Adobe Digital Editions -ohjeet Adobe Digital Editions on Adoben e-kirjojen lukemiseen tarkoitettu kevyt erillinen lukuohjelma, joka on ollut käytössä Adobe Reader -ohjelman 8-versiosta alkaen. Ohjelman

Lisätiedot

JUnit ja EasyMock (TilaustenKäsittely)

JUnit ja EasyMock (TilaustenKäsittely) OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Harjoitustyö 3 - Reittioptimisaatio

Harjoitustyö 3 - Reittioptimisaatio Harjoitustyö 3 - Reittioptimisaatio Tampereen kaupunki tarjoaa avoin data -sivuilla kaupungin avoimena julkaistun tietoaineston osana Tampereen joukkoliikenteen aikataulut, reitit sekä rajapinnan joukkoliikenteen

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

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009 Antitammirobotti Antti Meriläinen Martin Pärtel 29. toukokuuta 2009 Helsingin yliopisto Tietojenkäsittelytieteen laitos Robottiohjelmoinnin harjoitustyö

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

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi Pietu Pohjalainen Geneerinen metaohjelmointi Syksy 2004 Tietojenkäsittelytieteen laitos Helsingin yliopisto Esityksen sisältö Oliopohjaiset

Lisätiedot

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari

Lisätiedot

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6 Webforum Version 14.4 uudet ominaisuudet Viimeisin päivitys: 2014-12-6 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Dokumentit... 5 Perättäinen tarkistus- ja hyväksymisprosessi...

Lisätiedot

Hallintaliittymän käyttöohje

Hallintaliittymän käyttöohje Hallintaliittymän käyttöohje 1. Yleisiä huomioita Hallintaliittymän käyttöä helpottavia yleisiä huomioita: - Käytä listanäkymien hakukentissä kentän vieressä olevaa hakunappia, älä enter-näppäintä. - Älä

Lisätiedot

Graafinen käyttöliittymä, osa 1

Graafinen käyttöliittymä, osa 1 Graafinen käyttöliittymä, osa 1 Idea, MVC-malli ja ensimmäinen ohjelma Graafinen käyttöliittymä Ensimmäisen kerran tavoitteena on oppia graafisen ohjelman perusidea sekä oppia laatimaan esimerkin mukaan

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

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. MagicDraw-pikaohje Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. Alkuvalmistelut Windows (sali TC205) 1) Kirjaudu sisään TTY:n intra-tunnuksella.

Lisätiedot

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Skype for Business ohjelman asennus- ja käyttöohje Sisällys Skype for Business ohjelman asennus- ja käyttöohje Sisällys Kirjautuminen Office 365 -palveluun... 2 Skype for Business ohjelman asentaminen... 3 Yhteyshenkilöiden lisääminen Skype for Business ohjelmassa...

Lisätiedot

Käyttöliittymän muokkaus

Käyttöliittymän muokkaus Käyttöliittymän muokkaus Ohjelman pitkän kehityshistorian takia asetukset ovat jakaantuneet useampaan eri kohtaan ohjelmassa. Ohessa yhteenveto nykyisistä asetuksista (versio 6.4.1, 2/2018). Ylä- ja sivupalkkien

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut

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

Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi. Word 2007

Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi. Word 2007 Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi Word 2007 Perttu Suhonen 2008 Sisällysluettelo 1 Sisällysluettelon tekeminen...5 1.1 Monitasoinen numerointi...5 1.2 Otsikkotyylien

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

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

OP-eTraderin käyttöopas

OP-eTraderin käyttöopas OP-eTraderin käyttöopas Tämä käyttöopas on lyhennetty versio virallisesta englanninkielisestä käyttöoppaasta, joka löytyy etrader - sovelluksen Help-valikosta tai painamalla sovelluksessa F1 -näppäintä.

Lisätiedot

Tentin asetukset. Tentin lisääminen. Tentin asetukset

Tentin asetukset. Tentin lisääminen. Tentin asetukset Tentin asetukset Moodlen tentti-aktiviteetin perusasetukset käydään läpi tällä sivulla. Jos etsit ohjetta kysymysten luomiseen, katso erillinen ohjesivu kysymyspanki sta. Tentti soveltuu "perinteisen tenttimisen"

Lisätiedot

Osallistavan suunnittelun kyselytyökalu

Osallistavan suunnittelun kyselytyökalu Osallistavan suunnittelun kyselytyökalu Käyttöohje ARFM- hankkeessa jatkokehitetylle SoftGIS-työkalulle Dokumentti sisältää ohjeistuksen osallistavan suunnittelun työkalun käyttöön. Työkalu on käytettävissä

Lisätiedot

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Skype for Business ohjelman asennus- ja käyttöohje Sisällys Skype for Business ohjelman asennus- ja käyttöohje Sisällys Kirjautuminen Office 365 -palveluun... 2 Skype for Business ohjelman asentaminen... 3 Yhteyshenkilöiden lisääminen Skype for Business ohjelmassa...

Lisätiedot

UpdateIT 2010: Editorin käyttöohje

UpdateIT 2010: Editorin käyttöohje UpdateIT 2010: Editorin käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com Sisällys Editorin käyttöohje...

Lisätiedot

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Tehtävä 1 Tehtävässä 1 mallinnettiin Monopolipeliä. Alla olevassa esimerkissä peliin liittyy aina 2 noppaa, peliä pelataan pelilaudalla,

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1. Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net

Lisätiedot

Testaussuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Asdf Helsinki 22.2.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Kuisma Sami Louhio

Lisätiedot

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

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

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet Toiminnot eli käyttäytyminen Tieto eli rakenteelliset ominaisuudet Olio (ks. määritelmä): rajattavissa ja yksilöitävissä oleva asia tai käsite, joka on merkityksellinen käsillä olevan tarkastelun kannalta

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

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

Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja) Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Tässä osassa tutustutaan yhteen rakennemalliin (Proxy) ja kolmeen luontimalliin (Factory Method, ) teoksen [Gam] pohjalta.

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 VIII Poikkeusten ja tapahtumien käsittely Sisältö 1. Poikkeusten käsittelyn käsitteitä ja suunnittelukriteerejä 2. Poikkeusten käsittely C++:ssa 3. Poikkeusten

Lisätiedot

ejuttu ohjeet kuinka sitä käytetään.

ejuttu ohjeet kuinka sitä käytetään. ejuttu ohjeet kuinka sitä käytetään. 1. Artikkelin lisääminen a. Kirjaudu sisään b. Lisää sisältöä c. Artikkeli i. Lisää pääkuva 1. Pääkuvalle kuvateksti ii. Anna artikkelille otsikko iii. Ingressi-kenttään

Lisätiedot

AutoCAD-natiiviobjektin toteutus

AutoCAD-natiiviobjektin toteutus AutoCAD-natiiviobjektin toteutus Kontiotuote OY Maailman toiseksi suurin hirsitalotoimittaja Aloittanut toimintansa 70-luvulla Liikevaihto vuonna 2003-37,355 Milj. euroa josta vientiä 7,376 Milj. euroa

Lisätiedot

Ohjelmistokehykset (software frameworks)

Ohjelmistokehykset (software frameworks) Ohjelmistoarkkitehtuurit 1 (software frameworks) Osittain abstraktiksi jätettyjä ohjelmistorunkoja, joita eri tavoin täydentämällä saadaan rakennettua kokonaisia uusia sovelluksia tai sovelluksen osia

Lisätiedot

Visma Business AddOn Tositteiden tuonti. Käsikirja

Visma Business AddOn Tositteiden tuonti. Käsikirja Visma Business AddOn Tositteiden tuonti Käsikirja Oppaan päiväys: 10.2.2012. Asiakaspalvelu: Helpdesk: www.visma.fi Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin

Lisätiedot

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle 2 Sisällys 1 Palvelunhallinta... 3 1.1 Käyttäjäryhmän luominen... 3 2 Tehtävienhallinta- perustiedot... 4 2.1 Yhtiön perustiedot... 4 2.2 Tehtävä-/

Lisätiedot

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy Käyttöohje Ticket Inspector Versio 1.0 Sportum Oy 10.5.2017 Sivu 1 Sisällysluettelo 1. Yleistä... 2 2. Kirjautuminen ensimmäisellä kerralla / PIN-koodin unohtuessa... 3 3. Tunnistautuminen... 4 4. Päänäkymä...

Lisätiedot

Ohjelmiston toteutussuunnitelma

Ohjelmiston toteutussuunnitelma Ohjelmiston toteutussuunnitelma Ryhmän nimi: Tekijä: Toimeksiantaja: Toimeksiantajan edustaja: Muutospäivämäärä: Versio: Katselmoitu (pvm.): 1 1 Johdanto Tämä luku antaa yleiskuvan koko suunnitteludokumentista,

Lisätiedot

OPI-Maksut - Käyttötapaukset

OPI-Maksut - Käyttötapaukset OPIMaksut Käyttötapaukset Toiminnallisuudet ja käyttötapaukset: maksupalvelutoiminnot Toimeksiannon lisääminen Palveluväylä toiminto: Toimeksiannon lisääminen Yleiskuvaus Palveluväylään sallitut asiointisovellukset

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

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

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

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit, syksy Ohjelmistoarkkitehtuurit 8.10.2012 1 (software frameworks) Osittain abstraktiksi jätettyjä ohjelmistorunkoja, joita eri tavoin täydentämällä saadaan rakennettua kokonaisia uusia sovelluksia tai sovelluksen

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

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3 AgilElephant SEPA Diary Petri Kalsi 55347A Heikki Salminen 51137K Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: PK&HS Sivu 1 / 7 Dokumenttihistoria Revisiohistoria Revision päiväys: 29.11.2004 Seuraavan

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

Sport In The Box Käyttöohje

Sport In The Box Käyttöohje Sport In The Box Käyttöohje Esivalmistelut: Kytke käytössä oleva pelikello/konsoli kiinni USBkaapelilla tietokoneeseen ennen virran kytkemistä pelikelloon/konsoliin. Odota että laite on asennettu käyttövalmiiksi,

Lisätiedot

HP ProBook 430 G5 kannettavien käyttöönotto

HP ProBook 430 G5 kannettavien käyttöönotto HP ProBook 430 G5 kannettavien käyttöönotto Windows 10:n asennus, päivitysten tarkistus ja Abitti-asetukset Kytke tietokone verkkovirtaan ennen koneen käynnistämistä! Windows 10 Home käyttöjärjestelmän

Lisätiedot

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia

Lisätiedot

Uutiskirjesovelluksen käyttöohje

Uutiskirjesovelluksen käyttöohje Uutiskirjesovelluksen käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Johdanto... 1 Päänavigointi...

Lisätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

Collector for ArcGIS. Ohje /

Collector for ArcGIS. Ohje / Collector for ArcGIS Ohje / 10.5.2019 2 (11) Sisältö 1. Collector for ArcGIS... 3 2. Kartan luominen ArcGIS Onlinessa... 3 2.1 Karttatason luominen... 3 2.2 Ominaisuustietotaulun kenttien määrittäminen...

Lisätiedot

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan

Lisätiedot

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi Solidity älysopimus ohjelmointi Sopimus suuntautunut ohjelmointi Merkle puu Kertausta eiliseltä Solidity on korkean tason älysopimus ohjelmointikieli Muistuttaa olio-ohjelmointia Javalla Sopimuskoodi on

Lisätiedot

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014 Tietokanta Tietokanta on työkalu, jolla opettaja ja opiskelijat voivat julkaista tiedostoja, tekstejä, kuvia ja linkkejä alueella. Opettaja määrittelee lomakkeen muotoon kentät, joiden kautta opiskelijat

Lisätiedot

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Käyttöohje Boa Open Access Helsinki 5.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari Heikkinen

Lisätiedot

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Condess ratamestariohjelman käyttö Aloitus ja alkumäärittelyt Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Kun kysytään kilpailun nimeä, syötä kuvaava nimi. Samaa nimeä käytetään oletuksena

Lisätiedot

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen Enigmail-opas Enigmail on Mozilla Thunderbird ja Mozilla Seamonkey -ohjelmille tehty liitännäinen GPG-salausohjelmiston käyttöä varten. Sitä käytetään etenkin Thunderbirdin kanssa sähköpostin salaamiseen

Lisätiedot

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut järjestelmät Luku 2 Sivu 1 (??) Kiertokysely Perinteiset ohjelmointikielet kuten C tukevat hyvin sekventiaalista ohjelmointia, jossa herätteisiin reagointi on helppoa toteuttaa pollauksella

Lisätiedot

KYMP Webmail -palvelu

KYMP Webmail -palvelu KYMP Webmail -palvelu Sisältö 1. Kirjautuminen... 3 2. Viestin merkinnät... 4 3. Viestien lukeminen... 4 Viestiin vastaaminen... 4 Viestin välittäminen edelleen / uudelleen ohjaus... 5 4. Viestin kirjoittaminen...

Lisätiedot

11. Kehysarkkitehtuurit

11. Kehysarkkitehtuurit 11. Kehysarkkitehtuurit Johdanto Kehystyypit Kehykset ja arkkitehtuuri Kehykset ja suunnittelumallit Kehyspohjainen ohjelmistokehitys Esimerkkikehys Kehysten toteutuksesta Kehysten etuja ja ongelmia Yhteenvetoa

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen käyttöliittymän ohjelmointi Syksy 2013 TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 10 Rinnakkaisuus käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Rinnakkaisuus ja käyttöliittymäohjelmointi

Lisätiedot

Sähköpostitilin luonti 07.06.2011

Sähköpostitilin luonti 07.06.2011 Sähköpostitilin luonti 07.06.2011 SÄHKÖPOSTITILIN LUONTI Tilin luonti pääkäyttäjän hallintaportaalissa 3 Sähköpostitilin luonti Outlook 2010 ohjelmaan 8 Tämä ohje on lyhennetty versio sähköpostilin Hallintaportaalin

Lisätiedot

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa

Lisätiedot

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja

Lisätiedot

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit. Kevät Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

KÄYTTÖOHJE. Servia. S solutions

KÄYTTÖOHJE. Servia. S solutions KÄYTTÖOHJE Servia S solutions Versio 1.0 Servia S solutions Servia Finland Oy PL 1188 (Microkatu 1) 70211 KUOPIO puh. (017) 441 2780 info@servia.fi www.servia.fi 2001 2004 Servia Finland Oy. Kaikki oikeudet

Lisätiedot

lizengo Asennusopas Windows: in kopioiminen

lizengo Asennusopas Windows: in kopioiminen lizengo Asennusopas Windows: in kopioiminen Windows: in kopioiminen lizengo Asennusopas Klikkaa sitä Windows-versiota, jonka haluat kopioida USB-tikulle, niin pääset suoraan oikeaan oppaaseen. Windows

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko Ohjelmistokehykset Määritelmä & tavoitteet, taustaa & peruskäsitteitä, kehykset vs. suunnittelumallit, erikoistamisrajapinnat & kontrollinkulku, kehystyypit, kehysten rakenne ja evoluutio, esimerkki: JHotDraw,

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