Luokkakirjastot. esiintymämetodien käytöstä:

Koko: px
Aloita esitys sivulta:

Download "Luokkakirjastot. esiintymämetodien käytöstä:"

Transkriptio

1 Luokkakirjastot Esimerkkejä Jokainen olio on jotain tyyppiä ja ko. tyyppistä oliota voidaan käsitellä ko. luokan metodeilla Merkkijonojen käsittely: String, StringBuffer, StringBuilder, StringTokenizer,.. Matemaattiset funktiot ja vakiot (metodikirjasto): Math perustyyppien kuoriluokat: Integer, Double, satunnaislukujen generointi: Random dynaamiset geneeriset listat: Vector<E>, ArrayList<E>, LinkedList<E>, missä E voi olla mikä tahansa viittaustyyppi pino: Stack<E>, myös luokka LinkedList sisältää pino-operaatiot Arrays ja Collections: staattisia metodeja (esim. lajittelu) hajautustaulu HashMap<K,V>, joukko HashSet<E> (ei vaadita) Luokkakirjastoissa luokkien kuvauksessa on annettu luokan tietokenttien (Field Summary), konstruktorien (Constuctor Summary) ja metodien (Method Summary) kuvaukset. Tietokenttien ja metodien kuvauksessa voi olla määre static, jolloin se on ns. luokkamuuttuja, luokkavakio tai luokkametodi. Näitä käytetään muodossa <luokan nimi>.<kentän nimi tai metodi kutsu>. Jos metodin kuvauksessa ei ole määrettä static, niin kyseessä on ns. esiintymä (tai ilmentymä- tai instanssi-) metodi, joita käytetään muodossa <olio>.<metodin kutsu>. Luokkien String, Integer ja Double oliot eivät ole mutatoituvia, mutta luokkien StringBuffer ja StringBuilder ovat. esiintymämetodien käytöstä: String st = new String( abc ); // tai: String st = abc ; ero? String mjono = st.substring(2,3); mjono = st.replace( a, b ); // StringBuffer/StringBuilder?? mjono = mjono.replace( bb, xx ); StringBuffer sb = new StringBuffer(mjono); // ero Stringiin? String s = sb.substring(2, 3); // ero ed. substring nähden! StringBuffer sbuusi = sb.append("y"); // mitä tapahtuu sb:lle? sb.append(sb); Random r = new Random(); int k = 1+ r.nextint(9); luokkametodien käytöstä: String s = String.valueOf(2.5); double d = Double.parseDouble( 33 ); double x = -2.5; double y = Math.abs(x); double z = Math.random(); Kiinnitä huomiota siihen onko metodi funktio vai proseduuri (tässä tulee myös muistaa, että Javassa funktiota voidaan käyttää lauseen tavoin) mitkä ovat metodin parametrit onko metodissa määre static, joka määrää sen onko kyseessä luokka- vai esiintymämetodi ja siis sen miten sitä käytetään (kutsutaan) 1 2

