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

استفسار عن اخفاء البيانات في البرمجه الشيئيه

مغلق
بدأه Asm4all في 31 أكتوبر 2005 · 27 رد · 2,402 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاستفسار لتلافي الوقوع في أخطاء من استخدام كلاس غير مصممه للاستخدام مباشرة ( كلاس مصممه لتورث الى كلاسات اخرى ولكن لا يصح استخدام هذه الكلاس بمفردها) , اريد منع التعامل مع هذه الكلاس بشكل مباشر

مثال للتوضيح ( الكود ليس للتجريب , فقط للتوضيح )

namespace MyNameSpace {
  class Parent {
  protected:
    int varx, vary;
  public:
    void pMethod(int arg1, int arg2);
    int get_X();
    int get_Y();
  };
  class Son1 : Parent {
  private:
    int var1, var2;
  public:
    Son1();
    Son1(int Arg1, int Arg2);
    ~Son1();
    int sMethod(int Arg1, int Arg2);
  };
  class Son2 : Parent {
  private:
    int var1, var2;
  public:
    Son2(int Arg1);
    ~Son2();
    int sMethod1(int Arg1, int Arg2, int Arg3);
    void sMethod2(char *pArg1);
  };
}

كما موضح في المثال , تم انشاء كلاس Parent , بعدها تم انشاء الكلاس Son1 والتي ترث من الكلاس Parent وتضيف عليها طبعا , وتم ايضا انشاء الكلاس Son2 وهي ايضا ترث من الكلاس Parent وتضيف عليها

الآن ما المشكله ؟؟؟

المشكله هي أن الكلاس Parent مصممه فقط لترثها كل من الكلاس Son1 و Son2 , لكن لا يحق استخدام الكلاس Parent مباشرة في البرنامج لأنها لا فائده لها وحدها

المشكله عند عرض الكلاسات المتاحة استخدامها في الـ namespace الجديد المسمى MyNameSpace يعرض لي الكلاس Parent وطبعا متاح التعامل معها وانشاء كائن منها وكل شيء

يعرضها بهذا الشكل

30314154070.jpg

:s

ونفسي انها تتعرض بهذا الشكل

30314193364.jpg

:D

دي النقطه الاولى

النقطه الثانيه هي:

عند انشاء كلاس وعرفنا فيها متغيرات private أو protected فلماذا يظهرها لي عند استخدام الكائن من هذا الكلاس ؟؟

يعرضها بهذا الشكل

30314204985.jpg

:s

وايضا اتمنى ان تظهر بهذا الشكل

30314255797.jpg

:D

أعرف انها لا تفرق لأن المترجم لن يقبل التعامل مع هذه المتغيرات أو الدوال المعرفه على انها خاصه أو محميه , ولكن اتكلم عن تنظيم الشكل , هل حلها سهل ؟

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 5 أبريل 2014 في 17:54 — السبب: add some tags

#2

أعتقد أنك تتحدث على الabstract class

في ال++C لا يوجد ما يُسمى abstract class أو mustinherit class و لكن يتم ذلك عن طريق تعريف و لو function واحدة على الأقل من نوع pure virtual

  class Parent {
 protected:
   int varx, vary;
 public:
   void pMethod(int arg1, int arg2);
virtual void AnyFunction() = 0; // Pure Virtual Function
   int get_X();
   int get_Y();
 };

و كما ترى عرفنا function من نوع virtual بدون أي implementation بل و ساويناها ب0 دلالة على أنها Pure Virtual

و هكذا لن يسمح لك الCompiler بانشاء instants أو objects من الParent أبداً

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3
اقتباس
المشكله هي أن الكلاس Parent مصممه فقط لترثها كل من الكلاس Son1 و Son2 , لكن لا يحق استخدام الكلاس Parent مباشرة في البرنامج لأنها لا فائده لها وحدها

