13. Esimerkki: Symbianympäristö

Koko: px
Aloita esitys sivulta:

Download "13. Esimerkki: Symbianympäristö"

Transkriptio

1 212 Sulautettu ohjelmointi 13. Esimerkki: Symbianympäristö Tässä luvussa annamme esimerkin eräästä todellisesta sulautettujen järjestelmien toteuttamisessa käytetystä ympäristöstä, Symbian-käyttöjärjestelmästä. Tässä yhteydessä ei kuitenkaan esitellä Symbianympäristöä kokonaisuudessaan (sitä varten on omat teoksensa), vaan keskitytään nimenomaan niihin piirteisiin, jotka sen suunnittelussa paljastavat taustalla olleet sulautettujen järjestelmien yleiset ominaisuudet ja niihin liittyvät ongelmat, kun pyritään käyttämään C++-kieltä tarkoituksenmukaisesti. Erityisesti varsinainen Symbian-sovelluskehitys sivuutetaan, sillä siihen liittyvät ominaisuudet ovat samantapaisia kuin moniin muihinkin graafisiin sovelluskehitysympäristöihin 28. Sen sijaan taustalla oleva sovelluskehys esitellään lyhyesti, samoin kuin muut Symbianiin sisällytetyt sovelluskehitysmahdollisuudet Yleiskuvaus Symbian OS alunperin EPOC perustuu C++-kieleen ja oliosuunnittelun perusajatuksiin. Suunnitteluun ovat vaikuttaneet mobiililaitteiden kriittiset ominaisuudet ja kehittäjien kokemukset aiempien mobiililaitteiden ja niiden käyttöjärjestelmien suunnittelusta. Koska käyttöjärjestelmän suunnittelu on edennyt rinnan C++-kielen kehityksen kanssa, osaan nyky-c++:n ominaisuuksista ehdittiin Symbianissa kehittää oma, rinnakkainen ratkaisunsa ennen kieleen standardoitua vastaavaa mekanismia. Symbian OS on moniajokäyttöjärjestelmä, jossa käyttöjärjestelmän ydin vaihtaa suoritettavia säikeitä irrottavasti. Käyttöjärjestelmän eri versiot tukevat reaaliaikaisuutta vaihtelevasti, ja reaali- 28. On tosin myönnettävä että joissakin kohdin Symbianissa mennään äärimmäisyyksiin moneen muuhun ympäristöön verrattuna.

2 Esimerkki: Symbian-ympäristö 213 aikaominaisuuksia on lisätty järjestelmään tarpeen mukaan. Aivan ensimmäisissä käyttöjärjestelmän versioissa tukea reaaliajalle ei ollut lainkaan. Symbian on ehkä sikäli monesta muusta sulautettuun ympäristöön tarkoitetusta käyttöjärjestelmästä eroava toteutus, että monet sen piirteet ovat koettaneet tuoda lisäjoustavuutta järjestelmään. Tästä syystä voidaan jopa ajatella, että Symbian-ympäristö on jonkinlainen välimuoto kokonaan sulautettuihin järjestelmiin suunnattujen käyttöjärjestelmien ja perinteisten tietokoneisiin tarkoitettujen käyttöjärjestelmien välillä Käyttöjärjestelmän ydin Toteutustasolla Symbian-käyttöjärjestelmä perustuu mikroytimeen, joka huolehtii pääsääntöisesti vain suoritettavan säikeen vaihtamisesta ja muistinsuojauksesta. Lähes kaikki monimutkaisempi toiminta on poistettu käyttöjärjestelmän ytimestä ja toteutettu omana prosessinaan. Näitä prosesseja joista osa tosin on toisiinsa sulautunut ja toteutettu säikein, jotka voivat suoraan jakaa muistia kutsutaan Symbianympäristössä palvelimiksi. Koska esimerkiksi muistinhallinta, laiteajurit ja vuorontaminen ovat kuitenkin ytimen vastuulla, eivät omissa prosesseissaan, kyseessä ei kuitenkaan ole puhdas mikroydinjärjestelmä, olkoonkin, että ytimen sisällä monia toimintoja hoitaa ydinpalvelin (kernel server). Ytimen ja sovellusten rakenne Symbian-ympäristössä on esitetty kuvassa Liityntä ytimen ja varsinaisten ohjelmistojen välillä tapahtuu kirjaston euser.lib kautta. Symbian-ytimeen liittyy sellainen erikoisuus, että laiteajurit on tyypillisesti toteutettu kerrostamalla. Korkeamman tason laiteajuri, nimeltään looginen laiteajuri, tarjoaa käyttöjärjestelmän ytimelle ja sovelusohjelmille laitteen palveluita abstraktilla tasolla, kun taas matalamman tason laiteajuri, fyysinen laiteajuri, peittää erilaisten laitteistojen toteutusyksityiskohdat. Toinen mielenkiintoinen ytimeen liittyvä yksityiskohta on, että uusissa käyttöjärjestelmissä mikroytimen sisällä on toinen, vieläkin pienempi ydin, nimeltään nanoydin, jonka varaan muun mikroytimen toiminta rakentuu. Nanoytimen toimintaan liittyy paljon rajoituksia, kuten esimerkiksi se, että dynaaminen muistin varaaminen ja vapauttaminen eivät ole mahdollisia. Toisaalta sen avulla voidaan toteuttaa aikakriittisempiä operaatioita kuin mitä muuten olisi mahdollista. Tämä onkin

