Kurssin suoritus. Javan perusteet Kurssimateriaali. Kurssin aikataulu. Harjoitukset. Kurssin sisältö. Javan perusteet

Koko: px
Aloita esitys sivulta:

Download "Kurssin suoritus. Javan perusteet 2004. Kurssimateriaali. Kurssin aikataulu. Harjoitukset. Kurssin sisältö. Javan perusteet 2004 1"

Transkriptio

1 Kurssin suoritus Javan perusteet ,5 ov Kuopion yliopisto, tietojenkäsittelytieteen laitos Ohjelmistotekniikan maisterikoulutus, Varkaus Tomi Keinonen Luennot 18 h Harjoitukset 4 krt Lopputentti tai harjoitustyö Harjoituksista jaettavat hyvityspisteet 75 % 100 % +2 arvosanaa 50 % 75 % +1 arvosana 25 % 50 % ei vaikutusta 0 % 25 % 1 arvosana 1 2 Kurssimateriaali Verkkosivut Kurssin aikataulu To :45 19:45 Luennot 1 4 La :00 10:30 Harjoitukset 1 B231 C1004TK Kurssi pohjautuu kirjaan Morelli, Ralph: Java, Java, Java! : Object Oriented Problem Solving 1. painos: 2000, ISBN painos: 2002, ISBN Kurssikirjan hankinta ei välttämätöntä, mutta varsin suotavaa 3 La :00 14:00 Luennot 5 8 B231 Harjoitustehtävien 2 palautus sähköpostitse ma klo 18 mennessä Ti :45 19:45 Luennot 9 12 B231 Harjoitustehtävien 3 palautus sähköpostitse ti klo 18 mennessä Ke :45 19:45 Luennot B231 Harjoitustehtävien 4 palautus sähköpostitse ke klo 18 mennessä (To :45 19:45 Tentti B231) Jompi kumpi, sovitaan (Harjoitustyön palautus sähköpostitse pe klo 18 mennessä) kurssilla Ke :45 18:15 Luennot B231 4 Harjoitukset Tehtävät nettisivulla Ensimmäiset harjoitukset mikroluokassa Ohjelmalliset ratkaisut mukaan esim. levykkeellä Harjoitukset 2 4 palautetaan sähköpostina Ratkaisujen ohjelmakoodit liitetiedostoina Mahdolliset kuvat GIF tai JPEG muotoisina Osanottajien määrästä riippuen lyhyt palaute ratkaisusta paluupostina Ratkaisujen ei tarvitse olla täydellisiä 5 Kurssin sisältö Poikkeukset J2SE API Tiedostot Rekursio Javakieli Java 2 Platform, Standard Edition Taulukot Luokat ja oliot Ehdot ja toisto Metodit Aritmetiikka 6 Javan perusteet

2 Java JAVA:sta on useita eri versioita erilaisiin käyttötarkoituksiin Ympäristö Ei käyttöjärjestelmäriippuvuutta Standard Edition (SE) Enterprise Edition (EE) Mobile Edition (ME) Sunin J2SE SDK, versio J2SE: Yleisin Java alusta, joihin perussovellukset pohjautuvat J2EE: Palvelinsovellusten kehittämiseen tarkoitettu alusta, sisältää kaikki J2SE:n ominaisuudet J2ME: Typistetyin ominaisuuksin kämmenlaitteisiin tarkoitettu alusta Kurssilla käsiteltävät perustoiminnot kaikissa Java alustoissa samat. Eroavaisuudet lähinnä alustan luokkakirjastoissa. Lähdekoodi suositellaan kirjoitettavaksi jollakin tekstieditorilla: (ilmainen LE) 7 8 Oliot ja luokat Oliot ja luokat Olio on luokan ilmentymä, jolla on tila ja käyttäytyminen. Luokan ja olion erot? UML luokkakaavio. Olio on yleinen käsite, jolla on tila käyttäytyminen Jokaisella oliolla on yksikäsitteisesti määritelty luokka, johon se kuuluu Olion tila talletetaan attribuutteihin ja käyttäytyminen toteutetaan metodeilla 9 10 Oliot ja luokat Oliot ohjelmissa Jääkaappi Omena Timestamp Olio ohjelmointikieliä: Java, C++, Oberon 2, Smalltalk, Eiffel Java puhdas olio ohjelmointikieli Maitopurkki Tomaatti File Duration User Ohjelmistokehittäjä rakentaa tarvittavat luokat vaatimusten ja suunnitelmien perusteella Javan perusteet

3 Olio ohjelmointi periaatteita Hajoita ja hallitse Kapselointi Rajapinnat Tiedon piilottaminen Yleiskäyttöisyys Laajennettavuus Miksi luokat? Luokat suunnitellaan ja testataan hyvin (hyvä laatu) Luokkia uudelleenkäytetään ja peritään (kehityksen nopeus) Väärän käytön estäminen (ohjelmoijan virheiden vähentäminen) Asiakokonaisuudet erillään (selkeys ja ymmärrettävyys) Luokan ja olion erot UML luokkakaavio Luokka määrittelee attribuutit ja metodit ohjelmoijan tekemä ei ole olemassa ajon aikana kuin oliomuodossa kiinteä ajon aikana, ei voida muuttaa ohjelman pyöriessä nimetty luokan nimen mukaan Olio on luotu jostakin luokasta on olemassa vain ajon aikana täytyy määritellä ja luoda ohjelmassa sisältää attribuutteja ja metodeja, joita voidaan suorittaa ohjelmasta nimetty muuttujaksi Universal Modeling Language Luokasta kuvataan Nimi Attribuutit Metodit Yleisesti käytetty standardisoitu kuvaustapa Kommentteja voidaan laittaa merkkien väliin Director SimpleWindow window GrayCircle circle «constructor» Director() Metodikutsut Metodikutsut olio.metodi(); Esimerkkejä pen.moveforward(); pen.turnclockwise(); pen.draw(); DrawingTool «constructor» DrawingTool() «update» void moveforward() void turnclockwise() void dontdraw() void draw() Attribuutit (luokan muuttujat) Jokaisella luokan attribuuttilla on määritelty näkyvyysalue (scope) private protected public Attribuuttien nimien tulee olla yksilöllisiä Esimerkki private DrawingTool pencil; private DrawingTool pen; Javan perusteet

