2. Olio-ohjelmoinista lyhyesti 2.1



Samankaltaiset tiedostot
4. Olio-ohjelmoinista lyhyesti 4.1

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

19. Olio-ohjelmointia Javalla 19.1

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

4. Luokan testaus ja käyttö olion kautta 4.1

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Oliot viestivät metodeja kutsuen

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Mikä yhteyssuhde on?

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olio-ohjelmointi Javalla

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä

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

7. Oliot ja viitteet 7.1

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

Metodien tekeminen Javalla

1 Tehtävän kuvaus ja analysointi

1. Olio-ohjelmointi 1.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

9. Periytyminen Javassa 9.1

2. Olio-ohjelmoinnin perusteita 2.1

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

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

Javan perusteita. Janne Käki

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

YHTEYSSUHDE (assosiation)

Rajapinta (interface)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

Sisällys. 15. Lohkot. Lohkot. Lohkot

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

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

UML ja luokkien väliset suhteet

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Olio-ohjelmointi Syntaksikokoelma

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

1. Omat operaatiot 1.1

KOHDELUOKAN MÄÄRITTELY

Luokan muodostimet (Constructors)

9. Periytyminen Javassa 9.1

Java-kielen perusteet

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

16. Javan omat luokat 16.1

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmoinnin jatkokurssi, kurssikoe

Listarakenne (ArrayList-luokka)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Luokat ja oliot. Ville Sundberg

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

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

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1

14. Poikkeukset 14.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

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

Ohjelmistotekniikan menetelmät, koe

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Periytyminen (inheritance)

public static void main (String [] args)

12. Monimuotoisuus 12.1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Pakkauksen kokoaminen

Metodien tekeminen Javalla

Interaktiivinen tarinankerronta

Luokan sisällä on lista

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

18. Abstraktit tietotyypit 18.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Sisällys. 16. Lohkot. Lohkot. Lohkot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

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

C# olio-ohjelmointi perusopas

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

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

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

Ohjelmoinnin perusteet Y Python

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Osoitin ja viittaus C++:ssa

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

2. Olio-ohjelmoinnin perusteita 2.1

12. Monimuotoisuus 12.1

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Lista luokan sisällä

Transkriptio:

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 yleisellä tasolla: Tarkastellaan vain yhtä omaa luokkaa. Olio-ohjelmoinnissa keskeiset attribuutit käsitellään lyhyesti. Keskitytään operaatioihin. Aihepiiriin palataan tarkemmin kolmannessa periodissa järjestettävällä Olio-ohjelmoinnin perusteet (Oope, 10 op) -kurssilla. 2.3

Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olioohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma, jossa ohjelma kuvataan keskenään kommunikoivina olioina, oliot ajatellaan luokkansa ilmentymiksi (instance) ja luokille voidaan määritellä periytymissuhteita. Oliot ja luokat liittyvät siis kiinteästi toisiinsa, mutta ovat kuitenkin eri asia! 2.4

Oliot ja luokat Olio-ohjelmoinnissa ohjelman käyttökohteen (ja sen ympäristön) eli sovellusalueen käsitteet (concept) pyritään mallintamaan formaalisti luokkien avulla. Luokka vastaa useimmiten sovellusalueen käsitettä hyvin karkealla tasolla. Luokkia ei voida yleensä määritellä suoraan, vaan ensin pitää analysoida sovellusalueen kohteita, joiden voidaan ajatella olevan käsitteiden ilmentyminä myös omanlaisiaan olioita. 2.5

Oliot ja luokat Luokkia rakennettaessa edetään siis usein yksityiskohdista yleiseen määrittelyyn. Luokkiin kootaan sovellusalueen olioille yhteisiä tietoja (attribuutteja) ja toiminnallisuutta (operaatioita eli metodeja). Oliolla on kaksi roolia: Sovellusalueen käsitteen edustaja. Käsitettä (karkeasti) vastaavan luokan edustaja. 2.6

Koira-luokka Oletetaan, että sovellusalueella on koiria. Mallinnetaan ensin luokaksi ja toteutetaan sitten Javalla. Teukka - kiltti - sekarotuinen - "Hau!" - metsästää rottia Hiski - rohkea - bullterrieri - "RÄYH!" - repii sohvaa Viivi - aristokraattinen - villakoira - "vuh" - antaa tassua Koira - luonne - rotu - haukkuu 2.7

