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

كيف حل هذه المشكلة في الفئة (Class)

مغلق
بدأه Hamde في 24 ديسمبر 2004 · 14 رد · 1,006 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف حل هذه المشكلة في الفئة (Class)

لدينا هذه الفئة :

Public Class Person

    Private mName As String
    Private mbirthday As Date
    Public Father As Person

    Public Property Name() As String

        Get
            Return mName
        End Get

        Set(ByVal value As String)
            mName = value
        End Set

    End Property

    Public Property Birthday() As Date
        Get
            Return mbirthday
        End Get
        Set(ByVal value As Date)
            mbirthday = value
        End Set
    End Property
End Class

ثم لدينا هذه

Public Class PersonInFamily
    Inherits Person
    Private mSpouse As String

    Property Spouse() As String
        Get
            Return mSpouse
        End Get
        Set(ByVal value As String)
            mSpouse = value
        End Set
    End Property
End Class

ومن الواضح تم اشتقاق الفئة Person داخل PersonInFamily .

ثم استخدمنا هذه الفئات كالتالي

        Dim PersonObj As New PersonInFamily
        PersonObj.Father = New PersonInFamily
        PersonObj.Name = "أبن"
        PersonObj.Father.Name = "والد"
        PersonObj.Father.Father.Name = "جد"

الخطاء في الجملة الاخيرة( PersonObj.Father.Father.Name ="" ) وهو :

Object reference not set to an instance of an object.

وهذه الرسالة مقنعة، ولكن كيف الحل الأمثل إذا اردت أن أطبق الطريقة البرمجية