2 ADT lista 1) Kiinteän mittainen lista kannattaa toteuttaa staattisella taulukolla: esittely on muotoa: <tyyppi> [ ] <muuttujan nimi> esim. int [ ] v; char [ ] c; String [ ] s; Tili [ ] t; taulukon koko (pituus) ilmoitetaan aina luonnin (new) yhteydessä ja sitä ei saa enää sen jälkeen muuttaa. Kuitenkin taulukon komponenttien sisältöä voidaan muuttaa. taulukot ovat olioita ja esitellyt oliot luodaan käyttäen new:tä: v = new int [k]; c = new char [4]; s = new String [n+1]; t = new Tili [n]; usein esittely ja luonti yhdistetään: int [ ] v = new int [k]; char [ ] c = new char [4]; String [ ] s = new String [n+1]; (alkiot viittauksia olioihin) Tili [ ] t = new Tili [n]; (alkiot viittauksia olioihin) taulukon komponenttiin viitataan indeksillä, joka alkaa nollasta: esim. v[0] ja t[k]. Huom. tämä on poikkeava tapa verrattuna muihin olioihin, joita käsitellään aina metodien kautta (paitsi String-oliot, joita voidaan käsitellä ja luoda Javassa kryptisesti). Esim. lista.get(k) käydään läpi toistorakenteella (usein for), jossa taulukon indeksi toimii silmukkalaskurina o indeksiä ei tarvita, kun käytetään for-each -rakennetta: esim. for (int x:taulu) }, kun taulu viittaa int-taulukkoon tai voimme määritellä myös iteraattorin 2) Vaihtelevan mittainen lista kannattaa toteuttaa dynaamisilla rakenteilla (oliokokoelmat) Vector, ArrayList ja LinkedList, joiden alkiot ovat tyyppiä Object (kaikkien oliotyyppien ylityyppi) Java 5.0:sta lähtien kannattaa käyttää niiden geneerisiä vastineita Vector<E>, ArrayList<E> ja LinkedList<E>, joiden alkiot ovat tyyppiä E, joka voi olla mikä tahansa oliotyyppi. Siis tyyppi kiinnitetään esittelyn yhteydessä. Rakenteeseen voidaan tallentaa myös E:n alityypin alkioita. Näillä kaikilla ovat metodit get(i) ja add(e). Vector ja ArrayList: toteutettu staattisella taulukolla. LinkedList: toteutettu linkitettynä rakenteena (ks. TTP I) Tehtävä: Olkoon v dynaaminen lista ArrayList<Integer>. Kirjoita lause, joka poistaa v:n viimeisen alkion. Mitä muuttuu jos alkiotyyppi muuttuu? Entä jos tarkastelemme rakenteita Vector ja LinkedList? Entä jos pitää poistaa taulukon viimeinen komponentti? Esimerkki. Luetaan int-lukuja dynaamiseen listaan. Syöttö lopetetaan, kun ei anneta int-luvun esitystä (esim. tekstiä). Tulostetaan kuinka monta prosenttia listan alkioista on suurempia kuin annettu rajaluku. import java.util.*; public class SuurempiaVector public static void main (String[] args) Vector<Integer> lista = luelista(); if (lista.size()>0) System.out.println(suurempiaKuin(lista,6)); } 3 4

3 /** Luetaan lukuja Vector-rakenteeseen, joka palautetaan. * Kun halutaan lopettaa syöttö, annetaan tekstiä luvun sijasta. */ public static Vector<Integer> luelista() Scanner scan = new Scanner(System.in); // luodaan tyhjä vektori Vector<Integer> v = new Vector<Integer>(); System.out.println("Anna luku (lopuksi tekstiä)"); while (scan.hasnextint()) int luku = scan.nextint(); v.add(new Integer(luku)); // lisäys listan v loppuun System.out.println("Anna seuraava luku "); } // while scan.nextline(); return v; } // luelista Oletetaan, että käyttäjä syöttää luvut 12, 21, 9 ja x. Muistia voidaan havainnollistaa seuraavasti: (a) tilanne, kun 12 on lisätty v:n loppuun, (b) 21 ja (c) 9 on lisätty v:n loppuun. v 12 v v /** Funktio palauttaa kuinka monta prosenttia Integer-olioita * sisältävän listan v alkioista on suurempia kuin parametrina * annettu rajaluku raja. Täydennä. * Alkuehto: lista ei saa olla tyhjä. */ public static double suurempiakuin(vector<integer> v, int raja) int maara = 0; for (int k =0; ; ) if ( ) maara++; } // for return ((double)maara/v.size())*100.0; } // metodi suurempiakuin } // luokan loppu Tehtävä: Muunna eo. hyödyntämään Java 5.0:n for-each rakennetta. Mitä muuttuu, jos hyödynnetään automaattista tyypin muunnosta Integer <-> int? Mitä muuttuu jos käytämme rakennetta ArrayList tai LinkedList? Muutetaan ohjelmaa siten, että lukeminen lopetetaan kun annetaan x ja kaikki muut ei-int-esitykset tulkitaan virheiksi, jolloin luetaan luku uudestaan. Tällöin kannattaa lukea rivi aina merkkijonomuuttujaan, joka muutetaan int-luvuksi parseintmetodilla. Tämä yritys 'kaatuu', jos syötteenä ei anneta kokonaislukua. Kaatuminen voidaan estää käyttämällä Javan poikkeuksia ja try-catch lausetta seuraavalla tavalla: (a) (b) (c) 5 6

