2.9 أنواع وكائنات - Types and objects - نسخة قابلة للطباعة +- الفريق العربي للهندسة العكسية (https://www.at4re.net/f) +-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html) +--- قسم : البرمجة بلغة السى و السى بلس بلس ++C & C (https://www.at4re.net/f/forum-17.html) +--- الموضوع : 2.9 أنواع وكائنات - Types and objects (/thread-4025.html) |
2.9 أنواع وكائنات - Types and objects - R333T - 19-05-2024 رحلة في عالم البرمجة: إتقان أساسيات البرمجة وتطبيقاتها باستخدام لغة C++ https://www.youtube.com/playlist?list=PL...qaKxmAKHrq # الفصل 0 : تمهيد
أنواع وكائنات - Types and objects مفهوم النوع مركزي في C++ ومعظم لغات البرمجة الأخرى. دعونا نلقي نظرة أقرب وأكثر تقنية على الأنواع: • يعرف النوع type مجموعة من القيم الممكنة ومجموعة من العمليات (لكائن). • A type defines a set of possible values and a set of operations (for an object). • الكائن هو بعض الذاكرة التي تحمل قيمة من نوع معين. • An object is some memory that holds a value of a given type. • القيمة هي مجموعة من البتات في الذاكرة يتم تفسيرها وفقًا لنوع. • A value is a set of bits in memory interpreted according to a type. • المتغير هو كائن مسمى. • A variable is a named object. • الإعلان هو بيان يُعطي اسمًا ونوعًا لكائن. • A declaration is a statement that gives a name and a type to an object. • التعريف هو إعلان يحجز ذاكرة لكائن. • A definition is a declaration that sets aside memory for an object. بشكل غير رسمي، نعتقد بأن الكائن هو صندوق يمكننا وضع قيم من نوع معين فيه. يمكن لصندوق int أن يحمل أعدادًا صحيحة، مثل 7، 42، و -399. يمكن لصندوق السلسلة أن يحمل قيم سلسلة حرفية، مثل "Interoperability", "operators: +−∗/%", و "Old man had a farm". بصورة رسومية، يمكننا التفكير في ذلك بهذه الطريقة: int a = 7; تعريف متغير صحيح a يحتوي على الرقم 7: int b = 9; تعريف متغير صحيح b يحتوي على الرقم 9: char c = ’a’; تعريف متغير حرفي c يحتوي على الحرف 'a': double x = 1.2; تعريف متغير عشري x يحتوي على الرقم 1.2: string s1 = "Hello, World!"; تعريف متغير سلسلة s1 يحتوي على السلسلة "Hello, World!": string s2 = "1.2"; تعريف متغير سلسلة s2 يحتوي على السلسلة "1.2": تمثيل السلسلة أكثر تعقيدًا قليلاً من ذلك للعدد الصحيح لأن السلسلة تتتبع عدد الأحرف التي تحتوي عليها. لاحظ أن النوع double يخزن العدد بينما تخزن السلسلة الأحرف. على سبيل المثال، يخزن x العدد 1.2، بينما تخزن s2 الأحرف الثلاث '1'، '.'، و '2'. لا يتم تخزين علامات التنصيص للحرف والسلسلة بصورة فعلية. كل int هو من نفس الحجم؛ أي أن المترجم يحجز نفس الكمية الثابتة من الذاكرة لكل int. على جهاز كمبيوتر معتاد أو هاتف ذكي، تكون هذه الكمية 4 بايت (32 بت). بالمثل، bools، chars، و doubles لها أحجام ثابتة. عادةً ما ستجد أن الكمبيوتر يستخدم بايتًا (8 بت) لل bool أو ال char و 8 بايت لل double. لاحظ أن أنواع الكائنات المختلفة تستغرق كميات مختلفة من المساحة. وبشكل خاص، يستغرق char مساحة أقل من int، وتختلف السلسلة عن ال double و int و char في أن السلاسل المختلفة قد تستغرق كميات مختلفة من المساحة. المعنى الذي تحمله البتات في الذاكرة يعتمد تمامًا على النوع المستخدم للوصول إليها. فكر في ذلك بهذه الطريقة: الذاكرة الكمبيوترية لا تعرف عن أنواعنا؛ إنها مجرد ذاكرة. تحصل البتات في الذاكرة على معنى فقط عندما نقرر كيفية تفسير تلك الذاكرة. هذا مشابه لما نفعله كل يوم عند استخدام الأرقام. ما معنى 12.5؟ لا نعرف. يمكن أن يكون 12.5 دولار، 12.5 سنتيمتر، أو 12.5 جالون. فقط عندما نحدد الوحدة يكون التعبير 12.5 له معنى. على سبيل المثال، نفس البتات في الذاكرة التي تمثل القيمة الصحيحة 120 عند النظر إليها على أنها int ستكون الحرف 'x' عند النظر إليها ك char. إذا تم النظر إليها كسلسلة، فلن يكون لها معنى على الإطلاق وستصبح خطأ تشغيل إذا حاولنا استخدامها. يمكننا توضيح ذلك بصورة رسومية بهذه الطريقة، باستخدام 1 و 0 للإشارة إلى قيمة البتات في الذاكرة: 00000000 00000000 00000000 01111000 هذا هو تعيين البتات لمنطقة من الذاكرة (كلمة) يمكن قراءتها على أنها int (120) أو ك char ('x'، عند النظر إلى آخر 8 بت فقط). البت هو وحدة من ذاكرة الكمبيوتر التي يمكن أن تحتوي على القيمة 0 أو 1. |