OBJEKTINIS PROGRAMAVIMAS
Java OOP: klasės ir objektai
Objektinis programavimas (OOP) organizuoja programą aplink objektus, kurie vienoje vietoje turi duomenis ir su jais atliekamus veiksmus. Klasė aprašo bendrą struktūrą, o objektas yra konkretus tos klasės egzempliorius.
Kas yra OOP?
Procedūriniame kode daugiausia dėmesio skiriama metodams, kurie atlieka veiksmus su atskirai saugomais duomenimis. Objektiniame kode susiję duomenys ir metodai sujungiami į objektus.
Objektinis programavimas padeda:
- suteikti programai aiškią ir nuoseklią struktūrą;
- modeliuoti programos sąvokas atskirais objektais;
- pakartotinai naudoti klases ir jų elgseną;
- lengviau prižiūrėti, keisti, testuoti ir derinti kodą;
- kurti didesnes programas iš mažesnių, atsakomybę turinčių dalių.
Bendrą kodą verta aprašyti vienoje klasės ar metodo vietoje ir panaudoti iš naujo, užuot kopijavus.
Klasė ir objektas
| Sąvoka | Paskirtis | Pavyzdys |
|---|---|---|
| Klasė | Šablonas, aprašantis duomenis ir veiksmus | Knyga |
| Objektas | Konkretus pagal klasę sukurtas egzempliorius | manoKnyga |
Pagal vieną Knyga klasę galima sukurti daug skirtingų knygų. Visos jos turi klasėje aprašytus laukus ir metodus, tačiau pavadinimai ar puslapių skaičius gali skirtis.
Joje aprašome, kokius duomenis turės visos knygos. Objektas yra viena konkrečiai užpildyta anketa, pavyzdžiui, knyga „Mažasis princas“.
Klasės sukūrimas
Klasė kuriama naudojant raktažodį class:
public class Knyga {
String pavadinimas = "Mažasis princas";
int puslapiuSkaicius = 96;
void rodytiInformacija() {
System.out.println(pavadinimas + ": " + puslapiuSkaicius + " puslapiai");
}
}Čia tik aprašyta klasė. Objektas nesukurtas, o metodas rodytiInformacija() neiškviestas.
public class Knygapradeda naujos klasės aprašymą.pavadinimasirpuslapiuSkaiciusyra klasės laukai – duomenys, kuriuos turės kiekvienas objektas.rodytiInformacija()yra metodas – veiksmas, kurį galės atlikti knygos objektas.- Klasės pavadinimas pradedamas didžiąja raide.
- Viešos klasės failo pavadinimas turi sutapti su klasės pavadinimu:
Knyga.java.
Objekto sukūrimas su new
Objektas sukuriamas nurodant klasės tipą ir naudojant raktažodį new:
public class Knyga {
String pavadinimas = "Mažasis princas";
int puslapiuSkaicius = 96;
public static void main(String[] args) {
Knyga knyga = new Knyga();
System.out.println(knyga.pavadinimas);
System.out.println(knyga.puslapiuSkaicius);
}
}Mažasis princas
96
Knyga knygapaskelbia kintamąjį, galintį rodyti įKnygaobjektą.new Knyga()sukuria naują konkretų objektą pagal klasės aprašymą.- Sukurtas objektas gauna klasėje nurodytas pradines reikšmes: pavadinimą ir puslapių skaičių.
- Taškas komandoje
knyga.pavadinimasleidžia pasiekti konkretaus objekto lauką. - Todėl konsolėje matome knygos pavadinimą ir skaičių
96.
Objekto metodų iškvietimas
Taško operatoriumi taip pat iškviečiami objekto metodai:
public class Knyga {
String pavadinimas = "Mažasis princas";
void rodytiPavadinima() {
System.out.println("Knyga: " + pavadinimas);
}
public static void main(String[] args) {
Knyga knyga = new Knyga();
knyga.rodytiPavadinima();
}
}Knyga: Mažasis princas
- Pirmiausia sukuriamas konkretus
Knygaobjektas. - Per tašką iškviečiamas jo metodas
rodytiPavadinima(). - Metodas pasiekia to paties objekto lauką
pavadinimas. - Java sujungia tekstą Knyga: su objekto pavadinimu ir parodo rezultatą.
- Metodas nėra
static, todėl jis kviečiamas per konkretų objektąknyga.
Keli vienos klasės objektai
Viena klasė gali sukurti daug nepriklausomų objektų:
public class Knyga {
String pavadinimas;
public static void main(String[] args) {
Knyga pirmaKnyga = new Knyga();
Knyga antraKnyga = new Knyga();
pirmaKnyga.pavadinimas = "Mažasis princas";
antraKnyga.pavadinimas = "Pepė Ilgakojinė";
System.out.println(pirmaKnyga.pavadinimas);
System.out.println(antraKnyga.pavadinimas);
}
}Mažasis princas
Pepė Ilgakojinė
- Pagal tą pačią klasę sukuriami du atskiri objektai:
pirmaKnygairantraKnyga. - Pirmos knygos lauke įrašomas pavadinimas Mažasis princas.
- Antros knygos lauke įrašomas pavadinimas Pepė Ilgakojinė.
- Kiekvienas objektas saugo savo atskirą lauko reikšmę.
- Todėl pakeitus vienos knygos pavadinimą kitos knygos pavadinimas nepasikeistų.
Klasių naudojimas atskiruose failuose
Didesnėje programoje klasės paprastai laikomos atskiruose failuose:
// Knyga.java
public class Knyga {
String pavadinimas = "Mažasis princas";
void rodytiPavadinima() {
System.out.println(pavadinimas);
}
}// Main.java
public class Main {
public static void main(String[] args) {
Knyga knyga = new Knyga();
knyga.rodytiPavadinima();
}
}Mažasis princas
- Faile
Knyga.javalaikomas klasės aprašymas, jos laukas ir metodas. - Faile
Main.javayra programos pradžios metodasmain(). Mainsukuria naująKnygaobjektą.- Tada per objektą iškviečiamas metodas
rodytiPavadinima(). - Jei abi klasės yra tame pačiame pakete,
Maingali tiesiogiai naudoti pasiekiamąKnygaklasę.
Kas toliau?
Klasės ir objektai yra OOP pagrindas. Toliau galima nagrinėti konstruktorius, prieigos modifikatorius, inkapsuliaciją, paveldėjimą, polimorfizmą ir abstrakciją.

