Helsingin yliopisto / tietojenkäsittelytieteen laitos / Ohjelmointitekniikka (JavaScript) / © Arto Wikla 2015

Ohjelmointitekniikka (JavaScript): kurssikoe 18.12.2015/AW

Kirjoita jokaiseen vastauspaperiisi kurssin nimi ja kokeen päivämäärä sekä nimesi, opiskelijanumerosi ja myös allekirjoituksesi.
Vastaa kysymykseen 2 eri paperille kuin kysymyksiin 1 ja 3! Tämä helpottaa ja nopeuttaa tarkastusta.
Huom: Vastauspaperit myös kerätään kahteen erilliseen pinoon: "2" ja "1&3".

  1. Selitä lyhyesti ja täsmällisesti (10 pistettä):

    1. olioliteraali ja funktioliteraali
    2. funktio ja lohko näkyvyysalueena
    3. sulkeuma, vapaa ja sidottu muuttuja
    4. konstruktorifunktio ja sen prototype-kenttä
    5. olion prototyyppiketju

    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. (2 pistettä)

    2. Piirrä syntyneet oliot ja niiden väliset linkitykset seuraavan ohjelman suorituksen aikana numeroiduissa kohdissa – siis neljä kuvaa. Ylimmän eli Object- ja Function-tason olioiden keskinäisiä suhteita ei tarvitse piirtää, mutta ohjelmassa syntyvien olioiden suhteet noihin olioihin on piirrettävä näkyviin. Mitä ohjelma tulostaa? (12 pistettä):
      function A() {
        this.k1 = 14
      }
      
      function B() {
        this.k2 = 15
      }
         //// kohta 1 /////
      B.prototype = new A()
         //// kohta 2 /////
      
      function C() {
        this.k3 = 92
      }
      C.prototype = new B()
         //// kohta 3 /////
      
      var a = new A()
      a.k2 = 65
      var b = new B()
      b.k1 = 35
      var c = new C()
      c.k1 = 89
         //// kohta 4 /////
      
      alert(a.k1+", "+b.k3+", "+c.k2)
      

    1. Millainen on anonyymin sulkeuman avulla ohjelmoitava modulirakenne (Module Pattern) ja millaisin eri tavoin sitä voidaan käyttää? (6 pistettä)

    2. Ohjelmoi tietorakenne jono modulina, joka tarjoaa palvelut vieJonoon ja otaJonosta. Jonon toteutus taulukkona piilotetaan modulin sisään. Operaatio vieJonoon lisää arvon jonon loppuun. Operaatio otaJonosta palauttaa arvonaan jonossa pisimpään olleen arvon ja poistaa sen jonosta. Ratkaisu on tehtävä "omin käsin" eli jonon toteuttavia varusfunktioita ei saa käyttää! (6 pistettä)