ഇന്റർഫേസ് (ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിംഗ്)ഓബ്ജക്റ്റ്-ഓറിയന്റഡ് പ്രോഗ്രാമിംഗിൽ, ഇന്റർഫേസ് എന്നത് ചില പ്രവർത്തനങ്ങളുടെ രൂപരേഖ മാത്രമാണ്, എന്നാൽ ആ പ്രവർത്തനങ്ങൾ എങ്ങനെ നടപ്പാക്കണമെന്ന് പറയുന്നില്ല. ഇന്റർഫേസ് ഒരു പണിയിലേക്കുള്ള മാർഗരേഖ തന്നെയാണ്, എന്നാൽ ആ മാർഗം പല ക്ലാസുകൾക്കും പിന്തുടരാമെന്ന് പറയാം. അത് പാലിക്കുന്ന ക്ലാസുകൾക്ക് അവിടെ പറഞ്ഞ പ്രവർത്തനങ്ങൾ ചെയ്യാനുള്ള കഴിവ് ഉണ്ടാകുന്നു[1]. ഒരു ക്ലാസ് പ്രോട്ടോക്കോളിൽ കൊടുത്തിരിക്കുന്ന രീതികളെ നടപ്പിലാക്കുകയാണെങ്കിൽ, ആ ക്ലാസ് പ്രോട്ടോക്കോൾ സ്വീകരിച്ചതായോ, ഇന്റർഫേസ് നടപ്പിലാക്കിയതായോ പറയും[2]. ഓരോ ഒബ്ജക്റ്റിന്റെ ഉള്ളടക്കം മറച്ചുവെച്ചിരിക്കുമ്പോൾ, മറ്റു ഒബ്ജക്റ്റുകൾ അതുമായി എങ്ങനെ പ്രവർത്തിക്കാമെന്ന് പറയുന്ന ഏക മാർഗം പ്രോട്ടോക്കോൾ ആണ്. ഉദാഹരണത്തിന്, ജാവയിൽ
// Comparable ഇന്റർഫേസ്, compareTo() രീതി നിർവചിക്കുന്നു
interface Comparable {
int compareTo(Object o); // CompareTo() സിഗ്നേച്ചർ
}
// Person എന്ന ക്ലാസ്, Comparable ഇന്റർഫേസ് നടപ്പിലാക്കുന്നു
class Person implements Comparable {
String name;
int age;
// Person ഓബ്ജക്റ്റ് ഇൻറൈഷ്യലൈസ് ചെയ്യാൻ Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Comparable ഇന്റർഫേസ് ഇല്ലാത്ത compareTo() രീതി നടപ്പിലാക്കുന്നു
@Override
public int compareTo(Object o) {
// Object നെ Person ആക്കി typecast ചെയ്ത് താരതമ്യം ചെയ്യുന്നു
Person other = (Person) o;
// പ്രായത്തിനനുസരിച്ച് താരതമ്യം ചെയ്യുന്നു
if (this.age < other.age) {
return -1; // ഈ വ്യക്തി ചെറുതാണ്
} else if (this.age > other.age) {
return 1; // ഈ വ്യക്തി വലിയവനാണ്
} else {
return 0; // രണ്ടുപേരും സമാന പ്രായത്തിലുള്ളവരാണ്
}
}
}
// പ്രധാന ക്ലാസ്, compareTo() പരിശോധിക്കാൻ
public class Main {
public static void main(String[] args) {
Person person1 = new Person("John", 25);
Person person2 = new Person("Alice", 30);
Person person3 = new Person("Bob", 25);
System.out.println(person1.compareTo(person2)); // ഔട്ട്പുട്ട്: -1 (John, Alice-നെക്കാൾ ചെറുതാണ്)
System.out.println(person1.compareTo(person3)); // ഔട്ട്പുട്ട്: 0 (John, Bob സമാന പ്രായം)
System.out.println(person2.compareTo(person3)); // ഔട്ട്പുട്ട്: 1 (Alice, Bob-നെക്കാൾ വലിയവളാണ്)
}
}
പേഴ്സൺ ക്ലാസ്സ്: പേഴ്സൺ ക്ലാസ് ഔട്ട്പുട്ട്:
ഇങ്ങനെ, ചില പ്രോഗ്രാമിംഗ് ഭാഷകൾ (ഉദാഹരണത്തിന്, അഡ, സി#, ഡാർട്ട്, ഗോ, ജാവ, പൈത്തൺ 3.8 ലോഗ്ടോക്ക്, ഒബ്ജക്റ്റ് പാസ്കൽ, ഒബ്ജക്റ്റീവ്-സി, ഒകാമൽ, പിഎച്ച്പി, റാക്കറ്റ്, സീഡ്7, സ്വിഫ്റ്റ്, മുതലായവ) പ്രോട്ടോകോളുകൾ (അഥവാ ഇന്റർഫേസുകൾ) സൃഷ്ടിക്കാൻ നേരിട്ടുള്ള പിന്തുണ നൽകുന്നു. ഇത് ഒട്ടേറെ ക്ലാസുകൾക്ക് സാധാരണ രീതിയിൽ പ്രവർത്തനം നിർവഹിക്കാൻ സഹായിക്കുന്നു. സി++ പോലുള്ള ഭാഷകളിൽ, പല തരം പോളിമോർഫിസത്തെ പിന്തുണയ്ക്കുന്ന ഭാഷകളിൽ, ഇന്റർഫേസുകൾ സാധാരണയായി അബ്സ്ട്രാക്റ്റ് ക്ലാസുകൾ ആയി ഉപയോഗിക്കുന്നുണ്ട്. വ്യക്തമായ നിയമങ്ങൾ ഇല്ലാത്ത ഭാഷകളിൽ, പ്രോട്ടോകോളുകൾ സാധാരണയായി ഒരു പൊതു രീതി സ്വീകരിച്ചേക്കാം. "ഡക്ക് ടൈപിംഗ്" എന്നത്, എന്തെങ്കിലും ഒരു പ്രവർത്തനം ചെയ്യുന്നുവെങ്കിൽ അത് എങ്ങനെ പ്രവർത്തിക്കണം എന്നതിനെ നിർബന്ധം കൂടാതെ അനുസരിക്കുക എന്നതാണ്. പൈത്തണിൽ, ഹാസ്കൽ, എം.എൽ, ഒ.സി.എം.എൽ പോലുള്ള ഭാഷകളിൽ ടൈപ്പ് ക്ലാസുകളും മൊഡ്യൂൾ സിഗ്നേച്ചറുകളും പ്രോഗ്രാമിൽ ആക്ഷൻ ചെയ്യുന്ന ചില നിർദ്ദേശങ്ങൾ പോലെ പ്രവർത്തിക്കുന്നു. ടൈപ്പ് ക്ലാസുകൾ, മൊഡ്യൂൾ സിഗ്നേച്ചറുകൾ എന്നിവ ഉപയോഗിക്കുന്നതു കൊണ്ട്, പ്രോഗ്രാമിൽ ഉണ്ടായേക്കാവുന്ന പിശകുകൾ മുൻകൂട്ടി കണ്ടെത്താൻ കഴിയും. ഇത് കംപൈൽ ചെയ്യുമ്പോൾ തന്നെ പരിശോധന നടത്തപ്പെടുന്നതിനാൽ, കോഡിന്റെ പെരുമാറ്റം (എങ്ങനെ പ്രവർത്തിക്കും, എന്ത് പിഴവുകൾ ഉണ്ടാകും) എങ്ങനെയായിരിക്കും എന്ന് മനസ്സിലാക്കാൻ കഴിയും. ഇങ്ങനെ, റൺടൈം പിശകുകൾ(runtime-errors) അല്ലെങ്കിൽ പ്രശ്നങ്ങൾ കുറവാകും. റസ്റ്റിൽ ട്രേയിറ്റ്സ്(traits) എന്നത് ഒരു "ജോലി വിവരപത്രം(job description)" പോലെയാണ്. അതിൽ പറയുന്ന പ്രവർത്തനങ്ങൾ സ്ട്രക്ടുകളിൽ(struct) എങ്ങനെ പ്രവർത്തിക്കണമെന്ന് നിർവചിക്കുന്നു. ഉദാഹരണത്തിന്, "study" എന്ന ട്രെയിറ്റ്സ് ഉണ്ടാക്കി, അതിൽ ഒരു `study` എന്ന ഫങ്ഷൻ ചേർത്താൽ, സ്ട്രക്റ്റിൽ അത് നടപ്പാക്കിയാൽ, സ്ട്രക്ട് സ്റ്റഡി ചെയ്യുന്നതിന് വേണ്ടി പ്രവർത്തിക്കും. ഇതിലൂടെ സ്ട്രക്ടുകൾക്ക് ഒരു പോലെ പ്രവർത്തനങ്ങൾ നടത്താൻ കഴിയുന്നുണ്ട്[4]. അവലംബം
|
Portal di Ensiklopedia Dunia