Helsingin yliopisto / tietojenkäsittelytieteen laitos / Ohjelmointitekniikka (Scala) / © Arto Wikla 2016

Ohjelmointitekniikka (Scala): kurssikoe 13.5.2016

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, opiskelijanumerosi ja myös allekirjoituksesi.
  1. Oletko jo vastannut kurssikyselyyn tai lupaatko varmasti vastata kurssikyselyyn pikimmiten? Kurssipalautelomake löytyy laitoksen opiskelusivun laatikosta "Linkkejä" linkistä "Kurssipalaute". Tämäkin kohta arvostellaan ihan oikeasti! Oikeita vastauksia ovat vain myönteiset: "Olen jo vastannut", "Lupaan varmasti viimeistään huomenna vastata", jne. Rehellisyyttä toivotaan! Rehellisyysprosentteja julkistetaan kurssin pääsivulla. (1 piste)

  2. Selitä seuraavat Scalan tekniikat ja anna niistä valaisevia ohjelmaesimerkkejä:

    1. pääkonstruktori ja sen parametrien merkitys
    2. oliokumppani (companion object) ja luokkakumppani (companion class)
    3. sulkeuma, vapaa ja sidottu muuttuja
      (15 pistettä)

  3. Mitä ovat ohuet (thin) ja rikkaat (rich) rajapinnat? Millä tavoin piirreluokat liittyvät asiaan? Anna esimerkkejä omina ohjalmahahmotelmina ja käytä selityksen esimerkkeinä myös piirreluokkia Ordered, Iterable ja Iterator. (10 pistettä)

  4. Kompleksiluvut voidaan ilmaista reaalilukupareina.. Merkitään z1 = (x1, y1), z2 = (x2, y2) ja z = (x, y). Aritmetiikkaa:

    Toteuta kompleksiluvut immutaabelina luokkana. Metodi toString tuottaa tulostusasun: 5.16+2.97i, -5.1-9.978i, 3.141592653589793+2.718281828459045i, jne. Anna myös esimerkkejä luokan käytöstä. (10 pistettä)

  5. Olet ohjelmistoprojektin johtajana ohjeistamassa Java-kielen hyvin hallitsevaa työryhmääsi Scala-kielellä toteutettavan ohjelmistojärjestelmän toteuttamisessa. Laadi alaisillesi kompakti ja hyödyllinen luettelo Scala-kielen tarjoamista periaatteista, mahdollisuuksista ja tekniikoista, joilla ohjelmiston hyvää laatua voidaan pyrkiä varmistamaan. (9 pistettä)