سؤال

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

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

لا أعتقد أن عدم معرفة الجواب على هذا السؤال قد يؤثر على نوعية البرمجة بلدي و أنها مجرد دلالات نقطة لكنه لا يزال يزعجني أنني لا أستطيع شرح الأمر له.

هل كانت مفيدة؟

المحلول

خاصية واحد نوع من الأعضاء.والبعض الآخر قد يكون المنشئات والطرق حقول متداخلة أنواع التحويلات ، والمفهرسات الخ - اعتمادا على اللغة/منصة بالطبع.الكثير من الوقت بالضبط معنى المصطلحات يعتمد على السياق.

لإعطاء ج#-تعريف محدد, من C# 3.0 المواصفات ، القسم 1.6.1:

يوفر الجدول التالي لمحة عامة عن أنواع من أعضاء فئة يمكن أن تحتوي على.
(الصفوف...)

  • الثوابت
  • الحقول
  • طرق
  • خصائص
  • والمفهرسات
  • الأحداث
  • مشغلي
  • المنشئات
  • Destructors
  • أنواع

علما بأن أعضاء الدرجة.مختلفة "الأشياء" لدينا أنواع مختلفة من أعضاء في C#, واجهة لا يمكن أن يكون حقل كعضو ، على سبيل المثال.

نصائح أخرى

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

وفقط عدد قليل جدا من لغات البرمجة ومفهوم يسمى <م> الملكية أو <م> الأعضاء ، وحتى أقل على حد سواء.

وفيما يلي بعض الأمثلة من اللغات التي لديها أي واحد من هما C ++ (التي لديها أفراد)، ECMAScript (الذي له خصائص) وC # (الذي على حد سواء). ومع ذلك، هذه الشروط لا تدل بالضرورة على نفس المفاهيم في لغات البرمجة المختلفة. على سبيل المثال، فإن مصطلح "عضو" يعني تقريبا نفس الشيء في C ++ و C #، ولكن مصطلح "الملكية" تعني أشياء مختلفة تماما في ECMAScript وC #. في الواقع، فإن مصطلح "الملكية" في ECMAScript يدل تقريبا نفس المفهوم (أي يعني تقريبا نفس الشيء) لأن مصطلح "عضو" في C ++ و C #.

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

خصائص نوع واحد من الأعضاء.

في C# ، على سبيل المثال ، فئة يمكن أن يكون الأعضاء التالية أسماؤهم:

  • المنشئات
  • Destructors
  • الثوابت
  • الحقول
  • طرق
  • خصائص
  • والمفهرسات
  • مشغلي
  • الأحداث
  • المندوبين
  • دروس
  • واجهات
  • البنيات

MSDN:C#:الدرجة

والأعضاء هم كائنات فقط أو أنواع البدائية التي تنتمي إلى فئة.

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

وهذا ينطبق على C #. لست متأكدا إذا كان هذا صحيحا لغات أخرى بالرغم من ذلك.

وقال عضو (المتغير) هو مجرد جزء من الكائن. خاصية هي (أنا التأهل هذا مع "عادة" - أنا لست متأكدا من انها كلمة واضحة من الناحية الفنية لها معنى لا لبس فيه عبر لغات متعددة) هو جانب متاحة للجمهور من وجوه، على سبيل المثال من خلال وسائل جالبة واضعة.

وحتى حين (دائما تقريبا) خاصية هو متغير عضو reacheable، هل يمكن أن يكون الممتلكات التي ليست في الحقيقة جزءا من الدولة الكائن (وليس أن هذا هو التصميم الجيد):

public class Foo {
  public String getJunk()
  { return "Junk";}

  public void setJunk(String ignore){;}
  }
}

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

Object Ball
Property color(some Value)
Method bounce(subroutine describing the movement of the Ball)

وأين يتم تعريف الكرة وأعطيت اللون (الملكية) في حين أن ترتد الأسلوب هو روتين التي تصف كيف أن الكرة ستكون ردة فعل على ضرب كائن آخر.
ليس كل اللغات لها خصائص، أي جافا الحقول التي يجب الوصول إليها من قبل واضعي حاصل فقط.

وخصائص هي وسيلة لفضح المجالات، حيث الحقول المتغيرات الفعلية. على سبيل المثال (C #):

class Foo {
  private int field;
  public int Property {
    get { return field; }
    set { field = value; }
  }
}

دليل PHP :

تسمى

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

الأعضاء هو مصطلح عام (على الأرجح نشأت في C++, ولكن أيضا المعرفة في جافا) للدلالة مكون من فئة.الملكية هي مفهوم واسع للدلالة على سمة معينة من الطبقة التي, مرة واحدة يتم إنشاء مثيل فئة ، سوف تساعد على تحديد حالة الكائن.

المقاطع التالية المستخرجة من "تحليل وجوه المنحى والتصميم" قبل جرادي Booch تساعد على توضيح هذا الموضوع.أولا من المهم أن نفهم مفاهيم الدولة و السلوك:

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

السلوك كيف كائن يتصرف ويتفاعل ، من حيث التغييرات الدولة و تمرير الرسائل (طرق);ظاهريا مرئية وغير قابلة للاختبار نشاط كائن.

لذا سلوك كائن يعتمد على العمليات المتاحة لها الدولة (خصائص وقيمها الحالية).علما بأن OOP جدا العامة بشأن بعض التسميات ، كما أنه يختلف بعنف من لغة إلى أخرى:

شروط المجال (Object Pascal), على سبيل المثال متغير (Smalltalk) ، عضو كائن (C++) و فتحة (كلوس) قابلة للتبادل, بمعنى مستودع جزء من الدولة كائن.بشكل جماعي ، فإنها تشكل الكائن هيكل.

عملية على كائن محدد كجزء من إعلان الدرجة. شروط الرسالة (Smalltalk), طريقة (OO العديد من اللغات) ، عضو وظيفة (C++) و العملية عادة ما تكون قابلة للتبديل.

ولكن التدوين عرض المؤلف دقيق:

وهو السمة يدل على جزء من إجمالي الكائن بحيث يتم استخدامها خلال تحليل وكذلك تصميم للتعبير عن المفرد الملكية الفئة.باستخدام لغة مستقلة بناء جملة السمة قد يكون اسم الطبقة ، أو كليهما ، واختياريا الافتراضي التعبير: A:C=E.

وهو العملية يدل على بعض الخدمات المقدمة من قبل الطبقة.العمليات (...) متميزة من سمات بإلحاق قوسين أو من خلال توفير العملية كاملة التوقيع تتألف من العودة الدرجة, اسم, و الحجج (إن وجدت): R N(Arguments)

في ملخص, يمكنك التفكير في أعضاء كل شيء يؤلف الصف ، و خصائص أعضاء (سمات) مجتمعة تحدد هيكل الفئة ، بالإضافة إلى علاقاتها إلى فئات أخرى.عندما يتم إنشاء مثيل فئة ، يتم تعيين قيم خصائصه من أجل تحديد حالة الكائن.

هتافات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top