4 /** Luetaan lukuja näppäimistöltä listaan Vector, joka palautetaan. * Kun halutaan lopettaa, näppäillään x */ public static Vector<Integer> luelista() Scanner scan = new Scanner(System.in); // luodaan tyhjä vektori Vector<Integer> v = new Vector<Integer>(); boolean luetaan = true; while (luetaan) System.out.println("\nAnna seuraava luku (lopuksi x)"); String rivi = scan.nextline(); if (rivi.equals("x")) luetaan = false; // lopeta while-silmukka else try int luku=integer.parseint(rivi); } // try catch (NumberFormatException e) System.out.println("Et antanut kokonaislukua etkä x:ää\n"); continue; // aloita while-silmukkaa uudestaan } // catch } // else } // while return v; } // luelista // nyt muuttujassa rivi on kokonaisluvun esitys v.add(new Integer(rivi)); // käykö v.add(rivi)? Voiko kirjoittaa v.add(luku); Tehtävät 6 ja 7 (s. 88). Tästä puuttuvat ulkoiset kuvaukset. Tyypin käsite on tässä erittäin tärkeä ja mitä erityyppisille alkiolle voi tehdä. Alkuehdot? Täydennä. import java.util.*; public class MerkkijonoTaulukoksiJaPainvastoin public static void main (String[ ] args) int[] v = merkkijonotaulukoksi(" "); for (int k = 0; k < v.length; k++) System.out.println(v[k]); String s = taulukkomerkkijonoksi(v); System.out.println(s); } // main public static int[] merkkijonotaulukoksi(string syöte) StringTokenizer stok = new StringTokenizer(syöte); int maara = stok.counttokens(); int[] v = new int [maara]; for (int k = 0; k < maara; k++) v[k] = ; return v; } // merkkijonotaulukoksi public static String taulukkomerkkijonoksi(int[] v) String tulos =""; for (int k = 0; k < v.length; k++) tulos = ; return tulos.trim(); } // taulukkomerkkijonoksi } // class 7 8

5 String ei ole mutatoituva, joten katenaation + (eli liitä loppuun) yhteydessä luodaan aina uusi olio (ja roskaa syntyy). Sen vuoksi usein käytetäänkin luokkaa StringBuffer, jonka alkiot ovat mutatoituvia. Alla on tällainen ratkaisu (täydennä): public static String taulukkomerkkijonoksibuffer(int[] v) StringBuffer tulos = new StringBuffer(""); for (int k = 0; k < v.length; k++) merkkijonotaulukoksi käyttämällä luokan String metodia split menee näin näppärästi: public static int[] merkkijonotaulukoksi(string syöte) String[] stok = syöte.split(" +"); int[] v = new int[stok.length]; for (int k =0; k< stok.length; k++) v[k] = Integer.parseInt(stok[k]); return v; } } return tulos.tostring().trim(); Split vaatii argumentikseen ns. säännöllisen lausekkeen, jonka yleinen muoto kuvataan luokkakirjastossa metodin split yhteydessä. Edellä append on luokan StringBuffer esiintymämetodi (muutosmetodi), jolloin sen kutsu kohdistetaan olioon. Tällöin käsitellään koko ajan samaa olioita (johon muuttuja tulos viittaa), jonka sisältö muuttuu (mutatoituu). Huomaa, että append on 'raskaasti' ylikuormitettu ja sillä voi siis olla parametrina myös luku, jolloin metodissa append ko. luku muutetaan ensin merkkijonotyyppiseksi ja sen jälkeen suoritetaan katenointi. Lopuksi tulos tulee muuntaa vielä String-tyyppiseksi luokan StringBuffer metodilla tostring. trim- poistaa alku- ja lopputyhjät. Splitin argumenttina välilyönnin perässä oleva + tarkoittaa: yksi tai useampi. Eli tässä tapauksessa jako tehdään aina kun merkkijonossa on yksi tai useampi välilyönti peräkkäin ja nämä välilyönnit eivät tule mukaan. Miten metodia merkkijonotaulukoksi voi kutsua jostain muusta luokasta, joka sijaitsee samassa hakemistossa? Entä jos haluammekin merkkijonosta dynaamisen listan LinkedList <Integer>? Onko jossain luokassa metodeja, joilla vaaditut muunnokset voitaisiin suorittaa suoraan? 9 10