Koira-luokka Kun luokan sisältö on selvillä, se voidaan toteuttaa: Esitellään attribuutit ja toteutetaan metodit. Ohessa hyvin alkeellinen Koira-luokan toteutus Java-kielellä. public class Koira { // Attribuutit. private int luonne; private String rotu; // Metodit. public void hauku(string s) { System.out.println(s); } } 2.8

Attribuutit Luokan lohkossa esiteltyjä muuttujia tai vakioita. Esitellään lähes samalla tavoin kuin tavalliset muuttujat tai vakiot. Lisänä määreet. Pyritään yleensä kätkemään luokan ympäristöltä private-määreellä. Luetaan ja muutetaan aksessorimetodeilla. Käytettävä varoen: näkyvät kaikkiin metodeihin ja rikkovat siten modulaarisuusperiaatetta. (Vakioituja attribuutteja voi käyttää vapaammin.) public class Koira { // Attribuutit. private int luonne; private String rotu; // Aksessorit. public int luonne() { return luonne; } // Metodit. public void hauku(string s) { System.out.println(s); } } 2.9

Olioiden esittely ja alustus Javan oliot eivät ole oliotyyppiä vaan viitetyyppisiä (tarkemmin luokkatyyppisiä) muuttujia. Luokkatyyppisiä muuttujia ei voi yleensä ottaen käsitellä kuten alkeistietotyyppisiä muuttujia. Viite osoittaa jonkin muistipaikan kautta varsinaiseen dataan keskusmuistissa. Tästä syystä luokkatyyppisen muuttujan esittely varaa muistia vain viitteen tallentamiseen, ei olion tietojen tallentamiseen. 2.10

Olioiden esittely ja alustus Olion tarvitsema muistitilavaraus tehdään alustuksen yhteydessä new-operaatiolla, joka palauttaa viitteen ja varaa keskusmuistista muistialueen olion tiedoille. Yleisesti: tai LuokanNimi olionnimi; olionnimi = new LuokanNimi(); LuokanNimi olionnimi = new LuokanNimi(); 2.11

Olion luominen Koira teukka = null; teukka null Olion viitteen esittely ja alustaminen tyhjäksi. teukka = new Koira(); teukka olio olio Lauseke new Koira(); luo olion ja palauttaa paluuarvona olioon liittyvän tunnuksettoman viitteen. Sijoituksen seurauksena teukka-viite viittaa samaan olioon kuin paluuarvona saatu viite. 2.12

Rakentajat Attribuuttien arvot alustetaan luokan rakentajassa (constructor), jonka nimi on aina sama kuin luokan nimi. Rakentajalla ei ole tyyppiä. Kutsu yleisesti: - Oletusrakentaja LuokanNimi(); tai - Parametrillinen rakentaja LuokanNimi(parametrit); Rakentajaa kutsutaan aina, kun luodaan olio. Esimerkiksi: Koira hiski = new Koira(); 2.13

Rakentajat Java luo automaattisesti tyhjän oletusrakentajan. Itse kirjoitetulle luokalle voidaan luonnollisesti kirjoittaa myös rakentaja. Entä jos on tarvetta sekä parametrittomalle oletusrakentajalle että parametriselle rakentajalle? Javassa on kuormittamisena (overloading) tunnettu mekanismi, joka sallii samannimisten metodien esittelyn ja siten myös samannimisen rakentajien esittelyn. 2.14

Olion operaation kutsuminen Olion luokan julkisia operaatioita voidaan kutsua olion luokan ulkopuolelta muuttujan nimen ja pistenotaation avulla. Esimerkiksi: Esimerkiksi: Esimerkiksi: Esimerkiksi: Koira hiski = new Koira(); hiski.hauku( RÄYH! ); String syote = In.readString(); int merkkienlkm = syote.length(); Scanner lukija = new Scanner(System.in); String syote = lukija.nextline(); Random generaattori = new Random(); int arvottu = generaattori.nextint(10); 2.15