واجهة (حوسبة)

في مجال الحوسبة، تُعرَّف الواجهة بأنها حدود مشتركة يتبادل عبرها مكونان أو أكثر من مكونات نظام الحاسوب المعلومات. ويمكن أن يكون هذا التبادل بين البرمجيات ، أو أجهزة الحاسوب ، أو الأجهزة الطرفية ، أو المستخدمين ، أو مزيج من هذه العناصر. [ 1 ] بعض أجهزة الحاسوب، مثل شاشة اللمس، قادرة على إرسال واستقبال البيانات عبر الواجهة، بينما قد توفر أجهزة أخرى، مثل الفأرة أو الميكروفون، واجهة لإرسال البيانات إلى نظام معين فقط. [ 2 ]

واجهات الأجهزة

واجهات الأجهزة في جهاز كمبيوتر محمول : مقبس شبكة إيثرنت (في المنتصف)، إلى اليسار جزء من منفذ VGA ، إلى اليمين (أعلى) مقبس منفذ العرض ، إلى اليمين (أسفل) مقبس USB -A.

توجد واجهات الأجهزة في العديد من المكونات، مثل ناقلات البيانات المختلفة ، وأجهزة التخزين ، وأجهزة الإدخال/الإخراج الأخرى ، وما إلى ذلك. تُوصف واجهة الأجهزة بالإشارات الميكانيكية والكهربائية والمنطقية عند الواجهة، وبروتوكول تسلسلها (يُسمى أحيانًا الإشارة). [ 3 ] تعمل الواجهة القياسية، مثل SCSI ، على فصل تصميم وإدخال أجهزة الحوسبة، مثل أجهزة الإدخال/الإخراج ، عن تصميم وإدخال المكونات الأخرى لنظام الحوسبة، مما يتيح للمستخدمين والمصنعين مرونة كبيرة في تنفيذ أنظمة الحوسبة. [ 3 ] يمكن أن تكون واجهات الأجهزة متوازية ، حيث تنقل عدة وصلات كهربائية أجزاءً من البيانات في وقت واحد، أو تسلسلية، حيث تُرسل البيانات بتًا واحدًا في كل مرة. [ 4 ]

واجهات البرامج

قد تشير واجهة البرمجيات إلى مجموعة واسعة من أنواع الواجهات المختلفة على مستويات متعددة. على سبيل المثال، قد يتفاعل نظام التشغيل مع مكونات مادية. وقد تحتاج التطبيقات أو البرامج التي تعمل على نظام التشغيل إلى التفاعل عبر تدفقات البيانات ، والمرشحات، وخطوط المعالجة. [ 5 ] في البرامج الموجهة للكائنات ، قد تحتاج الكائنات داخل التطبيق إلى التفاعل عبر الدوال . [ 6 ]

عملياً

من المبادئ الأساسية للتصميم منع الوصول إلى جميع الموارد افتراضيًا، والسماح بالوصول فقط من خلال نقاط دخول محددة جيدًا، أي الواجهات. [ 7 ] توفر واجهات البرامج إمكانية الوصول إلى موارد الحاسوب (مثل الذاكرة، ووحدة المعالجة المركزية، والتخزين، وما إلى ذلك) لنظام الحاسوب الأساسي؛ ويمكن أن يكون للوصول المباشر (أي ليس من خلال واجهات مصممة جيدًا) إلى هذه الموارد بواسطة البرامج عواقب وخيمة - بل كارثية في بعض الأحيان - على الأداء والاستقرار.

يمكن أن توفر الواجهات بين مكونات البرمجيات الثوابت وأنواع البيانات وأنواع الإجراءات ومواصفات الاستثناءات وتوقيعات الأساليب . في بعض الأحيان، يتم تعريف المتغيرات العامة أيضًا كجزء من الواجهة. [ 8 ]

تُعرَّف واجهة وحدة برمجية ( أ) بشكل منفصل عن تنفيذها . يحتوي التنفيذ على الشيفرة الفعلية للإجراءات والأساليب الموصوفة في الواجهة، بالإضافة إلى متغيرات وإجراءات أخرى "خاصة". تُجبر وحدة برمجية أخرى (ب) ، على سبيل المثال عميل ( أ) ، تتفاعل مع (أ) فقط من خلال الواجهة المنشورة. من المزايا العملية لهذا الترتيب أن استبدال تنفيذ ( أ) بتنفيذ آخر لنفس الواجهة لا يُفترض أن يُسبب فشل (ب) ، إذ أن كيفية تلبية (أ) داخليًا لمتطلبات الواجهة لا تهم ( ب) ، التي لا تُعنى إلا بمواصفات الواجهة. (انظر أيضًا مبدأ استبدال ليسكوف ).

