ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷ

(OOP എന്ന താളിൽ നിന്നും തിരിച്ചുവിട്ടതു പ്രകാരം)

ആശയങ്ങൾ വസ്തുക്കളായി പ്രതിനിധാനം ചെയ്യപ്പെടുന്ന കമ്പ്യൂട്ടർ പ്രോഗ്രാമിങ് ഭാഷകളാണ് ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷകൾ. ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ്ങിലെ വസ്തുക്കൾ ഡാറ്റാഫീൽഡു(data field)കളും അവയുമായി ബന്ധപ്പെട്ട, മെത്തേഡുകൾ എന്ന് അറിയപ്പെടുന്ന പ്രക്രിയകളും ഉൾപ്പെടുന്നതാണ്. ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ്ങിന്റെ കരട് ആശയങ്ങൾ ആദ്യമായി രൂപം കൊണ്ടത് 1960 കളിൽ എം ഐ റ്റി(Massachsets Institute Of Technology) കൃത്രിമ ബുദ്ധി (Artificial Intelligence) ലാബിൽ നിന്നാണ്. ലിസ്പ് (LISP) ഭാഷയിലാണ് ഇതിന്റെ ചില സങ്കേതങ്ങൾ ആദ്യമായി പ്രാവർത്തികമാക്കിയതെങ്കിലും ആദ്യത്തെ സമ്പൂർണ്ണ ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷ എന്ന് അറിയപ്പെടുന്നത് സ്മാൾ ടാക് (Smalltalk) ആണ്.

ഒരു ക്ലാസിനുള്ള UML നൊട്ടേഷൻ. ഈ ബട്ടൺ ക്ലാസിൽ ഡാറ്റയ്ക്കും ഫംഗ്ഷനുകൾക്കുമായി വേരിയബിളുകൾ ഉണ്ട്. ഇൻഹെറിന്റസിലൂടെ, ബട്ടൺ ക്ലാസിൻ്റെ ഒരു ഉപവിഭാഗമായി വേറൊരു ഉപവിഭാഗം സൃഷ്ടിക്കാൻ കഴിയും. ഒബ്ജക്റ്റുകൾ ഒരു ക്ലാസിൻ്റെ ഉദാഹരണങ്ങളാണ്.

ഒബ്ജക്റ്റുകളുടെ ഒരു സവിശേഷത, ഒരു വസ്തുവിന്റെ സ്വന്തം നടപടിക്രമങ്ങൾക്ക് അതിന്റേതായ ഡാറ്റാ ഫീൽഡുകൾ ആക്സസ് ചെയ്യാനും പലപ്പോഴും പരിഷ്കരിക്കാനും കഴിയും (വസ്തുക്കൾക്ക് ഇപ്രകാരമുള്ള നോട്ടേഷനുകൾ ഉപയോഗിക്കുന്നുthis or self). ഊപ്(OOP), കമ്പ്യൂട്ടർ പ്രോഗ്രാമുകൾ രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത് അവ പരസ്പരം ഇടപഴകുന്ന ഒബ്‌ജക്റ്റുകളിൽ നിന്നാണ്.[1][2] ഊപ്സ് ഭാഷകൾ‌ വൈവിധ്യമാർ‌ന്നതാണ്, പക്ഷേ ഏറ്റവും പ്രചാരമുള്ളവ ക്ലാസ് അധിഷ്ഠിതമാണ്, അതായത് വസ്തുക്കൾ‌ ക്ലാസുകളുടെ ഉദാഹരണങ്ങളാണ്, അവ അവയുടെ തരങ്ങളും(types) നിർ‌ണ്ണയിക്കുന്നു.

