سؤال

وأعتقد أنني أستعمل هذه الشروط interchangably / خطأ!

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

المحلول

وإيان، وهذا هو في الأساس مسألة المصطلحات وهو، على الرغم من سماته "الملحد اللغة" المرتبطة بهذه المسألة، اللغة ذاتها / بيئة ذات الصلة.

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

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

نصائح أخرى

وHershi على حق حول هذه اللغة كائن محددة. ولكن إضافة إلى درب إجابات محددة لغة:

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

وخصائص هي اختصارات لجالبة طرق / واضعة ذلك <م> تبدو تماما مثل مثيل متغير . وهكذا، في تعريف الفئة التالية (معدلة من نمط جديد بيان الكائن غيدو ):

class C(object):

    def __init__(self):
        self.y = 0

    def getx(self):
        if self.y < 0: return 0
        else: return self.y

    def setx(self, x):
        self.y = x

    x = property(getx, setx)

>>> z = C()
>>> z.x = -3
>>> print z.x
0
>>> print z.y
-3
>>> z.x = 5
>>> print z.x
5
>>> print z.y
5

وy هو متغير مثيل z، x خاصية. (بشكل عام، حيث يتم تعريف الممتلكات، وهناك بعض التقنيات المستخدمة لحجب متغير مثيل المرتبطة بحيث كود الآخر لا الوصول إليه مباشرة.) الاستفادة من خصائص في بيثون هو أنه مصمم ليس من الضروري أن يرحل وقائيا التغليف جميع المتغيرات سبيل المثال، منذ التغليف في المستقبل عن طريق تحويل متغير مثيل إلى خاصية يجب أن لا يكسر أية تعليمات برمجية موجودة (ما لم يتم أخذ رمز الاستفادة من الثغرات التغليف الخاص بك هو محاولة لإصلاح، أو الاعتماد على التفتيش فئة أو بعض الفوقية الأخرى تقنية -programming).

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

والمثال رمز عمله في C #

public class ClassName
{
   private string variable;

   public string property
   {
      get{ return variable; }
      set { variable = value; }
   }
}

في ج موضوعية، وهي خاصية غير متغير مثيل والتي يمكن الاستفادة من عامل نقطة زائد للاتصال اضع وجالبة. ويفسر ذلك my.food = "تشيز برجر" في الواقع كما [بلدي setFood: "تشيز برجر"]. هذا مثال آخر حيث التعريف هو بالتأكيد ليست لغة الملحد لأن الهدف-ج تحدد الكلمةproperty.

وربما أن يكون لأنك أول من جاء C ++ أليس كذلك ؟! في أيام مدرستي كان الأساتذة يقولون خصائص الطبقة أو الفئة atributes في كل وقت. منذ انتقلت إلى جافا C # العالم، بدأت أسمع عن أعضاء. أعضاء الفئة، أعضاء مثيل ...

وفوق خصائص apear! في جاوة و.NET. لذلك أعتقد أنه أفضل لك أن نسميها الاعضاء. سواء كان كذلك هم أعضاء مثيل (أو كما كنت وصفته المثال متغير) أو فئة الأعضاء ....

وهتاف!

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

في إضافة إلى ما قيل، في الناطقة مثل C #، وهي خاصية هي في الأساس الحصول على وتعيين وظيفة. ونتيجة لذلك، يمكن أن يكون منطق المخصصة التي تدير بالإضافة إلى / إعداد تحصل. متغير مثيل لا تستطيع أن تفعل هذا.

وخاصية هي نوع من البيانات المرتبطة مع كائن. على سبيل المثال، خاصية الدائرة قطرها، وآخر هو منطقته.

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

وبعض اللغات لديها مفهوم خصائص "من الدرجة الأولى". وهذا يعني أن لتطبيق عميل، الخاصية تبدو ويستخدم مثل متغير مثيل. وهذا هو، بدلا من كتابة شيء من هذا القبيل circle.getDiameter()، أن تكتب circle.diameter، وبدلا من circle.setRadius(5)، أن تكتب circle.radius = 5.

وعلى النقيض من إجابات أخرى معينة، I <م> قيام أعتقد أن هناك تمييز مفيد بين المتغيرات عضو والخصائص التي هي لغة الملحد.

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

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

scroll top