Modulaarisuus: Pakkaukset

Osaamistavoitteet

Keskitytään seuraavaksi ohjelman toteuttamisessa työnjakoon koodin näkökulmasta. Opit ymmärtämään rajapintaa sopimuksena: keskitymme ns. sopimussuunnitteluun. Opit selittämään kutsujan (esiehto) ja toteuttajan (jälkiehto) vastuiden roolit sekä hyödyntämään invarianttia selvittämään, milloin olion voi luottaa olevan tolkuissaan. Opit myös hyödyntämään pakkauksia ohjelmissasi ja tutustut Maveniin.

Palautetaan aluksi kurssin alusta mieleen rajapinnan tehtävät:

  • Rajapinta kertoo käyttäjälle, miten rajapinnan määrittelemään palvelua on tarkoitus käyttää. Se siis vastaa käyttäjälle kysymykseen: “miten tätä käytetään?”

  • Rajapinnan toteuttajalle rajapinta taas määrittää, miten rajapinnan palvelu kuuluu toimia. Se siis esittää toteuttajalle kysymyksen: “toimiiko toteutus täsmälleen rajapinnan odottamalla tavalla?”

Koska toteutus ei näy, eikä sen kuulukaan näkyä, käyttäjälle, rajapinnan dokumentaatio muodostaa yhden tärkeimmistä ohjelmiston kehittäjien välisen yhteistyön työkaluista. Rajapinnan tulee olla dokumentoitu niin, että siitä käy selville, millaisia palveluita rajapinta tarjoaa, miten rajapintaa kuuluu käyttää ja mitä ehtoja rajapinnan käyttämiselle mahdollisesti on. Koska rajapinnan dokumentaatio on niin keskeinen osa ohjelmistojen kehittämistä, se on myös integroitu osaksi kooditiedostojen määrämuotoista kommentointia. Käytännön tasoon perehdymme seuraavalla viikolla, mutta ensin syvennytään siihen, mitä rajapinnasta oikeastaan pitää dokumentoida.