في لغات البرمجة الكائنية التوجه

في بعض لغات البرمجة كائنية التوجه ، وخاصةً تلك التي لا تدعم الوراثة المتعددة الكاملة ، يُستخدم مصطلح " الواجهة" لتعريف نوع مجرد يعمل كتجريد لفئة . لا تحتوي الواجهة على بيانات، ولكنها تُعرّف السلوكيات كتوقيعات للدوال . يُقال إن الفئة التي تحتوي على شيفرة وبيانات لجميع الدوال المقابلة لتلك الواجهة، والتي تُعلن عنها، تُنفّذ تلك الواجهة. [ 9 ] علاوة على ذلك، حتى في لغات الوراثة الأحادية، يُمكن تنفيذ واجهات متعددة، وبالتالي يُمكن أن تكون من أنواع مختلفة في الوقت نفسه. [ 10 ]

تُعدّ الواجهة تعريفًا للنوع ؛ ففي أي مكان يُمكن فيه استبدال كائن (مثلاً، في استدعاء دالة أو أسلوب )، يُمكن تعريف نوع الكائن المراد استبداله بدلالة إحدى واجهاته المُطبقة أو فئاته الأساسية، بدلاً من تحديد الفئة المُحددة . هذا يعني إمكانية استخدام أي فئة تُطبق تلك الواجهة. على سبيل المثال، يُمكن استخدام تطبيق وهمي للسماح بتقدم عملية التطوير قبل توفر التطبيق النهائي. في حالة أخرى، يُمكن استبدال تطبيق مُزيّف أو مُحاكي أثناء الاختبار. تُستبدل هذه التطبيقات الوهمية بشفرة حقيقية لاحقًا في عملية التطوير.

عادةً، لا تحتوي الدالة المُعرَّفة في واجهة برمجية على أي شيفرة، وبالتالي لا يمكن استدعاؤها مباشرةً؛ بل يجب تنفيذها بواسطة شيفرة غير مجردة ليتم تشغيلها عند استدعائها. قد تُعرِّف واجهة تُسمى " " دالتين: و . يمكن تنفيذها بطرق مختلفة، على سبيل المثال، و - الأولى سريعة، وتعمل مع بنية بيانات ذات حجم ثابت، والثانية تستخدم بنية بيانات قابلة لتغيير الحجم، ولكن على حساب سرعة أقل نوعًا ما.Stackpush()pop()FastStackGenericStack

على الرغم من أن الواجهات قد تحتوي على العديد من الدوال، إلا أنها قد تحتوي على دالة واحدة فقط أو حتى لا تحتوي على أي دوال على الإطلاق. على سبيل المثال، تُعرّف لغة جافا واجهة تحتوي على دالة واحدة؛ وتُستخدم تطبيقات مختلفة لأغراض متنوعة، بما في ذلك و و و و . أما واجهات العلامات مثل فلا تحتوي على أي دوال على الإطلاق، وتُستخدم لتوفير معلومات وقت التشغيل للمعالجة العامة باستخدام الانعكاس . [ 11 ]Readableread()BufferedReaderFileReaderInputStreamReaderPipedReaderStringReaderSerializable

البرمجة للواجهة

يُتيح استخدام الواجهات أسلوب برمجة يُسمى البرمجة وفقًا للواجهة . تقوم فكرة هذا الأسلوب على بناء منطق البرمجة على واجهات الكائنات المستخدمة، بدلاً من تفاصيل التنفيذ الداخلية. تُقلل البرمجة وفقًا للواجهة من الاعتماد على تفاصيل التنفيذ وتجعل الكود أكثر قابلية لإعادة الاستخدام. [ 12 ]

وبدفع هذه الفكرة إلى أقصى حد، فإن عكس التحكم يترك السياق لحقن الكود بالتطبيقات المحددة للواجهة التي سيتم استخدامها لأداء العمل.

واجهات المستخدم

واجهة المستخدم هي نقطة تفاعل بين الكمبيوتر والبشر؛ وهي تشمل أي عدد من طرائق التفاعل (مثل الرسومات والصوت والموقع والحركة وما إلى ذلك) حيث يتم نقل البيانات بين المستخدم ونظام الكمبيوتر.

انظر أيضاً

