كائن (حوسبة)كائن
الكائن (بالإنجليزية: Object) [1] في علوم الحاسوب، هو أي شيء يمكن التعامل معه بواسطة أوامر لغات البرمجة، مثل القيمة value أو المتغير variable أو الدالة function أو هيكل البيانات data structure. معنى أن كلمة كائن تشير إلى أي كائن حي أو غير حي مثل الإنسان أو السيارة، وهذا الكائن في لغة البرمجة في الحواسيب يمكن إنشائه أو العمل به بواسطة الأكواد البرمجية مثل عمل نافذة window مستكشف الملفات بخصائص جديدة كإضافة لون مختلف لها ووضع قائمة تحرير Edit إضافية في أعلاها. ولكي يتم التغير يجب أن يكون لدينا ما يسمى كلاس Class وهو القالب الرئيسي الذي يتم إستنساخ شكل الناقذه الجديده منه، وهذه النافذة الجديدة هي الكائن الجديد object. ومع طرح البرمجة الشيئية object-oriented programming، أصبحت نفس الكلمة object تشير لشكل معين من أشكال الفئات classes. البرمجة الموجهة بالكائناتفي مجال البرمجة الموجهة بالكائنات، يُنظر للكائن كمجموعة من الخصائص properties (عناصر الكائن) والسلوكيات behaviors (الدوال الفرعية subroutines) التي تغلف كيان معين. وعليه، بينما نرى أن أنواع البيانات البدائية primitive data أو البسيطة عبارة عن معلومات وحيدة، نجد الكائنات في البرمجة الموجهة بالكائنات عبارة عن أنواع معقدة تحمل معلومات متعددة، وخصائص معينة (أو بالإنجليزية: attributes). وبدلاً من الاكتفاء بتعيين قيمة لها (مثل int=10)، يتم بناءها وإنشاءها construction. وفي العالم الواقعي، إذا كان مسدس معين (لنفترض أنه من النوع Colt 45) يمثل كائنًا، لتم تحديد خصائصه المادية ووظيفته في (إطلاق النار) كُلُّ على حده. وبمجرد أن يتم تحديد خصائص هذا الكولت 45 «الكائن» إلى فئة معينة class (سنطلق على هذه الفئة اسم «مسدس»)، عندئذ من الممكن نسخ هذا المسدس إلى ما لا نهاية لإنشاء كائنات مطابقة له لها نفس الشكل والوظيفة. وفي مثال آخر، يُمثل الحيوان فئة أعلى superlcass من الفقاريات، والفقاريات تمثل فئة أعلى من الكائنات البشرية، سيكون أفراد مثل «أحمد كمال» أو «سمير رمضان» أمثلة أو ‘كائنات’ خاصة من الفئة البشرية، ومن ثم تحمل كافة خصائص الفئة البشرية (وبالتالي تحمل خصائص الفقاريات والحيوانات كذلك). وتعد «الكائنات» هي أساس البرمجة الموجهة بالكائنات، وهي تمثل أنواع رئيسية من البيانات في لغات البرمجة الموجهة بالكائنات. وهذه اللغات تقدم دعماً تركيبيًا syntactic ودلاليًا semantic لعملية مناولة الكائنات، ويشمل هذا الدعم النظام الهرمي hierarchical type system، والتنويت الخاص لإعلان واستدعاء المناهج methods، والوسائل لإخفاء حقول مُختارة من المبرمجين العملاء. ورغم ذلك، يمكن تطبيق الكائنات والبرمجة الموجهة بالكائنات في أي لغة من لغات البرمجة. وتُستخدم الكائنات في تطوير البرمجيات لتطبيق هياكل بيانات تجريدية، وذلك من خلال جمع مكوّنات البيانات مع الإجراءات الخاصة بالتعامل معها. وتمثل الكائنات في البرمجة الموجهة بالكائنات شيئاً رئيسيًا في مفهوم الوراثة inheritance؛ ومن ثم فهي تحسن من موثوقية البرنامج [بحاجة لعزو لمصدر], وتبسّط عملية صيانة البرمجيات [بحاجة لعزو لمصدر], وإدارة المكتبات libraries، وتقسيم العمل في فرق المبرمجين. وتُصمم لغات البرمجة الموجهة بالكائنات بصفة عامة لاستثمار وتعزيز هذه المزايا المحتملة لنموذج الكائنات. كما تستطيع الكائنات كذلك أن تجعل من الممكن مناولة كائنات شديدة التباين عن بعضها من خلال نفس النص (الكود) البرمجي، طالما أن كلها يملك الوسيلة المناسبة. خصائص الكائنثمة ثلاث خصائص تسم الكائنات:
آلية الكائنتم طرح المفهوم الحديث لـ «الكائنات» وأسلوب التوجيه بالكائنات في البرمجة بواسطة لغة Simula التي صدرت في عام 1967، والتي نُشر استخدامها Smalltalk بعدها بعامين في 1969، وأصبحت وسائل رئيسية في عالم البرمجة مع انتشار برنامج الـ سي++ والذي صدر في عام 1983. وفي الأسلوب «البحت» للبرمجة الموجهة بالكائنات، يجب الدخول لحقول البيانات الخاصة بالكائن فقط من خلال المناهج (الدّوال الفرعية). وتجعل هذه القاعدة من السهل[بحاجة لمصدر] ضمان بقاء البيانات دوماً في حالة صالحة. ومن الناحية التركيبية syntactic، وفي كافة لغات البرمجة الموجهة بالكائنات، يُستخدم مؤثر النقطة (dot operator) (والذي يوضع بين الكائن واسمه الرمزي) لاستدعاء دالة/منهج معين للكائن. فمثلاً، تأمل فئة حسابية تحمل اسم Arith_Class. هذه الفئة تتضمن دوال مثل add() و subtract() وmultiply() و divide()، تقوم بمعالجة رقمين يُعطيان لها. ويمكن استخدام هذه الفئة لإيجاد مجموع 78 و 69 وذلك في البداية عن طريق إنشاء كائن من الفئة ثم استدعاء طريقة الضرب، وذلك على النحو التالي: 1 int result = 1 ; // Initialization 2 arith_Obj1 = new Arith_Class(); // Creating a new object of Arith_Class 3 result = arith_Obj1.multiply(78,69); // returned value of multiply function, store in result variable. وفي أي لغة يتم فيها إنشاء كائن من فئة معينة، يُطلق على هذا الكائن اسم تجسيد instance لهذه الفئة. فإذا كان لكل كائن نوع type، فإن أي كائنين من نفس الفئة سيكون لهما نفس نوع البيانات data type. ويشار لإنشاء أي نموذج من أي فئة عملية إنشاء تجسيد instantiating من الفئة. ومن الأمثلة الواقعية على الكائنات عبارة «كلبي» my dog، والتي تعد تجسيدًا لنوع (فئة) تُسمى «كلب»، وهي فئة فرعية subclass للفئة «حيوان». وفي حالة الكائنات متنوعة الشكل polymorphic، يمكن تجاهل بعض تفاصيل نوعها بشكل انتقائي. فمثلاً يمكن أن يُستخدم الكائن «كلب» بواسطة دالة تبحث عن «حيوان ما». ونفس الأمر ممكن مع «قطة»، نظرًا لأنها تنتمي أيضًا إلى الفئة «حيوان». ورغم أن الدخول عليها يتم كـ «حيوان»، فإن بعض الخصائص المعينة الخاصة بـ «الكلب» أو «القطة» ستظل غير متوافرة، مثل خاصية «الذيل»، نظرًا لأنه ليس كل الحيوانات لها ذيول. و ‘الشبح’ هو كائن ليس له إشارة مرجعية unreferenced في أي برنامج، ومن ثم فهو لا يخدم أي غرض. وفي اللغات التي تحمل خاصية تجميع القمامة (التخلص من الملفات الزائدة)، يقوم جامعة القمامة garbage collector، بتعليم مكان الذاكرة المشغول بالكائن على أنه خال، رغم أنه يظل حاملاً للبيانات الخاصة بالكائن لحين أن يشغل المكان كائن أخرى يقوم بالكتابة الفوقية overwriting عليه. الكائنات المتخصصةثمة كائنات متخصصة مُعينة يمكن إنشاءها من خلال نمط التصميم Design pattern والتي تُستخدم لإنشائها، وعادة ما تتم تسمية هذه الكائنات على اسم أنماط تصميمها نفسها. وفيما يلي بعض المصطلحات الخاصة بالأنواع المتخصصة من الكائنات:
الكائنات في الحوسبة الموزّعةيمكن نقل تعريف الكائن باعتباره كيان يحمل هوية وحالة وسلوك مميز، وبجانب مبدأ التغليف encapsulation، إلى مجال الحوسبة الموزّعة. ومن التناقضات أن التغليف لا يمتد ليشمل سلوك الكائنات نظرًا لأنها (أو حتى أسماء المناهج الخاصة بها) لا تحمل أرقام تسلسلية serials بجانب البيانات. وقد اقتُرح وضع عدد من التوسعات للمفهوم الأساسي للكائن والتي تتقاسم هذه الخصائص المشتركة التالية:
وبعض هذه الامتدادات، مثل الكائنات الموزّعة distributed objects وكائنات البروتوكول protocol objects، هي مصطلحات محدودة بنطاق معين وذلك لأنواع خاصة من الكائنات «العادية» المُستخدمة في سياق معين (مثل الاستدعاء عن بعد remote invocation وتركيب البروتوكول protocol composition). فيما كائنات أخرى، مثل الكائنات المنسوخة والكائنات الموزّعة الحيّة، تأتي أكثر انحرافًا عن المعايير، وذلك من حيث أنها تتخلى عن فرضية أن الكائن يسكن موقع معين في لحظة معينة، وتطبق مفهوم الجماعات على الكيانات (النُسخ) التي قد تسكن مواقع متعددة، وليس لها سوى حالة ضعيفة الاتساق، وعضويتها قد تتغير ديناميكيًا. الكائنات والويب الدلالييرى البعض إمكانية النظر للويب الدلالي semantic web كإطار من كائنات البيانات المُوزّعة، ومن ثم كإطار موجهه بالكائنات.[3][4] بيد أن الكائنات الموزعة تُعتبر كائنات «عادية» وليس كائنات موجهة بالكائنات لأنها منفصلة عن مناهجها methods التي سبق وأن غُلفّت معها في السابق. كما يقال كذلك أنه من المناسب استخدام مخطط لغة نمذجة محددة (UML) للتعبير عن رسم ويب دلالي. وكلا من الويب الدلالي والبرمجة الموجّهة بالكائنات تحمل:
وفوق ذلك، تطرح البيانات المرتبطة Linked Data أيضًا مُعرّفات الموارد الموحدة القابلة للإحالة المرجعية Dereferenceable Uniform Resource Identifiers، والتي توفر البيانات حسب الإحالات المرجعية data-by-reference والموجودة في البرمجة الموجهة بالكائنات وقواعد البيانات المُوجّهة بالكائنات على هيئة مُعرّفات كائنات. المراجع
|
Portal di Ensiklopedia Dunia