(LIFO (Last-In-First-Out على Class بحيث أصل إلى اسماء الأجداد عن طريق الأبناء .

#2

سبقتك يا طارق!!

المشكلة انك لم تعرف personobj.Father.Father

جرّب الكود التالي:

Dim PersonObj As New PersonInFamily
PersonObj.Father = New PersonInFamily
PersonObj.Name = "أبن"
PersonObj.Father.Name = "والد"
'هنا السطر الذي ينقصك
PersonObj.Father.Father=New PersonInFamily      
PersonObj.Father.Father.Name = "جد"

تم تعديل هذه المشاركة بواسطة undo في 25 ديسمبر 2004 في 06:24

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#3

شكرا undo على سرعة الإستجابة

نعم كلامك صحيح.

ولكني لا أريد في كل مرة أقوم بتعريف

أي إذا وجد الجد الثاني لا أريد ان أعرف personobj.Father.Father.Father من جديد ، وايد أن تكون العملية متداخلة .

ربما الطلب غير منطقي في هذه الحالة (في Class) ، ولكني أريد حل يلتف على هذه المشكلة .

#4
اقتباس
سبقتك يا طارق!!

015 القسم ماشى تمام بس كنت كملت السؤال

اقتباس
لكني لا أريد في كل مرة أقوم بتعريف

أي إذا وجد الجد الثاني لا أريد ان أعرف personobj.Father.Father.Father من جديد

لدى سؤال لماذا فكرت فى استخدام ال Stack و لم تفكر فى استخدام ال Binary Tree اعتقد انها ستكون اكثر تنظيماً

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

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

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 26 ديسمبر 2004 في 02:29

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#5

انا لا افهم ما تقولونه .. :( :(

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

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#6

شكرا اخي طارق

سوف ادرس أقتراحك ، لأني لم أصل إلى دراست Binary Tree فأنا مازلت مبتدي في دراسة .net ز

أخي Undo الأمر كما قلت لك غير منطقي ولكن كيف يمكن ان اخرج بطريقة أصل بها إلى الجد x انطلاقا من الشخص a .

وشكرا للجميع

#7

A simple binary tree implementation with VB.NET

اعتقد ان هذا الرابط سيساعدك

دراسة ال Binary Tree تدخل ضمن تراكيب البيانات Data Structures و هى مفهوم و ليس تطبيق داخل لغه بعينها

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#8

شكراً أخي طارق

سوف ادرس Binary Tree ، وساستعين بك إن شاء الله بعد الإنتهاء من امتحاناتك (بعد رفعك للافتة -متغيب جزئياً لحين الانتهاء من العقاب المسمى بالامتحانات

- )

#9

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

السلام عليكم ورحمة الله وبركاتة

بما انك تستخدم Property بمهارة ، فما عليك الا جعل Person خاصية (Property ) وعند ذلك يمكنك التحقق من ان الكائن تم انشاءة فعلاً من عدمة .

Public Class Person

    Private mName As String
    Private mbirthday As Date
    Private m_Father As Person

    Public Property Father(Optional ByVal optNewInstance As Boolean = True) As Person
        Get
            If (m_Father Is Nothing) AndAlso (optNewInstance = True) Then
                m_Father = New Person
            End If
            Return m_Father
        End Get

        Set(ByVal value As Person)
            m_Father = value
        End Set

    End Property


    Public ReadOnly Property FullName() As String
        Get
            Dim temp_fullname As String
            Dim temp_father As Person
            temp_father = Me.Father
            temp_fullname = Me.Name
            Do Until (temp_father Is Nothing)
                temp_fullname = temp_fullname + "\" + CType(IIf(temp_father.Name = "", ".", temp_father.Name), String)
                temp_father = temp_father.Father(False)
            Loop
            Return temp_fullname
        End Get

    End Property


    Public Property Name() As String

        Get
            Return mName
        End Get

        Set(ByVal value As String)
            mName = value
        End Set

    End Property

    Public Property Birthday() As Date
        Get
            Return mbirthday
        End Get
        Set(ByVal value As Date)
            mbirthday = value
        End Set
    End Property
End Class

الان تستطيع استخدامة بهذا الشكل ، ومهما طال التكرار ،،

        Dim PersonObj As New PersonInFamily
        PersonObj.Father = New PersonInFamily ' لا داعي لهذا السطر ، يمكن شطبة
        PersonObj.Name = "أبن"
        PersonObj.Father.Name = "والد"
        PersonObj.Father.Father.Father.Father.Father.Father.Father.Name = "جد"
        MsgBox(PersonObj.FullName)

مع تحياتي و محبتي للجميع ،،،،،

.

تم تعديل هذه المشاركة بواسطة محمد مهيـان في 28 ديسمبر 2004 في 11:37

#10

محمد مهيان محمد مهيان :rolleyes: هل انت مشرف منتدى برمجة الالعاب فى vb4arab و صاحب موقع dx4arab :rolleyes: اما إنه محض تشابه اسماء كما جرت العاده فى هذا المنتدى العجيب

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 28 ديسمبر 2004 في 16:50

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#11

مشكور يا محمد مهيـان.. فعلاً حل ذكي و سريع..

المهم .. انت بقى يا عم طارق.. ماشاء الله عارف الناس كلها؟؟

يا شباب.. اي استفسار بعد كدة عن شخص في المنتدى يبقى ابعتوا لطارق على طول (وهذا ما افعله حالياً) :P :P

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#12

وعليكم السلام ورحمة الله وبركاته

أجبت على التسأل بجدارة فشكراً لك محمد مهيـان

وأشكر جميع الأخوة على مشاركاتهم

تم تعديل هذه المشاركة بواسطة Hamde في 28 ديسمبر 2004 في 20:09

#13

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

السلام عليكم ورحمة الله وبركاتة

اخي الكريم / طارق إبراهيم ..

نعم عزيزي انا نفس الشخص ( محمد مهيان )

مشرف عام في منتدى vb4arab ...

وكنت سابقا مشرف على قسم الالعاب و الملتي ميديا ،،

وللاسف يواجة منتدانا حاليا مشاكل فنية و متوقف منذ اكثر من شهر ،،

.

ويسرني التعرف عليكم ،، و الاشتراك معكم ،،،

.

#14

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

السلام عليكم ورحمة الله وبركاتة

الاخ الكريم / undo .....

يسرني التعرف عليك وايضا اعجبتني قصتك مع مؤتمر مايكروسوفت إيجيبت للحلول ،،

جميلة و ظريفة و واقعية حدثت لي ايضا.

والشكر موصول لك ،،

.

#15

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

السلام عليكم ورحمة الله وبركاتة

الاخ الكريم / Hamde.....

اشكرك على ردك ،،،

واتمنى ان نتواصل مستقبلاً..

.

هذا الموضوع مغلق.

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