4 Nimeämiskäytännöt Javakielessä Luokkien, metodien ja attribuuttien nimissä (identifiers) on rajoitteita alkaa kirjaimella a z tai A Z, jonka jälkeen voi olla numeroita tai kirjaimia, mutta ei erikoismerkkejä isot ja pienet kirjaimet eri merkkejä nimeäminen kannattaa tehdä kuvaavasti eri käytäntöjä olemassa, yhtenäisyys ohjelman sisällä kannattaa säilyttää Nimeämiskäytännöt esimerkki Luokkien nimet: DrawingTool Luokan metodit: drawline Attribuutit: pencilcolor Muuttujat metodien sisällä: pencilcolor Sun:n suositukset: Lähdekoodista ohjelmaksi Ensimmäinen Java ohjelma Lähdekoodista ohjelmaksi Ensimmäinen ohjelma Tekstieditori Lähdekoodi (*.java) Kääntäjä Tavukoodi (*.class) Suunnitelmasta lähdekoodiksi Jokainen luokka kirjoitetaan omaan lähdekooditiedostoon. Esimerkiksi luokka Director kirjoitetaan tiedostoon Director.java Koodia selkeyttämään käytetään sisennyksiä, kommentteja ja yhtenäistä nimeämiskäytäntöä. Isot ja pienet kirjaimet tarkoittavat eri asiaa. Luokkien ja niissä olevien metodien kokoa pyritään rajoittamaan. Suuret luokat ja pitkät metodit kannattaa jakaa pienempiin osiin. 5 Virtuaalikone (JRE) Lähdekoodista ohjelmaksi Lähdekoodista ohjelmaksi Tekstieditori Lähdekoodi (*.java) Kääntäjä Tavukoodi (*.class) Virtuaalikone (JRE) Lähdekoodista tavukoodiksi Kääntäjä kääntää lähdekoodin JRE:n ymmärtämäksi tavukoodiksi (javac tiedosto). Kääntäjä tarkastaa lähdekoodin oikeellisuuden ja pysähtyy virheeseen, mikäli lähdekoodia ei voida kääntää. Onnistunut käännös tuottaa.classpäätteisen tavukooditiedoston jokaisesta lähdekooditiedostosta. Ohjelmoija ei muokkaa tavukoodia, vaan muutokset tehdään aina lähdekoodiin Tekstieditori Lähdekoodi (*.java) Kääntäjä Tavukoodi (*.class) Virtuaalikone (JRE) Tavukoodin suorittaminen Tavukoodia ei ole konekieltä eli sitä ei voida suorittaa suoraan prosessorilla. Suorittamiseen käytetään Javavirtuaalikonetta (Java VM, JRE). (java luokannimi) Samaa tavukoodia voidaan suorittaa missä tahansa laiteympäristössä, mihin on saatavilla Java VM. Ohjelmassa olevat loogiset virheet ilmenevät vasta ajon aikana. Virheitä vähennetään ja tutkitaan testauksella ja debuggauksella. 24 Javan perusteet

5 Ensimmäinen ohjelma public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); Koodin kääntäminen ja ajaminen Yksittäisen MyClass.java tiedoston kääntäminen onnistuu: javac MyClass.java Käännöksen jälkeen ajaminen: java MyClass Ajamisen yhteydessä voidaan välittää komentoriviparametreja: java MyClass parametri1 parameteri Kommentit Kommentteja voi koodiin laittaa kahdella tavalla: // yksirivinen kommentti /* Monirivinen kommentti */ Sopivat kommentit selkeyttävät koodia Ohjelma? Hyvä ohjelma toteutuksen näkökulmasta? Toimii halutusti normaalien käyttötapausten lisäksi myös erikoistapauksissa Rakenne on selkeä ja ymmärrettävä Hyödynnetty mahdollisuuksien mukaan olemassaolevia valmiita luokkia/luokkakirjastoja Koodi uudelleenkäytettävää Riittävä kommentointi Perustietotyypit Perustietotyypit ja aritmetiikka Kokonaislukutyypit, reaalilukutyypit, kirjaimet Perustietotyyppien ja olioiden erot Aritmeettiset lausekkeet ja niiden sisäinen suoritusjärjestys Muunnokset perustietotyypistä toiseen Merkkijono Math luokan tarjoamat palvelut Vakiot 29 Kokonaislukutyypit byte (8 bittiä) ( ) short (16 bittiä) ( ) int (32 bittiä) ( ) long (64 bittiä) Liukulukutyypit float (32 bittiä) double (64 bittiä) Muut perustietotyypit boolean totuusarvo (true/false) char kirjain (Unicode) 30 Javan perusteet

