Logiikkakielen upottaminen olio-ohjelmiin
|
|
- Jaakko Halttunen
- 8 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.
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
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.
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...
812347A 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
1. 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
Common 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
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
Ohjelmoinnin 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
T SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
Tietokannan 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
Yhtä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
Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari
Tarjolla 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
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
Prolog 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
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
9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
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
Ohjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
Ohjelmistoarkkitehtuurit. 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
Olio-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
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
Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }
Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.
arvostelija 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
Ohjelmistoarkkitehtuurit 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,
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ä
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:
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
812347A 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
Imperatiivisten ohjelmien organisointiparadigmojen. historia
Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,
Imperatiivisten ohjelmien organisointiparadigmojen historia
Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,
3. 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.
Ohjelmistojen 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
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,
T SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
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
Sisä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
Ohjelmistojen 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
5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
Sisä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.
HELIA 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 /
Tyyppiluokat 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,
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.
TIEA255 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
Ohjelmoinnin 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
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
Luento 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
Luento 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
TT00AA12-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
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ö
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:
5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
4. 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
ITKP102 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
12. 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.
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
Java 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,
LAUSELOGIIKKA (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,
Ohjelmistotekniikan 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
7.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
Luento 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
2. 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
Helsingin 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
Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
TIEA341 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
TIE-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ä
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
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
815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
12. 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.
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
Luento 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
Ohjelmistojen 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
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
Sisä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
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:
Sisä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
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
Muusta 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,
815338A 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/
TIE 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
12. 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
Ohjelmistojen 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
Groovy. 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
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ä.
T 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öä
Kohdissa 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
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................................
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
Lausekielinen 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
Ohjelmointikieli 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
Tietotekniikan 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
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
List-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
Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:
Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus
Ohjelmistotekniikan 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
Ohjelmointi 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