تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
شرح فكرة مساواة بين كائنين من نفس الكلاس
#1
كاتب الموضوع : Red_star



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

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

منذ مدة وأنا أفكر في كتابة هذا الموضوع الذي كان يوما ما هما بالنسبة لي (كيفية مساواة كائنين)
كانت المشكلة انه بعد عمل المساواة أي تغير في أحد الكائنين يتم التغيير في الآخر تلقائيا , ثم بعد قليل من الجهد جاءت لي هذه الفكرة وهي كالتالي:

عمل دالة مساواة لقيم الكائنين تكون موجودة في نفس الكلاس (الأكواد أبلغ من الأقوال )
حكمتي المفضلة
لدى دعونا ننتقل إلى المثال:
لنفرض عندنا الكلاس التالي:


كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]class [/color][COLOR=#0000bb]my
        [/COLOR][COLOR=#007700]{
            private [/COLOR][color=#0000bb]int x[/color][COLOR=#007700];
            private [/COLOR][color=#0000bb]int y[/color][COLOR=#007700];
            public [/COLOR][color=#0000bb]my[/color][COLOR=#007700]()
            {
                [/COLOR][color=#0000bb]x [/color][color=#007700]= [/color][color=#0000bb]3[/color][COLOR=#007700];
                [/COLOR][color=#0000bb]y [/color][color=#007700]= [/color][color=#0000bb]5[/color][COLOR=#007700];
            }
            public [/COLOR][color=#0000bb]my[/color][color=#007700]([/color][color=#0000bb]int t[/color][color=#007700], [/color][color=#0000bb]int s[/color][COLOR=#007700])
            {
                [/COLOR][color=#0000bb]x [/color][color=#007700]= [/color][color=#0000bb]t[/color][COLOR=#007700];
                [/COLOR][color=#0000bb]y [/color][color=#007700]= [/color][color=#0000bb]s[/color][COLOR=#007700];
            }
            public [/COLOR][COLOR=#0000bb]int xx
            [/COLOR][COLOR=#007700]{
                [/COLOR][color=#0000bb]get [/color][color=#007700]{ return [/color][color=#0000bb]x[/color][COLOR=#007700]; }
                [/COLOR][color=#0000bb]set [/color][color=#007700]{ [/color][color=#0000bb]x [/color][color=#007700]= [/color][color=#0000bb]value[/color][COLOR=#007700]; }
            }
            public [/COLOR][COLOR=#0000bb]int yy
            [/COLOR][COLOR=#007700]{
                [/COLOR][color=#0000bb]get [/color][color=#007700]{ return [/color][color=#0000bb]y[/color][COLOR=#007700]; }
                [/COLOR][color=#0000bb]set [/color][color=#007700]{ [/color][color=#0000bb]y [/color][color=#007700]= [/color][color=#0000bb]value[/color][COLOR=#007700]; }
            }
}  
[/COLOR][color=#0000bb][/color][/COLOR]

وقمنا بعمل كائنين كالتالي:

كود :
[color=#000000][COLOR=#0000bb]my object1 [/color][color=#007700]= new [/color][color=#0000bb]my[/color][COLOR=#007700]();
[/COLOR][color=#0000bb]my object2 [/color][color=#007700]= new [/color][color=#0000bb]my[/color][color=#007700]([/color][color=#0000bb]10[/color][color=#007700], [/color][color=#0000bb]20[/color][COLOR=#007700]);  
[/COLOR][color=#0000bb][/color][/COLOR]

ثم إذا قمنا بعمل مساواة ( المساواة التقليدية) كالتالي:

كود :
[color=#000000][COLOR=#0000bb]object1 [/color][color=#007700]= [/color][color=#0000bb]object2[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

فإن الناتج يكون تساوي الكائنين حتى عند تعديل أحدهما يتغير الآخر
وهذه هي المشكلة
تقوم الفكرة على المساواة بين متغيرات الكائن الأول مع متغيرات الكائن الثاني
وهكذا

لهذا السبب نطبق الفكرة في هذا الكود وهي إضافة الكود التالي إلى ذات الكلاس (my) :


كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]public [/color][color=#0000bb]void equ[/color][color=#007700]([/color][color=#0000bb]my aa[/color][COLOR=#007700])
            {
                [/COLOR][color=#0000bb]this[/color][color=#007700].[/color][color=#0000bb]xx [/color][color=#007700]= [/color][color=#0000bb]aa[/color][color=#007700].[/color][color=#0000bb]xx[/color][COLOR=#007700];
                [/COLOR][color=#0000bb]this[/color][color=#007700].[/color][color=#0000bb]yy [/color][color=#007700]= [/color][color=#0000bb]aa[/color][color=#007700].[/color][color=#0000bb]yy[/color][COLOR=#007700];
            }  
[/COLOR][color=#0000bb][/color][/COLOR]

الكود السابق يقوم بعمل مساواة بين كائنين من الكلاس (my )
لذلك عندما نريد المساواة بين كائنين من أي كلاس أخر نقوم بعمل دالة خاصة بالكلاس نفسه
تقوم على أساس مساواة قيم الكائنين

لأي سؤال عن الأكواد في المثال سيتم الاجابة قدر المستطاع
المثال كاملا في المرفقات ( برنامجين أحدهم ب vb.net والآخر ب C# )
إذا كان هناك طريقة أسهل فأرجوا أن يتم ذكرها ليعم النفع على الجميع
بالتوفيق للجميع إنشاء الله




الملفات المرفقة
.rar   twoobjects.rar (الحجم : 36.12 ك ب / التحميلات : 15)
.rar   twoobjectsvb.rar (الحجم : 64.42 ك ب / التحميلات : 20)
}}}}
تم الشكر بواسطة:


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم