4. Olio-ohjelmoinista lyhyesti 4.1

Samankaltaiset tiedostot
2. Olio-ohjelmoinista lyhyesti 2.1

19. Olio-ohjelmointia Javalla 19.1

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

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ä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

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

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

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

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

Mikä yhteyssuhde on?

Olio-ohjelmointi Javalla

2. Olio-ohjelmoinnin perusteita 2.1

9. Periytyminen Javassa 9.1

Sisällys. 15. Lohkot. Lohkot. Lohkot

Metodien tekeminen Javalla

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

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

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

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

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

1. Omat operaatiot 1.1

1. Olio-ohjelmointi 1.1

16. Javan omat luokat 16.1

15. Ohjelmoinnin tekniikkaa 15.1

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

1 Tehtävän kuvaus ja analysointi

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

Rajapinta (interface)

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

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

KOHDELUOKAN MÄÄRITTELY

Olio-ohjelmointi Syntaksikokoelma

Java-kielen perusteet

Javan perusteita. Janne Käki

15. Ohjelmoinnin tekniikkaa 15.1

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

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

9. Periytyminen Javassa 9.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

12. Monimuotoisuus 12.1

Java kahdessa tunnissa. Jyry Suvilehto

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

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

Ohjelmoinnin jatkokurssi, kurssikoe

YHTEYSSUHDE (assosiation)

Sisällys. 16. Lohkot. Lohkot. Lohkot

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

14. Poikkeukset 14.1

Ohjelmistotekniikan menetelmät, koe

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Luokan muodostimet (Constructors)

UML ja luokkien väliset suhteet

Ohjelmointi 2 / 2010 Välikoe / 26.3

Pakkauksen kokoaminen

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

Pakkauksen kokoaminen

public static void main (String [] args)

Luokat ja oliot. Ville Sundberg

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

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

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

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

12. Monimuotoisuus 12.1

2. Olio-ohjelmoinnin perusteita 2.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Listarakenne (ArrayList-luokka)

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

14. Poikkeukset 14.1

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

ITKP102 Ohjelmointi 1 (6 op)

18. Abstraktit tietotyypit 18.1

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

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

Interaktiivinen tarinankerronta

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

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

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

Periytyminen (inheritance)

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

7/20: Paketti kasassa ensimmäistä kertaa

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

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

7. Näytölle tulostaminen 7.1

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

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

Java-kielen perusteet

Luokan sisällä on lista

Metodien tekeminen Javalla

11/20: Konepelti auki

ITKP102 Ohjelmointi 1 (6 op)

Sopimuspohjainen olio-ohjelmointi

Transkriptio:

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 yleisellä tasolla. Tarkastellaan vain yhtä omaa luokkaa. Olio-ohjelmoinnissa keskeiset attribuutit käsitellään lyhyesti, koska niistä on toistaiseksi enemmän haittaa kuin hyötyä. Keskitytään operaatioihin. Aihepiiriin palataan tarkemmin kolmannessa periodissa järjestettävällä Olio-ohjelmoinnin perusteet (Oope, 5 10 op) -kurssilla. 4.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! 4.4

Oliot ja luokat Olio-ohjelmoinnissa ohjelman käyttökohteen (sovellusalue) ja sen ympäristön 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. 4.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 ja käsitettä (karkeasti) vastaavan luokan edustaja. 4.6

Koira-luokka Oletetaan, että sovellusalueella on koiria. Mallinnetaan koira ensin luokaksi ja toteutetaan luokka 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 4.7

Koira-luokka Kun luokan sisältö on selvillä, se voidaan toteuttaa: esitellään attribuutit ja toteutetaan metodit. Ohessa on annettu hyvin alkeellinen Koiraluokan toteutus Javakielellä. public class Koira { // Attribuutit. private int luonne; private String rotu; // Metodit. public void hauku(string s) { System.out.println(s); } } 4.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ä privatemääreellä. public class Koira { // Attribuutit. private int luonne; private String rotu; } 4.9

Attribuutit Luetaan ja muutetaan publicmääreellä esitellyillä julkisilla aksessorimetodeilla. Näkyvät kaikkiin metodeihin ja rikkovat siten modulaarisuusperiaatetta. Älä käytä tällä kurssilla tavallisia attribuutteja ellei lupaa ole annettu. Vakioituja attribuutteja voi käyttää vapaasti. public class Koira { private int luonne; private String rotu; // Aksessorit. public int luonne() { return luonne; } public void luonne(int l) { if (l > 0) luonne = l; } 4.10

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 viitteen tallentamiseen, ei olion tietojen tallentamiseen. 4.11

Olioiden esittely ja alustus Olion tarvitsema muistitilavaraus tehdään alustuksen yhteydessä new-operaattorilla, joka palauttaa viitteen ja varaa keskusmuistista muistialueen olion tiedoille. Yleisesti: tai LuokanNimi olionnimi; olionnimi = new LuokanNimi(); LuokanNimi olionnimi = new LuokanNimi(); Attribuuttien arvot alustetaan luokan rakentajassa (constructor), jonka nimi on aina sama kuin luokan nimi. 4.12

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

Rakentajat Java luo automaattisesti tyhjän parametrittoman oletusrakentajan. Luokalle voidaan määritellä myös oletusrakentaja omatoimisesti. Entä jos on tarvetta sekä parametrittomalle että parametriselle rakentajalle? Javassa on kuormittamisena (overloading) tunnettu mekanismi, joka sallii samannimisten metodien esittelyn ja siten myös samannimisen rakentajien esittelyn. 4.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); 4.15