1 / 8

5. Kapselointi

5. Kapselointi. Yleistä. Kapseloinnilla ( encapsulation ) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi piirteitä piilottamalla. Attribuutit piilotetaan private -määreen ja aksessoreiden avulla. (Tiedonkätkentä on siis osa kapselointia.)

aran
Download Presentation

5. Kapselointi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5. Kapselointi

  2. Yleistä • Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi piirteitä piilottamalla. • Attribuutit piilotetaan private-määreen ja aksessoreiden avulla. (Tiedonkätkentä on siis osa kapselointia.) • Metodeja piilotetaan private-määrettä käyttäen. • Piilotettavia ovat esimerkiksi metodit, joita tarvitaan vain luokan sisällä.

  3. kätketyt osat liittymät Liittymä • Julkiset metodit muodostavat liittymän, jonka kautta luokkaa käytetään kontrolloidusti ohjelmoijan ajattelemalla tavalla. • Kapseloitujen luokkien kommunikointi:

  4. Luokan kätketty osa Luokan liittymä Kissa-luokka (Kissa.java) public class Kissa { // Attribuutit. private String vari; private String hanta; // Metodit private void hairikoi() { // Tavaroita hajoaa... } public String vari() { return vari; } publicvoid vari(String v) { if (v != null) vari = v; } public String hanta() { return hanta; } public void hanta(String h) { if (h != null) hanta = h; } public void aantele(String s) { System.out.println(s); } }

  5. Luokalle oma tiedosto • Ohjelma on toistaiseksi ajateltu yhdeksi luokaksi. • Näin lähdekooditiedostojakin on ollut vain yksi. • Siirrytään nyt tyypilliseen käytäntöön, jossa jokaisen luokan koodi erotetaan omaan tiedostoonsa. • Näin toimien kukin luokka on selkeämmin täysin oma kokonaisuutensa myös tiedostojen tasolla. • main-metodin sisältävää luokkaa kutsutaan ajoluokaksi. • Käytetään tällä kurssilla usein toisen luokan testaamiseen. • Esim. Kissa-luokkaa testataan KissaTesti-luokassa.

  6. KissaTesti-luokka (KissaTesti.java) public class KissaTesti { public static void main(String[] args) { // Luodaan kissa. Kissa rontti = new Kissa(); // Testataan metodeja. rontti.aantele("Miau!"); rontti.vari("musta"); rontti.hanta("tavallinen"); System.out.println(rontti.vari()); System.out.println(rontti.hanta()); } }

  7. Testiluokan kääntäminen ja ajaminen • Testiluokka on käännettävä yhdessä testattavan luokan kanssa. Tämä on tehtävissä eri tavoin. • Kun molempien luokkien lähdekooditiedostot sijoitetaan samaan hakemistoon, kääntäjälle tarvitsee antaa vain testiluokan sisältävän tiedoston nimi. Esimerkki: javac KissaTesti.java • Ohjelma ajetaan testiluokan nimellä. Esimerkki: java KissaTesti

  8. Testiluokan kääntäminen ja ajaminen • Luokan voi myös sisällyttää testiluokan käännökseen jostakin muusta hakemistosta joko polkumäärittelyllä tai javac-ohjelman sourcepath-parametrillä. • Näin käännetty ohjelma suoritetaan siten, että java-ohjelmalle kerrotaan classpath-parametrin avulla tavukoodin hakemisto. • Ajaminen ja käännös tehdään siis kuten In-luokan yhteydessä. • Kertaa tarvittaessa Lausekielinen ohjelmointi -kurssin luentomateriaalin 12. luku.

More Related