3 214 Sulautettu ohjelmointi Sovellukset Ytimen omat palvelut Liityntä ytimeen (euser.lib) Ydin (ekern.exe) Laiteajurirajapinta Symbianpalvelimet Ydinpalvelin Taustasäie Laiteajuri Oheislaite Kuva 13.1 Symbian-ympäristö ja käyttöjärjestelmän ydin ollut tärkeä mekanismi käyttöjärjestelmän reaaliaikaominaisuuksia toteutettaessa. Aiemmin mainittu kirjasto euser.lib sisältää alustakohtaisia määrityksiä, kuten säikeet, semaforit ja joukon muita yleisesti tarvittuja ohjelmointiprimitiivejä. Kirjaston ominaisuuksia ei kuitenkaan voida käyttää käyttöjärjestelmän matalan tason ominaisuuksia ohjelmoitaessa, vaan kirjasto tarjoaa usein tarvittavia luokkia, operaatioita sekä mahdollisuuden tehdä järjestelmäkutsuja ytimen ja ydinpalvelimen tarjoamiin palveluihin ainoastaan ytimen vuorontamille prosesseille Resurssien hallinta Resurssien hallinta on sulautetuissa järjestelmissä toistuva ongelma. Symbian-ympäristössä hallinta on ratkaistu tavalla, joka on mikroydinjärjestelmille tyypillinen: käyttämällä palvelimia, jotka puolestaan hallinnoivat resursseja Palvelimet resurssien kätkijöinä Symbian-ympäristössä palvelimet toteuttavat kaikenlaisen resursseihin liittyvän toiminnallisuuden. Palvelimet on toteutettu säikeinä, ja ne odottavat sanomia joko asiakasohjelmilta tai toisilta säikeiltä. Sanoman

4 Esimerkki: Symbian-ympäristö 215 saatuaan palvelimet toimivat sanomaan koodatun ohjeen mukaan. Toisin sanoen palvelimen ymmärtämät sanomat muodostavat sen rajapinnan. Koska sovellusohjelmointi puhdasta sanomarajapintaa käyttäen voisi osoittautua hankalaksi, tarjoavat oikeastaan kaikki palvelimet proseduraalisen, metodikutsuihin perustuvan rajapinnan, joka käärii sanomanvälityksen. Tästä syystä palvelimien kanssa kommunikoidaan metodikutsuja käyttäen, ei suoraan asiakasohjelmille näkyvällä viestinvälityksellä. Sisäisesti on kuitenkin pääsääntöisesti kyse viestinvälityksestä, vaikka myös muistialueen siirto prosessilta toiselle on mahdollista. Tätä käytetään lähinnä silloin, kun tarvitaan suurten tietorakenteiden siirtämistä prosessilta toiselle. Toinen Symbian-resursseihin liittyvä selkeä piirre on, että niihin pitää erikseen ottaa yhteyttä, jolloin palvelimen ja asiakkaan väliin muodostuu istunto. Yhteyden otto on yleensä muotoa palvelin.connect(), ja sitä käytetään lähes aina joskus tosin hivenen naamioidussa muodossa. Tämän jälkeen on mahdollista käyttää palvelimen muita palveluita istunnon aikana. Vastaavasti istunto pitää myös sulkea. Siihen on omat rutiininsa. Koska jokainen resurssi on eristetty muusta järjestelmästä, on resursseihin liittyvistä ongelmista näennäisen helppo toipua. Riittää, että palvelin käynnistetään uudelleen, jolloin kaikki sen istunnot katkeavat, mutta asiakkaat voivat jatkaa toimintaansa edelleen. Niille asiakkaille, jotka ovat odottamassa palvelimen suoritettavia operaatioita, pitää lisäksi ilmoittaa, että palvelimella oli ongelmia, ja että se on jälleen käytettävissä vasta uudelleenkäynnistyksen jälkeen. Tähän riittää yleensä yksinkertainen aikavalvontamekanismi, jolloin asiakas riittävän kauan odotettuaan voi todeta, ettei palvelimelta tule vastausta lainkaan. Vastaavasti yksittäisen asiakkaan ongelmat eivät yleensä näy palvelimelle, sillä samanlainen aikavalvonta voidaan rakentaa symmetrisesti myös palvelimeen. Vaikka järjestelmän osittaminen ytimeen ja palvelimiin vaikuttaa toimintojen ositusmielessä hyvältä ratkaisulta, liittyy tähän myöskin joitakin käytännön ongelmia. Ehkä suurin ongelmista on, että kommunikointi palvelinten kanssa vaatii pääsääntöisesti viestinvälitystä asiakasohjelman ja palvelimen välillä. Tämä puolestaan voi vaikuttaa suorituskykyyn tilanteissa, joissa kommunikaatio on runsasta. Käytännössä tämä on johtanut optimointeihin sen suhteen, mitä palvelimia kannattaa ajaa samassa prosessissa, sillä tällöin ne voivat jakaa tietorakenteensa ja käyttää niitä ristiin. Esimerkkinä tällaisista palvelimista

5 216 Sulautettu ohjelmointi voidaan mainita tietoliikenneyhteyksien muodostuksessa tarvittavat palvelimet. Toinen ongelma on, että ohjelmoijalle ei välttämättä ole aina selvää, mitä metodikutsun taakse kätketty viestinvälitys tarkkaan ottaen toteuttaa. Tästä syystä tarjolla saattaa olla useita samantapaisia operaatioita, mutta niihin liittyy erilaisia sivuvaikutuksia ja semanttisia yksityiskohtia. Esimerkiksi tiedostoja käsiteltäessä voidaan helposti ajatella operaatiota, joka palaa vasta sitten, kun tiedosto on kirjoitettu flashmuistiin, ja toista operaatiota, joka ainoastaan kopioi tiedot tiedostopalvelimen muistialueelle, ja pyytää tiedostopalvelinta huolehtimaan varsinaisesta levyoperaatiosta Joitakin palvelimia Kuten aiemmin todettiin, lähes kaikki Symbian-ympäristön tarjoamat resurssit on kapseloitu palvelimiin. Seuraavassa on esimerkin vuoksi esitelty joitakin palvelimia ja niiden tehtäviä. Esitellyt palvelimet eivät missään tapauksessa ole täydellinen lista Symbian-palvelimista, vaan tavoitteena on antaa joitakin käytännön esimerkkejä siitä, millaisten resurssien kätkeminen on mahdollista palvelinten avulla. Tiedostoihin liittyvät palvelut Tiedostojärjestelmän palvelut tarjoava File Server on yksi Symbianympäristössä eniten käytettyjä palvelimia. Se tarjoaa pääsyn erilaisiin tiedostojärjestelmiin, joita ovat esimerkiksi ROM-, RAM- ja flashmuisti, mahdollinen muistikortti ja tarvittaessa myös muualla olevat, etäyhteyden kautta käytettävät tiedostojärjestelmät. Sovelluksia rakennettaessa File Serverin käyttö näkyy luokan RFs käyttönä. Tähän luokkaan on koottu rutiinit, jotka mahdollistavat varsinaisen tiedostopalvelimen kanssa kommunikoinnin viestinvälitystä käyttäen. Varsinaiset tiedostot puolestaan käsitellään luokan RFile kautta. Luokka luo ali-istunnon aiemmin avatun RFs-istunnon sisään. Ikkunointi Ikkunointi on Symbian-ympäristössä annettu tehtäväksi palvelimelle nimeltä Window Server, ja sillä on kaksi päätehtävää: näytön hallinnointi ja tapahtumankäsittely. Tästä syystä Window Serverin kanssa

