Logiikkakielen upottaminen olio-ohjelmiin
|
|
- Jaakko Halttunen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 hyväksymispäivä arvosana arvostelija Logiikkakielen upottaminen olio-ohjelmiin Pietu Pohjalainen Helsinki 18. huhtikuuta 2004 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 i Logiikkakielen upottaminen olio-ohjelmiin Pietu Pohjalainen Seminaarityö Tietojenkäsittelytieteen laitos Helsingin yliopisto 18. huhtikuuta 2004, 9 sivua Perinteisesti logiikkakieliä ja skriptikieliä käytetään erilaisten asioiden saavuttamiseen: logiikkakielellä voidaan ilmaista monimutkaisia nimettyjen symbolien välisiä suhteita, ja ohjelmoija haluaa keskittyä ohjelman kontrollin kulkuun mahdollisimman vähän. Skriptikielissä puolestaan ohjelman kontrollin ilmaiseminen on taas vahvalla sijalla siinä mielessä, että skriptikielellä kirjoitettu ohjelma usein toimii muiden ohjelmiston komponenttien välisenä välittäjänä, kontrollin pitäjänä. Tässä tutkielmassa esitetään tapa upottaa logiikkakielellä kirjoitettuja skriptejä oliokieleen. Tällä menettelyllä tavoitellaan mahdollisuutta ilmaista logiikkakielille ominaisilla tavoilla asioiden välisiä yhteyksiä oliokielisessä ohjelmistossa. Aiheluokat(Computing Reviews 1998): Avainsanat: logiikkakielet, skriptikielet
3 1 Johdanto 1 Ohjelmointikielten kategorisointeja, paradigmajakoja kirjattaessa logiikkaohjelmointi ja imperatiivinen ohjelmointi nähdään usein erillisiksi, luonteeltaan toisistaan kaukana oleviksi ohjelmointitavoiksi. Logiikkakielet mielletään usein olevan luonteeltaan deklaratiivisia: ohjelmoijaa ei kiinnosta miten haluttu tulos saadaan, kunhan halutun tuloksen määritteleminen on intuitiivista ja nopeaa. Toisaalta, perinteisen paradigmajaon pohjalta logiikkakielet nähdään usein erillisinä saarekkeina, jonne tavallisella ohjelmoijalla ei juurikaan ole asiaa. Kuitenkin, monia imperatiivisessa ohjelmoinnissa esiintyvien monimutkaisia kontrollirakenteita vaativien ongelmien toteuttaminen onnistuisi varsin suoraviivaisesti jollakin logiikkakielellä. Siinä missä tietokantojen kyselykielet, kuten SQL, ovat nykyisin useinkin osana laajempia projekteja, on logiikkakielten, kuten Prolog toteutusten käyttäminen harvinaisempaa. Tässä tutkielmassa esitetään yksinkertainen propositiologiikan vahvuinen logiikkakieli, joka voidaan upottaa komponenttina osaksi laajempaa olio-ohjelmaa. Sopivia adapteriluokkia käyttäen kehitetty logiikkakieli ohjataan käyttämään olioohjelman sisäiseen oliomalliin kuuluvia olioita, ja näin saavutetaan perinteisiä logiikkakieliä tiukempi sidonta näiden kahden paradigman välille. 2 Logiikkaohjelmoinnin upottaminen oliokieleen Kuvassa 1 esitetään prosessi, jolla yleistä logiikkakomponenttia voidaan hyödyntää oliojärjestelmässä. Kuvassa vasemmalla esitetään yleinen tapa järjestelmän hyödyntämiseen. Kuvassa oikealla esitetään soveltaminen erääseen ongelma-alueeseen, luokkahierarkian analyysiin. Ongelma-alueen mallinnuksella tarkoitetaan vaatimusanalyysin vaihetta, jossa käsiteltävä ongelma pilkotaan osiin. Kuvan esimerkissä käsiteltävänä ongelmana on oliokielessä esiintyvien luokka-hierarkioiden tutkiminen:
4 2 Yleinen prosessi Ongelma alueen mallinnus Luokkahierarkian tutkiminen Esimerkki Predikattien toteuttaminen CLASS(x), EXTENDS(x, y) Sitominen päättelykoneistoon CLASS > Class EXTENDS > Extends Järjestelmä käytettävissä Järjestelmä käytettävissä Kuva 1: Yleinen kehitysprosessi ja sen soveltaminen kielessä on mahdollisuus määritellä luokkia sekä näiden välisiä periytymissuhteita, ja lisäksi tiedetään, että toteutettavassa ohjelmistossa joudutaan käsittelemään näihin asioihin liittyviä kysymyksiä. Predikaattien toteuttaminen tarkoittaa edellisessä vaiheessa esilletulleiden primitiivipredikaattien toteuttaminen tarkoittaa päättelysääntöjen kirjoittamista käytetyllä oliokielellä. Kuvan esimerkissä oleva predikaatti CLASS(x) toteutetaan antamalla 1. päätössääntö siitä, onko parametrina annettu literaali luokka vai ei (totuussääntö) 2. luettelointisääntö siitä, mitkä oliot ovat luokkia Näitä kahta sääntöä soveltamalla päättelykoneisto yrittää ratkaista annettavat logiikkakaava.
5 3 Sitominen päättelykoneistoon tarkoittaa predikaattien ja niiltä vaadittujen päättelysääntöjen toteutuksen sitomista toisiinsa. Esimerkissä sidotaan predikaatin CLASS toteutus oliokielen luokkaan Class ja predikaatin EX- TENDS toteutus oliokielen luokkaan Extends. Kehitettäessä ongelma-aluekohtaisia predikaatteja pyritään alue mallintamaan pienimpiin käsiteltäviin yksiköihin. Tämä vaatii luonnollisestikin tietämystä käsiteltävästä alueesta, mutta tätä vaatimusta ei voi pitää huonona asiana, sillä jos käyttäjältä toteutusvaiheessa puuttuu riittävä näkemys käsiteltävästä ongelmaalueesta, ollaan ongelmissa käytetystä ohjelmointitekniikasta riippumatta. 2.1 ALF -järjestelmä ALF -järjestelmässä [Mel88] päämääränä on ollut integroida Smalltalk- ja Prolog -kielet luonnollisella tavalla yhteenkäytettäviksi. 1. sekä logiikkakielen että oliokielen puolella käsitellään samaa dataa 2. kaikki käytetyt rakenteet ovat olioita 3. oliokielen luokkahierarkia toimii yhteen käytetyn logiikkajärjestelmän kanssa Näistä periaatteista nähdään, että järjestelmässä lähestymistapa on samankaltainen kuin tässä työssä esitettävässä. Oliokieltä käytetään ohjelmiston pääosan laatimiseen, ja logiikkalaajennokset suunnitellaan oliojärjestelmän tarpeita ajatellen. ALF -järjestelmässä on kuitenkin eräs vakava rajoite olio- ja logiikkakielten yhdistämistä ajatellen: kaikkien käytettävien predikaattien tulee olla luokan Predicate aliluokkia. Tämän seurauksena kaikki käytettävät luokat on alusta alkaen sovitettava ALF:ia ajatellen; toisin sanoen, päättelykoneiston lisääminen olemassaolevaan järjestelmään vaatii suuria muutoksia olemassaolevaan luokkahierarkiaan.
6 4 2.2 Emoole Emoole, EMbeddable Object-Oriented Logic Engine on toteuttamani edellisen luvun periaatteita noudattava logiikkakielen toteutusjärjestelmä Java-ympäristöön. Järjestelmän peruskomponenttina on eteenpäinketjutusta käyttävä päättelykone, joka voidaan konfiguroida eri ongelma-alueille antamalla aluekohtaiset predikaatit ja niihin liittyvät päättelyluokat. Tällä jaolla voidaan järjestelmää käyttää komponentin kaltaisesti siten, että komponenttia kullakin ongelma-alueella käytettäessä riittää aluekohtaisten päättelysääntöjen kirjoittaminen - itse päättelykoneisto voidaan uudelleenkäyttää päättelyn alueesta riippumatta Järjestelmän rakenne Toteutettu logiikkakone on pinoa muistirakenteenaan käyttävä tulkki, jolla on neljä primitiivikäskyä: 1. Lue arvo pinon huipulta 2. Korvaa muuttuja arvolla 3. Testaa predikaatin totuus 4. Kirjoita pinon huipulle Muita järjestelmän komponentteja ovat JavaCC-jäsentäjägeneraattorilla 1 toteutettu kyselykielen jäsentäjä ja alakohtaisten päättelysääntöjen sidontaan tarkoitettu mediaattori [GHJV95, s ] -suunnittelumallin mukainen välitysmoduli. Järjestelmän korkean tason rakenne esitetään esitetään kuvassa
7 5 Asiakas ohjelma Päättely koneisto sidonta Aluekohtaiset päättelysäännöt #1 Aluekohtaiset päättelysäännöt #2 Kuva 2: Järjestelmän korkean tason rakenne Käytettävä kieli Järjestelmässä toteutettuja predikaatteja voidaan tällä hetkellä yhdistellä AND ja NOT -konnektiiveilla. Lisäksi predikaatit voivat olla vain yksi- tai kaksipaikkaisia. Näillä rajoituksillakin kieli on jo varsin käyttökelpoinen, sillä käytössä oleva konnektiivipari on täydellinen, ts. kaikki propositiologiikassa ilmaistavissa olevat kaavat ovat käännettävissä vain näitä konnektiiveja käyttäviksi kaavoiksi. Lisäksi, mikä tahansa n-paikkainen predikaatti on käännettävissä sopivia välipredikaatteja käyttäen joukoksi yksi- ja kaksipaikkaisia predikaatteja. Käytettävän kielen kielioppi voidaan esittää seuraavasti: CONSTRAINT ::= { NOT? PREDICATE}* PREDICATE ::= IDENTIFIER (VAR_OR_LITERAL {, VAR_OR_LITERAL}?) VAR_OR_LITERAL ::= IDENTIFIER.* IDENTIFIER ::= [A-Z][A-Z0-9]* Tässä esitysmuodossa kysymysmerkki ja tähti tarkoittavat, kuten normaalisti esiintymiskertojen lukumääriä 0 1 ja 0 n. Hakasulkeita käytetään kuten tavallisesti säännöllisten lausekkeiden yhteydessä, tarkoittaen arvoväliä. Kaarisulkeet tarkoittavat ryhmittelyä. Nyt, jos oletetaan predikaatit CLASS(x), EXTENDS(x, y) ja EQUALS(x, y), voidaan tällä kielellä tehdä kysely kaikkien luokan java.lang.object aliluokkien lis-
8 6 taamiseksi: CLASS(x) AND EQUALS(x, java.lang.object ) AND CLASS(y) AND EXTENDS(y, x) Nyt, uusien samaa ongelmakenttää koskevien predikaattien toteuttaminen on varsin suoraviivaista: helposti voidaan laajentaa esimerkkiä käsittelemään rajapintoja, luokkien jäsenmuuttujia ja -metodeja ja niin edelleen Päättelyprosessi Itse päättelyprosessi on toteutettu suoraviivaisena silmukkana, joka käyttää pinoa välitulosten ylläpitämiseen. Kuvassa 3 esitetään päättelyn eteneminen annetun yksinkertaisen kyselyn yhteydessä. Jäsentäminen CLASS(x) AND EQUALS(x, Object ) Tulos x = Object Logiikkakone CLASS( Object ) AND EQUALS( Object, Object ) OR CLASS( String ) AND EQUALS( String, Object ) Kuva 3: Päättelyprosessi yksinkertaisella kyselyllä Yleisesti esitettynä päättely kulkee seuraavasti: 1. Jäsentäjä käsittelee annetun syötteen ja muodostaa listan, joka sisältää kaikki kyselyyn kuuluvat predikaatit ja niiden argumentit. Tämä lista asetetaan
9 7 työskentelypinon huipulle. 2. Logiikkakone lukee kyselyn pinon huipulta, vaihtaa muuttujia predikaattien luettelointisääntöä käyttäen literaaleiksi, ja kirjoittaa pinoon kaikki ne kyselyt, jotka ovat vielä tässä vaiheessa tosia. 3. Tulosjoukkoon päätyvät ne kyselyt, joiden kaikki predikaatit ovat muuttujien muuntamisen jälkeen tosia. Suurin taika tehdään siis predikaattien toteutuksessa, eli predikaatin luettelointisäännössä ja totuussäännössä. Kuvan 3 suoritusta voidaan seurata myös tarkkailemalla tehtyjä metodikutsuja sekä pinon tilaa kussakin vaiheessa. Tällöin suoritusprosessi näyttää seuraavalta: Pino (1): {CLASS(x) AND EQUALS(x, Object )} Aluksi pinossa on syötteenä annettu kysely. Ensimmäinen käsiteltävä muuttuja on x, jolloin predikaatin CLASS luettelointisäännöltä kysytään kaikki saatavilla olevat luokat, joita ovat Object ja String. Kullekin mahdolliselle vaihtoehdolle jokainen muuttujan x ilmentymä uudelleenkirjoitetaan, ja tulokset kirjoitetaan pinoon. Kukin pinossa oleva kysely siis tarkoittaa TAI-konnektiivilla yhdistettyä tulosjoukon mahdollisuutta. Pinon tila: Pino (2): {CLASS( Object ) AND EQUALS( Object, Object )}, {CLASS( String ) AND EQUALS( String, Object )} Nyt, prosessi alkaa alusta. Logiikkakone lukee pinon päältä ensimmäisen kyselyn. Koska kyselyssä ei ole enää muuttujia, kutsutaan molempien kyselyssä esiintyvien predikaattien totuussääntöä. Nämä molemmat palauttavat toden, joten tämä x:n arvo päätyy tulosjoukkoon. Pinon tila nyt: Pino (1): {CLASS( String ) AND EQUALS( String, Object )} Prosessi aloitetaan taas alusta. Ensimmäinen predikaatti on totta, mutta jälkimmäinen ei ole, joten tämä vaihtoehto (x = String ) hylätään.
10 Vertailu muihin järjestelmiin Luvun kaikki annetun luokan aliluokkien toiminnallisuuden toteuttaminen Javalla vaatii tyylistä riippuen noin 100 riviä ohjelmakoodia, joten annettu esimerkki neljän rivin pituisena on varmastikin nopeampi kirjoittaa ja hyvinkin myös helpompi ymmärtää. Yleisistä päättelyalgoritmeja Davis ja Putnam [DP60] esittävät algoritmin konjunktiivisessa normaalimuodossa olevien predikaattilogiikan kaavojen totuuden ratkaisemiseen. Robinson [Rob65] esittää pelkkään resoluutioperiaatteeseen perustuvan ratkaisumenetelmän. Tässä esityksessä käytetty ongelma-aluekohtaisten listaussääntöjen käyttäminen muistuttaa Bancilhonin [BMSU86] taikajoukkojen käyttämistä. Järjestelmän suorituskyvystä ei vielä tällä hetkellä ole riittävästi kokemuksia: toistaiseksi kaikki kokeillut ongelma-aluekohtaiset sovitukset ovat olleet tarpeeksi nopeita Jatkokehitys Vaikkakin yllä esitettyyn tarkoitukseen kehitetty järjestelmä on soveltuva, on siinä silti monia selviä kehitystä kaipaavia osa-alueita. Niitä ovat ainakin Tuki predikaattilogiikalle ja korkeampien kertaluokkien logiikoille. Vaikkakin käytettävän logiikkakielen rajaaminen propositiologiikan tasolle tekee mahdollisista kyselyistä hyvin yksinkertaisia ja helposti ymmärrettäviä, on kuitenkin selvänä vaarana, että nämä ovat liian yksinkertaisia. Tällöin järjestelmästä ei ole toivottua hyötyä käyttäjälleen Kyselyiden käsitteleminen olioina. Tällä hetkellä kyselyt ovat komponentin ulkoiselle tarkastelijalle olemassa vain tekstuaalisessa muodossa, joka kaavan ratkaisuprosessin aikana jäsennetään sisäiseen esitysmuotoon. Mahdollisuus kaavojen ohjelmalliseen käsittelyyn toisi edellä mainittua käytön
11 9 helppoutta järjestelmän soveltajalle. Käännetyt kyselyt. Tällä hetkellä logiikkakoneen toiminta on tulkkaavaa. Annetut kyselyt voitaisiin myös jäsennysvaiheessa kääntää suoritusympäristön ymmärtämäksi alemman tason kieleksi, toisin sanoen. Javan tavukoodiksi. Tällöin suoritusympäristön dynaaminen kääntäjä mahdollisesti pystyisi kääntämään suoritettavat kyselyt aina konekielelle saakka. Tällä menettelyllä saavutettaisiin potentiaalisesti kertaluokkaa olevia suorituskykyparannuksia. Kutakin jatkokehitysehdotusta tullaan järjestelmän tulevan elinkaaren aikana harkitsemaan vakavasti, mutta tällä hetkellä on liian aikaista järjestää näitä mihinkään tärkeysjärjestykseen. 3 Yhteenveto Tämän työn kantavana ajatuksena on ollut kehittää käytännön ohjelmistotyössä sovellettavissa olevia keino logiikkaohjelmoinnin ja olio-ohjelmoinnin yhdistämiseksi. Suurimpana hyötynä tällaisessa toiminnassa nähdään luettavuuden paraneminen. Wittgensteiniä lainaten: Mistä ylipäänsä voi puhua, sen voi sanoa selvästi; mistä ei voi puhua, siitä on vaiettava. Seminaarityössä esitetyllä propositiologiikan vahvuisella kielellä voidaan yksinkertaisella tavalla määritellä olioiden välisiä monimutkaisia suhteita, joiden hakemisen toteuttaminen perinteisellä imperatiivisella kielellä olisi vaivalloista ja virhealtista. Järjestelmän jatkokehitykseen on vielä syytä panostaa, sillä hyödyllisiä lisäominaisuuksia on näkyvissä jo pienelläkin lisävaivalla. On kuitenkin muistettava, että mahdollisten ylimääräisten toimintojen myötä järjestelmä muuttuu myös monimutkaisemmaksi ja siten vaikeammaksi ymmärtää. Tällöin vaarana on alkuperäisen idean: yksinkertaisen, skriptinomaisen logiikkaohjelmoinnin unohtuminen.
12 Lähteet 10 BMSU86 DP60 GHJV95 Mel88 Francois Bancilhon, David Maier, Yehoshua Sagiv, and Jeffrey D Ullman. Magic sets and other strange ways to implement logic programs (extended abstract). In Proceedings of the fifth ACM SIGACT- SIGMOD symposium on Principles of database systems, pages ACM Press, Martin Davis and Hilary Putnam. A computing procedure for quantification theory. Journal of the ACM, 7(3): , E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series. Addison-Wesley Publishing Company, New York, NY, Fred Mellender. An integration of logic and object-oriented programming. ACM SIGPLAN Notices, 23(3): , Oct Describes the ALF system. Rob65 J. A. Robinson. A machine-oriented logic based on the resolution principle. Journal of the ACM, 12(1):23 41, 1965.
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ätiedotOhjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
Lisätiedot812347A 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ätiedotConcurrency - 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ätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite
2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto
Lisätiedot1. Olio-ohjelmointi 1.1
1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja
LisätiedotCommon Lisp Object System
Common Lisp Object System Seminaarityö Tomi Vihtari Ohjelmointikielten periaatteet kevät 2004 Helsingin Yliopisto Tietojenkäsittelytieteen laitos Järvenpää 5. huhtikuuta 2004 Sisältö 1 Johdanto... 1 2
Lisätiedot11/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ätiedotOhjelmoinnin perusteet, syksy 2006
Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen
LisätiedotT 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ätiedotTietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto
LisätiedotYhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014
Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan
LisätiedotYlläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari
LisätiedotTarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen
Tarjolla tänää: Ohjelmiston toteutuksesta JOT2007 CRC-kortit Testilähtöinen kehittäminen Uudelleenrakentaminen Voisiko ohjelmointi olla sittenkin suunnittelua? Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit
Lisätiedot4. 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ätiedotProlog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010
kielenä 9. joulukuuta 2010 Historia kielenä Historia Sovelluksia kehitettiin vuonna 1972 Kehittäjinä ranskalaiset Pääkehittäjä Alain Colmerauer Philippe Roussel programmation en logique Robert Kowalski
Lisätiedot15. 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ätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
LisätiedotOhjelmointi 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ätiedotOhjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
LisätiedotOpintojakso 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ätiedotOhjelmistoarkkitehtuurit. Kevät
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet
LisätiedotOlio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä
Olio-ohjelmointi Johdanto suunnittelumalleihin Hyvin toimivan olio-ohjelmointiparadigmaa noudattavan ohjelman suunnitteleminen ei ole helppo tehtävä. On löydettävä sopiva luokkarakenne kuvaamaan ratkaistavaa
Lisätiedottää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ätiedotYksikkö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ätiedotarvostelija OSDA ja UDDI palveluhakemistoina.
Hyväksymispäivä Arvosana arvostelija OSDA ja UDDI palveluhakemistoina. HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution
LisätiedotOhjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,
LisätiedotOliosuunnitteluesimerkki: 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ätiedot15. 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ätiedotRajapinnasta 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ätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State
2015 syksy 2. vsk VIII Suunnittelumallit Observer ja State Sisältö 1. Johdanto käyttäytymismalleihin 2. Observer 3. State Suunnittelumallit Observer ja State 2 VIII.1 Johdanto käyttäytymismalleihin Päätarkoitus
LisätiedotImperatiivisten ohjelmien organisointiparadigmojen. historia
Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,
LisätiedotImperatiivisten ohjelmien organisointiparadigmojen historia
Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,
Lisätiedot3. Muuttujat ja operaatiot 3.1
3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.
LisätiedotOhjelmistojen mallintaminen
Ohjelmistojen mallintaminen - Mallit - Ohjelmiston kuvaaminen malleilla 31.10.2008 Harri Laine 1 Malli: abstraktio jostain kohteesta Abstrahointi: asian ilmaiseminen tavalla, joka tuo esiin tietystä näkökulmasta
Lisätiedot4. 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ätiedotT 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ätiedot4.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ätiedotSisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.
3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen
LisätiedotOhjelmistojen mallintaminen, kesä 2009
582104 Ohjelmistojen mallintaminen, kesä 2009 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin
Lisätiedot5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
LisätiedotSisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4
Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.
LisätiedotHELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu
HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /
LisätiedotTyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,
LisätiedotSisä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ätiedotTIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011
TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. helmikuuta 2011 Sisällys Sisällys Ohjelmointikieli? programming language n. a
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 8: Pienen ohjelmointikielen tulkki (ohjelmoitava laskin) (mm. SICP 4-4.1.5 osin) Riku Saikkonen 15. 11. 2012 Sisältö 1 Nelilaskintulkki, globaalit muuttujat
LisätiedotOhjelmistojen 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ätiedotLuento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotLuento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotTT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu
LisätiedotHakemistojen 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ätiedotSisä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ätiedot5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
Lisätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.
LisätiedotOperaattoreiden 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ätiedotJava kahdessa tunnissa. Jyry Suvilehto
Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,
LisätiedotLAUSELOGIIKKA (1) Sanalliset ilmaisut ovat usein epätarkkoja. On ilmaisuja, joista voidaan sanoa, että ne ovat tosia tai epätosia, mutta eivät molempia. Ilmaisuja, joihin voidaan liittää totuusarvoja (tosi,
LisätiedotOhjelmistotekniikan menetelmät, kesä 2008
582101 - Ohjelmistotekniikan menetelmät, kesä 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön
Lisätiedot7.4 Sormenjälkitekniikka
7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan
LisätiedotLuento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento
Lisätiedot2. Olio-ohjelmoinista lyhyesti 2.1
2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin
LisätiedotHelsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi
Miksi optimoidaan Relaatiotietokannan kyselyt esitetään käytännössä SQLkielellä. Kieli määrittää halutun tuloksen, ei sitä miten tulos muodostetaan (deklaratiivinen kyselykieli) Tietokannan käsittelyoperaatiot
LisätiedotInteraktiivisten 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ätiedotTIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä
Lisätiedot815338A 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ätiedotTaulukot. 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ätiedot815338A 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ätiedot12. Näppäimistöltä lukeminen 12.1
12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.
LisätiedotRuby. 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ätiedotLuento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotOhjelmistojen mallintaminen luokkamallin lisäpiirteitä
582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia
Lisätiedot4. 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ätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Lisätiedot18. 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ätiedotSisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)
Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa
LisätiedotOhjelmoinnin 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ätiedotMuusta kuin vesisioista
Muusta kuin vesisioista Janne Käki 8.12.2006 Metodin kuormittaminen (overloading) Samannimisestä metodista on määritelty samassa luokassa (tai samassa yli- ja aliluokkien jatkumossa) useita versioita,
Lisätiedot815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotTIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli
TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2
Lisätiedot12. Monimuotoisuus 12.1
12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys
LisätiedotOhjelmistojen mallintaminen, kesä 2010
582104 Ohjelmistojen mallintaminen, kesä 2010 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin
LisätiedotGroovy. Niko Jäntti Jesper Haapalinna Group 31
Groovy Niko Jäntti Jesper Haapalinna Group 31 Johdanto Groovy on Apachen kehittämä Javaan perustuva dynaaminen oliopohjainen ohjelmointikieli. Kielen kehitys alkoi vuonna 2003, versio 1.0 julkaistiin 2007
Lisätiedot815338A 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ätiedotT Henkilökohtainen harjoitus: FASTAXON
T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä
LisätiedotKohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.
A Lista Aikaraja: 1 s Uolevi sai käsiinsä listan kokonaislukuja. Hän päätti laskea listan luvuista yhden luvun käyttäen seuraavaa algoritmia: 1. Jos listalla on vain yksi luku, pysäytä algoritmi. 2. Jos
LisätiedotELM 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ätiedotOhjelmistojen 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ätiedotLausekielinen ohjelmointi II Ensimmäinen harjoitustyö
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Yleistä Tehtävä: Tee Javalla StringStats-ohjelma, joka laskee esikäsittelemästään merkkijonosta joitakin tunnuslukuja. Lausekielinen ohjelmointi II
LisätiedotOhjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19
Ohjelmointikieli TIE-20306 Principles of Programming Languages Syksy 2017 Ryhmä 19 Juho Kärnä Ville Mäntysaari 1. Johdanto D on yleiskäyttöinen, strukturoitu, staattisesti tyypitetty, käännettävä ohjelmointikieli
LisätiedotTietotekniikan valintakoe
Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan
LisätiedotTIE-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ätiedotList-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen
1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan
LisätiedotTä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ätiedotOhjelmistotekniikan menetelmät, kevät 2008
582101 - Ohjelmistotekniikan menetelmät, kevät 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
Lisätiedot