ഏറ്റവും വ്യാപകമായി ഉപയോഗിക്കുന്ന പല പ്രോഗ്രാമിംഗ് ഭാഷകളും (സി++, ജാവ, പൈത്തൺ മുതലായവ) മൾട്ടി-പാരഡിഗം ആണ്, അവ ഒബ്ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിംഗിനെ ഗ്രേറ്റർ അല്ലെങ്കിൽ ലേസ്സർ ആയി പിന്തുണയ്ക്കുന്നു, സാധാരണ പ്രോസീജിറൽ പ്രോഗ്രാമിംഗ്, ഇംമ്പറേറ്റീവ് പ്രോഗ്രാമിംഗ് എന്നിവയുടെ സംയോജനമാണ്. ജാവ,പിഎച്ച്പി, സി ഷാർപ്പ്(C#), സി++, പൈത്തൺ, ആർ(R),വിഷ്വൽ ബേസിക്ക്.നെറ്റ്, ജാവാസ്ക്രിപ്റ്റ്, റൂബി, പേൾ, ഒബജക്ട് പാസ്കൽ, ഒബജക്ടീവ് സി, ഡാർട്ട്, സ്വിഫ്റ്റ്, സ്കാല,കോട്ലിൻ,കോമൺ ലിസ്പ്,മാറ്റ്ലാബ് എന്നിവയാണ് ഇപ്പോൾ കൂടുതൽ പ്രചാരത്തിലുള്ള ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷകൾ.[3]

ചരിത്രം

തിരുത്തുക

ആധുനിക ഒബ്ജക്റ്റ്-ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗിൽ ഉപയോഗിക്കുന്ന "വസ്തുക്കൾ" എന്ന പദം 1950-കളുടെ അവസാനത്തിലും 1960-കളുടെ തുടക്കത്തിലും എംഐടിയുടെ ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് ഗ്രൂപ്പിൽ പ്രത്യക്ഷപ്പെട്ടു. അക്കാലത്ത്, "വസ്തു" എന്നത് ലിസ്പ് ആറ്റങ്ങളെ പരാമർശിച്ചു, അവയ്ക്ക് പ്രത്യേക ആട്രിബ്യൂട്ടുകളോ പ്രോപ്രട്ടികളോ ഉൾപ്പെടുത്തിയിരിക്കുന്നു[4][5]. 1960-1961 കാലഘട്ടത്തിൽ എംഐടിയിൽ ഇവാൻ സതർലാൻഡ് സൃഷ്ടിച്ച സ്കെച്ച്പാഡ്, ഒബ്ജക്റ്റ് ഓറിയൻ്റഡ് ആശയങ്ങളുടെ ആദ്യകാല ഉദാഹരണമായിരുന്നു. തൻ്റെ 1963-ലെ സാങ്കേതിക റിപ്പോർട്ടിൽ, ഗ്രാഫിക്കൽ ഇൻ്ററാക്ഷനുമായി ബന്ധപ്പെട്ട് സതർലാൻഡ് "ഒബജക്ട്", "ഇൻസ്റ്റൻസ്(instance)" തുടങ്ങിയ പദങ്ങൾ അവതരിപ്പിച്ചു. ഒരു "മാസ്റ്റർ" അല്ലെങ്കിൽ "ഡെഫനിക്ഷൻ" എന്ന ആശയവും അദ്ദേഹം വിവരിച്ചു, അത് ഒരു ക്ലാസിൻ്റെ ആധുനിക ആശയത്തിന് സമാനമാണ്. ഈ ആശയങ്ങൾ അക്കാലത്ത് ഗ്രാഫിക്സിന് മാത്രമായിരുന്നുവെങ്കിലും, പിന്നീട് അവ ഒബ്ജക്റ്റ് ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗിൻ്റെ അടിസ്ഥാനമായി[6]. 1968-ൽ, എംഐടിയിൽ വികസിപ്പിച്ച എഇഡി-0(AED-0) എന്ന പ്രോഗ്രാമിംഗ് ഭാഷാ പതിപ്പ്, ഡാറ്റാ ഘടനകളും അവയിൽ പുതിയ രീതിയിൽ നടപ്പിലാക്കാൻ കഴിയുന്ന പ്രവർത്തനങ്ങളും ബന്ധിപ്പിച്ചു. "പ്ലെക്സുകൾ" എന്ന് വിളിക്കപ്പെടുന്ന കാര്യങ്ങളിൽ ഡാറ്റ സംഭരിച്ചു, ഇവ നിർദ്ദേശങ്ങളോ പ്രവർത്തനങ്ങളോ പോലെയുള്ള നടപടിക്രമങ്ങളുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു. കോഡിലെ ഒബ്‌ജക്റ്റുകൾക്ക് ഡാറ്റയും പ്രവർത്തനങ്ങളും ഒരുമിച്ച് ചേർക്കാൻ കഴിയുന്ന ആധുനിക പ്രോഗ്രാമിംഗിൽ നമ്മൾ ഇപ്പോൾ "മെത്തേഡ്സ്" അല്ലെങ്കിൽ "ഫങ്ഷൻസ്" എന്ന് വിളിക്കുന്നതിൻ്റെ ആദ്യകാല പതിപ്പായിരുന്നു ഈ ആശയം. മോഡുലാർ, പുനരുപയോഗിക്കാവുന്ന കോഡ് സൃഷ്ടിക്കുന്നതിനും വേണ്ടി ഒടുവിൽ സ്വാധീനിക്കപ്പെട്ട ഒബ്ജക്റ്റ്-ഓറിയൻ്റഡ് പ്രോഗ്രാമിംഗ് (OOP) എന്നിവയ്ക്കും ഈ ആശയങ്ങൾ പ്രധാനമാണ്, അവിടെ എല്ലാം പരസ്പരം ഇടപഴകാൻ കഴിയുന്ന ഒബ്‌ജക്റ്റുകളായി ക്രമീകരിച്ചിരിക്കുന്നു[7][8].

സവിശേഷതകൾ

തിരുത്തുക

ഒബ്‌ജക്റ്റ് ഓറിയെന്റഡ് പ്രോഗ്രാമിംഗിൽ ഒബ്‌ജക്റ്റുകൾ ഉപയോഗിക്കുന്നു, എന്നാൽ ഊപ് പിന്തുണയ്ക്കുന്നുവെന്ന് അവകാശപ്പെടുന്ന ഭാഷകളിൽ ബന്ധപ്പെട്ട എല്ലാ സാങ്കേതികതകളും ഘടനകളും നേരിട്ട് പിന്തുണയ്ക്കുന്നില്ല. ശ്രദ്ധേയമായ ഒഴിവാക്കലുകൾക്കൊപ്പം ചുവടെ ലിസ്റ്റുചെയ്‌തിരിക്കുന്ന സവിശേഷതകൾ ശക്തമായ ക്ലാസ്- ഒബ്‌ജക്റ്റ്-ഓറിയന്റഡ് (അല്ലെങ്കിൽ ഊപ്സ് പിന്തുണയുള്ള മൾട്ടി-പാരഡിഗം) ആയി കണക്കാക്കപ്പെടുന്ന ഭാഷകളിൽ സാധാരണമാണ്.[9][10][11][12]

ഇതും കാണുക: പ്രോഗ്രാമിംഗ് ഭാഷകളുടെ താരതമ്യം (ഒബ്ജക്റ്റ്-ഓറിയന്റഡ് പ്രോഗ്രാമിംഗ്) ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിംഗ് പദങ്ങളുടെ പട്ടിക

ഊപ് ഇതര ഭാഷകളുമായുള്ള പങ്കിടൽ

തിരുത്തുക
  • പൂർണ്ണസംഖ്യകളും ആൽഫാന്യൂമെറിക് പ്രതീകങ്ങളും പോലുള്ള അന്തർനിർമ്മിത ഡാറ്റ തരങ്ങളിൽ ഫോർമാറ്റുചെയ്‌ത വിവരങ്ങൾ സംഭരിക്കാൻ കഴിയുന്ന വേരിയബിളുകൾ. മെമ്മറി പോയിന്ററുകൾ ഉപയോഗിച്ച് വേരിയബിളുകൾ സംയോജിപ്പിക്കുന്നതിന്റെ ഫലമായി അന്തർനിർമ്മിതമായ അല്ലെങ്കിൽ സ്ട്രിംഗുകൾ, ലിസ്റ്റുകൾ, ഹാഷ് ടേബിളുകൾ എന്നിവ പോലുള്ള ഡാറ്റാ ഘടനകൾ ഇതിൽ ഉൾപ്പെട്ടേക്കാം.
  • പ്രോസീജീഴേസ് - ഫംഗ്ഷനുകൾ, രീതികൾ, റുട്ടീനുകൾ അല്ലെങ്കിൽ സബ്റൂട്ടീനുകൾ എന്നും അറിയപ്പെടുന്നു - അവ ഇൻപുട്ട് എടുക്കുകയും ഔട്ട്പുട്ട് സൃഷ്ടിക്കുകയും ഡാറ്റ കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നു. ആധുനിക ഭാഷകളിൽ ലൂപ്പുകളും കണ്ടീഷണലുകളും പോലുള്ള സ്ട്രക്ചേർഡ് പ്രോഗ്രാമിങ് കൺസ്ട്രക്ടറുകളും ഉൾപ്പെടുന്നു[13][14].
  1. Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems: 313–343. {{cite journal}}: Cite journal requires |journal= (help)
  2. Lewis, John; Loftus, William (2008). Java Software Solutions Foundations of Programming Design 6th ed. Pearson Education Inc. ISBN 978-0-321-53205-3., section 1.6 "Object-Oriented Programming"
  3. "ആർക്കൈവ് പകർപ്പ്". Archived from the original on 2018-10-19. Retrieved 2013-01-11.
  4. McCarthy, J.; Brayton, R.; Edwards, D.; Fox, P.; Hodes, L.; Luckham, D.; Maling, K.; Park, D.; Russell, S. (March 1969). "LISP I Programmers Manual" (PDF). Computation Center and Research Laboratory of Electronics. Boston, Massachusetts: Artificial Intelligence Group, M.I.T. Computation Center and Research Laboratory: 88f. Archived from the original (PDF) on 17 July 2010. In the local M.I.T. patois, association lists [of atomic symbols] are also referred to as "property lists", and atomic symbols are sometimes called "objects".
  5. McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, swapnil d.; Levin, Michael I. (1962). LISP 1.5 Programmer's Manual. MIT Press. p. 105. ISBN 978-0-262-13011-0. Object — a synonym for atomic symbol
  6. Ivan E. Sutherland (May 1963). Sketchpad: a man-machine graphical communication system. AFIPS '63 (Spring): Proceedings of the May 21–23, 1963 Spring Joint Computer Conference. AFIPS Press. pp. 329–346. doi:10.1145/1461551.1461591.
  7. Kristen Nygaard; Ole-Johan Dahl (August 1, 1978). "The development of the SIMULA languages". ACM SIGPLAN Notices. 13 (8): 245–272. doi:10.1145/960118.808391.
  8. Ross, Doug. "The first software engineering language". LCS/AI Lab Timeline. MIT Computer Science and Artificial Intelligence Laboratory. Retrieved 13 May 2010.
  9. Deborah J. Armstrong. The Quarks of Object-Oriented Development. A survey of nearly 40 years of computing literature which identified a number of fundamental concepts found in the large majority of definitions of OOP, in descending order of popularity: Inheritance, Object, Class, Encapsulation, Method, Message Passing, Polymorphism, and Abstraction.
  10. John C. Mitchell, Concepts in programming languages, Cambridge University Press, 2003, ISBN 0-521-78098-5, p.278. Lists: Dynamic dispatch, abstraction, subtype polymorphism, and inheritance.
  11. Michael Lee Scott, Programming language pragmatics, Edition 2, Morgan Kaufmann, 2006, ISBN 0-12-633951-1, p. 470. Lists encapsulation, inheritance, and dynamic dispatch.
  12. Pierce, Benjamin (2002). Types and Programming Languages. MIT Press. ISBN 978-0-262-16209-8., section 18.1 "What is Object-Oriented Programming?" Lists: Dynamic dispatch, encapsulation or multi-methods (multiple dispatch), subtype polymorphism, inheritance or delegation, open recursion ("this"/"self")
  13. McCarthy, J.; Brayton, R.; Edwards, D.; Fox, P.; Hodes, L.; Luckham, D.; Maling, K.; Park, D.; Russell, S. (March 1969). "LISP I Programmers Manual" (PDF). Computation Center and Research Laboratory of Electronics. Boston, Massachusetts: Artificial Intelligence Group, M.I.T. Computation Center and Research Laboratory: 88f. Archived from the original (PDF) on 17 July 2010. In the local M.I.T. patois, association lists [of atomic symbols] are also referred to as "property lists", and atomic symbols are sometimes called "objects".
  14. McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, swapnil d.; Levin, Michael I. (1962). LISP 1.5 Programmer's Manual. MIT Press. p. 105. ISBN 978-0-262-13011-0. Object — a synonym for atomic symbol