Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op



Samankaltaiset tiedostot
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Olioiden yhteistoiminta

2. Olio-ohjelmoinista lyhyesti 2.1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

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

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

8/20: Luokat, oliot ja APIt

Olio-ohjelmointi Javalla

P e d a c o d e ohjelmointikoulutus verkossa

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

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

Mikä yhteyssuhde on?

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

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

9. Periytyminen Javassa 9.1

19/20: Ikkuna olio-ohjelmoinnin maailmaan

1 Tehtävän kuvaus ja analysointi

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

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

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

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

UML Luokkakaavio 14:41

1. Olio-ohjelmointi 1.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Rajapinta (interface)

4. Olio-ohjelmoinista lyhyesti 4.1

Oliot viestivät metodeja kutsuen

Periytyminen (inheritance)

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

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

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

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

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

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

Javan perusteita. Janne Käki

Ohjelmoinnin jatkokurssi, kurssikoe

Taulukot. Jukka Harju, Jukka Juslin

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

9. Periytyminen Javassa 9.1

Luokat ja oliot. Ville Sundberg

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Muutamia peruskäsitteitä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

KOHDELUOKAN MÄÄRITTELY

Graafinen käyttöliittymä, osa 1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

TyontekijaOhjelma. +main() (käyttää) + = public - = private

Java kahdessa tunnissa. Jyry Suvilehto

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

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

P e d a c o d e ohjelmointikoulutus verkossa

16. Javan omat luokat 16.1

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

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

C# olio-ohjelmointi perusopas

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

7/20: Paketti kasassa ensimmäistä kertaa

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

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Ohjelmoinnin perusteet Y Python

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

17. Javan omat luokat 17.1

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

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

Osio 4: Graafinen käyttöliittymä

Ohjelmoinnin perusteet Y Python

Graafinen käyttöliittymä, osa 3

Luokan sisällä on lista

Ohjelmistojen mallintaminen. Luento 7,

UML ja luokkien väliset suhteet

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

ict02d Osio2- luento 3 Olio-ohjelmointi: Luokkien kirjoittaminen

Graafinen käyttöliittymä, osa 2

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

20. Javan omat luokat 20.1

815338A Ohjelmointikielten periaatteet

