Olio-ohjelmointi
Menetelmiä

Olio-ohjelmointi on vaikuttanut suuresti ohjelmistotuotannon menetelmiin ohjelmiston elinkaaren kaikissa eri vaiheissa.
Olioanalyysi on keskeinen osa olio-ohjelmiston määrittelyä ja suunnittelua. Olioanalyysissa selvitetään ongelma-alueen (problem domain) käsitteet (concepts) ja niiden väliset rakenteelliset ja toiminnalliset suhteet. Olioanalyysin tuloksena on käsitemalli (concept model), josta toteutuksen luokkamäärittelyt voidaan suoraviivaisesti johtaa.
Olioanalyysia varten on kehitetty useita mallinnuskieliä. Mallinnuskielet poikkeavat monella tavalla tavallisista oliokielistä: Mallinnuskielet eivät ole suoritettavia, vaan ne kuvaavat järjestelmän rakennetta korkeammalla abstraktiotasolla ilman yksityiskohtia. Mallinnuskieliä käytetään pääasiassa graafisella notaatiolla, mikä mahdollistaa suurten kokonaisuuksien havainnollistamisen diagrammien avulla. Mallinnuskielten rakenne on kuitenkin tarkoin määritelty, jotta mallit eivät olisi tulkinnanvaraisia. Object Management Groupin (OMG) Unified Modeling Language (UML) on saavuttanut hallitsevan aseman yleiskäyttöisten mallinnuskielien joukossa. UML on standardi graafinen mallinnuskieli, joka tarjoaa useita erilaisia kaavioita, joista tunnetuimpia ovat luokkakaavio, sekvenssikaavio, käyttötapauskaavio sekä tilakaavio.
Luokkakaavio sisältää luokan, attribuutit (luokan sisältämä tieto), metodit (luokan toiminnallisuus) sekä luokkien väliset yhteydet. Alla esimerkki luokkakaaviossa kuvatusta Nappula-luokasta, jolla on muuttujia dataa varten sekä funktioita. Esimerkin taulukossa viisi ylintä ovat yksityisiä attribuutteja ja kolme alinta ovat julkisia metodeja.
Suunnittelumallit (design patterns) syntyivät alun perin rakennusarkkitehtuurin piirissä, mutta niiden idea otettiin käyttöön olio-ohjelmoinnissa 1990-luvun alussa. Suunnittelumalli on toistettavissa oleva ratkaisu johonkin suunnitteluongelmaan tietyssä asiayhteydessä. Suunnittelumallin kuvaus sisältää ainakin nimen, kuvauksen olosuhteista joissa sitä voi soveltaa, ratkaisun kuvauksen ja ratkaisun seuraukset. Yleisesti tunnettujen nimettyjen ratkaisumallien käyttö tehostaa viestintää ohjelmistosuunnittelijoiden välillä ja parantaa varsinaisten toteutusten selkeyttä ja rakennetta.
Suunnittelumallit voidaan laajasti jakaa kolmeen osaan: luontimalleihin, rakennemalleihin ja käyttäytymismalleihin. Luontimallien avulla pysytään luomaan olioita hallitusti tilanteen vaatimalla tavalla. Näin pystytään vähentämään järjestelmän monimutkaisuutta ja epävakautta ja samalla parannetaan sen joustavuutta ja koodin uudelleenkäytettävyyttä. Yksi suosittu luontimalli on singleton (ainokainen), jolla varmistetaan, että luokasta tehdään vain yksi instanssi. Tämä instanssi tulee myös olla saavutettavissa globaalisti, jotta muut järjestelmän osat pääsevät sen sisältämään tietoon käsiksi. Singlettomassa luokkamuuttuja ja luokkafunktio on laitettu yhteen. Tällöin voidaan olla varmoja, ettei tehdä kuin yksi olio tätä kyseistä tyyppiä. Tämä on yksinkertainen, mutta tehokas malli, jonka avulla tietoa saadaan jaettua ilman tarvetta luoda uutta oliota jokaiselle sitä tarvitsevalle komponentille.
Rakennemallit ovat hyödyllisiä muodostaessa suuria, joustavia ja tehokkaita rakenteita olioista, jotka ovat muuten olisivat erillään. Näillä rakenteilla pystytään siis esimerkiksi määrittelemään komponenttien välisiä yhteyksiä ja ne ovat erityisen hyödyllisiä suurissa järjestelmissä. Rakennemalleista esimerkki voisi olla decorator (kuorruttaja), jonka avulla pystyy lisäämään toimintoja olioon muuttamatta sen pohjalla olevaa rakennetta. Uusia "kerroksia" lisätessä kuitenkin kannattaa olla varovainen, että niitä tule lisättyä liian monta, joka johtaisi turhaan monimutkaisuuteen.
Käyttäytymismallit ovat vastuussa tehokkaasta komponenttien välisestä kommunikaatiosta. Nämä mallit huolehtivat olioiden välisestä vuorovaikutuksesta ja vastuiden määrittelystä. Näiden mallien tavoite on tehdä näistä prosesseista mahdollisimman yksinkertaisia ja helppoja ymmärtää. Yksi esimerkki käyttäytymismalleista on observer (tarkkailija), jota käytetään usein, kun jokin olio on vuorovaikutuksessa monen muun olion kanssa. Malli toimii siten, että oliot, jotka tarkkailevat yhtä tiettyä oliota saavat heti tietää, jos tarkkailtu olio muuttuu tai vaihtaa tilaa. Käyttäytymismalli kuvaa myös ohjelmiston luokat. Malli voi olla luokkiin perustuva, olioihin perustuva tai toiminnallisuuden kapselointi olioon perustuva. Olioihin perustuva yksi käyttäytymismalli on Chain of Responsibility (vastuuketju), joka perustuu siihen, että toiminnot delegoidaan olioille. Tiedonsiirto, joka tapahtuu olioiden välillä perustuu pyynnön käsittelevien olioiden muodostamasta ketjusta, jossa pyyntö käsitellään siinä olevasta oliossa, joka on kyvykäs toteuttamaan pyynnön.
Olioteknologioiden käyttö ohjelmiston suunnittelussa ja toteutuksessa ei ohjaa minkään tietyn prosessimallin käyttöön tai muuta ohjelmiston laadunvarmennuksen perusperiaatteita. Olioteknologian asiantuntijat ovat kuitenkin osallistuneet aktiivisesti keskusteluun ohjelmistoprosesseista. Ketterät menetelmät, käyttötapausmallinnus ja testivetoinen kehitys syntyivät pienessä Smalltalk-kehittäjien yhteisössä, josta ne ovat levinneet yleisempään käyttöön vuosituhannen vaihteen jälkeen.