همممم .. مش صحيح! مجرد كون الكلاس abstract لا يعني انه لا فائده منه (او من اسمه), الـ polymorphism متشتغلش الا لما يكون عندك مؤشر لهذا الكلاس

MyNameSpace::Parent * p = <.... something .....>

// .. some code or whatever

p->pMethod( arg1, arg2 );

فيما يتعلق باخفاء الـ private members من "قائمة الاقتراحات" (إذا جاز لي ان اسميها هكذا), فلا اعرف, لكن سأحاول النظر فيها إن شاء الله.

#4
اقتباس
أعتقد أنك تتحدث على الabstract class

في ال++C لا يوجد ما يُسمى abstract class أو mustinherit class و لكن يتم ذلك عن طريق تعريف و لو function واحدة على الأقل من نوع pure virtual

لكن هذا يحتاج الى تعريف الداله مره اخرى في الكلاس التي سوف ترث الكلاس الأب , وانا لا احتاج لاضافة اي دوال جديده , لأن الدوال المشتركه بين الأبناء عرفتها في الأب بعد هذا كل الدوال الباقيه في الأبناء تختلف اختلاف كلي في الاسم والوظيفه

ولا يمكن ترك الداله دون تعريف في الكلاسات الجديده والا تصير هذه الكلاسات هي الاخرى abstract ولا يسمح المترجم بالتعامل معها هي الاخرى

وفي جميع الحالات , لا يزال الفيجوال سي بيعرضها في ضمن اقتراحاته للكلاسات التي يمكن استخدامها :s

اقتباس
همممم .. مش صحيح! مجرد كون الكلاس abstract لا يعني انه لا فائده منه (او من اسمه), الـ polymorphism متشتغلش الا لما يكون عندك مؤشر لهذا الكلاس

انا اقصد لا فائده منه للمبرمج بصوره مباشره , يعني المفروض انه ما يعرفش عنها أي حاجه ولا يشوف وشها أصلا , طبعا هذ موجوده للمترجم لتوريثها للكلاسات الاخرى لأن بها تفاصيل التوريث , يعني المترجم هو المفروض اللي يعرف يشاور على الكلاس الأب لكن المبرمج المفروض انه ما يشوفهاش هي , آخره يشوف عيالها وعيال عيالها :lol:

اقتباس
فيما يتعلق باخفاء الـ private members من "قائمة الاقتراحات" (إذا جاز لي ان اسميها هكذا), فلا اعرف, لكن سأحاول النظر فيها إن شاء الله.

سميها مثل ما تحب , أهم شيء تكون وصلت الفكره , وان شاء الله نلاقي حل , اصل الشكل مش عاطفي خالص :D

#5
اقتباس
انا اقصد لا فائده منه للمبرمج بصوره مباشره , يعني المفروض انه ما يعرفش عنها أي حاجه ولا يشوف وشها أصلا , طبعا هذ موجوده للمترجم لتوريثها للكلاسات الاخرى لأن بها تفاصيل التوريث

ما قلنالك الكلام ده مش صحيح! مفيش حاجة اسمهة المبرمج المفروض ميشوفهاش ولا يعرف وشها .. هي موجودة لانها موجودة, مفيش سبب يخلي المترجم يفترض افتراضات من قبيل "المبرمج مش المفروض يعرف بوجود هذا الكلاس"

#6
hasan_aljudy كتب:
ما قلنالك الكلام ده مش صحيح! مفيش حاجة اسمهة المبرمج المفروض ميشوفهاش ولا يعرف وشها .. هي موجودة لانها موجودة, مفيش سبب يخلي المترجم يفترض افتراضات من قبيل "المبرمج مش المفروض يعرف بوجود هذا الكلاس"

يا عم حسن انا بابحث عن سبب أحطه للمترجم علشان يحتفظ بيها لنفسه , لو قلتلي مش صحيح كمان مره انا حاطلعلك من الشاشه أوريك شغلك :P

