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

كيف يتم إظهار خصائص الكلاسات المتداخله

مغلق
بدأه مصلح الحريصي في 8 يناير 2015 · 9 رد · 2,295 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندي Class Persons


تم أنشاء بداخله ما يلي


Public Class Persons


        Public Class PProperty

            Public Property FName As String

            Public Property LName As String


        End Class


        Public Class PMethods

            Public Property Speed As String

            Public Property Pstop As String


        End Class

    End Class

قمت بإنشأ نسخ جديدة من  Class Persons كالتالي :


Dim X as new Persons

ما أريده هو عند كتابة X ثم . يظهر لي PProperty و PMethods


وعند اختيار أحدهما ثم . يظهر لي خصائص تلك الكلاس


مثل ما هو في  My.Application.Culture.CompareInfo كل ما وضعت دوت . بعد الاسم تظهر لي خصائص


بالله من عنده فكره يفيدني بارك الله فيكم


#2

أخي الكريم

إذا كان الكلاس يحوي على أوبجكت من كلاس أخر، بإمكانك رؤية خواصة بعد كتابة النقطة

مثلا لنقرض أن الكلاس السابق يحوي متغير من نوع Point StartPoint

 

عندها لوكتبت

x.StartPoint.Y

أو

x.StartPoint.X

 

ستتمكن من رؤية الخواص.

 

أما ما يحوية الكلاس الخاص بك، هو متغيرات من نوع Value وليس Ref بالتالي ليس هي خواص، فهي في اسفل السلم. (تسمى Primitives)

 

اتمنى ان تكون فهمت قصدي

 

بالتوفيق،،،

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#3

الأخ طارق

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

افهم من كلامك أن الطريقة التي أشرت إليها في موضوعي غير ممكنه .

 

ما اريده هو كالتالي :

 

مثال

سيارة

خواص السيارة

صفاتها

بمعنى

كلاس للسيارة

بداخله كلاسين

كلاس يحتوي على خصائصها مثل ( المارك - الطراز - اللون - الموديل )

كلاس يحتوي على صفاتها مثل ( السرعة - التوقف - الدوران - التحرك للأمام - التحرك للخلف )

 

ما اردته أنني أكتب اسم كلاس السيارة وبعد النقطة تظهر لي قائمة تحتوي على عنصرين هما ( الخصائص - الصفات ) وعند اختيار الخصائص ثم نقطه تظهر في قائمة خصائص السيارة ولو اخترت صفات ثم نقطة تظهر لي قائمة تحتوي على صفات السيارة

فهل هذا ممكن ؟

 

 

 

post-2179-0-34450500-1420750686_thumb.jp

#4

نعم أخي الكريم، بالتأكيد ممكن

وهو جوهر البرمجة كائنية التوجه OOP

ويندرج السؤال تحت مفهوم Encapsulation أي تغليف البيانات، ما يجب الإنتباه إليه.

 

1. أن يكون الكلاس معرف ك Public

2. الخواص المراد الوصول إليها أيضا معرفة ك Public

تم تعديل هذه المشاركة بواسطة Tarek Jihad في 9 يناير 2015 في 16:07

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#5

كمثال صغير، لو جربت مفهوم الـ List.

مثلا List تتكون من مجموعة من العقد او الخلايا ولتكن Node، وكل Node تحوي مؤشر من نوع Node أيضا على العقدة التي تليها

بالتالي بإمكانك الوصول إلى عدد لا نهائي من Nodes عن طريق طلب العقدة التالية، كما يلي:

    public class Node
    {
        public string Name { get; set; }
        public Node NextNode { get; set; }
        public Node()
        {
            Node node = new Node();
            node.NextNode.NextNode.NextNode.NextNode.NextNode.NextNode = null;
        }
    }

واعذرني لأن الكود مكتوب بالسي شارب.

 

بالتوفيق،،،

• • •


[ ربيّ احفظ سوريا الحبيبة]


oFOK7Kd.png

#6

والله معذور يا غالي ولا قصرت الله لا يهينك ويجعل لك بكل حرف حسنة

مشكلتي ليس لي دراية في السي شارب وعند محاولة تحويل الكود عن طريق المواقع لم يتم تحويله .

بالنسبة لمثالك فهو يحتوي على كلاس واحد أنا أحاول أن أصل للطريقة عن طريق كلاسين مغلفتين في كلاس رئيسي واسطيع الوصول لهما ولخصائصهما عن طريق الكلاس الرئيسي.

#7

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

بخصوص سؤالك اخي العزيز كما في مثالك ستفعل ولكن تزود عليه الاتي 

 
 
Public Class Persons
#Region "Members"
    Dim _Pproperty As New cPProperty
    Dim _PMethod As New cPMethods
#End Region


    Public ReadOnly Property Pproperty() As cPProperty
        Get
            Return _Pproperty
        End Get
    End Property


    Public ReadOnly Property PMethod() As cPMethods
        Get
            Return _PMethod
        End Get
    End Property




    Public Class cPProperty
        Public Property FName As String
        Public Property LName As String


    End Class




    Public Class cPMethods
        Public Property Speed() As String
        Public Property Pstop As String


    End Class
End Class
 
 

وتستطيع  ان تستخدم هذا المثال كالتاي

 

 Dim c As New Persons
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click




        c.Pproperty.FName = "Hisham"
        c.Pproperty.LName = "Saad"


    End Sub


    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        c.PMethod.Pstop = "No"
        c.PMethod.Speed = "200"
    End Sub


    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        MsgBox(String.Format("{0} {1}{2}{3}:--{4}", c.Pproperty.FName, c.Pproperty.LName, vbCrLf, c.PMethod.Pstop, c.PMethod.Speed))
    End Sub

اتمني ان اكون افدتك ان شاء الله

تم تعديل هذه المشاركة بواسطة hisham saad في 11 يناير 2015 في 11:43

#8

بيض الله وجهك استاذ هشام فعلاً هذا ما أردته الله يجعل ذلك في موازين حسناتك

ولا يفوتني شكر اخونا طارق فربما وصل للحل ولكن عدم معرفتي بالسي شارب هو عدم فهم الموضوع.

 

أخ هشام توصلت لطريقة أخرى ولكن ربما تكون لها مساوء لا أعرفها .

سأعرض عليك ما توصلت إليه وإن وجدت الفرصة لمراجعت ذلك وما هي نتائج تطبيقه.

 

ما توصلت إليه هو التالي :

Public Class ClsPersons

    Public Class PProperty
        Public Property FName As String
        Public Property LName As String

    End Class

    Public Class PMethods
        Public Property Speed As String
        Public Property Pstop As String

    End Class
End Class

Public Module Persons

    Public PMethods As New ClsPersons.PMethods
    Public PProperty As New ClsPersons.PProperty


End Module

ومن أي مكان في البرنامج استدعيه بالشكل التالي :-

 Persons.PProperty.FName = "Ahmad"
        Persons.PMethods.Speed = "120"
#9

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

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

بالتوفيق ان شاء الله

#10

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

أشكرك عزيزي كفيت وفيت غفر الله لك ذنوبك

 

الموضع تم حله من قبل الاستاذ هشام يغلق لإكتمال الاجابة

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…