OOP Põhimõtted Flashcards
Klass
Andmestruktuuri kirjeldus. Klass määratleb, millised omadused ja käitumised (väljad ja meetodid) objektidel on.
Objekt
Klassi instants. Kui klass on nagu plaan, siis objekt on selle plaani põhjal loodud tegelik asi, millel on selles klassis määratletud omadused ja meetodid.
Konstruktor
Klassi meetod, mis loob, algväärtustab ja algseadistab uue klassi instantsi.
Staatiline väli või meetod
Ei ole seotud ühegi konkreetse klassi instantsiga, vaid on seotud klassiga ise. Staatilist välja või muutujat saab kasutada ilma klassi objekti loomata.
private static int nextId; private static int getNextId() { return nextId++; } public static void resetIdCounter() { nextId = 0; }
Enum klass
Võimaldab defineerida mingi tüübi, millel on kindel hulk konstante ehk selle tüübi võimalike väärtusi (nt DayOfWeek
, MovieGenre
).
public enum Sport { KUDO, BRAZILIAN_JIU_JITSU, KUNG_FU, BOXING }
Sisemised klassid ja liidesed
Klassid ja liidesed, mis on defineeritud teise klassi sees.
Meetodi ülelaadimine (overload)
Võimaldab defineerida mitu meetodit sama nimega, kuid eri parameetritega.
Meetodi ülekirjutamine (override)
Alamklass pärib ülemklassist mingi meetodi ja kirjutab selle enda jaoks üle. Kasutatakse @Override
dekoratsiooni.
Pärimine
Alamklass pärib kõik omadused ja käitumised (väljad ja meetodid) ülemklassilt. Ta saab neid kasutada, laiendada või üle kirjutada.
Polümorfism —
Võime käsitleda ___is või ___ abil erineval ___ olevaid objekte erinevalt. Võimaldab koodis p___ust ja t___ust. Näiteks sama ___ kasutamine objekti erinevate ___ puhul, kus iga ___ ___ käitumine võib erineda vastavalt sellele, kuidas meetod on sellele ___ ülekirjutatud. Näiteks produceOrbs ___ üle kõikide ___ ___ hoolimata sellest, millise ___ ___ on tegu, ning loob ___ ___ ___, kusjuures iga ahju klassi ___ ___ kutse loob orbe natuke ___ ___.
Võime käsitleda meetodis või liidese abil erineval kujul olevaid objekte erinevalt. Võimaldab koodis taaskasutamist ja paindlikkust. Näiteks sama meetodi kasutamine objekti erinevate tüüpide puhul, kus iga tüübi instantsi käitumine võib erineda vastavalt sellele, kuidas meetod on sellele tüübile ülekirjutatud. Näiteks produceOrbs itereerib üle kõikide ahjude vabrikus hoolimata sellest, millise klassi ahjuga on tegu, ning loob orbe iga ahjuga, kusjuures iga ahju klassi craftOrb meetodi kutse loob orbe natuke erinevate reeglitega.
Kapseldus
Objekti sisemine olek ja käitumine on välise maailma eest varjatud ning seda saab muuta ainult objekti enda meetodite ja reeglite kaudu. Tagab objekti sisemise oleku turvalisuse ja stabiilsuse, ja kontrollib andmetele juurdepääsu ja nende muutmist. (private
, getter
, setter
.)
Abstraktsioon
Keerukate süsteemide lihtsustamine sellega, et süsteemid ei sõltu väga konkreetsetest detailidest.
Abstraktne meetod
Ilma implementatsioonita meetod.
Abstraktsed klassid ja liidesed on ___. Neil on mõned olulised erinevused:
Abstraktne klass:
• Eesmärk: ___.
Liides:
• Eesmärk: ___.
Abstraktsed klassid ja liidesed on mõlemad viisid Javas abstraktsiooni saavutamiseks ja lepingute määratlemiseks. Neil on mõned olulised erinevused:
Abstraktne klass:
• Eesmärk: Abstraktsed klassid on teistele omavahel seotud klassidele šablooniks, pakkudes neile implementeerimiseks ühise aluse.
Liides:
• Eesmärk: Liidesed on lepingud, millist käitumist klass peab implementeerima olenemata klasside pärimise hierarhiast.
Serialiseerimine
Teisendab objekti baitide voogu (byte stream), et seda saaks salvestada faili, andmebaasi või edastada võrgu kaudu teisele süsteemile. Selleks, et objekt oleks serialiseeritav, peab see klass rakendama Serializable
liidest.