مراجع

  1. هوكواي، ب. (2014). "الفصل 1: موضوع الواجهة". واجهة . مطبعة معهد ماساتشوستس للتكنولوجيا. ص 1-58 . ISBN  9780262525503.
  2. IEEE 100 - القاموس المرجعي لمصطلحات معايير IEEE . نيويورك، نيويورك، الولايات المتحدة الأمريكية: مطبعة IEEE. 2000. الصفحات 574-575 . ISBN  9780738126012.
  3. 1 2 بلاو، جيريت أ.؛ بروكس، الابن، فريدريك ب. (1997)، "الفصل 8.6، واجهات الأجهزة"، هندسة الحاسوب - المفاهيم والتطور ، أديسون-ويسلي، ص 489-493 ، ISBN  0-201-10557-8 انظر أيضًا: باترسون، ديفيد أ.؛ هينيسي، جون ل. (2005)، "الفصل 8.5، ربط أجهزة الإدخال/الإخراج بالمعالج والذاكرة ونظام التشغيل"، تنظيم وتصميم الحاسوب - واجهة الأجهزة/البرمجيات، الطبعة الثالثة ، مورغان كوفمان، الصفحات 588-596 ، رقم ISBN  1-55860-604-1
  4. جوفينداراجالو، ب. (2008). "3.15 واجهات ووحدات تحكم الأجهزة الطرفية - دليل عام" . أجهزة الكمبيوتر الشخصية من IBM وأجهزة الكمبيوتر المقلدة: الأجهزة، واستكشاف الأخطاء وإصلاحها، والصيانة . شركة تاتا ماكجرو هيل للنشر المحدودة. الصفحات 142-144 . ISBN  9780070483118تم الاطلاع عليه بتاريخ 15 يونيو 2018 .
  5. بويا، ر. (2013). إتقان الحوسبة السحابية . دار تاتا ماكجرو هيل للتعليم. ص 2.13. ISBN  9781259029950.
  6. بو، د.؛ كيونغ، د.؛ أشوك، س. (2008). "الفصل 2: ​​الكائن، والفئة، والرسالة، والطريقة". البرمجة الكائنية التوجه وجافا . سبرينغر-فيرلاغ. ص 7-15 . ISBN  9781846289637.
  7. بيل فينرز (2005-06-06). "جافا المتطورة: مبادئ التصميم من أنماط التصميم: البرمجة وفقًا للواجهة، وليس التنفيذ - حوار مع إريك جاما، الجزء الثالث" . مطور أرتيما . مؤرشف من الأصل في 2011-08-05 . تم الاسترجاع في 2011-08-03 . بمجرد الاعتماد على الواجهات فقط، ينفصل التطبيق عن التنفيذ. هذا يعني أن التنفيذ يمكن أن يختلف، وهذه علاقة تبعية صحية. على سبيل المثال، لأغراض الاختبار، يمكنك استبدال تطبيق قاعدة بيانات ثقيل بتطبيق وهمي أخف وزنًا. لحسن الحظ، مع دعم إعادة البناء اليوم، لم تعد مضطرًا إلى ابتكار واجهة مسبقًا. يمكنك استخلاص واجهة من فئة ملموسة بمجرد حصولك على فهم كامل للمشكلة. الواجهة المقصودة هي مجرد إعادة بناء واحدة باستخدام "استخراج الواجهة". ...
  8. باترسون، د.أ.؛ هينيسي، ج.ل. (7 أغسطس 2004). تنظيم وتصميم الحاسوب: واجهة الأجهزة/البرمجيات ( الطبعة الثالثة). إلسيفير. ص 656. ISBN   9780080502571.
  9. "ما هي الواجهة؟" . دروس جافا . أوراكل. مؤرشف من الأصل بتاريخ 12 أبريل 2012. تم الاطلاع عليه بتاريخ 1 مايو 2012 .
  10. "الواجهات" . دروس جافا . أوراكل. مؤرشف من الأصل بتاريخ 26-05-2012 . تم الاطلاع عليه بتاريخ 01-05-2012 .
  11. "تقنيات تحسين الأداء في التسلسل" . Precise Java. مؤرشف من الأصل بتاريخ 24-08-2011 . تم الاطلاع عليه بتاريخ 04-08-2011 . سنتحدث مبدئيًا عن واجهة Serializable. هذه واجهة تعريفية ولا تحتوي على أي توابع.
  12. جاما؛ هيلم؛ جونسون؛ فليسيدس (1995). أنماط التصميم: عناصر البرمجيات القابلة لإعادة الاستخدام والموجهة للكائنات . أديسون ويسلي. ص 17-18 . ISBN  9780201633610.