التجاوز هو آلية في البرمجة تسمح لك بتغيير أو إعادة تعريف تنفيذ طريقة أو وظيفة موروثة من فئة أو واجهة رئيسية. يتيح لك هذا الأسلوب إنشاء وظائف معدلة أو معززة دون تغيير الكود المصدري للفئة الأصلية.
يسمح التراكب للمطورين بإنشاء وحدات أو مكونات إضافية يمكن إضافتها إلى رمز التطبيق الرئيسي وإعادة تعريف بعض وظائفه. يتيح لك هذا الأسلوب تخصيص سلوك البرنامج بمرونة دون الحاجة إلى تغيير الكود المصدري.
لاستخدام التراكب ، من المهم فهم الأساليب أو الوظائف التي يمكن تجاوزها ، وكذلك معرفة قواعد تفاعلها مع الفئات أو الواجهات الرئيسية. يمكن أن يكون التراكب مفيدا في مواقف مختلفة ، على سبيل المثال ، عند إنشاء ورثة للفئات الموجودة بالفعل أو معالجات الأحداث. ومع ذلك ، يجب أن نتذكر أن الاستخدام غير السليم للتراكب يمكن أن يؤدي إلى سلوك برنامج غير متوقع.
يسمح التراكب للمطورين بتخصيص سلوك البرنامج بمرونة دون الحاجة إلى تغيير شفرة المصدر.
- تجاوز: ما هو وكيفية استخدام هذه التقنية
- خاتمة
- ما هو أبعاد?
- المبادئ الأساسية للتجاوز
- لماذا هو سق مفيدة
- أمثلة على استخدام سق
- 1. طريقة تراكب في جافا
- 2. وظيفة تراكب في جافا سكريبت
- 3. تغيير الأنماط باستخدام تراكب المغلق
- 4. طريقة تراكب في فب
- 5. الكتابة فوق وسيطات الدالة في بايثون
- أبعاد في البرمجة
- كيفية تطبيق بأمان سق
- إيجابيات وسلبيات استخدام أبعاد
- كيفية تجنب الارتباك عند استخدام سق
- سؤال وجواب
- ما هو أبعاد?
- كيفية استخدام أبعاد?
- هل من الممكن استخدام تراكب مع أساليب خاصة?
- ما هي النتيجة عند استخدام أبعاد?
أوفردرايف: ما هو وكيفية استخدام هذه التقنية
تجاوز (المهندس. "تجاوز" هي تقنية برمجة تسمح لك بتجاوز أو تغيير طريقة أو خاصية الأصل في فئة فرعية. تستخدم هذه التقنية على نطاق واسع في البرمجة الشيئية ، حيث ترث الفئات وظائف الفئات الأخرى.
يسمح لك تجاوز الطريقة بتغيير تنفيذها في فئة فرعية مع الحفاظ على اسم وتوقيع الطريقة. يتيح لك ذلك تحقيق تعدد الأشكال — القدرة على استخدام نفس اسم الطريقة لفئات مختلفة.
مثال على إعادة تعريف الطريقة:
فئة الحيوان {
الفراغ العام يجعل الصوت () {
النظام.خارج.برينتلن ("الحيوان يصدر صوتا");
}
}
فئة الكلب يمتد الحيوان {
@تجاوز
الفراغ العام يجعل الصوت () {
النظام.خارج.برينتلن ("الكلب ينبح");
}
}
الطبقة العامة الرئيسية {
العامة ثابت الفراغ الرئيسي (سلسلة[] الحجج) {
حيوان حيوان = حيوان جديد ();
الكلب الكلب = كلب جديد();
حيوان.ماكيسوند () ؛ / / الإخراج: "الحيوان يجعل الصوت"
كلب.ماكيسوند () ؛ / / الإخراج :" الكلب ينبح"
}
}
Animal " حيوان "dog" كلب". "كلب "animal" حيوان "، mak"يصنعالصوت ()". ونتيجة لذلك ، عند استدعاء طريقة " ماكيسوند () "على كائن من فئة" الكلب "، سيتم عرض الرسالة" الكلب ينبح "، وعند استدعاء كائن من فئة" الحيوان "، سيتم عرض الرسالة" الحيوان يجعل الصوت". وذلك لأن الطبقة الطفل يتجاوز تنفيذ الأسلوب.
بالإضافة إلى تجاوز الأساليب ، يمكنك أيضا تجاوز الخصائص (المتغيرات) في فئة فرعية. يسمح لك هذا بتغيير قيم أو أنواع الخصائص الموروثة من الفئة الأصل.
مثال على إعادة تعريف خاصية:
فئة السيارة {
العلامة التجارية سلسلة محمية = "سيارة عامة";
}
فئة السيارة تمتد السيارة {
محمية سلسلة العلامة التجارية = "سيارة العلامة التجارية";
}
الطبقة العامة الرئيسية {
العامة ثابت الفراغ الرئيسي (سلسلة[] الحجج) {
مركبة مركبة = مركبة جديدة();
سيارة سيارة = سيارة جديدة();
النظام.خارج.برينتلن (مركبة.العلامة التجارية) ؛ / / الإخراج: "سيارة عامة"
النظام.خارج.برينتلن (سيارة.العلامة التجارية) ؛ / / الإخراج: "سيارة العلامة التجارية"
}
}
- "سيارة" - "مركبة" - "العلامة التجارية". نتيجة لذلك ، عند الوصول إلى خاصية "العلامة التجارية" ، سيتم الحصول على قيمة "السيارة العامة" على كائن فئة "السيارة" ، وسيتم الحصول على قيمة "ماركة السيارة" على كائن فئة "السيارة". هذا يسمح لك بتغيير قيمة خاصية في فئة الطفل.
خاتمة
تجاوز هو تقنية البرمجة القوية التي تسمح لك لتغيير تنفيذ أساليب أو خصائص في فئة الطفل. هذا يسمح لك بتحقيق تعدد الأشكال والمرونة في تطوير كود البرنامج. ومع ذلك ، عند استخدام تراكب ، يجب أن تكون حريصا على عدم كسر منطق البرنامج وعدم إجراء تغييرات غير متوقعة على تشغيل الفئة الموروثة.
ما هو أبعاد?
التجاوز هو عملية إعادة تعريف تنفيذ طريقة أو حقل في فئة سليل. عند الوراثة ، يمكن للفئة استخدام طرق أو حقول فئتها الأصلية ، ولكن في بعض الأحيان يكون من الضروري إضافة أو تغيير الوظيفة. في هذه الحالة ، يتم تطبيق السرعة الزائدة.
لا يمكن تطبيق التراكب إلا على الأساليب والحقول المعلنة باستخدام معدل الوصول المحمي أو العام في الفئة الأصل. الأساليب أو الحقول المعلنة مع معدل الوصول الخاص غير متوفرة للتراكب.
لإعادة تعريف طريقة في فئة سليل ، يجب إنشاء طريقة بنفس الاسم ونوع الإرجاع وقائمة المعلمات. عند استدعاء هذه الطريقة من مثيل فئة سليل ، سيتم تنفيذ تنفيذ تجاوز الأسلوب ، وليس تنفيذ من الفئة الأصل.
يمكن أيضا استخدام التراكب لتغيير قيم الحقول. للقيام بذلك ، أعلن حقل بنفس الاسم في فئة سليل.
يسمح لك التراكب بإنشاء إصدارات أكثر تخصصا من الأساليب أو الحقول في الفئة الفرعية ، بالإضافة إلى تغيير سلوك العناصر الموروثة. هذه واحدة من تقنيات تعدد الأشكال الرئيسية في البرمجة الشيئية.
المبادئ الأساسية للتجاوز
التجاوز هو القدرة على تجاوز أو تغيير سلوك فئة أو طريقة رئيسية عن طريق إضافة تفاصيل أو وظائف محددة خاصة بها.
المبادئ الأساسية للتجاوز:
- من أجل زيادة السرعة الناجحة ، يلزم وجود علاقة ميراث بين الفئات. يمكن للفئة التي ترث وظيفة فئة الأصل تجاوز أساليبها أو خصائصها.
- يسمح لك التراكب بتغيير الأساليب الأصلية دون الحاجة إلى تغيير الفئة نفسها وبالتالي الحفاظ على تغليف التسلسل الهرمي للفئة.
- لا يمكن للطريقة التي تم تجاوزها تعديل تطبيق موجود فحسب ، بل يمكنها أيضا إضافة وظائف إضافية.
- أثناء استدعاء الأسلوب ، في حالة حدوث تجاوز لهذه الطريقة في فئة الخلف ، سيتم تنفيذ التنفيذ الموجود في فئة الخلف ، وليس في الفئة الأصل.
- في لغات البرمجة ذات الوراثة المتعددة ، يمكن للفئة تجاوز الأساليب والخصائص من عدة فئات رئيسية في وقت واحد.
تسمح لك مبادئ التجاوز بتكييف سلوك الفصول بمرونة اعتمادا على تفاصيل مهمة معينة. يعد التجاوز جزءا لا يتجزأ من البرمجة الموجهة للكائنات ويسمح لك بإنشاء حلول برمجية مرنة وقابلة للتوسيع.
لماذا هو سق مفيدة
يعد التجاوز مفهوما مهما في البرمجة الموجهة للكائنات ويسمح لك بتغيير سلوك طرق الفصل الأصل في الفصول الفرعية. تراكب يسمح لك لتخصيص بمرونة وتوسيع وظائف الطبقات ، مما يجعلها أداة مفيدة جدا.
فيما يلي بعض الأسباب التي تجعل التراكب مفيدا:
- توسيع الوظيفة: تتيح لك الطرق المهيمنة إضافة سلوك جديد إلى الفئات دون تغيير تنفيذها الأصلي. هذا يسمح لك لتوسيع وتحسين وظائف الطبقات الموجودة دون الحاجة إلى تغيير التعليمات البرمجية الموجودة.
- تعدد الأشكال: التجاوز هو أحد الجوانب الرئيسية لتعدد الأشكال في البرمجة الشيئية. يتيح لك تجاوز الطريقة استخدام نفس الواجهة لفئات مختلفة وتنفيذ تعليمات برمجية مختلفة اعتمادا على نوع الكائن.
- تحسين إدارة التعليمات البرمجية: يسمح لك التراكب بفهم الكود الذي سيتم تنفيذه في سياق معين ، بناء على نوع الكائن. هذا يجعل الكود أكثر قابلية للإدارة ويتجنب تعقيد قاعدة الكود باستخدام عوامل التشغيل الشرطية وعدد كبير من عمليات التحقق من النوع.
- الميراث والتخصص: يسمح التراكب للفئات الفرعية بإنشاء إصدارات متخصصة من طرق الفصل الأصل. يتيح لك ذلك وراثة الخصائص والأساليب الشائعة ، وكذلك إعادة تعريفها إذا لزم الأمر.
معا ، كل هذه المزايا تجعل تجاوز أداة هامة لتطوير رمز مرنة وحدات التي يمكن تخصيصها بسهولة وتوسيع نطاقها.
أمثلة على استخدام سق
التجاوز هو فرصة لتغيير أو توسيع الكود الأصلي الذي تمت كتابته بالفعل ، دون تغيير كود المصدر الخاص به. يستخدم التجاوز على نطاق واسع في البرمجة ، بما في ذلك اللغات الموجهة للكائنات مثل جافا و ج++. وفيما يلي بعض الأمثلة على استخدام سق:
1. طريقة تراكب في جافا
في جافا ، يسمح لك التراكب بتغيير سلوك الأساليب في الفصول الفرعية. على سبيل المثال ، لدينا فئة "الشكل" مع طريقة "المنطقة ()" ، والتي ترجع مساحة الشكل. بمساعدة التراكب ، يمكننا تجاوز هذه الطريقة في الفئات الفرعية "دائرة" و "مستطيل" بحيث يعيدون مناطق الأشكال المقابلة.
2. وظيفة تراكب في جافا سكريبت
في جافا سكريبت ، يسمح لك التراكب بتغيير سلوك الوظائف. على سبيل المثال ، لدينا وظيفة أساسية "منطقة ()" ، والتي ترجع مساحة الشكل. يمكننا إنشاء وظيفة جديدة بنفس الاسم" المنطقة () " التي ستجري حسابات أخرى أو تضيف وظائف جديدة.
3. تغيير الأنماط باستخدام تراكب المغلق
المغلق تراكب يسمح لك بتغيير أنماط عناصر صفحة الويب. على سبيل المثال ، لدينا مجموعة من الأنماط لعنصر "الرأس" التي تم تعيينها في ملف كس مشترك. يمكننا إنشاء ملف كس منفصل وتحديد أنماط أخرى للرؤوس بحيث يتم عرضها بشكل مختلف.
4. طريقة تراكب في فب
في فب ، تراكب يسمح لك لتغيير سلوك الأساليب في الطبقات. على سبيل المثال ، لدينا فئة أساسية "الشكل" مع طريقة "المنطقة ()" ، والتي ترجع مساحة الشكل. يمكننا إنشاء فئة فرعية " دائرة "وإعادة تعريف طريقة" المنطقة () " بحيث تعيد مساحة الدائرة.
5. الكتابة فوق وسيطات الدالة في بايثون
في بايثون ، يسمح لك التراكب بتغيير وسيطات الوظائف. على سبيل المثال ، لدينا وظيفة "المنطقة ()" ، والتي تأخذ الوسيطات "الطول" و "العرض" وتعيد مساحة المستطيل. يمكننا استدعاء هذه الدالة بقيم وسيطة مختلفة والحصول على مساحة مستطيل آخر.
أبعاد في البرمجة
التجاوز هو آلية تستخدم في البرمجة الشيئية التي تسمح لك بتغيير تنفيذ طريقة لفئة موروثة في فئة فرعية. نتيجة لهذا التغيير ، سيتم استدعاء التنفيذ الجديد للطريقة بدلا من تنفيذ الفئة الأصل عند تشغيل الكائن المقابل.
تجاوز هو واحد من المفاهيم الأساسية للميراث في أوب ويسمح لك لإنشاء فئات الطفل التي لديها أساليب مماثلة إلى الأصل ، ولكن توسيع أو تعديل وظائفها في تقديركم. هذا مفيد بشكل خاص عندما تحتاج إلى إضافة سلوك جديد أو ضبط سلوك موجود في فئة موروثة.
من أجل استخدام التراكب ، تحتاج إلى إنشاء فئة فرعية ترث أساليب الفئة الأصل. يمكنك بعد ذلك إعادة تعريف تنفيذ طريقة واحدة أو أكثر تهم التعديل.
يوفر التراكب القدرة على تغيير طرق الفئة الأصلية أو إضافة طرق جديدة ، مع الحفاظ على السياق الأساسي والمنطق لسلوك الفئة الموروثة. هذا يجعل من السهل تكييف الكود الحالي وجعله أكثر تحديدا للاحتياجات المحددة لفئة الطفل. يساعد التجاوز أيضا على زيادة مرونة ونمطية البرنامج.
يمكن أن يكون التراكب مفيدا بشكل خاص عند إنشاء تسلسل هرمي للفئة حيث تعمل كل فئة لاحقة على توسيع وظائف الفئة السابقة. وبالتالي ، يتيح لك استخدام التراكب إنشاء بنية برمجية مرنة وسهلة الاستخدام حيث يمكنك بسهولة تغيير الوظائف وإضافتها وفقا لاحتياجات مهام محددة.
كيفية تطبيق بأمان سق
زيادة السرعة هي عملية تغيير سلوك طريقة أو وظيفة موجودة بالفعل في الفئة الأساسية أو الوحدة النمطية للبرنامج. التجاوز هو أحد المبادئ الأساسية لتعدد الأشكال في البرمجة الشيئية.
لتطبيق السرعة الزائدة بأمان ، يجب مراعاة التوصيات التالية:
- الفهم الكامل للطريقة الأم: قبل إعادة تعريف أو توسيع طريقة ، من الضروري أن نفهم تماما وظيفتها والغرض منها. فقط عندما تفهم كيف تعمل الطريقة الأصلية ، يمكنك تعديلها بأمان.
- الحفاظ على الوظائف الأساسية: عند الكتابة ، من المهم الحفاظ على الوظيفة الأساسية للطريقة الأم. يجب ألا يحل التجاوز محل الطريقة الأصلية تماما ، ولكن يجب أن يوسع وظائفه فقط أو يغير سلوكه في حالات معينة.
- المحاسبة عن الوراثة: عند استخدام سق ، فمن الضروري أن تأخذ في الاعتبار الوراثة. إذا ورثت الفئات من بعضها البعض ، فقد تؤثر التغييرات التي تم إجراؤها على الطريقة الأصلية على جميع الفئات الفرعية. لذلك ، من الضروري اختبار جميع الفئات بدقة باستخدام التراكب.
- التعليق والتوثيق: عند الكتابة ، من المهم إضافة تعليقات ووثائق لشرح سبب إجراء زيادة السرعة وكيفية استخدامها. سيساعد هذا المطورين الآخرين على فهم الكود بسهولة أكبر وتجنب الأخطاء.
في الختام ، يتيح لك الاستخدام الآمن للتراكب تعديل سلوك الأساليب والوظائف دون تعطيل استقرار وتشغيل البرنامج ككل. عند استخدام أوفردرايف ، اتبع التوصيات وتأكد من اختبار للتأكد من أن التغييرات لا تسبب أخطاء وتلبية متطلبات المشروع.
إيجابيات وسلبيات استخدام أبعاد
مزايا استخدام سق:
- المرونة: يسمح لك التراكب بتغيير سلوك أو مظهر العنصر الأصل دون الحاجة إلى تغيير شفرة المصدر الخاصة به. هذا يساعد على جعل التصميم أكثر مرونة وتكيفا.
- نمطية: تراكب يسمح لك لتقسيم التعليمات البرمجية إلى وحدات ، مما يجعلها أكثر ملاءمة للحفاظ على وتمديد. يمكن أن يكون لكل وحدة قواعدها الخاصة دون التأثير على بقية النظام.
- إعادة الاستخدام: يسمح لك التراكب باستخدام الأساليب أو الأنماط الأصلية في سياقات أو مكونات جديدة. هذا يساعد على تجنب تكرار التعليمات البرمجية ويبسط صيانة النظام والتحديثات.
- راحة الاختبار: يسمح لك التراكب بإنشاء نماذج بالأحجام الطبيعية أو كائنات مزيفة بسلوك معدل لإجراء اختبار مناسب للأجزاء الفردية من النظام.
مساوئ استخدام سق:
- فقدان التوافق: يمكن أن يؤدي الاستخدام غير السليم للسرعة الزائدة إلى تعارض مع المكونات أو الوحدات النمطية الأخرى للنظام. يمكن أن يتسبب هذا في سلوك أو أخطاء غير متوقعة. لذلك ، من المهم التخطيط بعناية واختبار السرعة الزائدة قبل استخدامها.
- تعقيد التصحيح: عند استخدام تراكب ، قد يكون من الصعب تتبع التغييرات والعثور على أسباب الأخطاء. ويرجع ذلك إلى حقيقة أن الكود منتشر عبر وحدات مختلفة ، مما يجعل من الصعب توطين المشكلات وإصلاحها.
- الاعتماد على الكود الأصلي: قد يكون التراكب غير فعال أو مستحيل إذا كان الكود الأصلي مربكا للغاية أو سيئ التنظيم. في مثل هذه الحالات ، قد تكون هناك حاجة إلى إعادة هيكلة أو إعادة صياغة الكود ، والتي يمكن أن تكون عملية معقدة وتستغرق وقتا طويلا.
بشكل عام ، فإن استخدام السرعة الزائدة له إيجابيات وسلبيات ، لذلك من الضروري التخطيط بعناية وتطبيقه مع مراعاة خصوصيات نظام معين.
كيفية تجنب الارتباك عند استخدام سق
التجاوز هو عملية إعادة تعريف أو تغيير وظائف طريقة أو فئة أو قالب موجود. يستخدم على نطاق واسع في لغات البرمجة المختلفة مثل جافا ، سي++ ، بايثون وغيرها.
ومع ذلك ، عند استخدام أوفردرايف ، هناك خطر من الارتباك والتشغيل غير الصحيح للبرنامج. لتجنب هذه المشاكل ، يجدر اتباع التوصيات التالية:
- فهم منطق الكود الأصلي: قبل القيام بزيادة السرعة ، تحتاج إلى فهم منطق الكود الأصلي تماما. ستساعدك قراءة وفهم الوثائق أو شفرة المصدر على تجنب المشكلات غير المتوقعة.
- قم بتغيير الجزء الضروري فقط: عند الكتابة ، من المهم تغيير جزء الكود المطلوب فقط لتحقيق النتيجة المرجوة. إذا قمت بتغيير الكثير، يمكن أن يؤدي إلى سلوك البرنامج لا يمكن التنبؤ بها.
- توثيق التغييرات: بعد زيادة السرعة ، من المهم توثيق جميع التغييرات. سيساعدك هذا أنت والمطورين الآخرين على فهم التغييرات التي تم إجراؤها ولماذا. هذه أيضا ممارسة جيدة ستساعد في تسهيل صيانة الكود في المستقبل.
- اختبار التغييرات: بعد إجراء التغييرات باستخدام التراكب ، تحتاج إلى اختبار الكود للتأكد من أنه يعمل بشكل صحيح. سيساعد الاختبار في تحديد الأخطاء المحتملة في التنفيذ الجديد وإتاحة الفرصة لإصلاحها قبل أن تصبح مشكلة في بيئة القتال.
- استخدم الأسماء بناء على السياق: إذا كنت تكتب فئة أو طريقة تتجاوز أو توسع فئة أو طريقة موجودة ، فاحرص على اختيار الاسم. يجب أن تكون الأسماء منطقية ومفهومة لتجنب الارتباك في المستقبل.
باتباع هذه الإرشادات البسيطة ، يمكنك تجنب الالتباس وإنشاء رمز نظيف وقابل للصيانة عند استخدام التراكب. تذكر أن التراكب المدروس جيدا والمنفذ منطقيا يمكن أن يبسط التطوير بشكل كبير ويجعل الكود الخاص بك أكثر مرونة ووحدات.
سؤال وجواب
ما هو أبعاد?
التجاوز هو آلية في البرمجة الشيئية التي تسمح لك بتغيير تنفيذ طريقة فئة الأصل في فئة فرعية.
كيفية استخدام أبعاد?
لاستخدام التراكب ، تحتاج إلى إنشاء فئة وراثة من الفئة الأصل وإعادة تعريف الطريقة التي تحتاج إلى تغيير فيها. للقيام بذلك ، يتم استخدام الكلمة الأساسية "تجاوز" قبل توقيع الطريقة.
هل من الممكن استخدام تراكب مع أساليب خاصة?
لا ، لا يمكنك. يعمل التراكب فقط مع الطرق العامة والمحمية.
ما هي النتيجة عند استخدام تراكب?
عند استخدام تراكب في فئة فرعية ، سيتم إعادة تعريف طريقة الفئة الأصل وتنفيذها مع تطبيق جديد من الفئة الفرعية.