
- بواسطة x32x01 ||
يعني إيه Interface فى OOP وليه مهم؟
اهلا بيك يا مبرمج! هنتكلم عن موضوع مهم جدًا فى البرمجة Object Oriented Programming (OOP)، وهو Interface.هفهمك يعني إيه Interface وليه تم اختراعه أصلاً، وكمان هنتكلم عن علاقته بمبدأ Abstraction.
مثال عملي يوضح Interface
تخيل كده انت صاحب مصنع عربيات، وانت المسؤول عن انك تدي تعليمات عامة للمهندسين اللي معاك، عن الحاجات الأساسية اللي لازم تكون موجودة في كل عربية:- كل عربية لازم يكون فيها فوانيس تنور قدامها
- المهندس بيحدد شكل الفانوس، نوعه، وحجمه حسب نوع العربية
- طول العربية ميكونش أكبر من 2 متر
- كل عربية لازم يكون فيها فتحة سقف
- المهندس بيحدد شكل فتحة السقف حسب نوع العربية
رجوع لـ OOP: معنى Interface
في المثال اللي فات:- انت صاحب المصنع = Interface، بيدي المواصفات اللي لازم تكون موجودة
- المهندس اللي بينفذ المواصفات = Class اللي بيستخدم Interface
مبدأ Abstraction ببساطة
- معناه التجريد: انك تعرض للمستخدم المعلومات الأساسية عن حاجة معينة، لكن تخفي التفاصيل المعقدة
- الهدف: المستخدم يعرف ايه اللي ممكن يعمله بالحاجة دي من غير ما يعرف ازاي هيشتغل جوه النظام
الأنواع الأساسية في Interface
Interface بيحتوي على نوعين رئيسيين:- Methods
- بشكل افتراضي بتكون public وabstract
- مش ليها body، وده معنى انك لازم تعمل implementation فى Class اللي هيستخدم Interface
- Attributes
- بشكل افتراضي public, static, وfinal
- لازم تديله قيمة لأنه final
خصائص Interface فى الجافا
- مفيش constructor فى Interface
- مينفعش تعمل منه object مباشرة
- بيسمح بـ Multiple Inheritance بمعنى ان Class واحد ممكن يعمل implementation لأكتر من Interface
- كأنه عقد بينك وبين اللي هيستخدمه: لازم تنفذ كل Methods الموجودة جوه Interface
ازاى Interface بيشتغل فى الواقع العملي؟
تخيل ان عندك مصنع عربيات والمهندس بيشتغل على تنفيذ المواصفات:- كل Class بيطبق Interface لازم ينفذ كل Methods المطلوبة
- يعني كل عربية هتطلع بالمواصفات الاساسية اللي انت حددتها، بس التنفيذ بيختلف حسب نوع Class
- Interface بيكون بمثابة مخطط لكل Class اللي هتستخدمه
أمثلة عملية على Interface فى الجافا
Java:
interface CarInterface {
void turnOnLights();
void openSunroof();
int getMaxLength();
}
class Sedan implements CarInterface {
public void turnOnLights() {
System.out.println("تركيب فوانيس LED للعربية Sedan");
}
public void openSunroof() {
System.out.println("فتح فتحة سقف بمقاس كبير");
}
public int getMaxLength() {
return 200;
}
}
class Hatchback implements CarInterface {
public void turnOnLights() {
System.out.println("تركيب فوانيس صغيرة للعربية Hatchback");
}
public void openSunroof() {
System.out.println("فتح فتحة سقف صغيرة");
}
public int getMaxLength() {
return 180;
}
}
مميزات استخدام Interface فى OOP
- بيحقق Abstraction وبيخفي التفاصيل المعقدة عن المستخدم
- بيسمح بـ Multiple Inheritance بدون مشاكل
- بيخلي الكود منظم وسهل الصيانة
- بيحدد عقد واضح لكل Class اللي هيستخدمه
- بيسهل على الفرق الكبيرة في المشاريع الكبيرة التعاون بدون مشاكل
الخلاصة
Interface جزء مهم فى البرمجة الكائنية OOP، وبيخليك تتحكم فى الكود بشكل أفضل وتحقق مبدأ Abstraction.باستخدام Interface:
- كل Class بيطبقها لازم ينفذ كل Methods المطلوبة
- بيضمن ان كل العناصر المهمة موجودة ومرنة فى التنفيذ
- بيخلي الكود واضح ومنظم وسهل التعديل مستقبليًا
التعديل الأخير: