الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تسلسلية تنفيذ مناهج البناء للأصناف المشتقة (oop)

بدأه ofnet في 27 مارس 2010 · 7 رد · 961 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يسم الله الرحمن الرحيم.

إخواني محترفي الـ c# ، لدي سؤال يخص نسلسل تنفيذ مناهج البناء للاصناف المشتقة.

أنا اقرأ كتابا للبرمجة بالـ c# ، عندما وصلت لفصل البرمجة الكائنية لاحضت أن هناك أمرا يناقض الكاتب ، حيث أن الكاتب يقول أنه في حالة كان لدينا صنف يشتق من صنف أساس و أنه إذا قمنا بإنشاء حالة من الصنف المشتق .

وإذا استخدمنا منهج البناء العير الإفتراضي (الذي يحمل توقيعا) فإن منهج الصنف الأساس الذي سينفذ هو الذي يحمل توقيعه نفس توقيع الصنف المشتق

وهذا هو المثال.

using System

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class MyBaseClass
    {
        public MyBaseClass()
        {
            Console.WriteLine("MyBaseClass()");
        }
        public MyBaseClass(int i)
        {
            Console.WriteLine("myBaseClass({0})", i);
        }
    }
    public class MyDerivedClass : MyBaseClass
    {
        public MyDerivedClass()
        {
            Console.WriteLine("MyDerivedClass()");
        }
        public MyDerivedClass(int i)
        {
            Console.WriteLine("MyDerivedClass({0})", i);
        }
        public MyDerivedClass(int i, int j)
        {
            Console.WriteLine("MyDerivedClass({0}, {1})", i, j);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            MyDerivedClass MyObj = new MyDerivedClass(5);
            Console.ReadKey();
        }
    }

حيث يقول الكاتب أن التنفيذ سيأخذ الشكل التالي:

1- system.Object() طبعا

2- MyBaseClass(int i)

3- MyDerivedClass(int i)

ولكن هذا ما لم يحصل معي .

حيث كانت النتيجة هكذا.

1- System.Object.Object() دائما.

2- MyBaseClass.MyBaseClass()

3- MyDerivedClass(int i)

وهذا يعني أن المنهج الذي طبق في الصنف الأساس هو المنهج الأفتراضي وليس المنهج الذي يحمل نفس توقيع الصنف المشتق

ما الخطب :wacko: ؟

تم تعديل هذه المشاركة بواسطة ofnet في 27 مارس 2010 في 17:45

لا خيــــــــــر في كاتــــــــــم العلــــــــــم

سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين

#2

إعذروني حاولت تيسيط الشرح قدر الإمكان. :resentful:

لا خيــــــــــر في كاتــــــــــم العلــــــــــم

سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين

#3

لا عليكم سأنسى الموضوع.

لا خيــــــــــر في كاتــــــــــم العلــــــــــم

سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين

#5

بسم الله الرحمن الرحيم

مع أني لم أفهم كثيراً المُصطلحات وحبذا لو تمت كتابة المُصطلحات باللغُة الإنكليزية أو كُل مصطلح مع مُقابِله من اللغُة الإنكليزية .

في جميع الأحوال أعتقد بأنه هُنالك خطأ في النص الأساسي وهو التالي :

أولاً : النتيجة يجب أن تكون كالتالي :

MyBaseClass()

MyDerivedClass(5)

حيث أنه كما نعلم فإنه يتم بناء الأباء ثُم الأبناء ويتم هدم الأبناء ثُم الأباء

في مثالنا (( وكما قال الأخ عبد الكريم كنعان جزاه اللهُ خيراً )) يجب أن يتم استدعاء الباني الخاص بالصف الأب وتحديداً الباني الإفتراضي وهو :

public MyBaseClass()

{

Console.WriteLine("MyBaseClass()");

}

وذلك لأنه لا يتم استدعاء الباني الآخر إلا إذا تم استدعائه في باني الأبن صراحتاً.

ثُم يظهر الباني الخاص بالأبن كما هو واضح

أتمنى أن أكون قد أفدت

أخوكُم في الله : سامر

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#6

شكرا على التجاوب يا إخوان ، أضن أنني أخطأت في العنوان فقط ، قالمشكلة لا تكمن في "هل ينفذ منهج بناء قبل آخر" لكن في حالة استدعاء منهج بناء الإبن(derived) بتوقيع معين ، هل سيتم استدعاء منهج بناء الأب(base) الذي له نفس توقيع منهج بناء الإبن (طبعا إن وجد) ؟

اعني بالتوقيع (parameters).

إعذزوني لا أجيد الإنجليزية بشكل جيد ؟

لا خيــــــــــر في كاتــــــــــم العلــــــــــم

سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين

#7

أخى أظن أن هذا هو الكتاب الذى تقرأ منه

post-207223-12698955178049_thumb.jpg

وهذا وهو الكتاب الأصلى والصور توضح الفرق والخطأ طبعا

post-207223-1269895546899_thumb.jpg

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#8

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

لا خيــــــــــر في كاتــــــــــم العلــــــــــم

سأل الممكن المستحيل ، قال أين تسكن ، فال أسكن في عقول العاجزين

مواضيع مشابهة