Objekti vs. ilmentymä
Object Oriented Programming (OOP) on yksi suosituimmista ohjelmointiparadigmoista. OOP:ssa painopiste on ratkaistavan ongelman ajattelussa reaalimaailman elementtien muodossa ja ongelman esittämisessä esineiden ja niiden käyttäytymisen kann alta. Monilla ohjelmointikielillä, jotka tukevat OOP:n keskeisiä näkökohtia (kutsutaan OOP-kieliksi), luokka on pääohjelmointityökalu. Niitä kutsutaan luokkapohjaisiksi. Luokat ovat abstrakteja reaalimaailman esineitä. Luokilla on ominaisuuksia, joita kutsutaan attribuuteiksi. Attribuutit toteutetaan globaaleina ja ilmentymämuuttujina. Luokkien menetelmät edustavat tai määrittelevät näiden luokkien käyttäytymistä. Luokkien menetelmiä ja attribuutteja kutsutaan luokan jäseniksi. Hyvin yksinkertaisesti sanottuna luokka on suunnitelma tai malli tietylle tosielämän objektille. Objekti on siis muistilohko(t), jota käytetään tallentamaan tarvittavat tiedot tämän suunnitelman mukaisesti. Ilmentymä on muistilohko, joka viittaa objektiin.
Mikä on esine?
Objektit ovat luokan instantoimisen tuloksia. Instantiaatio on prosessi, jossa otetaan suunnitelma ja määritellään jokainen attribuutti ja käyttäytyminen siten, että tuloksena oleva objekti todella edustaa tosielämän objektia. Objekti on omistettu ja jatkuva muistilohko, joka on varattu tallentamaan tietoja, kuten muuttujia, menetelmiä tai funktioita jne. Objekti luodaan käyttämällä uutta operaattoria Java-ohjelmointikielellä. Jos esimerkiksi on luokka nimeltä Auto, niin seuraavalla voidaan luoda Auto-luokan objekti.
uusi auto();
Tässä uusi operaattori luo Auto-objektin ja palautetaan viittaus objektiin. Uuden kohteen luomiseen käytetään uutta operaattoria yhdessä Auto-luokan rakentajan kanssa. Objektin elinikä alkaa kutsusta sen rakentajalle siihen hetkeen, jolloin se tuhoutuu. Kun kohteeseen ei viitata, jätteenkeräilijä poistaa/tuhoaa sen.
Mikä on ilmentymä?
Instanssi on muistilohko, joka sisältää viittauksen objektiin. Toisin sanoen ilmentymä säilyttää aloitusmuistilohkon osoitteen, johon objekti on tallennettu. Itse asiassa ilmentymän nimeä voidaan käyttää objektin muistialueen alkuun pääsemiseen. Ajonaikainen moottori laskee siirtymät aloitusmuistista, jotta voimme mennä sinne, missä yksittäiset tiedot tai menetelmäviittaukset on tallennettu. Seuraavaa leikattua Java-koodia voidaan käyttää auto-objektin esiintymän luomiseen.
Auto myCar=uusi auto();
Kuten edellä mainittiin, uusi operaattori luo Auto-objektin ja palauttaa viittauksen siihen. Tämä viite on tallennettu Autotyyppi-muuttujaan myCar. Joten myCar on luodun Auto-objektin esiintymä.
Mitä eroa on objektilla ja ilmentymällä?
Objekti on yhtenäinen muistilohko, joka tallentaa todelliset tiedot, jotka erottavat tämän objektin muista objekteista, kun taas esiintymä on viittaus objektiin. Se on muistilohko, joka osoittaa kohteen tallennuspaikkaan. Kaksi esiintymää voi viitata samaan objektiin. Objektin ja esiintymän elinkaaret eivät liity toisiinsa. Siksi ilmentymä voi olla tyhjä. Kun kaikki objektiin osoittavat esiintymät on poistettu, objekti tuhoutuu.