6 Tietotyyppien kokojärjestys byte char short int long float double 31 Kokonaislukutyypin int operaattorit Prefix operaattorit (int >int) vastaluku ++ lisäys vähennys Aritmeettiset oper. (int*int >int) + yhteenlasku vähennyslasku * kertolasku / jakolasku (kokonaisosa) % jakoläännös (modulo) Vertailulauseet (int*int >boolean) == yhtäsuuruus!= erisuuruus < pienempi <= pienempi tai yhtäsuuri > suurempi >= suurempi tai yhtäsuuri Postfix operaattorit (int >int) ++ lisäys vähennys Rajoituksia ++ ja (prefix ja postfix) operaattoreita ei voida kohdistaa vakioille Käyttöesimerkkejä int i = 1; int k = 2; ++i; // prefix, i=i+1; int sum = i+k; // aritm. op. boolean b = i < k; // vertailu i++; // postfix boolean complex = (i++ * 2 > ++k); Operaattorien lyhennykset a+=b a=a+b a =b a=a b a*=b a=a*b a/=b a=a/b Käyttöesimerkkejä int a = 1; a*=2; // a=a*2; > a==2 int b = 6; b+=2; // b=b+2; > b==8 Muunnokset tietotyypistä toiseen Muunnokset numeroarvoisesta tietotyypistä toiseen tehdään tyypinmuunnoksen kautta Pyöristykset tapahtuvat aina alaspäin Esimerkki: int i = (int)2.5; // i == 2; Mikäli halutaan pyöristää virallisten pyöristyssääntöjen mukaan, on 2 vaihtoehtoa: int i = (int) ; // i == 3 int i = Math.round(2.5); // i == 3 34 String luokka String luokkaa käytetään merkkijonojen tallentamiseen Vaikka String näyttäisi toimivan kuin perustietotyyppi, se on kuitenkin luokka String str = Esim ; String str = new String( Esim ); String str( Esim ); Luokalla on paljon metodeja merkkijonon käsittelyyn Math luokan metodeja Math.abs itseisarvo Math.pow potenssi Math.round pyöristys Math.sqrt neliöjuuri Math.random satunnaisluku Javan perusteet