6 Luokista Javassa luokan avulla tehdään mm.: 1. uusi tietotyyppi, jonka yhteydessä määritellään karakterisoivat tiedot (tietokentät eli attribuutit) ja metodit, joilla luokan mukaisia alkioita (olioita) tulee käsitellä. 2. metodi- eli aliohjelmakirjasto 3. pääohjelma (sisältää main-metodin) Kohdan 2 luokista ei luoda esiintymiä (olioita) ja niiden metodit ja tietokentät (luokan alussa) ovat määreeltään static. Seuraavassa käsitellään vain Kohdan 1 mukaisia luokkia, jotka koostuvat: tiedoista, joilla luokan mukaiset alkiot karakterisoidaan, näitä sanotaan luokan tietokentiksi tai luokan muuttujiksi (luokan alussa olevat muuttujien ja vakioiden esittelyt) konstruktoreista, jolla ko. luokan mukaisen olion tietokentät alustetaan olion luonnin yhteydessä. Konstruktorin nimi=luokan nimi ja sillä ei ole tulostyyppiä lainkaan ja sillä on yleensä parametri kutakin luokan tietokenttää kohti. metodeista, joilla ko. luokan mukaisia alkioita käsitellään public class <luokan nimi> <luokan tietokentät> <luokan konstruktorit> <luokan muut metodit> } Luokat ja niiden havaitseminen (ei ole oppaassa) Luokkia löydetään usein etsimällä sovellusalueen kuvauksesta substantiiveja, joiden voidaan ajatella olevan olioita, joilla on identiteetti, tietty tila ja käyttäytyminen. Luokka on tietotyyppi, joka on staattinen kuvaus ajonaikana luotavista olioista. Luokan tietokentät ovat luokan karakterisoivia tietoja, jotka ovat yleensä luokkaan liittyviä substantiiveja tai adjektiiveja. Luokan metodit löydetään etsimällä sovellusalueeseen liittyviä verbejä. Metodit sijoitetaan lähinnä sopivimpaan luokkaan. Sovelluskohde mallinnetaan luokkien ja niiden välisten rakenteellisten suhteiden kautta (perintä!). Samasta asiasta voi olla eri näkökulmia (esim. auto: käyttäjä vs. korjaaja). Laajaan ohjelmakokonaisuuteen kuuluu useita luokkia, joiden tunnistaminen ja luokkien välisten suhteiden määrääminen on usein vaikeata ja joudutaan tekemään usein uudestaan. Tärkeänä motivaationa on myös luokkien ja metodien uudelleenkäyttö: samaa ohjelmakoodin pätkää ei tulisi kirjoittaa moneen kertaan. Seuraavalla jaksolla TJM tarkastellaan oliopohjaista mallinnusta, jossa käytetään UML-mallinnuskieltä