15. Ohjelmoinnin tekniikkaa 15.1

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream

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

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Transkriptio:

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 ohjelmoimiaan luokkia omissa ohjelmissaan käyttäen hyväksi luokkien ja olioiden välisiä suhteita (periytyminen, assosiaatio, koostuminen). Opiskelija tutustuu Java API:iin käyttöliittymäohjelmoinnin kannalta (Swing) ja osaa toteuttaa graafisia käyttöliittymiä. Lisäksi opiskelija osaa käyttää tietovirtoja (tiedostoja). Opiskelija tuntee Java API:n tarjoamat yleisimmät perustietorakenteet ja osaa käyttää niitä. Sisältö Oliopohjaisuus. Poikkeukset ja tietovirrat. Tietorakenteet. Graafinen käyttöliittymä. (c) Outi Grotenfelt/Vesa Ollikainen 2

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java), Arviointikriteerit Tyydyttävä Oliopohjaisuus: - Opiskelija osaa määrittää luokkia, joissa on instanssimuuttujia, asetus- ja saantimetodeja ja muita metodeja. Opiskelija osaa tehdä niistä olioita ja muuttaa olioiden tilaa. - Opiskelija osaa määrittää luokkien välisen assosiaatiosuhteen. - Opiskelija osaa määrittää aliluokan. - Opiskelija osaa määrittää rajapinnan ja sen toteuttavan luokan. Poikkeukset ja tietovirrat: - Opiskelija osaa toteuttaa try/catch-rakenteen. - Opiskelija ymmärtää tietovirran käsitteen. Tietorakenteet: - Opiskelija osaa käyttää ArrayList-tietorakennetta. Graafinen käyttöliittymä: - Opiskelija osaa toteuttaa MVC-mallin mukaisen ohjelman, jossa on graafinen käyttöliittymä. - Opiskelija osaa liittää käyttöliittymään selitteitä, tekstikenttiä ja painikkeita. - Opiskelija osaa toteuttaa painikkeen kuuntelijan. (c) Outi Grotenfelt/Vesa Ollikainen 3

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java), Arviointikriteerit Hyvä Oliopohjaisuus: - Opiskelija osaa suunnitella ja toteuttaa muutamasta luokasta koostuvan luokkarakenteen, jossa sovelletaan assosiaatio- ja periytymissuhteita. - Opiskelija tunnistaa löyhän ja aidon koosteen sekä osaa toteuttaa ne instanssimuuttujien avulla. - Opiskelija osaa käyttää oliopohjaisessa ohjelmassa staattisia metodeja ja muuttujia. - Opiskelija osaa määrittää abstrakteja luokkia ja metodeita sekä niiden vaatimia aliluokkia. Poikkeukset ja tietovirrat: - Opiskelija osaa kirjoittaa try/catch-rakenteeseen eri poikkeuksille eri tavoin toimivia poikkeuskäsittelijöitä. - Opiskelija osaa määrittää tiedostojen käsittelemiseksi tarvittavat tietovirrat ja kirjoittaa niiden vaatimat poikkeuskäsittelijät. Opiskelija osaa lukea ja tallentaa olioita tietovirtojen avulla. Tietorakenteet: - Opiskelija tuntee List-rajapinnan ja osaa käyttää ArrayList- ja Vector-tietorakenteita tarkoituksenmukaisissa tilanteissa. - Opiskelija osaa käyttää kääreluokkia. Graafinen käyttöliittymä: - Opiskelija osaa käyttää säiliöitä ja sijoittelijoita graafisen käyttöliittymän toteuttamisessa. - Opiskelija osaa käyttää luettelo- ja yhdistelmäruutuja sekä valintaruutuja ja - painikkeita. - Opiskelija osaa hyödyntää Javan ohjelmointirajapinnan kuvausta käyttöliittymän toteutuksessa. (c) Outi Grotenfelt/Vesa Ollikainen 4

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java), Arviointikriteerit Kiitettävä Oliopohjaisuus: - Opiskelija hallitsee määreiden käytön luokkien, metodien ja muuttujien yhteydessä. - Opiskelija osaa käyttää nimettyjä ja anonyymejä sisäluokkia. Poikkeukset ja tietovirrat: - Opiskelija osaa käyttää merkkipohjaisia tietovirtoja ja jäsentää luetun syöterivin. Tietorakenteet: - Opiskelija osaa käyttää Javan ohjelmointirajapintaan kuuluvia tietorakenteita dokumentaatiota hyödyntäen. Graafinen käyttöliittymä: - Opiskelija osaa toteuttaa valikon. - Opiskelija osaa toteuttaa kuuntelijoita hiiri- ja näppäimistötapahtumille sekä valikkotoiminnoille. (c) Outi Grotenfelt/Vesa Ollikainen 5

1. Luokka ja olio Inhimillinen tapa havainnoida maailmaa Asioiden ja tilanteiden ryhmittelyä Ohjelmoinnissa vain keskeisin olioihin, kaikki turha pois Oliokieliä: Java, Smalltalk, Eiffel Olio-ohjelmointi mahdollista: C++, Oberon Olio eroaa kaikista muista jollakin tavalla; attribuutit (= tiedot, ominaisuudet) ja metodit (toiminnallisuus) Voivat olla suhteissa toisiin olioihin Outi Grotenfelt 6

1. Luokka ja olio.. Mikä on olio/luokka? Sillä on omat attribuutit (tiedot) ja metodit (toiminta) Mikäli on vain attribuutteja eikä toiminnallisuutta ei olio/luokka Pelkkä toiminnallisuus, ei omia tietoja ei olio/luokka (interface = rajapinta) Olio on luokan ilmentymä Luokka esittelee olioidensa tiedot ja toiminnallisuuden Outi Grotenfelt 7

1. Luokka ja olio.. Murre ja Reksi ovat koiria. Koira on luokka. Murre ja Reksi ovat luokan Koira ilmentymiä eli olioita. Luokan Koira ominaisuuksia voivat olla esimerkiksi nimi ja paino. Luokan koira metodina voi olla esimerkiksi hauku(). Outi Grotenfelt/Vesa Ollikainen 8

1. Luokka ja olio.. Luokan tiedot, attribuutit tulisi aina esitellä julkisuusmääreidensä kanssa Perussääntö: private: kaikki tietokentät (attribuutit) ovat yksityisiä, tällöin niiden arvoja ei voi muuttaa luokan ulkopuolelta public: kaikki toiminnot ovat julkisia, (esim set/get-metodit; ominaisuuksien muuttaminen toimii vaikka luokan sisältö muuttuisi) protected: näkyy luokan sisälle, aliluokkiin ja muihin saman pakkauksen luokkiin (oletus): näkyy luokan sisälle ja muihin saman pakkauksen luokkiin Aliluokkiin ja pakkauksiin palataan myöhemmin. Outi Grotenfelt 9

