Junior
Šta znače odnosi "ja sam" i "imam" u objektno-orijentisanom programiranju?
sobes.tech АИ
Одговор од АИ
Odnos "javljujem se" (is-a) je nasledjivanje. Klasa-derivat "je" roditeljska klasa i nasleđuje njena svojstva i ponašanje.
// Roditeljska klasa
class Animal {
void eat() {
System.out.println("Životinja jede");
}
}
// Klasa-derivat
class Dog extends Animal {
void bark() {
System.out.println("Pas laje");
}
}
U ovom primeru, Dog "je" Animal.
Odnos "imam" (has-a) je kompozicija ili agregacija. Jedan objekat "ima" referencu na drugi objekat kao deo svog stanja.
class Engine {
void start() {
System.out.println("Motor je pokrenut");
}
}
class Car {
private Engine engine; // Automobil "ima" motor
public Car() {
this.engine = new Engine();
}
void drive() {
engine.start();
System.out.println("Automobil vozi");
}
}
Ovde, Car "ima" Engine. Kompozicija podrazumeva jaku vezu (životni ciklus sadržanog objekta zavisi od onoga koji ga sadrži), agregacija je slabija (objekti mogu postojati nezavisno). Primer prikazuje kompoziciju.
Ključne razlike:
- "Javljam se" (
is-a) — nasledjivanje, definiše hijerarhiju tipova. - "Imam" (
has-a) — kompozicija/agregacija, definiše strukturu objekta uključivanjem drugih objekata.