என்பது -ன் உறவு — மூலம் மாதிரியாக்கப்பட்டது ( ). என்பது -ன் உறவு — மூலம் மாதிரியாக்கப்பட்டது ( ). சரியான ஒன்றைத் தேர்ந்தெடுப்பது ஒரு முக்கிய மாதிரியாக்கல் முடிவு.
என்பது -ன் உறவு — மூலம் மாதிரியாக்கப்பட்டது ( ). என்பது -ன் உறவு — மூலம் மாதிரியாக்கப்பட்டது ( ). சரியான ஒன்றைத் தேர்ந்தெடுப்பது ஒரு முக்கிய மாதிரியாக்கல் முடிவு.
CarVehicleCarEngine// IS-A → inheritance
class Vehicle { void move() {} }
class Car extends Vehicle { } // a Car IS A Vehicle
// HAS-A → composition
class Engine { void start() {} }
class Car2 {
private Engine engine = new Engine(); // a Car HAS AN Engine
void start() { engine.start(); } // delegate to the part
}
கேட்க: "X என்பது Y ஒரு வகைதா, அல்லது X ஒரு Y வைத்திருக்கிறது/பயன்படுத்துகிறதுதா?"
A Dog IS-A Animal → inheritance ✅
A Car HAS-A Engine → composition ✅
A Square IS-A Shape → inheritance ✅
A Manager HAS Employees → composition (a list) ✅
A Stack HAS-A list (not IS-A) → composition (see earlier pitfall) ✅
நபர்கள் பெரும்பாலும் குறியீட்டை மீண்டும் பயன்படுத்துவதற்காக பாரம்பரியத்திற்கு திரும்புகிறார்கள், உறவு உண்மையில் has-a ஆக இருந்தாலும் கூட. நீங்கள் ஒரு பிரிவின் வகுப்பை எல்லா இடங்களிலும் அடிப்படை பிரிவிற்கு மாற்றவிடாமல் இருந்தால், இது aன் உறவு அல்ல — கலவையைப் பயன்படுத்துங்கள்.
இந்த வேறுபாடு "கலவையை பாரம்பரியத்திற்கு முன்னுரிமை கொடுங்கள்" பின்னணியில் உள்ள நடைமுறை முடிவெடுக்கும் விதி: உண்மையான உறவைத் தேர்ந்தெடுங்கள், சில வரிகளைச் சேமிக்கும் ஒன்றல்ல.
திறமையாக செய்ய வெறுக்கபட்டிருப்பு மற்றும் நாண்யம் வைத்திருக்கிறது மற்றும் Liskov மீறல்கள் தடுக்கிறது, அங்கு "பிரிவு" உண்மையில் அதன் பெற்றோரின் இடத்தில் நிற்க முடியாது.
விரிவான பதில்களுடன் கூடிய IT நேர்காணல் கேள்விகளின் நூலகம் — Junior முதல் Senior வரை.
நன்கொடை