انا عارف ان الكود بهذا الشكل يجعل المترجم يتعامل بهذه الصوره (في نقطة الوصول للكلاس الأب) والشغل منطقي جدا لأنه مش حيخمن اني مش عايز أخلي المبرمج يشوفها

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

يعني كلام الباش مهندس حل نصف المشكله دي لكن خلق مشكله اخرى

حسن يا تقول كلام جديد يا تبعد عن الكمبيوتر الساعه دي :D

وبعدين انا مش بافتري على الفيجوال , انت بتشوف مثلا كلاس نص كم طالعالك وانت بتبرمج , ولا بتشوف متغير خاص ظاهرلك التعامل معاه ده بالنسبه للكلاسات الجاهزه

لكن التفصيل لازم يشوهها لينا زي ما نكون شاحتين الفيجوال مش نسخينه على اسطوانه أو محملينه من على النت مثلا :o

#7

صراحة قريت الموضوع مليون مرة حاولت أفهـم ما قدرت أفهـم ... كل اللي فهـمته أن هاذي اللي تسمونها قائمـة الاقتراحات ما تبغـونها تظهر الكلاس Parent .. وما أدري فهـمي صح ولا لأ (ملاحظـة: الصور الموضوعـة لا تظهر عـندي) ........

هذا الأمر لا أعتقد أن له حل.. ولا أدري لماذا تريد أن يكون له حل .. الحل الخارق الوحيد هـو تسريب السورس كود للفيجوال وتعـديله حتى لا يقوم بإظهار الكلاس Parent

لدي اقتراح آخر في موضوع لا خبرة لي فيه هـو أن تقوم بكتابة تعليمات أسمبلي حتى تفهـم المترجم أو محرر الفيجوال ألا يقوم بعرض هذا الكلاس (ملاحظـة: لم أكتب كود أسمبلي في حياتي لذلك لا يتهـمني أحد بالغباء إن كان اقتراحي سخيفاً للغاية)

بالنسبة لاعتراضك حول أن قائمـة الاقتراحات أو الاختصارات تقوم بإظهار حتى الـ Private Members فأعتقد أنه يوجد علامـة قفل أو مفتاح (لا أدري ما نوع العلامـة بالضبط) بجانب الأعضاء الخاصـة وعلامـة أخرى بجانب الأعضاء العامـة....

أنا آسف لأني لم أفهـم آسف آسف للغاية

#8

صحيح الرد بتاعي مش هايفيد بس الحكاية اللى انت عايزها دي سهلة موووووووت بلسي شارب

تم تعديل هذه المشاركة بواسطة H@mis في 1 نوفمبر 2005 في 04:09

#10

فهمت صح يا سلطان :D فعلا ( بم ان الصور مش واضحه عندك أوضحلك هي ايه) لا اريد الكلاس Parent تظهر في القائمه التي يظهرها الفيجوال سي عند كتابة اسم الـ namespace متبوع بالعلامه :: مثل

MyNameSpace::

اريد ان تظهر فقط الكلاس Son1 , Son2

طبعا من كلامك واضح انها مستحيله ( ما اجتمعت الامة على باطل :D ) خلاص يا شباب تراجعت عن الطلب اللي محتاج لتسريب كود الفيجوال ستوديو :D , يا سيدي نبعتلهم Feedback بالطلب أحسن يمكن يعملوها في نسخة 2020 :lol:

والنقطه الثانيه هي ظهور المتغيرات الـprivate والـ protected أيضا في القائمه (وعليها علامه قفل للـ private ومفتاح للـ protected ) وهي أيضا لا تستخدم من قبل المبرمج فلم يظهرونها في القوائم ؟

اقتباس
لدي اقتراح آخر في موضوع لا خبرة لي فيه هـو أن تقوم بكتابة تعليمات أسمبلي حتى تفهـم المترجم أو محرر الفيجوال ألا يقوم بعرض هذا الكلاس (ملاحظـة: لم أكتب كود أسمبلي في حياتي لذلك لا يتهـمني أحد بالغباء إن كان اقتراحي سخيفاً للغاية)

