olet luultavasti kuullut termin olio ohjelmoinnin yhteydessä ennenkin. Mutta mitä se todellisuudessa tarkoittaa? Aloitetaan tarkastelemalla joitakin reaalimaailman esineitä, kuten kyniä, kirjoja, älypuhelimia, tietokoneita jne.
jokainen objekti tulee eri muodoissa ja muodoissa, mutta saman objektin eri versiot voidaan luokitella kategoriaan tai ryhmään. Siksi huonekaluliikkeessä voi käydä tunnistamassa erilaisia esineitä ”tuoleiksi”, vaikka ne näyttäisivät hyvin erilaisilta.
tunnistat kaikki nämä eri oliot samaan ryhmään tai tyyppiin kuuluviksi. Huomaat yhtäläisyyksiä eri objektien välillä, kerätä tietoja ja luoda henkinen esitys tietylle objektiluokalle.
esimerkiksi erilaisia kirjoja on liikkeellä, mutta niillä kaikilla on yleensä otsikko, tekijä, kansi, sivut jne. Toisin sanoen, yksittäiset kirjat ovat kaikki samanlaisia ominaisuuksia, joiden avulla voit luokitella ne mielessäsi osaksi kategoriaa ”kirja.”
tämä kirjan kuvailemamme henkinen attribuuttiluettelo toimii eräänlaisena pohjapiirroksena tälle vastalause. Ohjelmoinnissa sitä kutsutaan tunniksi. Kun luot luokan, voit keksiä minkä tahansa mukautetun nimen, minkä vuoksi niitä kutsutaan nimetty tyyppi. Kuten näet, niiden avulla voit myös ryhmitellä paljon yksityiskohtia yhteen, minkä vuoksi niitä voidaan myös kutsua monimutkaisiksi tyypeiksi. Toisaalta jo tutuilla yksinkertaisilla tyypeillä, kuten int
tai double
, on ohjelmointikielen ennalta määrittelemiä nimiä, joita ei voi muokata.
miten keksitään luokkanimiä?
samoin kuin muuttujien nimeäminen, luokkien nimien tulee olla kuvailevia ja kirjoitettuja (muista, vältä lyhenteitä!). Keskeinen ero on siinä, että tavallisen camelcasen sijaan ensimmäisen kirjaimen tulisi olla myös pääoma kuten MarvelousCreature
eikä marvelousCreature
.
suunnittelu luokat
jotta nähdään, miten luokka suunnitellaan, jatketaan kirjaesimerkillä. Alla, olemme tunnistaneet näyte tietoa, joka voisi kuvata tietyn kirjan:
otsikko
tekijä
Sivumäärä
julkaisija
ne ovat minkä tahansa tosielämän kirjan attribuutteja. Luokkien yhteydessä näitä attribuutteja kutsutaan Jaavassa kentiksi. Luokan kentät ovat yksinkertaisesti hieno nimi asialle, jonka jo tunnet: muuttujat!
nyt teillä on teoria, joten laitetaan tämä kirjallisena!
luokan julistamiseksi Jaavalla käytetään avainsanaa class
, jota seuraa oma nimi. Sen jälkeen, lopeta se curly henkselit ({}
), jotka syleilevät koko sisältö. Tämä sisältää täydellisen listan ominaisuuksista:
class Book {// functionality of the class}
nyt lisätään aiemmin määriteltyjä kenttiä:
class Book { String title; String author; int numberOfPages; String publisher="OC";}
huomaa, miten kolmella ensimmäisellä ei ole arvoja, mutta viimeisellä on? Jos olet kustantaja, joka haluaa luetteloida kirjasi, niin tiedät, että kustantajan arvo on aina sama riippumatta siitä, mitä kirjaa tuotat. Kirjan nimet, kirjoittajat ja sivunumerot kuitenkin muuttuvat tietyn kirjan mukaan.
Jos palataan nettikirjakaupan alkuperäiseen esimerkkiin, Luokka näyttäisi kuitenkin enemmänkin tältä:
class Book { String title; String author; int numberOfPages; String publisher;}
koska kirjoja tulee monelta eri kustantamolta, ei kaikille voi laittaa oletusarvoa. Joten, tässä, määritellä kentän ja laittaa arvo myöhemmin!
hyödyntäen luokkia
sinulla on aivan uusi tyyppi – Book
📖 – selvitetty! Mitä voit tehdä sillä? Loppujen lopuksi luokat ovat enemmän abstrakteja tai käsitteellisiä. Luokkakentät ovat kuin sapluuna nettikirjakaupassa: ei ole väliä mitä kirjaa etsit, samat tiedot ponnahtaa (otsikko, tekijä,Sivumäärä, jne.).
mutta hakiessa ei kirjoiteta vain ”kirjaa”, eihän? Tuo ei ole hyödyllistä! Tarvitset tietyn esimerkin kirjasta, vaikkapa Liisa Ihmemaassa. Etsit oikeaa esinettä, jonka voit lukea sivusta. Sama juttu tietokoneohjelmoinnissa.
toimiakseen luokan kanssa täytyy luoda kyseisen luokan konkreettinen objekti. Toisin sanoen, tarvitset tietyn esineen, kuten tietyn kirjan (Liisa Ihmemaassa). Tuota nimenomaista kirjaa sanotaan luokan esimerkeiksi! Prosessia kutsutaan nimensä mukaisesti objektin instantioimiseksi tai alustamiseksi. Sitä varten luodaan luokan muuttuja.
Javassa jokaisella luodun olion kentällä on oltava arvo. Nämä arvot voidaan antaa muutamalla tavalla. Näit yhden julkaisijan esimerkissä: kovan arvon asettaminen luokan määritelmään.
toinen tapa on antaa lauseessa arvo, joka luo luokan. Katsotaan, miten se tehdään. Tässä on koodi, jolla luodaan kirja, jonka arvot annetaan sillä hetkellä, kun objekti luodaan:
kuten näkyy, on olemassa muutamia eri elementtejä. Tee ensin säännöllinen ilmoitus muuttujasta, jonka nimi on myBook
ja tyyppi Book
. Muistatko, kun sanoimme, että luokka on nimetty monimutkaiseksi tyypiksi? Tässä on todiste! Sen sijaan, että int
double
tai string
, tyyppimme on se luokka, jonka olemme keksineet! 💫
nyt, tässä tulee viileä osuus. Muuttuja alustetaan olion luontilausekkeella new Book("Coding is art","Becky James",425);
. Tämä lauseke koostuu new
avainsanasta, jota seuraa luokan nimi uudelleen (Book
), sekä joistakin suluista ()
, joiden sisällä on arvoja. Suluissa on määritelty arvo jokaiselle alkuperäiselle kentälle: title
author
ja numberOfPages
. Olemme varmistaneet, että erotamme jokaisen pilkulla. Lopuksi päättyy puolipisteeseen ;
. Sen avulla olet luonut esimerkiksi luokan kirja! 📔
työskentely attribuuttien (kenttien) kanssa
Phew! Siinä oli paljon sanastoa ja käsitteitä. Ennen kuin siirrytään eteenpäin, kerrataan nopealla kaaviolla:
is that better? Muista vain:
-
käytä luokkaa mallina tuleville esineillesi. Määrittele luokassa joidenkin muuttujien nimi ja tyyppi. Jaavalla näitä kutsutaan attribuuteiksi yleensä ja kenttiä erityisesti.
-
käyttääksesi tekemääsi siistiä suunnitelmaa, sinun täytyy luoda objekti instantiaatioprosessin avulla. Tämä tarkoittaa muuttujan julistamista luokkasi tyyppinä, sitten käyttämällä yllä näkemääsi objektin luontilauseketta.
-
kun instantioit objektin, luot arvot jokaiselle luokassasi jo määrittelemällesi kentälle.
-
oliota kutsutaan luokan instanssiksi.
nyt olet valmis! Sinulla on kirjaobjektisi, mutta sano muuttavasi mielesi muuttujiesi arvosta. Miten pääset kiiltävään uuteen kohteeseesi liittyviin kenttiin?
yleinen tapa päästä käsiksi kenttiin monissa ohjelmointikielissä on käyttää niin sanottua pistemerkintää. Se tarkoittaa, että on kirjoitettava instanssin tai objektin nimi, jota seuraa attribuutti kiinnostavan nimi, erotettuna pisteellä: instanceVariableName.attributeName
.
myBook.title = "Coding is Art";myBook.author = "Becky James";myBook.numberOfPages = myBook.numberOfPages + 10;
nyt voit asettaa objektisi sisällä olevien kenttien arvon! Kuvittele, että olet lisännyt kymmenen sivua, koska olet unohtanut lisätä kirjan hakemiston. Voit joko kirjoittaa uuden numeron suoraan tai lisätä kymmenen sivua olemassa olevaan arvoon kuten kolmannella rivillä. Tämä on aika kätevä, kun teet pieniä muutoksia. 🙂
Kokeile itse
https://api.next.tech/api/v1/publishable_key/2A9CAA3419124E3E8C3F5AFCE5306292?content_id=2871d3da-5053-4373-a813-46b6fcf8118c
Yhteenveto
tässä luvussa olet oppinut olioiden perusteet:
-
luokka on olion pohjapiirros.
-
luokan muuttujaa kutsutaan luokan tai olion instanssiksi.
-
luokan avulla voidaan luoda kompleksisia tyyppejä ryhmittelemällä sen attribuutteja määrittelemällä kenttiä.
-
luodaksesi objektin, sinun täytyy julistaa jonkin luokan muuttuja ja instantioida se.
-
pisteiden notaatio antaa pääsyn kenttiin.