Java
Ominaisuudet > Olio-ohjelmointi

Java tukee olio-ohjelmointia. Kielessä voidaan käyttää luokkia, joiden jäsenenä olevia aliohjelmia kutsutaan metodeiksi.
Metodien määrittelyssä kerrotaan paluuarvon tyyppi, nimi ja valinnaisia ominaisuuksia (parametrit, näkyvyys ja niin edelleen). Java tukee poikkeuksia.
Muiden luokkien pääsyä voidaan rajoittaa. Päätasolla näkyvyys voi olla julkinen (public) tai pakettikohtainen. Jäsentasolla näkyvyys voi olla public, private tai protected. Jos näkyvyyttä ei määritellä luokalle se näkyy vain sen paketille.
Java rakennettiin lähes yksinomaan oliokieleksi, joten Java-kieliset ohjelmat ovat lähes aina oliopohjaisia ohjelmia. Olio-ohjelmointi onkin nykypäivänä yksi ohjelmointi alan tärkeimmistä työkaluista, jonka avulla voidaan luoda tehokkaampia, joustavampia ja helpommin ylläpidettävissä olevia ohjelmistoja. Java onkin usein käytetty ohjelmointikieli oliopohjaisessa ohjelmoinnissa.lähde?
Olio-ohjelmoinnin perusperiaatteisiin kuuluu kapselointi, periytyminen, polymorfismi ja abstraktio. Nämä auttavat ohjelmiston kehittäjiä luomaan modulaarisia ohjelmistoja, joissa eri osat ovat itsenäisiä ja ovat helposti laajennettavissa. Tämän avulla koodia voidaan uudelleenkäyttää ja näin vähentää saman tai samantyylisen koodin toistamista ohjelmistoissa. Olio-ohjelmointi tekee isojen ohjelmien koodista helpommin organisoitavaa. Tämä auttaa ohjelmistojen kehittäjiä työskentelemään tehokkaammin yhdessä ja monimutkaisten ohjelmistojen hallitsemissa. Olio-ohjelmoinnin merkitys tulee tulevaisuudessa vain kasvamaan ohjelmistojen kehittyessä yhä monimutkaisimmiksi.kenen mukaan?lähde?
Kapseloinnilla tarkoitetaan tiedon piilottamista. Eli luokan sisäiset yksityiskohdat voidaan piilottaa ulkopuolisilta.lähde?
Periytymisellä tarkoitetaan sitä, että lapsiluokka perii vanhempiensa tiedot ja toiminnallisuudet. Tätä voidaan havainnollistaa esimerkiksi niin, että koira ja kissa ovat kummatkin erilaisia eläimiä, mutta ne molemmat ovat nisäkkäitä. Tällöin he perivät nisäkkään ominaisuudet, mutta niillä on myös omia ominaisuuksia.lähde?
Polymorfismilla tarkoitetaan olioiden kykyä ottaa monta muotoa. Esimerkiksi ihminen voi olla jonkun puoliso, lapsi ja työntekijä samaan aikaan, mutta käyttäytyy eri tavalla näissä tilanteissa.lähde?
Abstraktio tarkoittaa kokonaisuuksien käsittelyä, jossa tarkennetaan tarvittaessa.lähde?
Olio-ohjelmoitaessa pyritään luokilla ja niiden ilmentymillä tyypillisesti mallintamaan jotain todellisen elämän prosessia tai toiminnallisuutta. Olio-ohjelmoinnissa instanssit ovat interaktiivisia ja niiden ominaisuudet, kuten metodit ja muuttujat vastaavat realistista käyttötarkoitusta. Hyvän tyyliohjeen mukaisesti esimerkiksi "Eläin" -luokalla voi olla ainoastaan eri ”eläin” -ilmentymiä, kuten siili tai kissa. Vastaavasti näillä olioilla voi olla vain loogisesti yhteensopivia muuttujia kuten "nimi" tai "ikä", eikä esimerkiksi "teho" tai "polttoainetankin tilavuus".
Javan ja olio-ohjelmoinnin eri ominaisuudet ja perusperiaatteet kuten näkyvyyden rajoittaminen ja periytyminen oikein ja yhdessä käytettynä ohjaavat jäsentelemään koodia siten, että se mallintaisi todellista maailmaa tai vähintäänkin jotain kiinteää systeemiä. Esimerkiksi eläin olion, kuten "kissa", kyky periä kantaluokaltaan kaikille eläimille tyypillisiä piirteitä kuvastaa hyvin olio-ohjelmoinnin reaalimaailman mallintamisen periaatetta. Laadukas oliopohjainen ohjelma näyttää ulospäin ryhmältä olioita, jotka toimivat keskenään omien tarkoitustensa pohjalta ja kommunikoivat niiden toisilleen tarjoamien rajapintojen avulla.
Jokaisella oliolla on oma tehtävä ja tarkoituksensa eikä muiden olioiden tarvitse välttämättä tietää mistä piilotetuista metodeista ja muuttujista olio tarkalleen muodostuu. Esimerkiksi "kuljettaja" -olion ei tarkalleen tarvitse tietää miten "auto" -olio toimii. Sille riittää, että se voi käyttää "auto" -olion toiminnallisuuksia, kuten ”käynnistä moottori”, ”aja” tai "käänny". Tämä rajapintojen muodostama abstraktio tekee olio-ohjelmoinnista joustavan ja helposti laajennettavissa olevan ohjelmointikielen. Olioiden muodostamien rajapintojen avulla laajennusten yhteensovittaminen on suhteellisen yksinkertaista, kunhan tunnetaan rajapintojen mahdolliset rajoitteet ja oikeat toiminnallisuudet.