إذا كنت تستطيع قيادة سيارة ركاب بأربعة أبواب ، فيمكنك أيضًا قيادة شاحنة صغيرة. إذا كنت تقود سيارة بمحرك احتراق ، فيمكنك أيضًا قيادة سيارة كهربائية.
قد يختلف شكل وحجم سيارات الركاب من سيارة إلى أخرى. قد يكون المحرك الذي يدير تلك المركبات مختلفًا تمامًا أيضًا. لكن لا يهم السائق.
ما عليك سوى الدخول ، ربط حزام الأمان ، تشغيل السيارة ، تعشيقها ، والقيادة. هذا لأن السيارات والشاحنات والشاحنات الصغيرة متعدد الأشكال.
تعدد الأشكال: كسرها
دعونا نلقي نظرة على كلمة تعدد الأشكال. يمكنك تقسيمها إلى بولي, يتحول، و ISM.
بولي يعني العديد ، مثل كيف يعني المضلع العديد من الزوايا. عندما تستخدم كاسم ، أ يتحول هو نوع من الأنواع. و ISM يمكن أن يعني النظام.
لذا فإن تعدد الأشكال يعني ببساطة نظامًا للعديد من الاختلافات. هذا لا يزال لا يخبرك كثيرًا عن كيفية استخدامه في البرمجة. هذا التالي.
إذا كان يمشي مثل البطة... لماذا تعتبر الكائنات متعددة الأشكال رائعة
عندما تقوم بإنشاء فئة في التعليمات البرمجية الخاصة بك ترث من فئة أخرى ، فأنت تقوم بربط الفئة الجديدة بعقد. ينص العقد على أن كل متغير ووظيفة في الوالد سيكونان أيضًا في الطفل.
تحتوي كل مركبة على عجلة قيادة ودواسات غاز وفرامل وإشارة انعطاف. لا تحتاج إلى فتح غطاء المحرك لقيادة السيارة. كل ما يهم هو أنها سيارة.
نفس الشيء ينطبق على الطبقات التي ترث من الطبقات الأخرى. فيما يلي مثال في TypeScript:
فئة مركبة {
محرك _ خاص: سلسلة ؛
إطارات خاصة: رقم ؛
المُنشئ (engine: string = "combustion"، الإطارات: number = 4) {
this._engine = المحرك ؛
this._tires = الإطارات ؛
}
تسريع (سرعة: رقم) {
console.log ("التسارع بسرعة" + السرعة) ؛
}
الفرامل (الضغط: العدد) {
console.log ("تطبيق" + الضغط + "الضغط") ؛
}
انعطف لليسار() {
console.log ("الانعطاف إلى اليسار") ؛
}
انعطف يمينا() {
console.log ("انعطف يمينا") ؛
}
}
فئة السيارة تمتد السيارة {
}
فئة تسلا تمد السيارة {
البناء() {
سوبر ("كهربائي") ؛
}
}
في هذا المثال ، يوجد ملف مركبة صف دراسي. ال السيارات فئة يرث من مركبة صف دراسي. و تسلا يرث من السيارات. لنقم الآن بإنشاء كائنين وننظر إليهما.
دع myCoupe: سيارة = مركبة جديدة () ؛
console.log (myCoupe) ؛
console.log (myCoupe.constructor.name) ،
اسمح لـ mySedan: Vehicle = new Tesla () ؛
console.log (mySedan) ؛
console.log (mySedan.constructor.name) ،
myCoupe.turnLeft () ،
mySedan.turnLeft () ،
يمكنك أن ترى أننا أعلنا myCoupe ليكون السيارات و سيدان ليكون مركبة. ثم قمنا بإنشاء مثيل myCoupe كجديد مركبة و سيدان كجديد تسلا. اذا أنت قم بزيارة TypeScript sandbox وقم بتشغيل الكود ، سترى أنه يعمل بدون أخطاء. ويتصرف كما تتوقع ، بناءً على العقد.
بمعنى آخر ، يمكن لجميع المركبات الانعطاف يسارًا لأنها ورثتها من مركبة صف دراسي. يعرف المترجم أن كل طفل من مركبة وافق على العقد. لذلك يفترض أن كل شيء على ما يرام ، بغض النظر عن الفئات التي تمت كتابة الكائنات أو إنشاء مثيل لها.
وهذا ما يسمى أحيانًا "كتابة بطة". يفترض المترجم أنه إذا سار مثل البطة وتحدث مثل البطة ، فقد يكون أيضًا بطة. لذلك لا يقلق المترجم بشأن التفاصيل ويعامل الكائن مثل البطة.
تعدد الأشكال يجعل الكود الخاص بك مضادًا للرصاص
ميزة أخرى لعقد تعدد الأشكال هي ضمان عمل الكود الخاص بك. إذا قمت بكتابة جميع المتغيرات الخاصة بك بقوة وما ترجع إليه كل وظيفة ، فأنت تعلم أن كل طفل سيطابق دائمًا المتغيرات والوظائف والأنواع.
هذا يعني أنه يمكنك إضافة وتغيير الشفرة في فصولك الدراسية دون كسر برنامجك. كل كائن يشير إلى أ مركبة الكائن سيحصل دائمًا على البيانات والوظائف التي تلبي التوقعات ، بغض النظر عن مقدارها السيارات التغييرات.
قد لا يضع الكود الموجود داخل الوظيفة النتائج الصحيحة. لكن هذا نوع مختلف من المشاكل. طالما أن الوظيفة تتبع العقد وتعيد النوع المتوقع من المتغير ، فلن ينتج عنها خطأ في كسر الشفرة.
تعدد الأشكال ضخم ، و إليك 10 مبادئ برمجة أخرى يجب أن تعرفها.
ممارسة تعدد الأشكال
- استخدم رابط وضع الحماية أعلاه لإنشاء ملف قارب صف دراسي.
- قم بإنشاء كائن قارب جديد بطريقة تجعله ملف مركبة اكتب ، ولكن لا يزال يشبه القارب.
- تأكد من أن القارب لا يزال يتصرف مثل السيارة.
مثال أخير لتعدد الأشكال
يمكن أن يكون تعدد الأشكال مفهومًا صعبًا لفهمه في البداية. ولكن بمجرد حصولك عليها ، تكون قد اتخذت خطوة كبيرة نحو فهم ما تعنيه البرمجة الشيئية حقًا. قد يبدو المفهوم نظريًا رغم ذلك. إذن هذا مثال واقعي قوي لمساعدتك على معرفة مدى فائدته.
تخيل أنك تبني تطبيق ويب يتصل بقاعدة بيانات MySQL. ثم يقرر الرئيس التبديل إلى قاعدة بيانات PostgreSQL. هل هذا يعني أنه يجب عليك إعادة كتابة جميع مكالمات قاعدة البيانات الخاصة بك؟
لا ، ليس كذلك. إذا كان تطبيقك يستخدم ملف الدخول الى البيانات فئة مع فئات فرعية تتلاعب بالبيانات ، فأنت محظوظ. ال الدخول الى البيانات تحدد فئة كيفية تفاعل تطبيقك مع البيانات ، وليس كيفية تفاعلها مع قاعدة البيانات.
لديك فئات فرعية مثل MySQLAccess و PostgresQLAccess التي تقوم بكل الأعمال القذرة. ولكن إذا كان التطبيق الخاص بك فقط الدخول الى البيانات كائنات ، يمكنك تبديل قواعد البيانات دون إعادة كتابة سطر واحد من كود التطبيق.
إن الحصول على البرمجة الكائنية بشكل صحيح يعني أنك بحاجة إلى معرفة المزيد عن الوراثة وكيف يمكن تبسيط الترميز وتقليل الأخطاء.
اقرأ التالي
- برمجة
- برمجة
- البرمجة الشيئية

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