غباء ايه يا عم انت , محدش يقدر يقول عليك حاجه وانا موجود :angry:

هي صعبه حبتين لكن لا غباء ولا حاجه :D , بس انت كده قلتلي بطريقه كويسه انسى :lol:

صحيح يا ريت تقوللي على موقع لرفع الصور غير محجوب في السعوديه , لأني كذا موقع جربته شغال هنا وفي شكوى خاصة في السعوديه من عدم ظهور الصور

#11
H@mis كتب:
صحيح الرد بتاعي مش هايفيد بس الحكاية اللى انت عايزها دي سهلة موووووووت بلسي  شارب

شكلها اتحلت , ها يا هاميس بتتعمل ازاي في السي شارب ؟؟؟؟؟؟؟

#12

كنت هاعملها abstract كلاس ومكنتش هاخليه public

بس الظاهر انى مخي اتلحس :blink:

وطلع الحل العبقري غلط :(

#13
H@mis كتب:
كنت هاعملها abstract كلاس ومكنتش هاخليه public

بس الظاهر انى مخي اتلحس  :blink:

وطلع الحل العبقري غلط :(

غلط :s

بعد ماعمل مؤتمر صحفي , بتقولي غلط !!!

الحمد لله اني اكتشفت الحل العبقري صحيح قبل ما الموضوع يكبر , هو حل مبني على التسول :lol:

class Parent { // Don't Use It Pleeeeeeeeeease

نظام شحاته من المبرمج

وتظهرله كده وهو بيبرمج

30411255333.jpg

أصعب عليه , فيسيب الكلاس في حالها

حل عبقري فعلا :blink:

#14

أخ Asm4all :

لماذا تقول عـن اقتراحي أنـه (أنسـى) بالعكس يا أخي ، المفروض هذا الأمر يدفعـك إلى الأمام .... أنظر إلي أنا مثلاً أنتهيت من مترجـم للسي بلس بلس وكل الأمر لم يحتاج سوى ساعـة أو ساعتين فقط وقد صنعت قبلاً ثلاث أنظمـة تشغيل كلها في ست أيام :وعـما قريب سأصدر سلسلة أطلقت عليها اسم الإكسير أصدرت أول كتاب منـها وهي تصل إلى 100 كتاب كل كتاب عبارة عـن 15 ألف صفحـة كلها في علوم الحاسب الآلي ... يعـني المفروض أكون قدوة أنا لكل المنتدى.. المفروض تعـمل زي وتسوي لك كم نظام تشغيل على الطاير... بالمناسبة انتهيت قبل قليل من صنع أول جهاز حاسب في التاريخ من الجيل السادس وليس الخامس ويمتاز هذا الجهاز بأنه لا يحتاج لا إلى كهرباء ولا إلى أي شيء بل فقط يحتاج توصيل إلى دماغ الإنسان وسيعـمل من داخل دماغ الإنسان....بالمناسبة سأضع مترجم السي بلس بلس هـنا على المنتدى قبل ما أروح إلى صلاة العيد ، وقد أخذت في بالي احتياجات الزبائن إللي مثلك وعشان أحل لك المشكلة ، فقط قم بكتابة هذين السطرين في محرر مترجمي:

Lesson To me Compiler if I see any Parent I will Kill you

ولن تظهر مرة أخرى كلمـة Parent في قائمـة الاقتراحات....

انتهى المزح ونعـود إلى الجد:

بالنسبة لسبب ظهور المتغيرات الخاصـة والمحميـة في قائمة الاقتراحات فالأمر يعـود ربما حتى يعرف مستخدم الصنف ولو فكرة بسيطـة عـن الصنف الذي يستخدمـة ، أيضاً هي تفيدك إذا قمت بالتصريح عـن دالة أو كلاس صديقـة....

بالمناسبة إذا وضعت سلسلة الإكسير ذات الـ 100 كتاب والـ 15 ألف صفحـة لكل كتاب هل ستعـطوني كم لينار

#15
Asm4all كتب:

الحمد لله اني اكتشفت الحل العبقري صحيح قبل ما الموضوع يكبر , هو حل مبني على التسول  :lol:

class Parent { // Don't Use It Pleeeeeeeeeease

نظام شحاته من المبرمج

وتظهرله كده وهو بيبرمج

30411255333.jpg

أصعب عليه , فيسيب الكلاس في حالها

حل عبقري فعلا  :blink:

تصدق اجدع حل بلا abstract بلا قلبة دماغ :blink:

بس بجد انامش عارفة ازاي فكرت في الحل العبقري بتاعى قال يعني لما ماعملش الكلاس public

مش هابنفع اورث منه وعشان اخلي اتنين يورثه منه اخليه abstract

مش بقولك مخي لحس :wacko:

تم تعديل هذه المشاركة بواسطة H@mis في 2 نوفمبر 2005 في 00:44

#16

سوف تظهر الفئة Parent إذا كان المبرمج يعمل في نفس الحزمة أو الامتداد namespace..

أقصد:

namespace package1{
internal class FirstClass{}
public class Son extends FirstClass{}
}
namespace package2{
class MainClass{
package1. //I think nothing will appear except class Son

أما إذا ظهرت الفئة الخاصة FirstClass معنى هذا أن بيئة التطوير غبية!!

بالتوفيق!

#17

سلطان :

اقتباس
المفروض هذا الأمر يدفعـك إلى الأمام

ههههههه شلوت سعادتك دفعه للأمام :lol: :lol:

اقتباس
أنظر إلي أنا مثلاً أنتهيت من مترجـم للسي بلس بلس وكل الأمر لم يحتاج سوى ساعـة أو ساعتين فقط وقد صنعت قبلاً ثلاث أنظمـة تشغيل كلها في ست أيام :وعـما قريب سأصدر سلسلة أطلقت عليها اسم الإكسير أصدرت أول كتاب منـها وهي تصل إلى 100 كتاب كل كتاب عبارة عـن 15 ألف صفحـة كلها في علوم الحاسب الآلي ... يعـني المفروض أكون قدوة أنا لكل المنتدى.. المفروض تعـمل زي وتسوي لك كم نظام تشغيل على الطاير... بالمناسبة انتهيت قبل قليل من صنع أول جهاز حاسب في التاريخ من الجيل السادس وليس الخامس ويمتاز هذا الجهاز بأنه لا يحتاج لا إلى كهرباء ولا إلى أي شيء بل فقط يحتاج توصيل إلى دماغ الإنسان وسيعـمل من داخل دماغ الإنسان
ما شاء الله , اخيرا شفت خليفتي في الملاعب :D

انا شفت حاجه زي كده

Lesson To me Compiler if I see any Parent I will Kill you

هو كان المترجم ده من صنعك, ما شاء الله ما شاء الله , افتكر كانت بتعرف في البدايه هكذا

using namespace  HAGS; مساحة الأسماء لزوم الهجص
#pragma Lesson To me Compiler if I see any Parent I will Kill you

اقتباس
بالنسبة لسبب ظهور المتغيرات الخاصـة والمحميـة في قائمة الاقتراحات فالأمر يعـود ربما حتى يعرف مستخدم الصنف ولو فكرة بسيطـة عـن الصنف الذي يستخدمـة ، أيضاً هي تفيدك إذا قمت بالتصريح عـن دالة أو كلاس صديقـة....

يا سيدي عنه ما عرف حاجه و هو مش ليه انها تشتغل وخلاص ماله هو شكلها ايه من جوه , مش ده مفهوم اخفاء البيانات

اقتباس
بالمناسبة إذا وضعت سلسلة الإكسير ذات الـ 100 كتاب والـ 15 ألف صفحـة لكل كتاب هل ستعـطوني كم لينار

انا عن نفسي اعطيك لينار لكل سطر شوف انت بقى حتعمل كام من ورايا لوحدي و انا عندي اللينارات زي الرز باتكعبل فيهم وانا ماشي :D

هاميس :

اقتباس
تصدق اجدع حل بلا abstract بلا قلبة دماغ 

بس بجد انامش عارفة ازاي فكرت في الحل العبقري بتاعى قال يعني لما ماعملش الكلاس public

مش هابنفع اورث منه وعشان اخلي اتنين يورثه منه اخليه abstract

مش بقولك مخي لحس

انت ما تسكتيش على الحاله دي كده , انت لازم تقري كل الـ 100 كتاب بتوع سلطان أكيد حتستفيدي منهم , امال انا دفعلت اللينارات ليه ؟ :blink:

أبومازن:ضاقت, ولما استحكمت حلقاتها فرجت , وكنت اظنها لا تفرج :D

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

هي اي نعم كلمة internal مش موجوده غير في الجافا لكن الحمد لله لقيت لها حل

الأن القائمة تظهر الأبناء فقط , والأبناء يرثون الأب الخالق الناطق :D , والكود بهذا الشكل

namespace Hidden {
  class Parent {
  protected:
    int varx, vary;
  public:
    void pMethod(int arg1, int arg2);
    int get_X();
    int get_Y();
  };
}
namespace MyNameSpace {
  class Son1 : Hidden::Parent {
  private:
    int var1, var2;
  public:
    Son1();
    Son1(int Arg1, int Arg2);
    ~Son1();
    int sMethod(int Arg1, int Arg2);
  };
  class Son2 : Hidden::Parent {
  private:
    int var1, var2;
  public:
    Son2(int Arg1);
    ~Son2();
    int sMethod1(int Arg1, int Arg2, int Arg3);
    void sMethod2(char *pArg1);
  };
}

يعني وضعت الأب في namespace تانيه خالص غير الأولاد وبكده الأولاد ترعرعوا في غياب الأب :s , مليش دعوه أهم حاجه عندي تحليل الـ DNA أثبت انهم عياله :D

ألف شكر يا ابو مازن وعقبال ما نلاقي حل للحكايه التانيه

تم تعديل هذه المشاركة بواسطة Asm4all في 2 نوفمبر 2005 في 03:18

#18

بعض النقاط السريعة:

أولا: internal كلمة في سي شارب! وآسف لأن شفرتي ليست جافا ولا سي شارب بل هي خليط!!

ثانيا: أعتقد تستطيع أن تجعل الأب والأبناء في نفس الامتداد أو الحزمة مع جعل الأب protected وجعل الأبناء public،، وبعد هذا في امتداد برنامجك الفعلي وليكن main استعمل الامتداد الأول ولن يظهر لك إلى الأبناء العامين أو public. ولو هذه ليست موجودة فهي مأساة،، ابحث عنها أكثر!

ثالثا: ربما ليس في سي ++ internal كما في سي شارب أو package كما في جافا،، لكن ربما عندك friend!!

رابعا: أي قصة أو حكاية أخرى تقصد؟!

#19

أخ Asm4all :

أنا آسف بس في غلط شنيع في المترجم اللي أنا كاتبـه ، أنظر إلى هذا الأمر مثلاً في مترجمي

اقتباس
Lesson To me Compiler if I see any Parent I will Kill you

الترجمـة العربية لها: درس لي مترجـم إذا رأيت أي والد هـنا سأقتلك

بينما الصحيح أن يكون الأمر هـكذا:

Listen to me compiler if I see any Parent I will kill you

معليش على هذا الخطأ الشنيع ، إن شاء الله في الإصدار الثاني من مترجمي سأعـدله

يا أخي ممكن سؤال خاص:

هل أنت لهذه الدرجـة معقد من الكلاس Parent يا أخي راح يذبحك إذا طلع في قائمـة الاقتراحات... أنا لما دخلت على موضوعـك تفاجأت .. معقولة اللي أنا خليفته في الملاعب يسأاااااااااال!!!!!!!!

أيوه صح ... ممكن تعرفنا على VC أو CV أو بالعربي السيرة الذاتيـة لك .. مثلما تعرفت على سيرتك الذاتية

#20

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

ثانيا:

اقتباس
ثانيا: أعتقد تستطيع أن تجعل الأب والأبناء في نفس الامتداد أو الحزمة مع جعل الأب protected وجعل الأبناء public،، وبعد هذا في امتداد برنامجك الفعلي وليكن main استعمل الامتداد الأول ولن يظهر لك إلى الأبناء العامين أو public. ولو هذه ليست موجودة فهي مأساة،، ابحث عنها أكثر!

هذه النقطه تحديدا , هي اول شيء عملته وكانت النتيجه

'MyNameSpace::Son2' : an assembly access specifier can only be applied to a managed type
'MyNameSpace::Son1' : an assembly access specifier can only be applied to a managed type
'MyNameSpace::Parent' : an assembly access specifier can only be applied to a managed type

خلاصة القول ان الحكايه دي تنفع في الـ managed code يعني في الـ vc.net فقط

ومن هنا نثبت أن بيئة التطوير غبية :D

ثالثا : الـ friend class لا تحل المشكله

رابعا : القصه اني عايز أخفي أي شيء private في الكلاس بحيث لا يتم عرضه في القوائم , وأعتقد ان المشكله في بيئة التطوير الغبية جدا

#21
Lesson

تصدق ما أخذت بالي , قرأتها

Listen

مع سياق الكلام وبعدين ما تخاف , ال IDE بتعدلها بالـ ctrl+space :D

اقتباس
هل أنت لهذه الدرجـة معقد من الكلاس Parent يا أخي راح يذبحك إذا طلع في قائمـة الاقتراحات... أنا لما دخلت على موضوعـك تفاجأت .. معقولة اللي أنا خليفته في الملاعب يسأاااااااااال!!!!!!!!

أصلا بعد ما كتبت الكلاسات ورحت استخدمها في البرنامج لقيت الكلاس Parent - طبعا مش ده اسمها الفعلي ده تمويه :unsure: - طلعتلي مثل القضا المستعجل , وافتكرت حكاية المتغيرات الخاصه كمان قلت ما بدهاش أروح اقلب المعبد على اللي فيه

وبعدين خليك حويط :D , انا باسأل علشان خليفتي في الملاعب يتعلم يسأل هو كمان , امال حنتعلم كيف ؟ اتعلم يا ابني اتعلم :lol:

اقتباس
أيوه صح ... ممكن تعرفنا على VC أو CV أو بالعربي السيرة الذاتيـة لك .. مثلما تعرفت على سيرتك الذاتية

بصراحه الـ VC مغلبني جدا واديك شايف :lol:

لكن الـ CV عندي صعب التجميع , باحتاج منتدى خاص أفشر فيه براحتي :D

#22

:

Asm4all كتب:
هاميس :

انت ما تسكتيش على الحاله دي كده , انت لازم تقري كل الـ 100 كتاب بتوع سلطان أكيد حتستفيدي منهم , امال انا دفعلت اللينارات ليه ؟  :blink:

ماشي بس العلاج على حسابك هابقى ابعتلك الفاتورة :lol:

:

Asm4all كتب:
namespace Hidden {
  class Parent {
  protected:
    int varx, vary;
  public:
    void pMethod(int arg1, int arg2);
    int get_X();
    int get_Y();
  };
}
namespace MyNameSpace {
  class Son1 : Hidden::Parent {
  private:
    int var1, var2;
  public:
    Son1();
    Son1(int Arg1, int Arg2);
    ~Son1();
    int sMethod(int Arg1, int Arg2);
  };
  class Son2 : Hidden::Parent {
  private:
    int var1, var2;
  public:
    Son2(int Arg1);
    ~Son2();
    int sMethod1(int Arg1, int Arg2, int Arg3);
    void sMethod2(char *pArg1);
  };
}

يعني وضعت الأب في namespace تانيه خالص غير الأولاد وبكده الأولاد ترعرعوا في غياب الأب  :s  , مليش دعوه أهم حاجه عندي تحليل الـ DNA أثبت انهم عياله  :D

ألف شكر يا ابو مازن وعقبال ما نلاقي حل للحكايه التانيه

يعني هو كده يعني مش هاينفع اكسسيسه معتقدش اصلها مش سي شارب عادي ممكن اعمل كلاس تاني في نيم سبيس تاني ويورث منه

أرجو التوضيح بس يارب مايكون الموضوع واضح ساعتها بجد هاشوفلى دكتور :lol:

تم تعديل هذه المشاركة بواسطة H@mis في 2 نوفمبر 2005 في 18:55

#23

علشان توصلي للـ class Parent لازم تنادي الـ namespace Hidden مخصوص , يعني يتتعمدي الوصول ليها , يعني عارفه انها موجوده من البدايه ومحتاجاها الآن في التوريث لكلاس جديده

لكن المبرمج اللي مش عارف غير الـ namespace MyNameSpace لا يعرف أيضا غير الكلاسات الأبناء فقط , وضحت ؟

#24

لا إله إلا الله

انت دلوقتى مش عايز المبرمج يورث من الاب بس في نفس الوقت بتقوله عندك الابناء اهم في عشان يورثوا لازم يوصلوا ل namespace Hidden فين القفلة والحماية في كده

ماهو لما هايشوغ كده هايعرف مكان الكلاس الاب ويورث منه زي ماهو عايز :(

هو أنا حصلي حاجة ولا انا بتكلم صح <_<

تم تعديل هذه المشاركة بواسطة H@mis في 3 نوفمبر 2005 في 04:19

#25

محمد رسول الله

انا باتكلم في ايه وانت بتتكلمي في ايه ؟؟

انا ولا باحمي الكود ولا باخفيه ولا حاجه , فقط اريد الكلاس اللي مصممها علشان المبرمج يتعامل معاه مباشرة هي اللي تظهرله في قائمة الاقتراحات زي ما سماها حسن , غير كده ما يظهرش علشان ما يلخبطش المبرمج وهو بيكتب الكود

بس كده :s

يعني لو المبرمج عايز يعمل حاجه بالكلاس الأب يتفضل يعمل اللي هو عايزه , لكن طالما هو مش ناوي يتعامل معها اثناء البرمجه كأن يصنع منها object أو يورث منها كلاس اخرى , يبقى ايه الداعي اني أظهرهاله ؟

خدي الكود وانسخيه في الفيجوال سي وفي الـ main اكتبي السطر ده

MyNameSpace::

وشوفي ايه حيظهر

لو لسه مش وضحالك الصوره , قوليلي المبرمج حيوصل ازاي للكلاس الأب وهو بيبرمج , بعد ما تجاوبي ارجعي تاني لمشاركتي اللي فاتت حتلاقي الجواب هو ده , يعني المبرمج علشان يوصل للكلاس الأب لازم يدخل عمد مع سبق الاصرار والترصد , مش جياله في القايمه بالإكراه

و ما تستعجليش في برنامج باعمله ولما اخلصه ان شاء الله اضع الكود في المنتدى

تم تعديل هذه المشاركة بواسطة Asm4all في 3 نوفمبر 2005 في 05:36

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

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

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

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

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

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