7 Tunnuksien nimeämiskäytäntö luokat nimetään yleisesti substantiiveilla ja niiden nimen ensimmäinen kirjain kirjoitetaan isolla kirjaimella kenttien nimet ovat yleensä substantiiveja (totuusarvot voivat olla myös adjektiiveja tai kysymyksiä) ja niiden ensimmäinen kirjain kirjoitetaan pienellä, mutta vakioiden nimet kirjoitetaan kokonaan isoilla metodien nimet ovat yleensä verbimuotoisia, josta näkyy kohdekenttä ja ne aloitetaan pienellä kirjaimella: getnimi(), setnimi (String uusinimi) jos tunnus koostuu useammasta sanasta, toisesta sanasta eteenpäin kaikki sanat kirjoitetaan isolla alkukirjaimella yhteen ilman alaviivoja tunnuksien tulee olla kuvaavia ja ytimekkäitä Olio-ohjelmointiin liittyvät tärkeät käsitteet: Luokan tietokenttä voi olla: luokkamuuttuja, luokkavakio, esiintymämuuttuja Luokan metodi voi olla: luokkametodi, esiintymämetodi, konstruktori (alustaja) Näiden osoittamiseen ohjelmointikielessä on tietty syntaksi! Luokan tietokentät: luokkamuuttuja/esiintymämuuttuja: Jos tietokentän arvo voi olla eri luokan eri oliolla, niin tällaista muuttujaa kutsutaan esiintymämuuttujaksi (oliokohtainen) Luokalla voi olla tietokenttä, joiden arvo on yhteinen kaikilla luokan olioilla. Tällaista kutsutaan luokkamuuttujaksi (se on siis luokkakohtainen). Luokan metodit: luokkametodi/esiintymämetodi: Tyypillisesti luokassa määritellään metodeja, joilla voidaan käsitellä ko. luokan mukaisia olioita kohdistamalla ko. metodin kutsu ko. luokan olioon. Tällaisia metodeja kutsutaan esiintymämetodeiksi, koska niitä voidaan kohdistaa vain luokan mukaiseen esiintymään, olioon. Joskus taas halutaan luokassa määritellä metodi, jota voidaan käyttää ei-olio-ohjelmoinnin tavoin, jolloin metodi ei vaadi luokan esiintymää eikä sitä kohdisteta olioon. Tällaista metodia kutsutaan luokkametodiksi. Miten tämä ilmaistaan Javassa: jos kyseessä on luokkamuuttuja tai metodi, kirjoitetaan sen määreeksi static. Jos määre static puuttuu, tarkoittaa se että kyseessä on esiintymämuuttuja tai metodi. Siis: aina kun otamme luokkaan mukaan tietokentän tai metodin, niin meidän tulee miettiä mihin yllä olevista ryhmistä se kuuluu eli sitä kirjoitetaanko sen määreeksi static vai eikö

8 Näkyvyysmääreet Javassa Tietokentälle ja metodille asetetaan yleensä näkyvyysmääre: public/private/protected/ joka määrää ko. muuttujan tai metodin näkyvyyden ja käytettävyyden muissa luokissa. Näkyvyysalueena on ns. pakkaus eli paketti (package). Jos sitä ei ole luokkaan määritelty, niin se on hakemisto, jossa ko. luokka on. public: julkinen, käyttö sallittu kaikissa luokissa (milloin import?) private: käyttö sallittu vain luokan itsensä sisällä protected: voi käyttää aliluokissa sekä luokissa, jotka ovat samassa pakkauksessa määre puuttuu: voidaan käyttää niissä luokissa, jotka ovat samassa pakkauksessa. Vaatimus tällä kurssilla: tietokentät varustetaan määreellä private metodit public Huom. Luokan kirjoittaja määrää sen, mitkä tiedot näkyvät ulospäin, ja mitä luokan mukaisille olioille saa tehdä: mitä tietoja voi katsoa (havainnointimetodit) ja mitä tietoja saa muuttaa (muutosmetodit) ja minkälaiset muutokset ovat sallittuja olion pitää olla eheässä tilassa eli tietokentillä pitää olla aina lailliset arvot. Tämä pitää huomioida kirjoitettaessa muutosmetodeja. Kyseessä on siis mallinnuksen lisäksi systeemin suunnitteluperiaate. Esim. luokassa Tili on estetty se, että luokan käyttäjä (asiakas) voisi asettaa saldoksi tietyn summan (vain nosto ja talletus on sallittu). Metodien looginen ryhmittely luokassa Esiintymämetodit jaetaan vielä toiminnallisuuden mukaan Konstruktorit (alustajat) Havainnointimetodeihin (olion tila ei muutu) Muutosmetodeihin (olion tila muuttuu) Muut metodit (yleensä apumetodien luonteisia) Tätä ei ilmaista millään määreellä itse ohjelmakoodissa, vaan tämä on looginen jako, joka ilmoitetaan esittämällä metodit ryhmittäin ja varustamalla ryhmät kommenteilla