6 Esimerkki: Symbian-ympäristö 217 ovat tekemisissä oikeastaan lähes kaikki Symbian-ympäristön alijärjestelmät, ehkä tietoliikennerutiineja lukuunottamatta. Näytön hallinnoinnin osalta palvelimen tehtävät ovat odotetut. Ikkunoinnin toteutuksen ideana on eräänlainen hierarkia, jossa ikkunointipalvelin omistaa aina ylimmän tason juuri-ikkunan itse. Tämän ikkunan alapuolelle on mahdollista rakentaa sovelluskohtaista ikkunointia joko ikkunaryhminä tai yksittäisinä ikkunoina. Myös ikkunaryhmät ja ikkunat voivat olla keskenään hierarkkisia. Toinen tärkeä palvelimen toimintokokonaisuus on tapahtumankäsittely. Tapahtumia käsitelläkseen Window Server rekisteröityy käyttöjärjestelmän ytimelle, joka puolestaan delegoi kaiken tapahtumienkäsittelyn palvelimelle. Tapahtumia käsitellessään palvelin myös jalostaa sisääntulevaa tapahtumatietoa, ja lähettää tapahtumainformaatiota sovelluksille ja tarvittaessa myös muille palvelimille. Varsinaiset tapahtumat ovat pitkälti samantapaisia kuin mitä muissa vastaavissa ympäristöissä. Mukana tosin on myös jonkin verran erikoisia operaatioita, kuten vaikkapa yksinkertaiset animaatiot, joiden käyttö tuo sovelluksiin lisää näyttävyyttä. Tietoliikenneyhteydet Tietoliikenneyhteyksien käyttöä varten Symbian-ympäristö tarjoaa useita palvelimia. Niistä sovellusohjelmoijan kannalta ehkä tärkeimmät on esitelty seuraavassa. Socket Server. Sovellusohjelmoija käyttää ohjelmia kirjoittaessaan palvelinta nimeltä Socket Server. Palvelin tarjoaa rajapinnan jota käyttäen tietoliikenneyhteyksiä voidaan avata, sulkea ja hallinnoida. Serial Communications Server. Palvelin hallinnoi varsinaista tietoliikenneyhteyttä, jota käyttäen tietoja voidaan välittää laitteesta verkkoon sekä vastaanottaa verkosta laitteeseen. Asiakasohjelmille palvelin tarjoaa sarjaporttia muistuttavan rajapinnan. Erilaisia kommunikointiprotokollia varten on mahdollista toteuttaa dynaamisesti ladattavia kommunikointimoduuleita (CSY). ETEL Server. Palvelin ottaa haltuunsa radiorajapinnan tarjomat palvelut matkapuhelinverkon suuntaan. Käytännössä kyseessä on jonkun verran abstrahoitu rajapinta matkapuhelinmodeemin toiminnallisuuksiin. Samaan tapaan kuin edellisenkin palvelimen tapauksessa, erilaisia toteutuksia varten voidaan dynaamisesti ladata erilaisia laajennoksia (TSY).

7 218 Sulautettu ohjelmointi Messaging Server. Palvelin huolehtii laitteen lähettämästä ja vastaanottamasta viestiliikenteestä. Sen toiminta kattaa SMS:t, MMS:t, näiden erilaiset muunnokset sekä sähköpostin Aktiiviset oliot Koska resursseja hallinnoivat palvelimet on kaikki toteutettu omina säikeinään, muodostuu Symbian-ympäristön toteutuksen kannalta olennaiseksi kysymykseksi eri säikeiden välinen kommunikointi. Vaikka jotkut palvelimet onkin toteutettu saman prosessin sisäisinä säikeinä, jotka voivat jakaa muistiavaruutensa, näin ei kuitenkaan toimita läheskään aina, vaan kommunikointi tapahtuu aidosti viestinvälityksen kautta. Tämä puolestaan tarkoittaa sitä, että viestinvälitykseen liittyvä sanomien käsittely pitää saada mahdollisimman virtaviivaiseksi. Symbian-ympäristössä käytetty toteutus perustuu tekniikkaan, jota kutsutaan aktiivisiksi olioiksi (active object). Hivenen monimutkaiselta ja mahtipontiselta kuulostavasta nimestään huolimatta aktiiviset oliot ovat varsin yksinkertainen käsite. Toteutustasolla kyse on siitä, että kaikkia tapahtumia odottaa yksi säie, ja kun jotakin tapahtuu, herätetty säie kutsuu sopivaa tapahtumankäsittelijää. Toisin sanoen aktiiviset oliot voidaan ajatella tavaksi toteuttaa tapahtumapohjainen ohjelmointiympäristö vähäisin resurssein ja ilman ylimääräisiä säikeitä. Aktiivisten olioiden lisäksi Symbian-ympäristö tarjoaa myös mahdollisuuden käyttää säikeitä hyödyntämällä luokkaa RThread, mutta tämän käyttöä pyritään välttämään suorituskyky- ja muistinkulutussyistä. Toteutuksessa käytetty säie kuluttaa noin 4 kilotavua ytimen ja 12 kilotavua sovelluksen muistia, kun taas aktiivinen olio kuluttaa ainoastaan muutaman tavun. Lisäksi suorituskyvyssä on merkittävä ero johtuen siitä, että aktiivisia olioita käytettäessä ei tarvitse vaihtaa suoritettavaa säiettä. Tämän on todettu johtavan kertaluokkaa nopeampaan toteutukseen useissa käytännön sovelluksissa. Aktiiviset oliot toimivat siten, että yksi säie palvelee aktiivisen vuorontajan (active scheduler) avulla yhtä tai useampaa keskenään rinnakkaista aktiivista oliota. Hivenen harhaanjohtavasta nimestä huolimatta ei toteutuksessa ole kyse varsinaisesta moniajosta eikä olioiden aktiivisuudesta, vaan eri sanomien käsittelyn sarjallistamisesta siten, että operaatiot suoritetaan niitä vastaavien pyyntöjen prioriteetti- ja saapumisjärjestyksessä. Kokonaisuutena voidaan ajatella, että kollektiivisesti kaikkien operaatioiden läpimenoaika nopeutuu tällä järjeste-

