උරුමය
මෝටර් රථයක් සහ බස් රථයක් සලකා බලන්න. ඒවා වෙනස් වාහන දෙකකි. නමුත් තවමත්, ඔවුන් සුක්කානම්, තිරිංග, ගියර්, එන්ජින් වැනි පොදු ගුණාංග බෙදා ගනී.
එබැවින් උරුම සංකල්පය සමඟ මෙය පහත පරිදි නිරූපණය කළ හැකිය ...
public class Vehicle {
private Driver driver;
private Seat[] seatArray; //In java and most of the Object Oriented Programming(OOP) languages, square brackets are used to denote arrays(Collections).
//You can define as many properties as you want here ...
}
දැන් බයිසිකලයක් ...
public class Bicycle extends Vehicle {
//You define properties which are unique to bicycles here ...
private Pedal pedal;
}
කාර් එකක් ...
public class Car extends Vehicle {
private Engine engine;
private Door[] doors;
}
එපමණයි උරුමය ගැන . අප ඉහත දුටු පරිදි වස්තූන් සරල පදනම් ආකාරවලට සහ ඒවායේ දරුවන් වර්ගීකරණය කිරීමට අපි ඒවා භාවිතා කරමු.
වියුක්ත පන්ති
වියුක්ත පන්ති යනු අසම්පූර්ණ වස්තු වේ. එය තවදුරටත් අවබෝධ කර ගැනීම සඳහා, නැවත වරක් වාහන ප්රතිසම සලකා බලමු.
වාහනයක් ධාවනය කළ හැකිය. හරිද? නමුත් විවිධ වාහන විවිධ ආකාරවලින් ධාවනය වේ ... නිදසුනක් ලෙස, ඔබ බයිසිකලයක් පදවන ආකාරයටම ඔබට වාහනයක් පැදවිය නොහැක.
ඉතින් වාහනයක ධාවක ක්රියාකාරිත්වය නිරූපණය කරන්නේ කෙසේද? එය කුමන වර්ගයේ වාහනයක් දැයි පරීක්ෂා කර බලා එය තමන්ගේම ක්රියාකාරිත්වයකින් ධාවනය කිරීම දුෂ්කර ය; නව වර්ගයේ වාහනයක් එක් කිරීමේදී ඔබට නැවත නැවතත් රියදුරු පන්තිය වෙනස් කිරීමට සිදුවේ.
වියුක්ත පංති හා ක්රමවේදයන්ගේ කාර්යභාරය මෙන්න. උරුම වූ සෑම දරුවෙකුටම මෙම ක්රියාව ක්රියාත්මක කළ යුතු බව පැවසීමට ඔබට ඩ්රයිව් ක්රමය වියුක්ත ලෙස අර්ථ දැක්විය හැකිය.
ඉතින් ඔබ වාහන පන්තිය වෙනස් කරන්නේ නම් ...
//......Code of Vehicle Class
abstract public void drive();
//.....Code continues
බයිසිකලය සහ මෝටර් රථය එය ධාවනය කරන්නේ කෙසේද යන්න ද නියම කළ යුතුය. එසේ නොමැති නම්, කේතය සම්පාදනය නොවන අතර දෝෂයක් විසි වේ.
කෙටියෙන් කිවහොත්, වියුක්ත පංතිය යනු අසම්පූර්ණ කාර්යයන් සහිත අර්ධ වශයෙන් අසම්පූර්ණ පන්තියකි, එය උරුම වූ දරුවන් විසින්ම නියම කළ යුතුය.
අතුරුමුහුණත්
අතුරුමුහුණත් මුළුමනින්ම අසම්පූර්ණයි. ඔවුන්ට කිසිදු ගුණාංගයක් නොමැත. ඔවුන් ඇඟවුම් කරන්නේ උරුම වූ දරුවන්ට යමක් කිරීමට හැකියාවක් ඇති බවයි ...
ඔබ සතුව විවිධ වර්ගයේ ජංගම දුරකථන තිබේ යැයි සිතමු. ඔවුන් එක් එක් විවිධ කාර්යයන් කිරීමට විවිධ ක්රම තිබේ; උදා: පුද්ගලයෙකු අමතන්න. දුරකථනයේ නිෂ්පාදකයා එය කරන්නේ කෙසේදැයි නියම කරයි. මෙහිදී ජංගම දුරකථනවලට අංකයක් ඇමතිය හැකිය - එනම් එය ඇමතිය හැකි ය. මෙය අතුරු මුහුණතක් ලෙස නිරූපණය කරමු.
public interface Dialable {
public void dial(Number n);
}
මෙහිදී ඩයලබල් නිෂ්පාදකයා විසින් අංකයක් අමතන්නේ කෙසේද යන්න නිර්වචනය කරයි. ඔබට එය ඇමතීමට අංකයක් ලබා දිය යුතුය.
// Makers define how exactly dialable work inside.
Dialable PHONE1 = new Dialable() {
public void dial(Number n) {
//Do the phone1's own way to dial a number
}
}
Dialable PHONE2 = new Dialable() {
public void dial(Number n) {
//Do the phone2's own way to dial a number
}
}
//Suppose there is a function written by someone else, which expects a Dialable
......
public static void main(String[] args) {
Dialable myDialable = SomeLibrary.PHONE1;
SomeOtherLibrary.doSomethingUsingADialable(myDialable);
}
.....
මෙයින් වියුක්ත පංති වෙනුවට අතුරුමුහුණත් භාවිතා කරමින්, ඩයලබල් භාවිතා කරන ශ්රිතයේ ලේඛකයා එහි ගුණාංග ගැන කරදර විය යුතු නැත. උදා: එය ස්පර්ශ තිරයක් හෝ ඩයල් පෑඩ් එකක් තිබේද, එය ස්ථාවර ලෑන්ඩ්ලයින් දුරකථනයක් හෝ ජංගම දුරකථනයක්ද? එය ඇමතිය හැකි දැයි ඔබ දැනගත යුතුය; එය ඩයලබල් අතුරුමුහුණත උරුම කර ගනීද?
වැදගත්ම දෙය නම්, යම් දවසක ඔබ ඩයලබල් වෙනත් එකක් සමඟ මාරු කරන්නේ නම්
......
public static void main(String[] args) {
Dialable myDialable = SomeLibrary.PHONE2; // <-- changed from PHONE1 to PHONE2
SomeOtherLibrary.doSomethingUsingADialable(myDialable);
}
.....
ඩයලබල් භාවිතා කරන ශ්රිතය ඩයලබල් අතුරුමුහුණතේ නිශ්චිතව දක්වා ඇති තොරතුරු හැර වෙනත් තොරතුරු මත රඳා නොපවතින හෙයින් කේතය තවමත් පරිපූර්ණව ක්රියාත්මක වන බවට ඔබට සහතික විය හැකිය. ඔවුන් දෙදෙනාම ඩයලබල් අතුරුමුහුණතක් ක්රියාත්මක කරන අතර ශ්රිතය සැලකිලිමත් වන එකම දෙය එයයි.
වස්තූන් පොදු කාර්යයක් බෙදා ගන්නා තාක් දුරට (ඔබ ලෑන්ඩ්ලයින් හෝ ජංගම දුරකථනයකට වෙනස් විය හැකි සේම, ඔබට අංකයක් ඇමතීමට අවශ්ය තාක් දුරට) වස්තූන් අතර අන්තර් ක්රියාකාරිත්වය සහතික කිරීම සඳහා අතුරු මුහුණත් බහුලව භාවිතා වේ. කෙටියෙන් කිවහොත්, අතුරුමුහුණත් යනු කිසිදු ගුණාංගයකින් තොරව වියුක්ත පංතිවල වඩා සරල අනුවාදයකි.
එසේම, ඔබට අවශ්ය තරම් අතුරුමුහුණත් ක්රියාත්මක කිරීමට (උරුම කර ගැනීමට) හැකි නමුත් ඔබට දිගු කළ හැක්කේ (උරුම කර ගත හැකි) තනි මාපිය පන්තියක් පමණි.
තවත් තොරතුරු
සාරාංශ පන්ති එදිරිව අතුරුමුහුණත්