Junior
Ի՞նչ են նշանակում հարաբերությունները "ես" և "ունենամ" օբյեկտային ծրագրավորման մեջ։
sobes.tech AI
Պատասխան AI-ից
Հարաբերությունը "ես-է" (is-a) ժառանգություն է։ Դերակատար դասը "է" ծնողական դաս և ժառանգում է նրա հատկությունները և վարքագիծը։
// Ծնող դաս
class Animal {
void eat() {
System.out.println("Համայնքը ուտում է");
}
}
// Դերակատար դաս
class Dog extends Animal {
void bark() {
System.out.println("Եղջերու հաչում է");
}
}
Այս օրինակով, Dog "է" Animal։
Հարաբերությունը "իմում" (has-a) նշանակում է կոմպոզիցիա կամ ագրեգացիա։ Մի օբյեկտ "ունի" հղում մյուս օբյեկտին որպես իր վիճակի մաս։
class Engine {
void start() {
System.out.println("Մեխանիզմը սկսվեց");
}
}
class Car {
private Engine engine; // Մեքենան "իմում" շարժիչ
public Car() {
this.engine = new Engine();
}
void drive() {
engine.start();
System.out.println("Մեքենան շարժվում է");
}
}
Այստեղ, Car "իմում" Engine։ Կոմպոզիցիան նշանակում է ուժեղ կապ (ապարատի կյանքի ցիկլը կախված է այն, ով այն պարունակում է), ագրեգացիան՝ ավելի թույլ (օբյեկտները կարող են գոյություն ունենալ անկախ։ Օրինակը ցույց է տալիս կոմպոզիցիա։
Հիմնական տարբերությունները՝
- "է-" (
is-a) — ժառանգություն, սահմանում է տիպերի հիերարխիա։ - "իմում" (
has-a) — կոմպոզիցիա/ագրեգացիա, սահմանում է օբյեկտի կառուցվածքը այլ օբյեկտների ներառմամբ։