7 Vakiot Vakioita voi määrittää final määreellä Vakiomuuttujan arvoa ei voi muuttaa Esimerkkejä: final double Math.PI = final int count = 11; Oliot ja luokat Luokkien teko Konstruktorit Metodit Muuttujat, oliot ja roskienkeruu Esimerkkiluokan UML kaavio String m_name int m_age int m_creditcount Student Student() Student(String name) void setname(string name) void setage(int age) void setcreditcount(int creditcount) Konstruktorit Luokalla voi olla yksi tai useampia luokan nimisiä metodeja, joita kutsutaan konstruktoreiksi Konstruktorit voivat erota toisistaan erilaisten parametrien perusteella: public class Student { Student() { Student(String name) { Konstruktorit Konstruktoria kutsutaan luotaessa uusi olio Student stu1 = new Student(); Student stu2 = new Student( Pekka ); Metodit String m_name int m_age int m_creditcount Student Student() Student(String name) void setname(string name) void setage(int age) void setcreditcount(int creditcount) Konstruktorin lisäksi luokalla on yleensä myös muita metodeja Metodeilla voi myös olla parametreja Javan perusteet

8 Metodien parametrit Metodilla voi olla rajoittamaton määrä parametreja Parametrit määritellään sulkujen sisässä metodin nimen perässä public void sellcar(car cartosell, Person currentowner, Person buyer) { cartosell.check(); buyer.getsignature(); currentowner.getsignature(); Metodien paluuarvot Metodilla voi olla korkeintaan yksi paluuarvo Paluuarvon tyyppi määritellään ennen metodin nimeä: public String getname(); public int getage(); Metodi ei palauta arvoa, mikäli se määritellään void määreellä: public void setage(int age); 44 Metodien paluuarvot Metodin paluuarvo palautetaan returnlauseella public String getname() { return m_name; Metodien määrittely yhteenveto Jokainen metodi kuuluu jollekin luokalle Metodin näkyvyysalue rajaa sen käyttöä Metodilla voi olla rajoittamaton määrä parametreja Metodilla voi olla yksi paluuarvo tai ei paluuarvoa ollenkaan (void) Olioiden luonti ja sijoittaminen Muuttujat, oliot ja roskienkeruu Oliota ei ole olemassa ennen sen luontia muuttuja = new Olio(); Esimerkki DrawingTool pen; pen = new DrawingTool(); pen.moveforward(); 47 Kun muuttua esitellään ensimmäisen kerran, se ei osoita mihinkään olioon vaan nullarvoon Kun olioon ei osoita enää yksikään muuttuja, Java kielen roskienkeruu tuhoaa sen DrawingTool pen; // pen osoittaa null arvoon pen = new DrawingTool(); // pen osoittaa luotuun olioon pen = null; // luotuun DrawingTool olioon ei osoita enää // yksikään muuttuja > se tuhotaan 48 Javan perusteet

9 Muuttujat, oliot ja roskienkeruu Muuttujat, oliot ja roskienkeruu mypen missingpen ( null ) ( null ) suorituskohta mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); suorituskohta mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen mypen : Pencil m_color = =? m_width = =? ( null ) borrowedpen ( null ) borrowedpen ( null ) Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) borrowedpen : Pencil borrowedpen ( null ) borrowedpen m_color = =? m_width = =? Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? suorituskohta suorituskohta suorituskohta suorituskohta Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) borrowedpen : Pencil borrowedpen : Pencil borrowedpen m_color = =? m_width = =? borrowedpen m_color = =? m_width = =? Javan perusteet

10 Muuttujat, oliot ja roskienkeruu suorituskohta mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) borrowedpen : Pencil m_color = =? m_width = =? : Pencil borrowedpen m_color = =? m_width = =? Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean algebra == yhtäsuuruus!= erisuuruus < pienempi <= pienempi tai yhtäsuuri > suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10; Jolloin: i < j == true i >= j == false i!= j == true Vertailulauseet Huomaa ero sijoitusoperaatiolla ja vertailuoperaatiolla: = Sijoitusoperaatio == Vertailuoperaatio Esimerkki j = 1; // j saa arvokseen yksi j == 1 // onko j:n arvo yksi? Vertailulauseet Suuremmuutta ja pienemmyyttä tutkivilla operaatioilla voi vertailla vain numeerisia lausekkeita Yhtäsuuruus ja erisuuruus ovat käytössä muidenkin arvojen vertailuissa Esimerkki double d=0.1; double e=0.2; String auto( Auto ); String bussi( Bussi ); d < e == true // Sallittu auto < bussi // Ei sallittu! // Sallittu, mutta ei suositeltu sisällön // vertailuun auto!= bussi Javan perusteet

11 if lauseke Ohjelmassa voi olla valintalauseita: if (ehto) { // tee jotain else { // tee jotain muuta if lauseke ehdon tulee aina olla jokin totuusarvo jos totuusarvo on tosi, suoritetaan iflauseketta seuraava lohko jos totuusarvo on epätosi, suoritetaan else lausekkeen jälkeinen lohko (jos sellainen on olemassa) else osassa voi olla uusi if lauseke (else if) if lauseke esimerkki 1 public void ispositive(int i) { System.out.println( Luku + i ); if (i>0) System.out.println( on positiivinen. ); else if (i<0) System.out.println( on negatiivinen. ); else System.out.println( on nolla. ); Lohkot Jos valintavaihtoehto koostuu useammasta lauseesta, lauseet on koottava yhteen lohkoksi Lohko on merkkien { ja välisten lauseiden jono Lohkon viimeisen aaltosulun jälkeen ei käytetä puolipistettä if lauseke esimerkki 2 public void ispositive(int i) { System.out.println( Luku + i ); if (i>0) { System.out.println( on positiivinen. ); dosomething(i); else if (i<0) System.out.println( on negatiivinen. ); else System.out.println( on nolla. ); if lauseke moniselitteisyys? if lauseeseen ei ole pakko liittyä else osaa, jonka vuoksi tulee huomata mihin mikäkin else osa liittyy Esimerkki if (a<b) if (c<d) e=f; else g=h; // Tarkoittaako tämä: if (a<b) if (a<b) if (c<d) if (c<d) e=f; e=f; else else g=h; g=h; Sääntö: else osa liittyy aina lähimpään edeltävään iflauseeseen Javan perusteet

12 Totuusarvojen yhdistely Totuusarvoilla voi laskea: (a == b) // a ja b yhtäsuuret (a!= b) // a erisuuri kuin b (a && b) // a ja b tosia (a b) (!a) // a tai b // a epätosi Edellä esiteltyjä voi yhdistellä, esimerkiksi: (a b) && (c d) // a tai b ja c tai d switch lauseke switch lausekkeella voi olla eri haaroja switch soveltuu paikkoihin, joissa on tarvetta käsitellä monia eri numeroarvoihin perustuvia haaroja switch lausekkeessa voi olla default haara, joka suoritetaan mikäli yksikään muu haara ei toteudu switch lausekkeessa on muistettava break:n käyttö (kts. seuraava esimerkki). break:lla poistutaan switch lauseesta switch lauseke esimerkki boolean perustietotyyppi public void printnumber(int i) { switch(i) { case 0: System.out.println( nolla ); break; case 1: System.out.println( yksi ); break; default: System.out.println( ei yksi eikä nolla ); break; 69 Totuusarvo voidaan sijoittaa booleantyyppiseen perustietotyyppiin boolean isbigger = (a>b); if (isbigger) System.out.println( a is bigger than b ); else System.out.println( a isn t bigger than b ); 70 Esiehtoinen toistorakenne Toisto Toistolausekkeet for, while(ehto){ ja do { while(ehto) Toistorakenteista poistuminen ja niiden sisällä siirtyminen while (ehto) { /* suoritettava koodi */ Esimerkki: int poweroftwo = 2; while (poweroftwo < 10) { System.out.println( Next power: + poweroftwo); poweroftwo *= 2; Javan perusteet

13 Esiehtoinen toistorakenne Toistorakennetta suoritetaan niin kauan kun annettu ehto on tosi (true) Mikäli ehto ei ole aluksikaan tosi, ei toistorakennetta suoriteta kertaakaan Jälkiehtoinen toistorakenne do{ /* suoritettava koodi */ while (ehto); Esimerkki: boolean mayexit = false; do{ System.out.println( Syötä luku (1 9) : ); int uservalue = Lue.kluku(); if (uservalue>0 && uservalue<10) mayexit = true; while (!mayexit); Jälkiehtoinen toistorakenne Toistorakenne suoritetaan vähintään yhden kerran Seuraavalle suorituskerralle siirrytään, mikäli annettu ehto on tosi for toistorakenne for (alustus;jatkamisehto;lisäyslauseke) { /* suoritettava koodi */ Käyttö järkevää kun toistojen lukumäärä on ennakkoon tiedossa Esimerkki for (int i=0;i<10;i++) { System.out.println( Luku + i); for toistorakenne (1) (2) (3) for (int i=0;i<10;i++) { System.out.println( Luku + i); Tuloste 1) suoritetaan yhden kerran 2) suoritetaan joka kierroksella, jos totuusarvo on false, toistorakenteen suoritus päättyy 3) suoritetaan joka kierroksen lopuksi ennen seuraavan kierroksen kohdan (2) tarkastusta Luku 0 Luku 1 Luku 2 Luku 3 Luku 4 Luku 5 Luku 6 Luku 7 Luku 8 Luku 9 break ja continue toistorakenteissa Kaikissa edellä esitellyissä toistorakenteissa voidaan käyttää break ja continue lausekkeita: break lauseke poistuu toistorakenteesta continue lauseke siirtyy suoraan seuraavalle suorituskerralle turhaa käyttöä kannattaa välttää Javan perusteet

14 break ja continue esimerkki for (int i=0;i<10;i++) { if (i==5) continue; else if (i==8) break; System.out.println( Kierros + i); Tuloste: Kierros 0 Kierros 1 Kierros 2 Kierros 3 (1) (2) Kierros 4 Kierros 6 Kierros 7 hyppy seuraavalle kierrokselle, mikäli jatkoehto 1 toteutuu, lisäyslauseke 2 suoritetaan kuten normaalisti poistutaan suoraan for lausekkeesta 79 ehtojen asettaminen Kaikissa toistorakenteissa käytetään jotakin ehtoa, joka kertoo milloin suoritus lopetetaan Ehdot kannattaa asettaa mahdollisimman rajaaviksi, esimerkiksi: public void printnumbers(int count) { for (int i=0;i<count;i++) { System.out.println( Luku + i); eii!=count, ikinä Ikuisten toistojen välttäminen em. ohjelmointityylillä on hyvä tapa koska silloin esim. luvulla 1 kutsuttaessa suoritus ei päättyisi 80 Java 2 API Java 2 API Dokumentaatio Paketit Käyttö Java 2 API (Application Programming Interface) tarjoaa runsaasti valmiita luokkia käytettäväksi ohjelmissa Math lukujen käsittely String merkkijono ja sen käsittely StringTokenizer merkkijonon pätkiminen... Luokkien käyttöohjeet löytyvät käytetyn Javaversion API dokumentaatiosta: Paketit Paketilla tarkoitetaan samantyyppisten luokkien muodostamaa kokonaisuutta Luokan (käännösyksikön) paketti määritellään tiedoston alussa: package paketin_nimi; Ellei tiedoston alussa ole package määrettä, class tiedosto asetetaan nimettömään pakkaukseen Luokan kuuluminen alipakettiin ilmaistaan: package paketin_nimi.alipaketti; Paketit Pakettiin kuuluminen tarkoittaa että luokkaa käytettäessä sen edessä on käytettävä pakkauksen nimeä: pakkaus.luokka x = new pakkaus.luokka(); Käytännössä on järkevämpi käyttää aina import lausekkeita // Sallii pakkaus1:n kaikkien luokkien käytön import pakkaus1.*; // Sallii pakkaus1:n luokan Auto käytön import pakkaus1.auto; import lausekkeet kirjoitetaan tiedoston alkuun mahdollisen package määrityksen jälkeen Tiedostosta käy selkeästi ilmi mitä pakkauksia se käyttää Javan perusteet

15 Java 2 API Kaikki Java 2 API:n luokat on sijoitettu paketteihin java.lang java.math java.io... Paketti, johon luokka kuuluu selviää APIdokumentaatiosta Kaikkiin tiedostoihin tuodaan automaattisesti Javan pakkaus java.lang. (import java.lang.*;) Metodit Metodin muoto Määreet Staattiset metodit ja attribuutit Arvotyyppi Parametrit Kuormittaminen Rekursio Metodit Alialgoritmit (aliohjelmat) toteutetaan metodeissa Metodeilla voi olla parametreja (lähtötiedot) ja se voi palauttaa jonkin arvon Metodien käyttö olioiden luonti (konstruktori) piilossa olevan tiedon kysely ja käyttö (aksessorit) algoritmit pääohjelmametodi public static void main(string[] args) 87 Metodit Muoto määreet arvotyyppi nimi(parametrit) { algoritmi Määreillä ohjataan metodin käyttömahdollisuuksia Arvotyyppi kertoo minkä tyyppisen arvon metodi palauttaa Nimi yksilöi metodin Parametrit ovat metodin muuttujia, jotka metodin kutsuja antaa Algoritmi toteuttaa metodin tehtävän Esimerkki: public static void printstring(final String str) { System.out.println(str); 88 Metodit Muoto Konstruktoreilla ei ole paluuarvoa public Student(String name) {... public Car() {... Konstruktori ei voi olla staattinen (static) Konstruktori voi olla normaalin publicnäkyvyysalueen lisäksi myös private Milloin järkevää käyttää? Metodit Määreet Määreitä ovat Näkyvyysalueet public sallii metodin käytön kaikkialta protected sallii metodin käytön luokalta perityissä luokissa private sallii metodin käytön ainoastaan luokan sisällä Muut abstract metodilla ei ole toteutusta (abstrakti) static metodin kutsumiseen ei tarvita oliota final metodia ei voi ylikirjoittaa perityissä luokissa syncronized metodia suoritetaan monisäikeisessä sovelluksessa yksi kutsu kerrallaan native metodilla ei toteutusta, kutsu esim. C/C++ Kurssilla tarvittavat määreet: public, private, static Javan perusteet

16 Metodit Määreet Esimerkkejä määreistä public static void main(string [] args) private int solvesubproblem() public int solveproblem() public void initializeobject() Metodit määreet static Yleensä luokan sisään kirjoitetut metodit käyttävät jotain olion attribuuttia On olemassa kuitenkin myös metodeja, jotka eivät tarvitse olion attribuutteja tai kutsu toisia olion attribuutteja käyttäviä metodeja (esim. Math luokan metodit) Kyseiset metodit eivät näin ollen tarvitse olemassa olevaa oliota suoritukseensa Tällaisia metodeja kutsutaan staattisiksi Metodit määreet static Metodi määritellään staattiseksi staticmääreellä: public static double sqrt(double num) static määreellä määriteltyä metodia voidaan kutsua luokan ulkopuolelta ilman olion luontia: double result = Math.sqrt(16); Luokan nimi, jossa metodi on määritelty 93 Staattiset attribuutit Attribuutteja voidaan määrittää myös staattisiksi. Staattinen attribuutti on käytettävissä ilman olion luontia. Staattista attribuuttia voi käyttää kuten normaaliakin luokan attribuuttia. Staattinen attribuutti on sama joka paikassa (vrt. ei staattiset attribuutit, jotka ovat yksilölliset jokaisella luodulla oliolla) 94 Staattiset metodit ja attribuutit Staattiset metodit/attribuutit ovat käyttöalueeltaan rajatumpia kuin eistaattiset Hyvän ohjelmointitavan mukaista on määrittää metodi/attribuutti staattiseksi aina kun se on mahdollista Käytännössä varsinkin staattisten attribuuttien käyttö on harvinaista Staattiset metodit ja attribuutit Esimerkkejä: main metodin on aina oltava staattinen Vakiot määritetään yleensä staattisina: private final static int NUM_COLS = 5; Color luokan määritellyt värit ovat staattisia public final static Color black = new Color(0,0,0); Math luokan kaikki metodit ja attribuutit ovat staattisia Javan perusteet

17 Staattiset metodit ja attribuutit Luokan ulkopuolelta: public class TestApp { TestApp.setValues(); public static final int A = 1; public final int B = 2; int i = TestApp.A; private static int C = 3; i = TestApp.B; private int D = 4; i = (new TestApp()).B; (new TestApp()).setValues(); public TestApp() { //OK //OK //Ei sallittu //OK //OK (new TestApp()).setMemberValues(); //OK public static void setvalues() { C = A; // Sallittu, koska A ja C staattisia A = C; // Ei sallittu, koska A on vakio (final) D = C; // Ei sallittu, koska D ei staattinen setmembervalues(); // Ei sallittu, koska ollaan staat. metodissa public void setmembervalues() { C = A; // Sallittu D = C; // Sallittu, koska ei olla staattisessa metodissa setvalues(); // Sallittu 97 Metodit Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin return; lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua Metodi voi palauttaa alkeistyypin tai olion Tällöin return X; lauseke on pakollinen. Metodissa ei saa olla suorituspolkuja, joilla returnlausekkeeseen ei päädytä. X on palautettava arvo, joka on arvotyypin tyyppinen. 98 Metodit Arvotyyppi Esimerkki public static String viikonpaiva(int luku) { switch(luku) { case 1: return Ma ; case 2: return Ti ;... return ; Metodit Parametrit Parametrit annetaan sulkeissa Alkeistyypit ovat arvoparametreja Arvon muuttaminen metodin sisällä ei muuta alkuperäistä arvoa Oliot ovat viiteparametreja Saman olion käyttö metodin sisällä muuttaa myös alkuperäistä arvoa Metodit Parametrit public static void test(int i, String s, Student r) { i=0; s= Muutettu ; r.setname( Pekka );... // Esimerkkikutsu int j=1; String t = A ; Student u = new Student( B ); test(j, t, u); System.out.println( Tulos: + j + + t + + u.getname()); // Tuloste: Tulos: 1 A Pekka! Metodit Kuormittaminen Samannimisiä metodeja voidaan toteuttaa eri parametreilla Paluuarvojen tulee samannimisillä metodeilla olla aina samat Samannimisten metodien toteuttamista eri parametreilla kutsutaan metodin kuormittamiseksi Javan perusteet

18 Metodit Kuormittaminen Esimerkki public void tulosta(final int luku) { System.out.println( luku ); public void tulosta(final String str) { System.out.println( str );... // Kutsuesimerkki tulosta(12); // Käyttää ylemää metodia tulosta( Teksti ); // Käyttää alempaa metodia Metodit Rekursio Jos ohjelmassa on metodi, joka kutsuu sisällään itseään uudestaan, käytetään siitä nimitystä rekursiivinen metodi Rekursiiviset metodit kutsuvat itseään eri parametreilla Parametrien perusteella metodi kutsuu itseään tai mikäli ollaan päästy perustapaukseen ei kutsua enää suoriteta Metodit Rekursio Rekursiossa jokaisella kutsulla lähestytään aina jotakin perustapausta Rekursio on perinteisissä proseduraalisissa ja olio ohjelmointikielissä hidasta Teoriassa kaikki rekursiiviset metodit voidaan purkaa auki iteratiivisiksi versioiksi Rekursiota rajoittaa suurissa tapauksissa käytössä oleva muistin määrä Metodit Rekursio Fibonaccin luvut Fibonaccin lukuja ovat: 0, 1, 1, 2, 3, 5, 8, 13,... Ensimmäinen luku on 0, toinen luku 1 ja siitä eteenpäin seuraava luku saadaan aina kahden edellisen summana Fibonnaccin lukuja voidaan laskea rekursiivista metodia hyväksikäyttäen Huomattavasti tehokkaampiakin menetelmiä on olemassa Metodit Rekursio Fibonaccin luvut // Palauttaa n:nnen Fibonaccin luvun public int fib(int n) { if (n==1) return 0; else if (n==2) return 1; else return fib(n 1) + fib(n 2); Esim: fib(4) 2 fib(4) 1 fib(3) 1 1 fib(2) fib(2) 0 fib(1) 107 Näkyvyysalueet ja muuttujien elinaika private, public paikalliset muuttujat 108 Javan perusteet

19 Näkyvyysalueen valinta Ohjelmissa kannattaa aina valita mahdollisimman pieni näkyvyysalue jokaiselle muuttujalle ja metodille Kaikki luokan attribuutit kannattaa sijoittaa privatenäkyvyysalueeseen Luokan yleiseen käyttöön tarkoitetut metodit sijoitetaan public näkyvyysalueeseen, kaikki muut private näkyvyysalueeseen Lisäksi on olemassa protected näkyvyysalue, joka on ikään kuin public:n ja private:n välimaastossa oleva. Käyttö on tarpeellista lähinnä kun hyödynnetään perintää. Paikallinen muuttuja vai luokan attribuutti Muuttujat sijoitetaan aina pienimpään mahdolliseen käyttöalueeseensa. Mikäli muuttujan käyttö on tarpeellista monissa luokan metodeissa tai se kuvaa olion tilaa, tehdään siitä attribuutti. Mikäli käyttö on tarpeellista vain yksittäisessä metodissa, käytetään paikallista muuttujaa Paikallisen muuttujan määrittely esimerkki Paikallinenkin muuttuja kannattaa sijoittaa aina mahdollisimman rajattuun alueeseen. Esimerkki: public void printmembers() { Vector members = getallmembers(); for (int i=0;i<members.size();i++) { Member member = members.getat(i); String name = member.getname(); System.out.println( Jäsen: + name); Muuttujien esittelyt voitaisiin sijoittaa katkoviivalla osoitettuun paikkaan, mutta koska niitä ei käytetä kuin toistorakenteen sisällä, on ne sijoitettu toiston sisältämän lohkon sisään. 111 Muuttujien elinaika Jokaisella muuttujalla on näkyvyysalueen lisäksi ns. elinaika, jolloin se on olemassa Luokkamuuttujat on olemassa aina kun olion konstruktoria on kutsuttu, olemassaolo loppuu kun olioon ei ole enää yhtään viitettä Paikalliset muuttujat ovat olemassa lohkonsa sisällä. Kun lohko päättyy, paikallisen muuttujan elinaika päättyy. 112 Taulukot Taulukot Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille Usein on tarvetta käsitellä ryhmää samantyyppisiä olioita tai perustietotyyppejä On raskasta ja virhealtista kirjoittaa esimerkiksi kymmeniä samantyyppisiä muuttujia peräkkäin ja suorittaa niille kaikille samaa operaatiota Apua tuovat taulukot, joissa yhteen muuttujaan pystytään sijoittamaan useita olioita Javan perusteet

20 Yksiulotteinen taulukko Yksiulotteinen merkkijonotaulukko esitellään ja luodaan: String[] names = new String[4]; Rivi varaa tilan neljälle String tyyppiselle oliolle. Se jättää kuitenkin kaikki oliot nullarvoiksi. Mikäli taulukko on luotu jostakin perustietotyypistä, ovat taulukon indeksit suoraan käytössä (ei tarvitse new:llä luoda joka paikkaan oliota) Yksiulotteinen oliotaulukko Oliotaulukon sisältö olisi luonnin jälkeen: 0 null 1 null 2 null 3 null Taulukon yksittäiseen olioon voidaan viitata []:n avulla: names[0] = new String( Pekka ); Edellinen rivi luo taulukon ensimmäiseen paikkaan uuden merkkijono olion Taulukon indeksointi alkaa aina nollasta Yksiulotteinen taulukko Yksiulotteisen taulukon kokoa voidaan muuttaa vain luomalla uusi taulukko. Taulukon kokoon saa length:llä: int size = names.length; Taulukon sallittuja sijoitus ja lukupaikkoja ovat [0..length 1]. Mikäli yritetään käyttää muita paikkoja, heittää Java ajonaikaisen virheen. Yksiulotteinen oliotaulukko Käytettäessä String luokkaa, voidaan kirjoittaa hieman lyhyemmin: names[0] = Pekka ; koska Java luo automaattisesti :lla erotetusta merkkijonosta uuden Stringolion Taulukon alustaminen Taulukkoon voidaan sijoittaa arvoja luonnin yhteydessä: final int[] daysinmonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; Yksiulotteinen taulukko esimerkki String[] students = new String[3]; students[0] = new String( Matti ); students[1] = new String( Maija ); students[2] = new String( Antti ); for (int i=0;i<students.length;i++) { System.out.println(students[i]); Javan perusteet

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

Kurssin suoritus. Javan perusteet 2004. Kurssimateriaali. Kurssin aikataulu. Kurssin sisältö. Harjoitukset. Javan perusteet 2002 1

Kurssin suoritus. Javan perusteet 2004. Kurssimateriaali. Kurssin aikataulu. Kurssin sisältö. Harjoitukset. Javan perusteet 2002 1 Kurssin suoritus Javan perusteet 2004 1,5 ov Kuopion yliopisto, tietojenkäsittelytieteen laitos Ohjelmistotekniikan maisterikoulutus, Varkaus Tomi Keinonen tkeinone@cs.uku.fi Luennot 18 h Harjoitukset

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Harjoitustyö: virtuaalikone

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

Lisätiedot

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

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi

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

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

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

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko 5 Taulukot Tämän osan sisältö Taulukon esittely ja luonti Taulukon alustaminen Taulukon koko Taulukon käsittely indeksointi peräkkäiskäsittely hajakäsittely harva taulukko Taulukon järjestäminen Kaksiulotteinen

Lisätiedot

Ohjelmointityö 3. Mikko Laamanen 185667

Ohjelmointityö 3. Mikko Laamanen 185667 Ohjelmointityö 3 Mikko Laamanen 185667 Sisällysluettelo Tehtävän määrittely ja ratkaisuperiaate... 1 Tehtävän määrittely... 1 Ratkaisuperiaate... 1 Ohjelman käyttöohje... 1 Syötteet ja tulosteet... 1 Ohjelman

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

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

Lisätiedot

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

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

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

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli 812341A Olio-ohjelmointi, 2016 Olio-ohjelmoinnin peruskäsitteet ja Java-kieli Sisältö 1. Java-kieli 2. Luokka 3. Luokkakaaviot 4. Lisää Javaa Javalla 2 Java-kieli n Sun Microsystems tutkimusprojekti 1991

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

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

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen (package). Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa (import). Pakkaukset ja näkyvyys. 13.2 Pakkauksen kokoaminen

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

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

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

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki

Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus. Lohkolause (block) Peräkkäinen laskenta. Lohkon käyttö. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 3: Laskennan ohjaus Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Peräkkäinen laskenta Ehdollinen laskenta Laskennan toisto Laskennan hierarkisuus 10/19/99

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

Tietueet. Tietueiden määrittely

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

Lisätiedot

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

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

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

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if 3 Lauseet Lue kirjasta s. 54-84 Tämän osan sisältö Ehdollinen lause if Looginen lauseke vertailut AND-operaattori &&, & OR-operaattori, NOT-operaattori! Valintalause switch Toistolauseet while for do while

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut. T-76.115 Tietojenkäsittelyopin ohjelmatyö Sisältö Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.fi Kirjoittajat

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

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

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla

Lisätiedot

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

JAVA-OHJELMOINNIN PERUSTEET. Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU...

JAVA-OHJELMOINNIN PERUSTEET. Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU... 1 JAVA-OHJELMOINNIN PERUSTEET Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU... 27 2 1. JAVA OHJELMOINTI Kurssin tavoite ensimmäinen ohjelmointikurssi

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

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

Lisätiedot

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

Lisätiedot

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä Anne Benson/Tanja Bergius Opintojakson ict1td002 käyttöön Sivu 1 / 13 Eclipse 3.2 pikku opas versio 1.0 Ohjeen sisältö: Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Lisätiedot

Ohjausrakenteet. Valinta:

Ohjausrakenteet. Valinta: Ohjausrakenteet Luento antaa yleiskuvan siitä kuinka ohjelmassa suorittaan vaihtoehtoisia tehtäviä valintarakenteiden avulla ja kuinka samanlaisia ohjelma-askeleita toistetaan toistorakenteiden avulla

Lisätiedot

1. ohjelman selitystä Muutamien ohjelman yksityiskohtien läpikäyntiä

1. ohjelman selitystä Muutamien ohjelman yksityiskohtien läpikäyntiä C# - kieli 1. ohjelman selitystä Muutamien ohjelman yksityiskohtien läpikäyntiä class MainClass { public static void Main(string[] args) { Console.WriteLine("Hei maailma!"); jokainen C#-ohjelma on aina

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

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

Lisätiedot

Ohjelmointityö 65 Tekstinmuotoilu ohjelma. Dokumentaatio. Aki Heikkinen (155394)

Ohjelmointityö 65 Tekstinmuotoilu ohjelma. Dokumentaatio. Aki Heikkinen (155394) Ohjelmointityö 65 Tekstinmuotoilu ohjelma Dokumentaatio Aki Heikkinen (155394) 15.6.2007 Sisällysluettelo 1. Tehtävän määrittely ja ratkaisuperiaate... 1 1.1. Tehtävän määrittely... 1 1.2. Ratkaisuperiaate...

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Eclipse 3.1 Pikaopas versio 1.0

Eclipse 3.1 Pikaopas versio 1.0 Anne Benson/Tanja Bergius Opintojaksojen atk84d ja ict02d käyttöön 1/17 Eclipse 3.1 Pikaopas versio 1.0 Pikaohjeen sisältö 1. Esittely 2. Asennus ja poistaminen 3. Sovelluskehitys 4. Sovelluksen toteutus

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

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

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Toistorakenne (while, do-while, for) 1 While- lause while-lauseen rakenne on seuraava: while (ehtolauseke) lause Kun ehtolausekkeen arvo on totta, lause suoritetaan. Lause suoritetaan

Lisätiedot

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram) 4 Luokkamalli Rakenteet mittojen mukaan. Mitat rakenteen mukaan. Tämän osan sisältö Luokkakaavio luokkakaavion elementti attribuutit operaatiot määreet Olioiden väliset suhteet kytkös kooste yleistys rajapinta

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty. 8 Attribuutit Useimmat ohjelmointikielet on suunniteltu tavoitteena määrätty joukko ominaisuuksia. Kun esimerkiksi ryhdyt tekemään kääntäjää, mietit millainen uudella kielellä tehty sovellus on rakenteeltaan,

Lisätiedot

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 11. Luokka Opetellaan seuraavaksi, miten omia luokkia kirjoitetaan. Aikaisemmin olikin jo esillä, että luokka on tietorakenne, joka sisältää sekä tiedot (attribuutit) että niitä käsittelevät aliohjelmat

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet 2 Java-kielen perusteet Tämän osan sisältö Syntaksi Ohjelma, luokka, metodi Tunnukset, muuttujat ja tyypit esittely, alustaminen, näkyvyyssäännöt Syöttö ja tulostus Metodit määrittely, kutsu, parametrit,

Lisätiedot

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

Luokkakirjastot. esiintymämetodien käytöstä: Luokkakirjastot Esimerkkejä Jokainen olio on jotain tyyppiä ja ko. tyyppistä oliota voidaan käsitellä ko. luokan metodeilla Merkkijonojen käsittely: String, StringBuffer, StringBuilder, StringTokenizer,..

Lisätiedot