8 Esimerkki: Symbian-ympäristö 219 lyllä, sillä aikaa ei kulu suoritettavan operaation vaihtamiseen, mikäli uusi sanoma saapuu, kun edellisen käsittely on vielä käynnissä. Toisaalta korkeaprioriteettiset operaatiot kärsivät, sillä niiden vasteaika voi huonontua johtuen jo suorituksessa alempiprioriteettisten operaatioiden aiheuttamasta odotuksesta. Koska kaikki tapahtumankäsittelyyn liittyvät operaatiot suoritetaan aina loppuun saakka ennen seuraavan tapahtuman käsittelyä, on selvää, että kovin pitkät tapahtumankäsittelijät eivät ole mahdollisia. Jos sellaisia tarvitaan, pitää ne yleensä jakaa pienempiin kokonaisuuksiin, jotka sitten kytketään sarjaan käyttämällä esimerkiksi ajastimia apua. Käytännössä tämä johtaa usein tarpeettoman monimutkaiseen ratkaisuun, mutta muitakaan vaihtoehtoja ei usein ole. Lisäksi joitakin käsitteellisiä ongelmia liittyy siihen, miten suoritusaikaisiin virheisiin suhtaudutaan tapahtumankäsittelyn aikana. Symbian-ympäristö tarjoaa mahdollisuuden tarjota virheenkäsittelyrutiini, mutta käytännön syistä joskus voi olla vaikeaa toteuttaa kaikista mahdollisista ongelmista järkevästi toipuvaa rutiinia. Lisäksi se, miten pitkälle varsinaista toimintoa on ehditty suorittaa, voi ainakin periaatteessa aiheuttaa ongelmia Dynaamisen muistin hallinta Symbianympäristössä Koska yksi Symbian-ympäristön suunnittelutavoitteista oli ottaa huomioon sulautetun järjestelmän erityispiirteitä, on tämä tavoite läsnä vahvasti myös dynaamisen muistin hallintaan liittyvissä toiminnoissa. Seuraavassa esittelemme dynaamisen muistinhallinnan perusmekanismit, joihin Symbian-ohjelmoinnissa tukeudutaan Tyyppijärjestelmä ja nimeämiskäytännöt Kuten jo palvelimien yhteydessä kävi ilmeiseksi, monet Symbianympäristössä käytetyt tyypit ja niiden nimet poikkeavat melkoisesti monesta muusta ympäristöstä tutuista. Osaltaan syynä on Symbianympäristön erikoisuudet, kuten palvelimet ja resurssien käyttö niiden kautta, mutta osaltaan syynä on myös pyrkimys luoda omanlaisensa tyyppijärjestelmä ja nimeämiskäytäntö, joka liittyy kiinteästi siihen, miten dynaamisesti varattuja resursseja erityisesti muistia hallitaan. Tästä syystä perinteisiä C- tai C++ -tietotyyppejä ei Symbianympäristössä käytetä oikeastaan lainkaan.

9 220 Sulautettu ohjelmointi Tyyppijärjestelmä ei pääosin eroa muista vastaavista, mutta monelle tyypille on annettu uudet nimet. Lisäksi mukana on joitain kokonaan uusia tietotyyppejä, joiden avulla on joissain tilanteissa mahdollista toteuttaa tiettyjä rutiineja joko turvallisemmin tai nopeammin kuin mitä olisi mahdollista käyttäen vain C:n ja C++:n rutiineja 29. Esimerkkinä tällaisesta rutiinista voisi mainita kuvaimet (descriptor), jotka ovat Symbian-ympäristön merkkijonoja. Toisin kuin C:n ja C++:n perinteiset merkkijonot, kuvaimet tietävät minkä kokoisia ne ovat, ja osaavat myös toimia johdonmukaisesti, jos merkkijonoa indeksoidaan liian pitkälle. (C++:n vector-mallilla toteutettu merkkijono (string) tietää myös pituutensa ja vahtii indeksejä, jos indeksointi tehdään jäsenfunktiolla at hakasulkeiden sijaan.) Symbian-ympäristön nimeämiskäytännöt ovat kattavia, ja koskevat luokkia, metodeja sekä yksittäisten muuttujien nimiä. Seuraavassa on esitetty lyhyt lista tärkeimmistä käytännöistä. Luokat ja tyypit Luokkien nimet alkavat C-kirjaimella. Ytimen luokkien nimet alkavat D-kirjaimella. Mixin-luokkien nimet alkavat M-kirjaimella. Tyyppien nimet alkavat T-kirjaimella. Luettelotyyppien nimet alkavat E-kirjaimella. Resursseihin liittyvien luokkien ja tyyppien nimet alkavat R-kirjaimella. Metodit Metodien nimet alkavat isolla kirjaimella. Ne metodit, jotka saattavat heittää poikkeuksen, loppuvat kirjaimeen L (tai LC). Saanti- ja asetusmetodien nimet ovat samat kuin muuttujan nimi, kun kyseessä on yksinkertanen metodi. Saanti- ja asetusmetodien nimet ovat muotoa GetSomeVariable ja SetSomeVariable, kun kyseessä on monimutkainen metodi. 29. Monessa kohtaa on kuitenkin käynyt niin, että C:n ja C++:n uudempiin versioihin on lisätty samantapaisia ominaisuuksia.

