Ohjelmistojen mallintaminen, syksy 2010, laskuharjoitus 5
|
|
- Leena Keskinen
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 Ohjelmistojen mallintaminen, syksy 2010, laskuharjoitus 5 1. Seuraavassa on lueteltu käsitteitä, jotka ovat jossain suhteessa keskenään. Mitä suhdetyyppiä (normaali yhteys, kompositio, perintä, riippuvuus,...) kussakin tapauksessa kannattaa käyttää (siis jokaiseen palloon oma suhde). Piirrä esim. pieni luokkakaavio jokaisesta tilanteesta. Ruokaileva filosofi käyttää haarukkaa Unixissa tiedosto on joko tavallinen tiedosto tai hakemisto Tiedosto muodostuu tavuista Monikulmion kulmat ovat järjestetty jono pisteitä Opiskelija hallitsee Java-kielen Ihmisellä on syntymävuosi Hiiri, näppäimistö ja Näyttö ovat I/O-laitteita (eli tietokoneen syötelaite) Polku yhdistää kaksi kylää Monopolissa on 2-8 Pelaajaa. Pelaaja voi olla yksittäinen henkilö tai joukkue. Joukkue koostuu yksittäisistä henkilöistö Kaikki tiet vievät roomaan (Vihavaisen laatima tehtävä) 2. Tee luokkakaavio ohjelmoinnin jatkokurssin viikon ylimääräisestä tehtävästä "Maidon elämä". Metodien nimien merkitseminen ei ole oleellista. Tehtävämäärittely löytyy osoitteesta: Pystyt tekemään luokkakaavion tehtäväkuvauksen perusteella vaikka et olisikaan ohjelmoinut Maidon elämää. Maidon elämän Java-koodi tulee viimeistään pe osoitteeseen 3. Kuvaa sekvenssikaaviona mitä Maidon elämässä tapahtuu kun seuraava koodi suoritetaan: Maatila maatila = new Maatila("Esko", new Navetta(new Maitosailio())); // voit ajatella edellisen sekvenssikaaviossa seuraavanlaiseksi: // Maitosailio maitosailio = new Maitosailio(); // Navetta navetta = new Navetta(maitosailio); // Maatila maatila = new Maatila( navetta ); Lypsyrobotti robo = new Lypsyrobotti(); maatila.asennanavettaanlypsyrobootti(robo); Lehma lehma1 = new Lehma(); Lehma lehma2 = new Lehma(); Lehma lehma3 = new Lehma(); maatila.lisaalehma(lehma1); maatila.lisaalehma(lehma2); maatila.eleletunti(); maatila.hoidalehmat(); System.out.println(maatila); 1
2 4. Laajennetaan edellisellä viikolla aloitettua monopolin luokkamallia. Ota pohjaksi viime viikon ratkaisusi tai esimerkkivastaus. Voit olettaa, että kyseessä on tietokonepelinä toteutettava monopoli. Seuraavassa asioita, jotka pitäisi tulla mallissa esille. Ruutuja on useampaa eri tyyppiä: aloitusruutu vankila sattuma ja yhteismaa asemat ja laitokset normaalit kadut (joihin liittyy nimi) Monopolipelin täytyy tuntea sekä aloitusruudun että vankilan sijainti. Jokaiseen ruutuun liittyy jokin toiminto. Sattuma- ja yhteismaaruutuihin liittyy kortteja, joihin kuhunkin liittyy joku toiminto. Toimintoja on useanlaisia. Ei ole vielä tarvetta tarkentaa toiminnon laatua. Normaaleille kaduille voi rakentaa korkeintaan 4 taloa tai yhden hotellin. Kadun voi omistaa joku pelaajista. Pelaajilla on rahaa. Tässä vaiheessa ei vielä liitetä peliin metodeja. Niiden aika tulee seuraavalla viikolla. 5. Ohjelmoinnin jatkokurssilla on tutustuttu sangen hyödylliseen luokkaan ArrayList. ArrayListluokan olioden voi ajatella olevan automaattisesti itseään kasvattavia vaihtelevanmittaisia taulukoita, joihin voidaan säilöä muita olioita. Lyhyesti ilmaistuna ArrayList-oliot ovat "oliosäiliöitä". Etsi Java-API:sta ( ArrayList-luokka. Tutkitaan ArrayListin ominaisuuksia. Tällä kertaa ei kiinnitetä huomiota ArrayListin metodeihin vaan sen sijaintiin Java-API:n luokkahierarkiassa. Eli mikä on ArrayList:in yläluokka, mitä sisarluokkia (eli yliluokan muita aliluokkia) sillä on, mikä on ArrayListin yliluokan yliluokka, mitä serkkuluokkia ArrayListilla on, jne... Erityisesti on syytä selvittää mitä "sopimuksia" eli rajapintoja ArrayList mainitsee toteuttavansa? Mitä noissa rajapinnoissa luvataan? Piirrä tilanteesta luokkakaavio. Jos kaavio kasvaa liian isoksi, älä tunge kaikkea kuvaan. Metodinimiä ei kannattane luokkakaavioon ainakaan montaa merkitä. ArrayList ja muut oliosäiliöt liittyvät läheisesti kurssin Tietorakenteet aihepiiriin. Ammattimaisessa Java-ohjelmoinnissa tämä erilaisten "oliosäiliöiden" luokkaperhe on erittäin hyödyllinen. Kuten huomataan, on erilaisia säiliöluokkia todella suuri määrä. Joskus onkin haastavaa löytää parhaiten omiin tarpeisiin soveltuva luokka. Ohjelmoinnin jatkokurssin viikon 2 tehtävässä 4.2 tutstuttiin hieman ArrayListin tapaan toimivaan HashSet-luokkaan. Miten HashSet-mukaan sijoittuu Javan luokkahierarkiaan ArrayList:in suhteen? Mikä selittää sen, että HashSet:iä ja ArrayList:iä voi käyttää monin paikoin toistensa tilalla? Mitä eroavaisuuksia löytyy? 6. Luennoilla ja kalvoissa on mainittu 3 oliosuunnittelun periaatetta: Single responsibility principle Luokilla tulisi olla vain yksi selkeä vastuu. Vastuulla oikeastaan tarkoitetaan potentiaalista syytä muutokselle. Ei ole esimerkiksi viisasta laittaa käyttäjän syötteen lukemista minkään sovellusolion tehtäväksi. Syötteen lukeminen on oma selkeä vastuunsa ja sitä varten tulisi olla oma luokka. Sovellusoliot sitten tarpeen vaatiessa kutsuvat syötteenlukijaolioita. 2
3 Program to interfaces, not to concrete implementations Älä ohjelmoi siten, että olet riippuvainen konkreettisista luokista, on järkevämpi olla riippuvainen ainoastaan rajapinnasta. Esim. lypsyrobootista (ks. tehtävä 2) tulee monikäyttöisempi kun se määrittelee lypsettävän olevan joku rajapinnan Lypsava toteuttava olio: public void lypsa(lypsava lypsettava) { //... double maitoa = lypsettava.lypsa(); sailio.lisaasailioon(maitoa); Tämä periaate kannattaa myös pitää mielessä kun käyttää edellisestä tehtävästä tuttuja säiliöluokkia. Itseasiassa tärkeää säiliöluokkien suhteen ovat juuri niiden toteuttamat rajapinnat, käyttäjän kannalta säiliöluokan sijainnilla perintähierarkiassa ei ole mitään merkitystä Favor composition over inheritance Rakenna toiminnallisuutta monimutkaisen perintähierarkian sijaan liittämällä yhteen joukko selkeän vastuun omaavia "pieniä" olioita. Hyvänä esimerkkinä tästä ohjelmoinnin jatkokurssin viikon 3 MuistavaTuotevarasto jota käsiteltiin luennolla Tämän periaatteen soveltaminen on siis yksi keino, jonka avulla saadaan oliot noudattamaan single responsibility -periaatetta. Muitakin periaatteita on olemassa, joihinkin niistä palataan kurssin aikana Tehtävät: (a) Toteuttaako Maidon elämä kaikkia em. periaatteita? Jos ei niin mikä rikkoutuu? (b) Etsi ohjelmoinnin perusteiden ja jatkokurssin sekä tämän kurssin materiaaleista (luentomateriaalista ja laskareista) esimerkkejä (ainakin 3 esimerkkiä) jotka rikkovat jonkun ym. periaatteista. Näytä miten korjaisit tilanteen. (c) Minkä takia em. periaatteet ovat tärkeitä? Saako niitä rikkoa? Missä tilanteissa? 3
4 Lisäharjoituksia 4. viikolle 1 / :44 Copyright Arto Vihavainen. Materiaalia saa vapaasti käyttää itseopiskeluun. Muu käyttö vaatii luvan. Lisäharjoituksia 4. viikolle (Muutettu viimeksi , sivu perustettu ) 1 Maidon elämää, vaihe 1 Tämän tehtäväsarjan laatija on Arto Vihavainen ( ). Suurkiitokset kaimalle! Ja vastuu kaimalle..., niin ohjelmista kuin oikeinkirjoituksesta... ;-) [editointi AW] Maatiloilla on lypsäviä eläimiä, jotka tuottavat maitoa. Maatilat eivät itse käsittele maitoa, vaan se kuljetetaan Maitoautoilla meijereille. Meijerit ovat yleisiä maitotuotteita tuottavia rakennuksia. Jokainen meijeri erikoistuu yhteen tuotetyyppiin, esimerkiksi Juustomeijeri tuottaa Juustoa, Voimeijeri tuottaa voita ja Maitomeijeri tuottaa maitoa. Rakennetaan maidon elämää kuvaava simulaattori. 1.1 Maitosäiliö Jotta maito pysyisi tuoreena, täytyy se säilöä sille tarkoitettuun säiliöön. Säiliöitä valmistetaan sekä oletustilavuudella 2000 litraa, että asiakkaalle räätälöidyllä tilavuudella. Toteuta luokka Maitosailio jolla on seuraavat konstruktorit ja aksessorit. public Maitosailio() public Maitosailio(double tilavuus) public double gettilavuus() public double getsaldo() public double paljonkotilaajaljella() public void lisaasailioon(double maara) lisää säiliöön vain niin paljon maitoa kuin sinne mahtuu, ylimääräiset jäävät lisäämättä -- maitosäiliön ei siis tarvitse huolehtia tilanteesta jossa maitoa valuu yli public double otasailiosta(double maara) ottaa säiliöstä pyydetyn määrän, tai niin paljon kuin siellä on jäljellä Toteuta Maitosailio-luokalle myös tostring()-metodi, jolla kuvaat sen tilaa. Ilmaistessasi säiliön tilaa tostring()-metodissa, pyöristä litramäärät ylöspäin käyttäen Math-luokan tarjoamaa ceil()-metodia. Testaa maitosailiötä seuraavalla ohjelmapätkällä Maitosailio sailio = new Maitosailio(); sailio.otasailiosta(100); sailio.lisaasailioon(25); sailio.otasailiosta(5); System.out.println(sailio); sailio = new Maitosailio(50); sailio.lisaasailioon(100); System.out.println(sailio); Ohjelman tulostuksen tulee olla seuraavankaltainen 20.0/ /50.0 Huomaa että kutsuttaessa System-luokan out-olioon liittyvää println()-metodia, joka saa parametrikseen Object-tyyppisen muuttujan, tulostus käyttää Maitosailioluokassa korvattua tostring()-metodia! Tässä on kyse polymorfismista, eli ajonaikaisesta käytettävien metodien päättelystä. 1.2 Lehmä Saadaksemme maitoa tarvitsemme myös lehmiä. Lehmällä on nimi ja utareet, eli se kapseloi maitosäiliön. Lehman utareiden tilavuus on satunnainen luku väliltä 15 ja luokkaa Random voi käyttäää satunnaislukujen arpomiseen, esimerkiksi int luku = 15 + new Random().nextInt(26);. Lehma toteuttaa myös seuraavat rajapinnat Lypsava, joka kuvaa lypsämiskäyttäytymistä, ja Eleleva, joka kuvaa elelemiskäyttäytymistä. public interface Lypsava { public double lypsa(); public interface Eleleva { public void eleletunti(); Lehmää lypsettäessä sen koko maitovarasto tyhjennetään jatkokäsittelyä varten. Lehmän elellessä sen maitovarasto täyttyy hiljalleen. Suomessa maidontuotannossa käytetyt lehmät tuottavat keskimäärin noin litraa maitoa päivässä. Simuloidaan tätä tuotantoa tuottamalla noin litraa tunnissa. Jos lehmälle ei anneta nimeä, valitse sille nimi satunnaisesti seuraavasta listasta. private static String[] NIMIA = new String[]{ "Anu", "Arpa", "Essi", "Heluna", "Hely", "Hento", "Hilke", "Hilsu", "Hymy", "Ilme", "Ilo", "Jaana", "Jami", "Jatta", "Laku", "Liekki", "Mainikki", "Matti", "Mella", "Mimmi", "Naatti", "Nina", "Nyytti", "Papu", "Pullukka", "Pulu", "Rima", "Soma", "Sylkki", "Valpu", "Virpi"; Toteuta luokka Lehma ja testaa sen toimintaa seuraavan ohjelmapätkän avulla. Toteuta luokalle myos metodi tostring(), joka palauttaa sitä kuvaavan merkkijonon. Lehma lehma = new Lehma(); Eleleva elelevalehma = lehma; elelevalehma.eleletunti(); elelevalehma.eleletunti();
5 Lisäharjoituksia 4. viikolle 2 / :44 elelevalehma.eleletunti(); elelevalehma.eleletunti(); Lypsava lypsavalehma = lehma; lypsavalehma.lypsa(); System.out.println(""); lehma = new Lehma("Ammu"); lehma.lypsa(); Ohjelman tulostus on erimerkiksi seuraavanlainen. Liekki 0.0/23.0 Liekki 16.0/23.0 Liekki 0.0/23.0 Ammu 0.0/53.0 Ammu 9.0/53.0 Ammu 0.0/ Lypsyrobotti Nykyaikaisilla maatiloilla lypsyrobotit hoitavat lypsämisen. Jotta lypsyrobotti voi lypsää lypsävää otusta, tulee lypsyrobotin olla kiinnitetty maitosäiliöön. Toteuta luokka Lypsyrobotti ja testaa sitä seuraavan ohjelmapätkän avulla. Varmista että lypsyrobotti voi lypsää kaikkia Lypsava-rajapinnan toteuttavia olioita! Lypsyrobotti lypsyrobotti = new Lypsyrobotti(); Lehma lehma = new Lehma(); lypsyrobotti.lypsa(lehma); System.out.println(""); Maitosailio sailio = new Maitosailio(); lypsyrobotti.setmaitosailio(sailio); System.out.println("Säiliö: " + sailio); for(int i = 0; i < 2; i++) { System.out.println("Elellään.."); for(int j = 0; j < 5; j++) { System.out.println("Lypsetään..."); lypsyrobotti.lypsa(lehma); System.out.println("Säiliö: " + sailio); System.out.println(""); Ohjelman tulostus on esimerkiksi seuraavanlainen. Ei kiinnitetty maitosäiliöön, ei voida lypsää. Säiliö: 0.0/ Mella 0.0/23.0 Elellään.. Mella 17.0/23.0 Lypsetään... Säiliö: 17.0/ Mella 0.0/23.0 Elellään.. Mella 13.0/23.0 Lypsetään... Säiliö: 29.0/ Navetta Lehmät hoidetaan (eli tässä tapauksessa lypsetään) navetassa. Alkukantaisissa navetoissa on maitosäiliö ja tilaa yhdelle lypsyrobotille. Huomaa että lypsyrobottia asennettaessa se kytketään juuri kyseisen navetan maitosäiliöön. Jos navetassa ei ole lypsyrobottia, ei siellä voida myöskään hoitaa lehmiä. Toteuta luokka Navetta jolla on seuraavat konstruktorit ja aksessorit. public Navetta(Maitosailio maitosailio) public void asennalypsyrobotti(lypsyrobotti lypsyrobotti) public void hoida(lehma lehma) hoida(collection<lehma> lehmat) Lisää navettaan myös aksessori maitosailiölle. Metodi hoida lypsää parametrina annetun lehmän tai lehmäkokoelman Lypsyrobotin avulla. Toteuta navetalle myös tostring()-metodi, joka palautaa sen sisältämän maitosäiliön tilan. Collection on Javan oma rajapinta joka kuvaa kokoelmien käyttäytymistä. Esimerkiksi luokat ArrayList ja LinkedList toteuttavat rajapinnan Collection. Jokaista Collection-rajapinnan toteuttavaa ilmentymää voi myös iteroida for-each-tyyppisesti. Testaa luokkaa Navetta seuraavan ohjelmapätkän avulla. Älä hermoile luokasta LinkedList, se toimii ulkoapäin katsottuna kuin ArrayList, mutta sen kapseloima toteutus on hieman erilainen. Tästä lisää tietorakenteet kurssilla! Navetta navetta = new Navetta(new Maitosailio()); System.out.println("Navetta: " + navetta);
6 Lisäharjoituksia 4. viikolle 3 / :44 Lypsyrobotti robo = new Lypsyrobotti(); navetta.asennalypsyrobotti(robo); Lehma ammu = new Lehma(); ammu.eleletunti(); ammu.eleletunti(); navetta.hoida(ammu); System.out.println("Navetta: " + navetta); LinkedList<Lehma> lehmalista = new LinkedList(); lehmalista.add(ammu); lehmalista.add(new Lehma()); for(lehma lehma: lehmalista) { navetta.hoida(lehmalista); System.out.println("Navetta: " + navetta); Tulostuksen tulee olla esimerkiksi seuraavanlainen: Navetta: 0.0/ Navetta: 5.0/ Navetta: 17.0/ Maatila Maatilalla on omistaja ja siihen kuuluu navetta sekä joukko lehmiä. Maatila toteuttaa myös aiemmin nähdyn rajapinnan Eleleva, jonka metodia eleletunti()-kutsumalla kaikki maatilaan liittyvät lehmät elelevät tunnin. Toteuta luokka maatila siten, että se toimii seuraavien esimerkkiohjelmien mukaisesti. Odotettu tulostus: Maatila maatila = new Maatila("Esko", new Navetta(new Maitosailio())); System.out.println(maatila); Ei lehmiä. Odotettu tulostus: Maatila maatila = new Maatila("Esko", new Navetta(new Maitosailio())); System.out.println(maatila); Naatti 0.0/19.0 Hilke 0.0/30.0 Sylkki 0.0/29.0 Odotettu tulostus: Maatila maatila = new Maatila("Esko", new Navetta(new Maitosailio())); maatila.eleletunti(); maatila.eleletunti(); Heluna 6.0/17.0 Rima 8.0/42.0 Ilo 8.0/25.0 Odotettu tulostus: Maatila maatila = new Maatila("Esko", new Navetta(new Maitosailio())); Lypsyrobotti robo = new Lypsyrobotti(); maatila.asennanavettaanlypsyrobotti(robo); maatila.eleletunti(); maatila.eleletunti(); maatila.hoidalehmat(); System.out.println(maatila); Navetan maitosäiliö: 18.0/ *** *** ***
7 Lisäharjoituksia 4. viikolle 4 / :44 Hilke 0.0/30.0 Sylkki 0.0/45.0 Hento 0.0/ Maatilasimulaattori Luodaan ohjelma jolla voidaan simuloida maatilan toimintaa. Simulaattori kysyy ensiksi maatilan omistajan nimeä, jonka jälkeen kysytään maatilalla olevien nautojen määrä. Kun nämä ovat tiedossa luodaan maatila ja siihen liittyvät lehmät (muista asettaa maatilalle myös navetta, ja navetalle lypsyrobotti!). Kun maatila on luotu, käyttäjälle annetaan 3 vaihtoehtoa: "Elele tunti", "Hoida lehmät" ja "Lopeta" -- jokainen toiminto laukaistaan numerolla. Pyydetty numero kannattaa lukea Scannerin ja Integer-luokan yhteistyöllä seuraavasti: int luku = Integer.parseInt(scanner.nextLine()); Toteuta maatilasimulaattori, seuraavassa esimerkkitulostus: Anna maatilan omistajan nimi: Esko Montako nautaa? 2 Mella 0.0/54.0 Nina 0.0/21.0 Komennot: 1 - Elele tunti 2 - Hoida lehmat muut - Lopeta? 1 Mella 4.0/54.0 Nina 5.0/21.0 Komennot: 1 - Elele tunti 2 - Hoida lehmat muut - Lopeta? 1 Mella 7.0/54.0 Nina 8.0/21.0 Komennot: 1 - Elele tunti 2 - Hoida lehmat muut - Lopeta? 2 Navetan maitosäiliö: 15.0/ Mella 0.0/54.0 Nina 0.0/21.0 Komennot: 1 - Elele tunti 2 - Hoida lehmat muut - Lopeta? x Kiitos!... jatkoa mahdollisesti seuraa...
8 Maidon elämä - ohpejaohja2010 (Created by mluukkai@helsinki.fi / :43 Maidon elämä Added by Matti Luukkainen, last edited by Matti Luukkainen on Esimerkkivastaus viikon 4 ylimääräiseen tehtävään maidon elämä Rajapinnat: public interface Eleleva { public void eleletunti(); public interface Lypsava { public double lypsa(); public class Maitosailio { private double tilavuus; private double saldo; public Maitosailio() { this(2000); public Maitosailio(double tilavuus) { this.tilavuus = tilavuus; public double gettilavuus() { return tilavuus; public double getsaldo() { return saldo; public double paljonkotilaajaljella() { return tilavuus-saldo; public double otasailiosta(double maara) { if ( maara>getsaldo() ) maara = getsaldo(); saldo -= maara; return maara; public void lisaasailioon(double maara) { if ( maara > paljonkotilaajaljella() ) maara = paljonkotilaajaljella(); saldo += public String tostring() { return Math.ceil( getsaldo() )+"/"+ Math.ceil( gettilavuus() );
9 Maidon elämä - ohpejaohja2010 (Created by mluukkai@helsinki.fi / :43 class Lehma implements Lypsava, Eleleva { private static String[] NIMIA = new String[]{ "Anu", "Arpa", "Essi", "Heluna", "Hely", "Hento", "Hilke", "Hilsu", "Hymy", "Ilme", "Ilo", "Jaana", "Jami", "Jatta", "Laku", "Liekki", "Mainikki", "Matti", "Mella", "Mimmi", "Naatti", "Nina", "Nyytti", "Papu", "Pullukka", "Pulu", "Rima", "Soma", "Sylkki", "Valpu", "Virpi"; private String nimi; private double utareidentilavuus; private double maitoavalmiina; public Lehma(String nimi) { this.nimi = nimi; utareidentilavuus = 15+(int)(Math.random()*25); maitoavalmiina = 0; public Lehma() { this( NIMIA[ (int)(math.random()*nimia.length)] ); public double lypsa() { return maitoavalmiina; public void eleletunti() { double lisamaito = 0.7+Math.random()*1.3; maitoavalmiina += lisamaito; if ( maitoavalmiina>utareidentilavuus ) maitoavalmiina = public String tostring() { return nimitasattuna() + pyorista(maitoavalmiina)+"/"+pyorista(utareidentilavuus); private String pyorista(double luku) { return String.format("%.1f", luku); private String nimitasattuna() { return String.format("%-10s",nimi); public class Lypsyrobotti { private Maitosailio sailio; public void lypsa(lypsava lypsettava) { if ( sailio==null ) { System.out.println("Ei kiinnitetty maitosäiliöön, ei voida lypsää."); return; double maitoa = lypsettava.lypsa(); sailio.lisaasailioon(maitoa); public void setmaitosailio(maitosailio sailio) { this.sailio = sailio;
10 Maidon elämä - ohpejaohja2010 (Created by mluukkai@helsinki.fi / :43 public class Navetta { private Maitosailio sailio; private Lypsyrobotti robootti; public Navetta(Maitosailio maitosailio) { sailio = maitosailio; public void hoida(lehma ammu) { robootti.lypsa(ammu); public void asennalypsyrobotti(lypsyrobotti robo) { this.robootti = robo;; robootti.setmaitosailio(sailio); public void hoida(list<lehma> lehmalista) { for ( Lehma lehma : lehmalista ) public String tostring() { return sailio.tostring(); class Maatila implements Eleleva { private String omistaja; private Navetta navetta; private List<Lehma> lehmat; public Maatila(String omistaja, Navetta navetta) { this.omistaja = omistaja; this.navetta = navetta; this.lehmat = new public String tostring() { String tulostus = "Maatilan omistaja: "+omistaja + "\n" + "Navetan maitosäiliö "+navetta.tostring() +"\n"; if ( lehmat.isempty() ) tulostus += "Ei lehmiä."; else { String lehmajono = ""; for ( Lehma lehma :lehmat ) lehmajono += " "+lehma + "\n"; lehmajono.substring(0, lehmajono.length()-1); tulostus += "\n"+lehmajono; return tulostus; public void lisaalehma(lehma lehma) { lehmat.add(lehma); public void eleletunti() { for ( Lehma lehma : lehmat ) public void hoidalehmat() { navetta.hoida(lehmat); public void asennanavettaanlypsyrobootti(lypsyrobotti robo) { navetta.asennalypsyrobotti(robo); Printed by Atlassian Confluence 3.3.1, the Enterprise Wiki.
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ätiedotOhjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia
Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Tehtävä 1 Tehtävässä 1 mallinnettiin Monopolipeliä. Alla olevassa esimerkissä peliin liittyy aina 2 noppaa, peliä pelataan pelilaudalla,
LisätiedotRajapinta (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ätiedotJava kahdessa tunnissa. Jyry Suvilehto
Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,
LisätiedotMikä 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ätiedotKompositio. 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ätiedotKertaus: yleistys-erikoistus ja perintä
Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan
LisätiedotTehtä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ätiedotSisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)
Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
LisätiedotSisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
LisätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotJavan perusteita. Janne Käki
Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).
LisätiedotHarjoitus 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ätiedotA) 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ätiedotOhjelmoinnin 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ätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
LisätiedotOpintojakso 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ätiedotMetodien 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ätiedotOlio-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ätiedot812341A 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ätiedotHakemistojen sisällöt säilötään linkitetyille listalle.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ
LisätiedotTässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).
Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia
Lisätiedot16. 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ätiedotRajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.
11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen
Lisätiedot20. 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ätiedotSisä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ätiedot2. 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ätiedotTietorakenteet, laskuharjoitus 7,
Tietorakenteet, laskuharjoitus 7, 14.-19.3. 1. "Tira meets software engineering, osa 1" Lue luentomonisteen kalvot 233-236. Toteuta luokka Opiskelijarekisteri joka tarjoaa seuraavat palvelut: opiskelijoiden
LisätiedotYHTEYSSUHDE (assosiation)
YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde
Lisätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
LisätiedotSisällys. 11. Rajapinnat. Johdanto. Johdanto
Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.
Lisätiedot9. 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ätiedotOhjelmistojen mallintaminen. Luento 7, 23.11.
Ohjelmistojen mallintaminen Luento 7, 23.11. Kertaus: olioiden yhteistyön kuvaaminen Luokkakaavion avulla voidaan kuvata ohjelman rakenne Minkälaisista luokista ohjelma koostuu ja miten luokat liittyvät
LisätiedotOhjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2
Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2 Viikon 2 laskareita ei pidetä mikrosaleissa, käytössä ovat opetusohjelmaan merkatut salit. Tämän viikon tehtävistä 1-6 tehdään etukäteen kotona.
LisätiedotOpintojakso 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ätiedotSokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen
LisätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
LisätiedotMetodit. 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ätiedotLuokkamalli 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ätiedotLuokat ja oliot. Ville Sundberg
Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi
LisätiedotSisä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ätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
LisätiedotJava-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ätiedot2. Olio-ohjelmoinista lyhyesti 2.1
2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin
LisätiedotPeriytyminen (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ätiedotJAVA-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ätiedotLuokka 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ätiedot4. Olio-ohjelmoinista lyhyesti 4.1
4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin
LisätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Lisätiedotprivate TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;
Tietorakenteet, laskuharjoitus 7, ratkaisuja 1. Opiskelijarekisteri-luokka saadaan toteutetuksi käyttämällä kahta tasapainotettua binäärihakupuuta. Toisen binäärihakupuun avaimina pidetään opiskelijoiden
LisätiedotLista luokan sisällä
Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka Luokan sisällä on lista Tarkoitta
LisätiedotUML ja luokkien väliset suhteet
UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1 Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi
Lisätiedot7/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ätiedotListarakenne (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ätiedotLinkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa
LisätiedotJavan GUI Scratchaajalle
Javan GUI Scratchaajalle Kertausta Javan perusteista Java-luokan muotoilu public class Kissa { private String nimi; public Kissa(String annettunimi) { this.nimi = annettunimi; yksi class = yksi hahmo =
Lisätiedot1 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ätiedotSisä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ätiedotOpintojakso 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ätiedotSisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4
Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.
Lisätiedot// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.
Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään
Lisätiedot17. 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ätiedotOhjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
LisätiedotSisä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ätiedotOhjelmistotekniikan menetelmät, koe 2.5.2014
Ohjelmistotekniikan menetelmät, koe 2.5.2014 Vastaa tehtävään 3 erilliselle konseptille. Tehtävät 1 ja 2 saavat olla samalla konseptilla. Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen
Lisätiedot8. 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ätiedotSisä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ätiedot14. 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ätiedotTaulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
LisätiedotInteraktiivinen tarinankerronta
Interaktiivinen tarinankerronta Tehtävä 1: Tarinan alku pääohjelmaan Main. java ei tehdä muutoksia tulostusrivit tiedostoon Kayttoliittyma.java tulostus lyhyesti sout + tab komennolla Tiedoston Kayttoliittyma.java
Lisätiedot12. Näppäimistöltä lukeminen 12.1
12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.
LisätiedotOhjelmistojen mallintaminen. Luento 11, 7.12.
Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,
LisätiedotYleistä. 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ätiedotSisä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ätiedotTietorakenteet. 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ätiedotOhjelmistojen mallintaminen. Luento 4, 22.11.
Ohjelmistojen mallintaminen Luento 4, 22.11. Kertaus: olioiden yhteistyön kuvaaminen Luokkakaavion avulla voidaan kuvata ohjelman rakenne Minkälaisista luokista ohjelma koostuu ja miten luokat liittyvät
LisätiedotOhjelmassa 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ätiedotSisä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ätiedotLuokan 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ätiedotTIETORAKENTEET 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ätiedotPakkauksen kokoaminen
13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen package-määrettä käyttäen. Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa importlauseen avulla. Pakkaukset ja näkyvyys.
LisätiedotOhjelmointi 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ätiedotOhjelmointitaito (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ätiedotSisä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ätiedotSisä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ätiedotAalto 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ätiedotOpintojakso 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ätiedot8. 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ätiedotSisä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ätiedoton 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ätiedot1. 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ätiedot7. Näytölle tulostaminen 7.1
7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio
Lisätiedot812336A C++ -kielen perusteet, 21.8.2010
812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys
LisätiedotSisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotTaulukot. 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ätiedot4. Luokan testaus ja käyttö olion kautta 4.1
4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään
Lisätiedot14. 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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.
Lisätiedot