9 Olioiden luonti Luokan olion esiintymä eli instanssi luodaan käyttäen newlauseketta, jossa on aina mukana konstruktorin kutsu: new <konstruktorin nimi> ( <mahd. parametrit>) Konstruktorin nimi = sen luokan nimi, jossa konstruktori on määritelty Lausekkeen arvo on viittaus olioon, joka asetetaan yleensä muuttujan arvoksi Konstruktoria voi kutsua vain new:n kanssa ja kutsun jälkeen tulisi tietokentillä olla aina haluttu arvo. Näin ollen konstruktori ei luo oliota, vaan alustaa olion tietyt (useimmiten kaikki) tietokentät. Nämä arvot ovat konstruktorin parametreja. Luonnin suorittaa new. Alustamattomilla tietokentillä on Javassa oletusarvot. Tyypillisesti konstruktoreita kirjoitetaan useita (ylikuormitus). Ellemme ole kirjoittaneet luokkaan yhtään kostruktoria, käytössä on silti parametriton oletuskonstruktori, joka asettaa tietokentille oletusarvot (konstruktoria ei siis tarvitse kirjoittaa luokaan lainkaan, ellei tietokentille haluta antaa arvoja). JavaBeans suosittelee että tällainen parametriton konstruktori kirjoitetaan aina luokkaan. Miksiköhän? Kuinka luokan tietokenttiin ja metodeihin voidaan viitata (anna esimerkit): viittaus sen luokan sisällä, jossa tietokenttä tai metodi esitellään: ko. luokan metodeissa voidaan kaikkiin luokan tietokenttiin ja metodeihin viitata muodossa <olio>.<metodin kutsu tai tietokentän nimi> Jos tarkastellaan kohdeolioita (kuten yleensä) tulee <olio>:n tilalla olla this tai sen voi jättää pois. luokan tietokenttien ja metodien käyttö muissa luokissa: 1. jos näkyvyys on private: ei voi viitata suoraan. Tietokenttiä voidaan käsitellä luokassa olevien julkisten (public) havainnointi- ja muutosmetodien kautta 2. jos näkyvyys on public (eli kyseessä on julkinen tietokenttä tai metodi): jos määreenä ei ole static, niin kyseessä on julkinen esiintymämuuttuja tai esiintymämetodi (kohdistetaan olioon): viitataan muodossa <olio>.<metodin kutsu tai tietokentän nimi> Julkisten tietokenttien käyttö ei noudata kapselointiperiaatetta. jos määreenä on static, niin kyseessä on julkinen luokkamuuttuja (tai vakio) tai luokkametodi, jonka kutsu kohdistetaan luokkaan: viitataan muodossa <luokan nimi, jossa metodi tai tietokenttä on määritelty>. <metodin kutsu tai tietokentän nimi> 17 18

10 Käydään läpi opiskeluoppaan luokka Tili ja siihen liittyvät esimerkit. Luokat Pankki ja PankkiKoe Tilit tallennetaan ArrayList<Tili>-rakenteeseen, jonka jokaisen komponentin arvo on luokan Tili olio (tarkemmin: viittaus Tiliolioon) Kun pankki luodaan (perustetaan), pankilla ei ole tilejä lainkaan. Luokkaan Pankki tehdään metodi lisäätili, jolla voidaan lisätä parametrina annettu Tili-olio ArrayList-rakenteen tilit loppuun. Luokalla PankkiKoe voidaan testata luokkien Tili ja Pankki toimivuutta. Käydään läpi opiskeluoppaan luokka Pankki. Mitä metodeja voisi vielä olla? Huomaa, että luetaan aina rivi kerrallaan merkkijonomuuttujaan ja tehdään tarvittaessa tyypin muunnos. Tämä on hyvä tapa. Miksi? Metodi kaatuu, jos tieto syötetään väärin. Mikä pelastukseksi? Miksi luokassa on metodi lisäätili, vaikka se sisältää vain yhden lauseen? Suurinta saldoa haettaessa hyvä alkuarvo on 0.0 (tai neg.), mutta tämä voidaan ratkaista myös toisin. Miten? Käydään läpi opiskeluoppaan luokka PankkiKoe ja piirretään kuva luokan Pankki oliosta pankki Luokassa PankkiKoe ei saa näkyä se millaiseen tietorakenteeseen tilitiedot on tallennettu (tässä ArrayList <Tili>). Tällöin luokassa Pankki voidaan esim. muuttaa tilitietojen tallennusrakennetta ja luokan Pankki käyttäjän ei tarvitse tietää siitä mitään. Olio-ohjelmoinnin periaatteita: s. 71 Perintä: katsotaan Viikon 10 teksti. Käydään läpi opiskeluoppaan s luokka ShekkiTili, jossa korkoprosentti on aina 0.0, ja siihen liittyvät esimerkit. Jos aikaa jää: Tehdään yhdessä taululle s. 88 tehtävä 4 ja ehkä myös 3 Rajapintaluokka: s Metodi compareto luokkaan Tili? 19 20