1. Luokka ja olio.. Lisätään ominaisuuksille asetus- ja saantitoiminnot (setterit ja getterit), joilla ominaisuuksille voidaan asettaa arvot (muokataan olion ominaisuuksia). Outi Grotenfelt/Vesa Ollikainen 10

1. Luokka ja olio.. Kaikilla luokilla on konstruktori, muodostin (vaikka et itse kirjoittaisikaan sellaista) Esitellessäsi yhden konstruktorin menetät automaattisesti luodun: jos kirjoitat yhden kirjoita kaikki, joita voit tarvita (kuormitus): Mikäli metodilla on eri määrä tai eri tyyppisiä parametreja, ne on kuormitettu (overloaded, sama nimi) Konstruktorin NIMEN täytyy olla SAMA kuin luokan nimi EI paluutyyppiä Voidaan kutsua VAIN, kun olio luodaan Javassa ei tarvita destruktoria (vrt C++): automaattinen roskien keruu! Outi Grotenfelt 11

1.1 Olioiden luonti Toisessa luokassa Koiratesti luodaan luokan Koira olio new-operaattorilla. Tarkasti ottaen omakoira on viittaus Koiraluokan olioon Outi Grotenfelt/Vesa Ollikainen 12

1.2 Kapselointi Outi Grotenfelt/Vesa Ollikainen 13

1.4 Esimerkki luokasta Luokka Koira määrittää luokan nimen sekä sen ominaisuudet ja metodit. plus- ja miinusmerkit kuvaavat suojaustasoja (public/private) esimerkki UML-luokkakaaviosta, joka on kuvaustekniikka oliosuunnitteluun. Kalvosarjan tekijän nimi 14

1.5 Olion muodostaminen/alustaminen Luokan oliot voidaan muodostaa luokan määrittelyn yhteydessä Muodostaminen tehdään tarkoitukseen kirjoitetussa alustaja- eli konstruktorimetodissa. Konstruktorin nimen on oltava täsmälleen sama kuin luokan nimi Jokaisella metodilla on oletusarvoisesti tyhjä parametriton konstruktori, jos yhtään alustajaa ei ole erikseen luotu. Outi Grotenfelt/Vesa Ollikainen 15

1.6 Konstruktorin kuormittaminen Alustajametodeja voidaan tehdä useita (metodin kuormittaminen) Pätee muihinkin metodeihin. esimerkissä parametrillinen ja parametriton alustaja. Outi Grotenfelt/Vesa Ollikainen 16

1.7 Olion viittaus itseensä: this esimerkissä parametrimuuttujalla ja instanssimuuttujalla (olion ominaisuudella) on sama nimi avainsana this kertoo, että operaatio kohdistuu instanssimuuttujaan. Luokan alustajaa voidaan kutsua toisesta alustajasta operaatiolla this. Esimerkiksi this() kutsuu parametritonta alustajaa. Kalvosarjan tekijän nimi 17

1.8 Olion tuhoutuminen Javassa on automaattinen roskienkeruu. Oliot, joihin ei viitata, tuhoutuvat automaattisesti. Olion tuhoutumistoimet voi määritellä luokkaan kirjoitettavalla finalize()-metodilla. harvoin tarvitaan. Roskienkeruun voi pakottaa metodikutsulla System.gc(); Kalvosarjan tekijän nimi 18

1.9 JavaBeans ja metodien nimeäminen JavaBeans-komponenttiteknologia edellyttää luokalta tiettyjä ominaisuuksia: Luokalla on oltava julkinen parametriton konstruktori. Luokan ominaisuuksille määritetään get- ja set-alkuiset saanti- ja asetusmetodit. Luokan on oltava sarjallistuva (tila voidaan lukea ja kirjoittaa, toteuttaa Serializable-rajapinnan, tähän palataan myöhemmin). Teknologiaa käytetään mm. graafisissa käyttöliittymissä. Nimeämiskäytäntö mahdollistaa luokkien automatisoidun käsittelyn. Sitä on tarkoituksenmukaista toteuttaa myös muille luokille (getterien ja setterien nimeäminen). Vesa Ollikainen/Outi Grotenfelt 19

KIITOS! www.metropolia.fi www.facebook.com/metropoliaamk outi.grotenfelt@metropolia.fi