سؤال

أنا أعمل حاليًا على إكمال التعليمات البرمجية وتستمر كلمة "الواجهة" في الظهور!أحاول أن أفهم ما هي الواجهة.هل يمكنك تحديد المصطلح؟أيضًا ما الذي يشكل في الواقع "واجهة الفصل"؟

هل كانت مفيدة؟

المحلول

وأعتقد أن وسيلة جيدة لتحديد واجهة على النحو التالي

<اقتباس فقرة>   

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

قد يكون التنفيذ الفعلي من لغة إلى لغة الاختلافات مضحك قليلا ولكن يحمل المبدأ.

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

نصائح أخرى

في عام، واجهة هو مجرد "ما تبدو الطبقة مثل لبقية العالم".

وعلى سبيل المثال، هذه الفئة في جاوة:

class MyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}

ويمكن القول أن يكون مجرد وظيفة المحامين في واجهة. داخليا لديها عدد قليل من الأعضاء الآخرين، ولكنهم الخاص، حتى انهم غير مرئية للعالم الخارجي.

وأكثر شيوعا، واجهات هي أيضا أنواع معينة في اللغة، على سبيل المثال في ما يلي، MyClass تطبق الواجهة IMyClass:

interface IMyClass {
  public void Bar(string s);
}

class MyClass implements IMyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}

ويتم التعبير عن واجهة الآن في التعليمات البرمجية، بحيث أي وقت من المتوقع متغير من نوع IMyClass، كائن من نوع MyClass يمكن استخدامها، لأنها تطبق الواجهة الصحيحة.

وانها الوجه الخارجي للعالم. عادة مجموعة من الطرق العامة (عضوا) أنه يعرض.

ومن الناحية الفنية إلا أنها ستكون 2 أشياء مختلفة

واجهة سيكون عقد العام. منها مثلا.

interface ILogger
{
  void Log(String str);
}

وهناك فئة من شأنه ثم 'تنفيذ' هذه الواجهة - بطريقة قائلا أنه يوفر هذه الوظيفة

class ConsoleLogger : ILogger
{
  public ConsoleLogger() { ... }
  public void Log(String str)
  {
    Console.WriteLine("Console Logger " + str);
  }
  // private stuff
}

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

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

واجهة يمكن أن تشمل البيانات وأعضاء وظيفة.

واجهة هو تعريف مجموعة من الأساليب التي يمكن أن الطبقة تنفيذ. لها تستخدم في الغالب لواجهة تعدد الأشكال.

واجهة مثل فئة ولكن ليس تماما. لديها سمات مشابهة مثل فئة ولكنها ليست واجهة. واجهة لديها المتغيرات والأساليب، "تماما مثل الطبقة ولكن الأساليب أعلن في واجهة هي التي مجردة الافتراضي (فقط توقيع الأسلوب، لا الجسد)".

http://beginnersbook.com/2013/05/java-interface/

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

  1. تشير واجهة الفئات إلى كافة الأساليب العامة المطبقة للفئة.
  2. واجهة كنوع.أي استخدام واجهة الكلمات الرئيسية للإعلان عن واجهة.

    interface Movable{ 
        moveStraight();
        moveLeft();
        moveRight();
        stop();
    }
    

    لنفترض الآن أن فئة Car يمكنها تنفيذ الواجهة المنقولة.وهذا ما يعرف بالعقد.إذا قامت Class Car بتنفيذ واجهة متحركة ، فإن ضمانات السيارات تضمن توفير تطبيقات لجميع الأساليب المعلنة في إعلان Movables.

في الختام، بشكل عام يتم التعامل مع الواجهة كنوع (التعريف 2) في سياق برمجة خاص باللغة.ستجد التعريف الأول في مناسبات أقل عادة في سياق نظري أو تصميمي.

والمثال الكلاسيكي الحياة الحقيقية من واجهة هو الضوابط سيارة.

وفي الشوط الثاني، والغاز، وعجلة ستكون واجهة. ان المحرك وجوانب أخرى mechenical يكون التنفيذ. ويمكن لهذه الجوانب الميكانيكية تغيير، ونحن لن نعرف أنه واجهة لدينا لا يزال هو نفسه.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top