11 21 22

12 23 24

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

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

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

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

Rajapinta (interface)

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

Lisätiedot

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

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

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia Standardi- ja tietorakenneluokkia Javan API, ArrayList Ohjelmointirajapinta (Application Programming Interface, API)

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

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,

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT... 4 2. MATERIAALIT JA OHJELMISTOT... 5

1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT... 4 2. MATERIAALIT JA OHJELMISTOT... 5 1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT... 4 2. MATERIAALIT JA OHJELMISTOT... 5 3. SUORITUSTAVAT... 5 3.1 Tentistä... 5 3.2 Tietokonetyöstä... 6 4. OPISKELUN ETENEMINEN... 6 VIIKKO 3... 8 Luokka

Lisätiedot

16. Javan omat luokat 16.1

16. Javan omat luokat 16.1 16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

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

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

Lisätiedot

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

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

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

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

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

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

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

Lisätiedot

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,

Lisätiedot

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

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

Lisätiedot

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

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

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

Periytyminen (inheritance)

Periytyminen (inheritance) 1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa

Lisätiedot

1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT... 4 2. MATERIAALIT JA OHJELMISTOT... 5

1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT... 4 2. MATERIAALIT JA OHJELMISTOT... 5 1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT... 4 2. MATERIAALIT JA OHJELMISTOT... 5 3. SUORITUSTAVAT... 5 3.1 Tentistä... 5 3.2 Tietokonetyöstä... 6 4. OPISKELUN ETENEMINEN... 6 VIIKKO 4... 8 Luokka

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Poikkeustenkäsittely

Poikkeustenkäsittely 1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on

Lisätiedot

Oliot viestivät metodeja kutsuen

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

Lisätiedot

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

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

2. Olio-ohjelmoinista lyhyesti 2.1

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

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

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

Lisätiedot

Luokan sisällä on lista

Luokan sisällä on lista 1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

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

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

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

public static void main (String [] args)

public static void main (String [] args) HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,

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

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet, kurssikoe Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

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. 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ätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN MÄÄRITTELY KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona

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

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

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

9. Periytyminen Javassa 9.1

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

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

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

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

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi Imperatiivisen ohjelmoinnin peruskäsitteet muuttuja muuttujissa oleva data voi olla yksinkertaista eli primitiivistä (esim. luvut ja merkit) tai rakenteista jolloin puhutaan tietorakenteista. puhuttaessa

Lisätiedot

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

Lisätiedot

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) 1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden

Lisätiedot

Taulukoiden käsittely Javalla

Taulukoiden käsittely Javalla 1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Ohjelmointi 2, välikoe

Ohjelmointi 2, välikoe Ohjelmointi 2, välikoe 21.3.2014 Vastaa neljään tehtävään kuudesta siten, että jokainen tehtävä tulee omalle konseptilleen. Mikäli vastaat useampaan kuin neljään tehtävään, pisteiden laskussa huomioidaan

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

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

12. Näppäimistöltä lukeminen 12.1

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.

Lisätiedot

Mitä poikkeuskäsittely tarkoittaa?

Mitä poikkeuskäsittely tarkoittaa? Poikkeuskäsittely Mitä poikkeuskäsittely tarkoittaa? Poikkeuskäsittelyluokkien hierakkia Poikkeuksen sieppaaminen Mihin järjestykseen try-catch-lauseen ExceptionType-poikkeukset laitetaan? Poikkeuksen

Lisätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

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

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointi 1 / 2009 syksy Tentti / 18.12 Tentti / 18.12 Vastaa yhteensä neljään tehtävään (huomaa että tehtävissä voi olla useita alakohtia), joista yksi on tehtävä 5. Voit siis valita kolme tehtävistä 1 4 ja tehtävä 5 on pakollinen. Vastaa JOKAISEN

Lisätiedot

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

Lisätiedot

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus Sisällys 19. Olio-ohjelmointia Javalla Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot