Ohjelmistotuotanto, kevät 2003, harjoitus 6 (24.-28.2.)

  1. Olio-ohjelmointi (object-oriented programming) on ohjelmointiparadigma, jonka keskeisiä piirteitä ovat datan ja kontrollin paketointi, perintä, monimuotoisuus (polymorfismi) ja dynaaminen sidonta. Muita tunnettuja ohjelmointiparadigmoja ovat mm. rakenteinen ohjelmointi (structured programming), funktionaalinen ohjelmointi (functional programming), logiikkaohjelmointi (logic programming) ja rinnakkainen ohjelmointi (concurrent programming). Mitkä ovat näiden paradigmojen keskeiset piirteet? Anna esimerkkejä näitä paradigmoja edustavista ohjelmointikielistä. Millaisiin projekteihin tai sovelluksiin eri ohjelmointiparadigmat sopivat parhaiten?

  2. Missä tilanteissa luennoilla käsitelty ohjelmakoodin refaktorointi Extract Method on hyödyllinen? Miksi siinä on tärkeää käsitellä erikseen sijoitukset paikallisiin muuttujiin (refaktoroinnin sääntö 5)? Anna kyseisen säännön tärkeyttä havainnollistava esimerkki.

  3. Suunnittele koodin refaktorointi tilanteelle, jossa halutaan muuntaa tyyppiriippuva ehdollinen rakenne olioperustaiseksi, yli/aliluokitusta ja monimuotoisuutta hyödyntäväksi. Esimerkki tyyppiriippuvasta koodista:
      class Car {
        ...
        double getSpeed() {
          switch (model) {
            case EUROPEAN: return getBaseSpeed();
            case AMERICAN: return getBaseSpeed() / 1.6;
            case AFRICAN : return getBaseSpeed() - getLoadFactor();
          }
        }
      }
    


Jukka Paakki, 20.2.2003