10 Esimerkki: Symbian-ympäristö 221 Muuttujat Instanssimuuttujien nimet alkavat i-kirjaimella. Argumenttimuuttujien nimet alkavat a-kirjaimella. Vakioiden nimet alkavat K-kirjaimella. Automaattisten muuttujien, siis niiden, jotka ovat metodille paikallisia ja olemassa vain metodin suorituksen ajan, nimet alkavat pienellä kirjaimella, mutta ei kuitenkaan mieluusti edellä varatuilla kirjaimilla väärinkäsitysten välttämiseksi Poikkeukset Vaikka C++ tarjoaa poikkeukset osana standarditoteutusta, Symbianympäristössä on perinteisesti käytetty omaa poikkeustoteutusta, joka on liitoksissa muistinhallintaan (katso seuraava kohta). Symbianin poikkeuskäsittelyn varsinainen rakenne on samankaltainen kuin standardin määrittelemäkin, mutta syntaksi on hivenen erilainen: TRAPD(error, RunExceptionThrowingCode(arguments); // try-osa if (error!= KErrNone) { // Catch-osa if (error == KErrNotSupported) {...} } Varsinaisen poikkeuksen heittäminen tapahtuu kutsumalla operaatiota User::Leave poikkeustilannetta kuvaavalla parametriarvolla, User::Leave(KErrUnknown); // Throw-osa Jos tarkastellaan tilannetta kulissien takana, suurin ero standardinmukaiseen poikkeukseen verrattuna on, että Symbian-ympäristössä poikkeus ei aiheuta olioiden rakentamista, vaan parametrina välitettävä kokonaisluku identifioi poikkeuksen Muistinvaraukset ja poikkeukset Ehkä erikoisin dynaamisen muistinhallintaan liittyvä käytäntö, joka Symbian-ympäristössä on otettu käyttöön, on erillisen tietorakenteen varaaminen dynaamisesti varattujen muistialueiden hallinnoimiseksi. Muussa tapauksessa voisi käydä niin, että poikkeuksen sattuessa viitettä varattuun muistialueeseen ei enää olisi olemassa, eikä mikään osa ohjelma voisi vapauttaa tätä muistialuetta.

11 222 Sulautettu ohjelmointi Edellä kuvattu tietorakenne on nimeltään CleanupStack. Ajatuksena on, että aina kun ohjelmoija varaa dynaamista muistia, osoitin varattuun muistialueeseen lisätään tähän tietorakenteeseen, CData data = new (ELeave 30 ) CData(); CleanupStack::PushL(data); Kun tietorakenteeseen viittaava viite on sijoitettu pinoon, voidaan poikkeuksen sattuessa vapauttaa ne dynaamiseen muistiin viittaavat varaukset, joihin ei enää ole pääsyä ohjelmasta itsestään poikkeuksen jälkeen. Toisin sanoen CleanupStack on siis eräänlainen roskaantumista ehkäisevä varokeino, jonka toimintaa ohjelmoijan on kuitenkin autettava. Lisäksi on tärkeää, että ainoastaan dynaamisesti varatut resurssit, joihin liittyvä ainoa viite on jonkin metodin sisällä olevan muuttujan arvona, lisätään CleanupStack-tietorakenteeseen, sillä ainoastaan näihin muuttujiin liittyy riski niiden arvon katoamisesta. Sen sijaan esimerkiksi olioiden jäsenmuuttujat, joiden kautta dynaamista muistia voidaan myös varata, eivät saa osalleen vastaavanlaista kohtelua. Mikäli näin kävisi, voisi muisti tulla jossain tilanteessa vapautettua kaksi kertaa, mikä tulkitaan yleensä vakavaksi virheeksi. CleanupStack-tietorakenteeseen lisätyt viitteet ja niiden takana olevat tietorakenteet eivät poistu pinosta automaattisesti muuten kuin poikkeuksen yhteydessä. Tästä syystä, kun tietorakennetta ei enää tarvita, viite siihen pitää muistaa poistaa myös CleanupStack-tietorakenteesta: delete data; CleanupStack::Pop(); On myös mahdollista työntää pinoon viittauksia istuntoihin, jota on avattu palvelimille. Tällöin käytetään muotoa CleanupStack::ClosePushL joka määrittelee rutiinin Close poikkeuksen yhteydessä suoritettavaksi metodiksi. CleanupStack-tietorakenteen käyttöön liittyy myös useita lyhennysmerkintöjä, joiden avulla rakenteen voi hävittää ja tuhota samalla kertaa. Samaten se, mistä luokasta tietorakenteeseen sijoitettu tietorakenne on peritty, vaikuttaa varauksen vapauttamiseen; joissain ti- 30. ELeave:n merkitys on kutsua kuormitettua rakentajaa, joka heittää poikkeuksen, jos muistia ei saada varattua. Tällöin ei tarvitse erikseen tarkistaa muistinvarauksen onnistumista joka kerta.

12 Esimerkki: Symbian-ympäristö 223 lanteissa riittää, että ainoastaan muisti vapautetaan, kun taas joskus pitää myös olion purkaja suorittaa Kaksivaiherakentaminen Edellä esitelty tietorakenne ei vielä riitä kaikkiin muistinvaraustilanteisiin. Jos käy niin ikävästi, että poikkeus syntyy, kun suoritetaan rakentajaa ja joitakin resursseja on jo varattu, ei Symbianin poikkeuskäsittelijä pysty vapauttamaan niitä, vaan ne jäävät roskaamaan muistia. Tilanteen korjaamiseksi Symbian-ympäristössä kehotetaan käyttämään kahta rakentajaa, joista ensimmäinen rakentaa tietorakenteen niiltä osin kuin poikkeuksia ei voi tulla muistinvarausta lukuunottamatta, ja jälkimmäinen sitten huolehtii niistä operaatioista, jotka mahdollisesti johtavat poikkeukseen. Ennen jälkimmäisen rakentajan kutsua voidaan kuitenkin viite varattuun alueeseen sijoittaa CleanupStacktietorakenteeseen. Rakentajista ensimmäinen on normaali C++-rakentaja, ja jälkimmäinen yleensä nimeltään ConstructL, joka siis nimensä mukaisesti voi heittää poikkeuksen: CData data = new (ELeave) CData(); CleanupStack::PushL(data); data.constructl(); Koska joissain tilanteissa joudutaan rakentamaan useita perintähierarkiatasoja, on joskus tapana käyttää myös muotoa BaseConstructL. On kuitenkin selvää, että varsinkin syvän perintähierarkian yhteydessä kaksivaiherakentaminen voi johtaa vaikeuksiin Laajennukset Perinteisesti Symbian-sovellukset on rakennettu käyttäen C++-kieltä, jonka käyttöä varten Symbian tarjoaa luokkahierarkian. Lisäksi on saatavilla useita sovelluskehitystä tukevia laajennoksia. Näistä tärkeimmät käsitellään seuraavassa. Tarkoituksena on osoittaa, että laajennusten avulla erilaisten sovellusten toteuttaminen yksinkertaistuu. Lisäksi samalla saavutetaan myös nopeampi kehitys.

13 224 Sulautettu ohjelmointi Symbian C++-sovelluskehitys Symbian C++-sovelluskehitys perustuu sovelluskehykseen, jota erikoistamalla on mahdollista toteuttaa graafiseen käyttöliittymään perustuvia sovelluksia. Sovelluskehys käytännössä pakottaa toteuttamaan sovellukset MVC-malliin (Model, View, Controller) perustuen. Yleensä malliosuuden (model) siis sovelluksen tietorakenteet ja niihin liittyvät operaatiot käsittävät osat voi yleensä toteuttaa melko samaan tapaan kuin mitä yleensäkin C++:lla, jos ei oteta huomioon edellä esitettyjä nimi- ja tyyppikäytäntöjä ja muita yksityiskohtia. Joskus jopa suora siirto kääntämällä onnistuu, sillä kääntäjä ei ota huomioon Symbian-ympäristön erikoisuuksia muuten kuin rajapintariippuvuuksien kautta. Sen sijaan näkymä (view) ja ohjain (controller) on toteutettava Symbianin omien käyttöliittymäkirjastojen avulla, jolloin on lähes pakko seurata Symbian-ympäristön käytäntöjä ja osattava käyttää kirjaston luokkahierarkiaa. Esimerkkinä mainittakoon vaikkapa graafisen käyttöliittymän kautta annetut syötteet tulkitseva ikuinen silmukka, joka on toteutettu aktiivisten olioiden avulla ja jonka toiminta perustuu kantaluokan tietyn metodin kuormittamiseen omassa, sovelluskohtaisessa luokassa. Lisäksi myös E32Main-funktion käyttö on mahdollista, jolloin sovellusta voidaan suorittaa ikään kuin komentoriviltä käynnistettynä. Tämä tapa toteuttaa sovelluksia sopii lähinnä kokeiluihin ja pieniin testiohjelmiin, vaikka pohjimmiltaan mikään ei estä monimutkaistenkaan sovellusten kehittämistä Java Symbian-ympäristöön on saatavissa useita eri toteutuksia mobiiliympäristöön sovitetusta Javasta, joka puolestaan on ehkä maailman yleisin sulautettu ohjelmointiympäristö satojen miljoonien levinneisyydellä. Symbian-ympäristön eri toteutusten ominaisuudet vaihtelevat, ja jotkut niistä (erityisesti kommunikaattoreihin tarkoitetut toteutukset) ovat hyvin lähellä työasemien Java-ympäristöjä, kun taas puhelimiin tarkoitettu Java on yleensä jonkin verran yksinkertaistettu. Puhelinmallisiin laitteisiin on tyypillisesti sisällytetty MIDP Java, jossa joitain kielen ominaisuuksia on jätetty pois muistin säästämiseksi, suorituskyvyn optimoimiseksi ja tietoturvaominaisuuksien yksinkertaistamiseksi. Ominaisuuksia, joista on jossakin vaiheessa luovuttu, ovat esimerkiksi seuraavat:

14 Esimerkki: Symbian-ympäristö 225 liukulukulaskenta, heikot viittaukset (weak references) reflektio säieryhmät (thread groups). Lisäksi käyttöliittymää on yksinkertaistettu matkapuhelimen näyttöä paremmin tukevaan muotoon. Ohjelmoija voi hyödyntää grafiikkaa käyttäen joko matalan tason rajapintoja, joiden avulla on mahdollista rakentaa samanlainen näkymä ohjelmistoon kaikissa laitteissa, tai sitten graafisten komponenttien käyttöä tukevia rajapintoja, jotka tyypillisesti on mukautettu laitteen oman graafisen ilmiasun mukaisesti. Perusominaisuuksien lisäksi laitteet voivat tarjota lisärajapintoja, joiden avulla yhä monimutkaisempien ominaisuuksien käyttö on mahdollista. Erilaisten lisärajapintojen tukeminen tai tukematta jättäminen (ja niissä olevien toteutusten ongelmien tunteminen) on tärkeää erityisesti silloin, kun tähdätään mahdollisimman suorituskykyisiin ja laajalti käytettäviin sovelluksiin Python Python on yleisesti käytetty tulkattava skriptikieli, jota käytetään usein yhdistämään eri sovelluksia. Pythonilla on kuitenkin mahdollista toteuttaa myös kokonaisia sovelluksia, ja saatavilla olevat Python-toteutukset ovat suorituskyvyltään varsin hyviä, joten myös suorituskyvyn kannalta Pythonin käyttö mobiiliympäristössä on jossakin mielessä perusteltua. Symbian-ympäristöön on saatavilla myös versio Python-ohjelmointikielestä, jonka avulla omia ohjelmia on mahdollista rakentaa skriptaamalla. Saatavilla oleva Python-toteutus sisältää standardirajapintojen lisäksi myös mahdollisuuden hyödyntää mobiililaitteille spesifisiä rajapintoja. Tällaisia ovat esimerkiksi kamera, laitteen sisään talletetut yhteystiedot ja kalenterimerkinnät, Bluetooth-yhteydet, audioominaisuudet sekä yksinkertaiset puhelintoiminnot, kuten soittaminen ja viestinlähetys. Rajapinnat on tyypillisesti suunniteltu siten, että ohjelmoijan näkökulma on otettu huomioon. Tästä syystä operaatiot eivät välttämättä ole aivan yhtä yleisiä kuin mitä Symbian-ympäristön natiivioperaatiot, mutta toisaalta niiden käyttö on yksinkertaisempaa ja suoraviivaisempaa. Symbian-ympäristön lisäksi Python on saatavilla myös moneen muuhun sulautettuun ympäristöön, jossa skriptaaminen on hyödyllistä.

15 226 Sulautettu ohjelmointi Esimerkkinä mainittakoon vaikkapa Nokian Linux-pohjainen Maemoympäristö Web Runtime Web Runtime -ympäristö (WRT) on lähinnä web-ohjelmien tapaan toimivien sovellusten toteuttamista varten rakennettu sovellusympäristö. Toteutusmielessä ympäristö sopii hyvin web widget - tyyppisten sovellusten toteuttamiseen, ja sen avulla on melko yksinkertaista rakentaa pikkuohjelmia, jotka lataavat sisältöä WWW:tä hyväksikäyttäen. Aivan kuten perinteisessä selainympäristössäkin, sovellukset rakennetaan WRT-ympäristössä käyttäen XHTML:ää, CSS:ää sekä JavaScriptia, joten myös huonot puolet ovat samat kuin selainsovelluksia käytettäessä. Myös Ajax-tyyppisten (Asynchronous JavaScript and XML) ominaisuuksien käyttö on mahdollista, joten asynkroniset päivitykset verkosta ladattaessa ovat mahdollisia. Lisäksi toisin kuin selainympäristöt yleensä, Symbianin Web Runtime -ympäristö tarjoaa jonkin verran rajapintoja laitteen sisäisiin resursseihin. Tämä tarjoaa sovelluskehittäjälle mielenkiintoisia mahdollisuuksia mashup 31 -tyyppisten sovellusten suunnitteluun ja toteutukseen OPL OPL (alkujaan Organizer Programmer Language) on alun perin jo EP- OC:iin liitetty Basicia muistuttava ohjelmointikieli, jolla oli tarkoitus ohjelmoida Psionin valmistamia mobiililaitteita. OPL-kielen avulla on mahdollista luoda sekä konsolisovelluksia että graafista käyttöliittymää hyödyntäviä ohjelmistoja sangen suoraviivaisesti. OPL on ilmeisesti periaatteessa edelleen osa Symbianympäristöä, olkoonkin että OPL-sovelluksien määrää on vaikea arvioida. Projektin kotisivu on viimeksi päivitetty , joten voitaneen todeta että OPL ei ole kovinkaan laajassa käytössä oleva laajennos. 31. Mashup-sovellukset ovat verkossa yleinen tapa koostaa uudenlaisia sovelluksia ja palveluita yhdistämällä tietoa useamman palvelimen tarjoamasta valikoimasta. Esimerkkimashup-sovelluksina mainittakoon vaikkapa karttapohjainen uutispalvelu ja wikipedia-sivut, jotka on kytketty valokuviin kuvissa käytettyjen tagien perusteella.

16 Esimerkki: Symbian-ympäristö Lopuksi Loppuyhteenvetona voi perustellusti todeta, että Symbianissa käytetty mikroydinarkkitehtuuri on osoittautunut niin hyväksi kompromissiksi muunneltavuuden, muistinkulutuksen ja suorituskyvyn kannalta, että sen varaan on kyetty rakentamaan kokonainen mobiililaitteiden tuoteperhe. Toki parantamisen varaa on, ja jopa siitä, onko tyypillisesti paljon viestinvälitystä vaativa mikroydin oikea valinta sulautettuun järjestelmään lainkaan, voidaan kiistellä. Ohjelmoijan kannalta mielenkiintoinen seikka on, että Cleanup- Stack-tietorakenteen käyttö sekä Symbian-ympäristön nimeämiskäytännöt ohjaavat ottamaan dynaamisen muistin hallinnan huomioon Symbian-sovelluksia suunnitellessa aivan suunnittelun alkuvaiheista lähtien. Tätä voidaan pitää yleisenä hyvänä käytäntönä sulautetuissa järjestelmissä ja niiden ohjelmistoissa, varsinkin silloin, kun nojataan vahvasti oliosuunnitteluun, ja toteutus rakennetaan C++-kieltä käyttäen. Huonona puolena Symbian-ympäristön käytännöissä voidaan pitää sitä, että yleensä pienten asioiden kokeilu kaikkien sääntöjen puitteissa on usein työlästä ja aikaa vievää. Itse asiassa se, että ohjelmoija joutuu alusta asti keskittymään dynaamisen muistin hallintaan tarkoittaa usein myöskin sitä, että lopullinen kokonaisuus pitää ainakin alustavasti hahmotella ennen kuin varsinaisia kokeiluita päästään edes aloittamaan. Erilaiset laajennokset puolestaan mahdollistavat Symbianympäristön käytön käyttämällä jotakin yksinkertaisempaa ja suoraviivaisempaa tekniikkaa kuin C++-ohjelmointia Yhteenveto Symbian-ympäristö perustuu mikroytimeen ja resursseja hallinnoiviin palvelinkomponentteihin. Monet sulautetun ohjelmoinnin kannalta tärkeät erityispiirteet huomioitu osana ohjelmointityyliä. Tyyppijärjestelmä pakottaa huomioimaan mihin muuttujat allokoidaan muistissa. Oma poikkeuskäsittely, johon yhdistetty oma muistinhallinta, vaatii dynaamisen muistinkulutuksen suunnittelua sekä pinon että keon osalta.

17 228 Sulautettu ohjelmointi Mahdollisuus toteuttaa sekä irrottava että irrottamaton skedulointi käyttäen joko säikeitä tai aktiivisia olioita. Taustan ymmärtäminen yksinkertaistaa rajoitteiden huomiointia suunnittelutyössä, vaikka osa rajoitteista ei enää nykyisin olekaan samalla tavalla tärkeää matkapuhelimia toteutettaessa. Ympäristön monimutkaisuuden vuoksi useita sovelluskehittäjän työtä yksinkertaistavia laajennoksia saatavilla.

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

13. Luento: Esimerkki: Symbianympäristö. Tommi Mikkonen,

13. Luento: Esimerkki: Symbianympäristö. Tommi Mikkonen, 13. Luento: Esimerkki: Symbianympäristö Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Ydin Resurssien hallinta Aktiiviset oliot Dynaaminen muisti Sovellusmalli Laajennokset Yhteenveto Symbian OS

Lisätiedot

Agenda. Johdanto Ydin Resurssien hallinta Aktiiviset oliot Dynaaminen muisti Sovellusmalli Laajennokset Yhteenveto

Agenda. Johdanto Ydin Resurssien hallinta Aktiiviset oliot Dynaaminen muisti Sovellusmalli Laajennokset Yhteenveto 13. Luento: Esimerkki: Symbian- ympäristö Juha-Matti Vanhatupa, juha.vanhatupa@tut.fi Kalvosetti alunperin: Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Ydin Resurssien hallinta Aktiiviset oliot

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

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux rakenne Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux ydin Ytimen (kernel) päätehtävä on tarjota rajapinta

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

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages Tampere University of Technology Department of Pervasive Computing TIE-20306 Principles of Programming Languages Ruby Ryhmä 8 Juho Rintala Sami Paukku Sisällysluettelo 1 Johdanto... 3 2 Paradigma... 3

Lisätiedot

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli Dart Ryhmä 38 Ville Tahvanainen Juha Häkli 1.LYHYESTI Dart on luokkapohjainen, yksiperintäinen, puhdas olio-ohjelmointikieli. Dart on dynaamisesti tyypitetty. Sovellukset on organisoitu modulaarisiksi

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

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

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

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

18. Abstraktit tietotyypit 18.1

18. Abstraktit tietotyypit 18.1 18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

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

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245 Android ohjelmointi Mobiiliohjelmointi 2-3T5245 Mikä on Android? Linux kernelin päälle rakennettu, Googlen kehittämä sovelluspino mobiilisovelluksiin Erillinen versio puhelimelle ja taulutietokoneille

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 10: Aliohjelmat, foreign function interface Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 3. 2013 Sisältö 1 Aliohjelmien käyttäminen

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

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

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

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

Action Request System

Action Request System Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet

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

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

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen D-OHJELMOINTIKIELI AA-kerho, 33 Antti Uusimäki Arto Savolainen 2 D-OHJELMOINTIKIELI D-kielen historia alkaa vuodesta 1999, kun Walter Bright aloitti uuden ohjelmointikielen kehittämisen. Ensimmäinen versio

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

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

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

The OWL-S are not what they seem

The OWL-S are not what they seem The OWL-S are not what they seem...vai ovatko? Verkkopalveluiden koostamisen ontologia OWL-S Seminaariesitelmä 15.4.2013 Emilia Hjelm Internet on hankala Nykyinternet on dokumenttien verkko Asiat, joita

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

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

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

OHJ-4301 Sulautettu Ohjelmointi

OHJ-4301 Sulautettu Ohjelmointi OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, TB 109 Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti suoritetut: Tentti Harjoitustyöt Harjoitustyöt 3

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, sovellusohjelmille ja käyttäjille? 2012-2013 Lasse Lensu

Lisätiedot

Ohjelmointi 1. Kumppanit

Ohjelmointi 1. Kumppanit Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5

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

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet Koka Ryhmä 11 Juuso Tapaninen, Akseli Karvinen 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet 1 1. Taustoja Koka on Daan Leijenin ja Microsoft:n kehittämä

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:

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

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

Objective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä

Objective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä Objective-C Ryhmä 35: Ilpo Kärki Aleksi Pälä Sisällysluettelo 1 Yleistä...3 1.1 Lyhyesti...3 1.2 Historiaa...3 1.3 Hybridikieli...3 2 Muistinhallinta...5 2.1 Manual Retain Release (MRR)...5 2.2 Automatic

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

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

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

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

19/20: Ikkuna olio-ohjelmoinnin maailmaan

19/20: Ikkuna olio-ohjelmoinnin maailmaan Ohjelmointi 1 / syksy 2007 19/20: Ikkuna olio-ohjelmoinnin maailmaan Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

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

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä Linux 00 Keskeiset piirteet Tux-pingviinin kuva: Larry Ewing, Simon Budig ja Anja Gerwinski Kysymyksiä 1. Mikä Linux on? 2. Kuinka Linux syntyi ja kehittyy? 3. Mitkä ovat Linuxin vahvuudet? 2 1 Linux on

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

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

TIE-20200 Ohjelmistojen suunnittelu. Luento 8..9: moniperintä TIE-20200 Ohjelmistojen suunnittelu Luento 8..9: moniperintä 1 Ajankohtaista Harjoitustyön suunnittelusessiot pidetty, työt jatkuvat, välivaiheen esittely seuraavana Viimeinen viikkoharjoituskerta, palataan

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

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

Tapahtumat. Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi.

Tapahtumat. Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi. Tapahtumat Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi Petri Vuorimaa 1 Johdanto Tapahtumien käsittely muodostaa vuorovaikutteisen käyttöliittymän

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

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

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

8/20: Luokat, oliot ja APIt

8/20: Luokat, oliot ja APIt Ohjelmointi 1 / syksy 2007 8/20: Luokat, oliot ja APIt Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Kohti

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

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

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä 2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1 Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri 2 28.11.2008 Harri Laine 1 Ohjelmistoarkkitehtuuri Rajapinta UML:ssä piirteiden (attribuuttien ja operaatioiden) kokoelma, josta ei voi suoraan luoda ilmentymiä

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

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 Basic -sovelluskehitin Juha Vitikka

Visual Basic -sovelluskehitin Juha Vitikka Visual Basic -sovelluskehitin Helsinki 30.10.2000 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Visual Basic sovelluskehitin Seminaari: Ohjelmistotuotantovälineet Tietojenkäsittelytieteen

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

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

.NET ajoympäristö. Juha Järvensivu 2007

.NET ajoympäristö. Juha Järvensivu 2007 .NET ajoympäristö Juha Järvensivu juha.jarvensivu@tut.fi 2007 Käännösprosessi C# lähdekoodi C# kääntäjä CILtavukoodi JITkäännös Ajettava natiivikoodi Kehitysympäristössä ohjelmoijan toimesta Ajonaikana.NET

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

4. Olio-ohjelmoinista lyhyesti 4.1

4. Olio-ohjelmoinista lyhyesti 4.1 4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin

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

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto

Lisätiedot

CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö

CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö 0349955 Pekka Hyvärinen 0342194 Joonas Heikelä 0327708 Miro Temonen 0350122 Sami Tuominen Yleistä Seminaarityö osa kurssia Käyttöjärjestelmät

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

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

Tiedonsiirto- ja rajapintastandardit

Tiedonsiirto- ja rajapintastandardit Tiedonsiirto- ja rajapintastandardit Viitekehys Julkishallinnon perustietovarantojen rajapinnat (PERA) työryhmän tulokset valmiit syksyllä 2011 Määrittelee teknisen arkkitehtuuriratkaisun tietovarantojen

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