لماذا البرمجة الشيئيةتعطى الأفضلية في معظم المشاريع؟ تقدم أوب طريقة فعالة للتعامل مع تعقيدها. بدلا من اعتبار البرنامج كتسلسل من التعليمات القابلة للتنفيذ، فإنه يمثل مجموعة من الكائنات مع خصائص معينة ويؤدي بعض الإجراءات معهم. وهذا يؤدي إلى إنشاء تطبيقات أكثر وضوحا وأكثر موثوقية وسهلة لمتابعة.
المبادئ الأساسية للجوه المنحى(أوب) لأن القيود وجدت في النهج السابقة. من بينها - الوصول غير المحدود إلى البيانات وعدد كبير من الروابط التي تفرض قيودا على إدخال التغييرات. وعيهم وأسبابهم مهمة من أجل فهم ما هو برنامج العمل في البرمجة وما هي فوائده.
C، باسكال، فورتران واللغات المماثلة هيإجرائية. وهذا هو، كل من مشغليها أوامر الكمبيوتر أن تفعل شيئا: الحصول على البيانات، تضيف ما يصل الأرقام، وتقسيمها من قبل ستة، وعرض النتيجة. تطبيق اللغة الإجرائية هو قائمة من التعليمات. إذا كان صغيرا، لا يتطلب أي مبدأ تنظيمي آخر (غالبا ما يسمى نموذج). مبرمج يخلق قائمة من التعليمات، والكمبيوتر ينفذ لهم.
عندما تصبح التطبيقات أكبر، والقائمةهو مرهقة. عدد قليل يمكن أن نفهم أكثر من بضع مئات من التعليمات حتى يتم تجميعها معا. لهذا السبب، أصبحت وظيفة وسيلة لجعل التطبيقات أكثر مفهومة لمبدعيها. في بعض اللغات، يمكن أن يسمى نفس المفهوم برنامج فرعي أو إجراء.
وينقسم التطبيق إلى وظائف، كل منها له غرض محدد بوضوح واجهة.
ويمكن توسيع فكرة الفصل في الإجراءات من خلال تجميعها في كائن أكبر يسمى وحدة نمطية، ولكن المبدأ مشابه: تجميع المكونات التي تنفذ قوائم التعليمات.
يعتبر الفصل بين الوظائف والوحدات أحد الأركان الأساسية للبرامج الإنشائية ، التي كانت قبل عدة عقود من ظهور OOP نموذجًا استباقيًا.
كما نمت التطبيقات على نحو متزايدكبيرة، بدأت البرمجة الهيكلية لتجربة الصعوبات. وأصبحت المشاريع معقدة للغاية. تم تغيير الرسوم البيانية. وشارك عدد أكبر من المبرمجين. نما التعقيد. وارتفعت التكاليف، وارتفع الرسم البياني، وجاء الانهيار.
وكشف تحليل أسباب هذه الفشل عن أوجه قصورالنموذج الإجرائي. وبغض النظر عن مدى تنفيذ نهج منظم للبرمجة، تصبح التطبيقات الكبيرة معقدة للغاية.
ما هي أسباب هذه المشاكل المرتبطةاللغات الإجرائية؟ أولا، وظائف الوصول غير المحدود إلى البيانات العالمية. ثانيا ، لا تشكل الإجراءات والمعاني غير ذات الصلة نموذجًا للعالم الحقيقي.
إذا نظرنا إلى هذه المشاكل في سياقبرنامج محاسبة المخزون ، ثم واحد من أهم عناصر البيانات العالمية هو مجموع الوحدات المحاسبية. يمكن للوظائف المختلفة الوصول إليها لإدخال قيمة جديدة وعرضها وتغييرها وما إلى ذلك.
في برنامج مكتوب، على سبيل المثال، في C، هناك نوعان من البيانات. المحلية مخفية داخل وظيفة وغيرها من الإجراءات لا تستخدم.
عندما يتم الوصول إلى وظيفتين أو أكثرعلى نفس البيانات، ثم يجب أن يكون الأخير العالمي. وهذه، على سبيل المثال، هي معلومات عن البنود التي ينبغي أخذها في الاعتبار. ويمكن الوصول إلى البيانات العالمية بأي إجراء.
في برنامج كبير هناك العديد من الوظائف والعديد من العناصر العالمية. المشكلة مع النموذج الإجرائي هو أن هذا يؤدي إلى عدد أكبر من الروابط المحتملة بينهما.
هذا العدد الكبير من المركبات يسبببعض الصعوبات. أولا، هذا يعقد فهم بنية البرنامج. وثانيا، يجعل من الصعب إجراء تغييرات. قد يتطلب تغيير عنصر بيانات عام تعديل جميع الوظائف التي يمكنها الوصول إليها.
على سبيل المثال، في برنامج المحاسبة، شخص ما يقرر أن التعليمات البرمجيةمن الموضوع المحسوب لا يجب أن تتكون من 5 أرقام، ولكن من 12. وهذا يتطلب تغيير نوع البيانات من قصيرة إلى طويلة. الآن يجب تغيير الوظائف ذات الصلة التعليمات البرمجية للعمل مع الشكل الجديد.
عندما تتغير العناصر في تطبيق كبير،ومن الصعب أن نقول أي الإجراءات لها إمكانية الوصول إليها. ولكن حتى لو تم توضيح ذلك، فإن تغييرها يمكن أن يؤدي إلى عمل غير صحيح مع بيانات عالمية أخرى. كل شيء متصل مع كل شيء آخر، وبالتالي فإن تغيير في مكان واحد سيكون في آخر.
والمشكلة الثانية والأهم من الإجرائيةوالنموذج الأساسي هو أن موقع بياناتها الفردية ووظائفها يعمل بشكل سيئ على تطوير الأشياء في العالم الحقيقي. هنا نتعامل مع أشياء مثل الناس والسيارات. أنها لا تبدو مثل البيانات أو الوظائف. الكائنات الحقيقية المعقدة لها سمات وسلوك.
أمثلة على السمات (تسمى أحيانًاالخصائص) للناس هي لون العين والمسمى الوظيفي ، للسيارات - السلطة وعدد من الأبواب. كما اتضح ، فإن السمات في العالم الحقيقي تعادل البيانات في البرنامج. لديهم معاني محددة ، مثل اللون الأزرق (لون العين) أو أربعة (عدد الأبواب).
السلوك هو أن كائنات العالم الحقيقيتنتج استجابة لبعض التأثير. إذا طلبت من السلطات رفع رواتبهم ، فإن الإجابة هي "نعم" أو "لا". إذا ضغطت على الفرامل ، تتوقف السيارة. النطق والتوقف أمثلة للسلوك. السلوك يشبه الإجراء: يتم استدعاؤه للقيام بشيء ما ، ويقوم بذلك. وبالتالي ، لا تعمل البيانات والوظائف وحدها على تصميم كائنات في العالم الحقيقي بكفاءة.
يتم تمثيل الكائن في OOP كمجموعةالبيانات والوظائف. فقط الإجراءات التي تسمى وظائف العضو في C ++ تسمح لك بالحصول على قيمها. البيانات مخفية ومحمية من التغيير. يتم تضمين القيم والوظائف في وحدة واحدة. التجليد والإخفاء هما المصطلحان الرئيسيان في وصف لغات OO.
إذا كنت تريد تغيير البيانات ، فأنت تعرف بالضبط الوظائف التي تتفاعل معها. لا توجد إجراءات أخرى يمكن الوصول إليها. هذا يبسط الكتابة ، وتصحيح الأخطاء ، والحفاظ على البرنامج.
يتكون التطبيق ، كقاعدة عامة ، من عدة كائنات تتفاعل مع بعضها البعض ، وتسمى وظائف الأعضاء.
اليوم الأكثر استخداما على نطاق واسع من OOP(البرمجة الشيئية) - C ++ (زائد زائد). تفتقر Java إلى بعض الوظائف ، مثل المؤشرات والقوالب والوراثة المتعددة ، مما يجعلها أقل قوة وتنوعًا من C ++. C # لم تصل بعد إلى شعبية C ++.
وتجدر الإشارة إلى أن ما يسمى بتسمى وظائف العضو في C ++ أساليب في بعض لغات OO الأخرى ، مثل Smalltalk. تسمى عناصر البيانات بالسمات. استدعاء طريقة كائن إرسال رسالة إليه.
يمكنك تقديم الأشياء إلى أقسام الشركة. في معظم المؤسسات ، لا يعمل الموظفون يومًا واحدًا مع الكوادر ، والقادمين على جدول الرواتب ، ثم أسبوعًا يعملون في تجارة التجزئة. كل قسم لديه موظف خاص به مع مسؤوليات محددة بوضوح. هناك أيضا البيانات الخاصة: المرتبات ، أرقام المبيعات ، سجلات الموظفين ، إلخ. يعمل الأشخاص في الإدارات بمعلوماتهم. وبالتالي ، يسهل فصل الشركة التحكم في أنشطتها ويحافظ على سلامة البيانات. المحاسبة هي المسؤولة عن كشوف المرتبات. إذا كنت بحاجة إلى معرفة المبلغ الإجمالي للأجور المدفوعة في الفرع الجنوبي في يوليو ، فإنك لا تحتاج إلى البحث في الأرشيف. يكفي إرسال ملاحظة إلى الشخص المسؤول ، انتظر حتى يتمكن هذا الشخص من الوصول إلى البيانات وإرسال رد بالمعلومات المطلوبة. وهذا يضمن الامتثال للأنظمة وغياب التدخل الخارجي. بالطريقة نفسها ، يوفر الكائن في OOP تنظيم التطبيق.
يجب أن نتذكر أن الاتجاه إلى الأشياء ليست كذلكيتعلق بتفاصيل البرنامج. تتطابق معظم عبارات C ++ مع معاملات اللغة الإجرائية مثل C. بالفعل ، فإن وظائف الأعضاء في C ++ تشبه إلى حد كبير الوظائف في C. سيسمح فقط سياق أوسع لتحديد ما إذا كانت التعليمات إجرائية أو موجهة للكائنات.
عند النظر في مشكلة البرمجة للغة OO ، بدلا من الأسئلة حول تقسيمها إلى وظائف منفصلة ، تنشأ مشكلة الانفصال في الأجسام. يجعل تفكير OOP الأمر أسهل بكثير في تطوير التطبيقات. هذا يرجع إلى تشابه البرامج والأشياء الحقيقية.
ما الأشياء تصبح كائنات في OOP؟ فيما يلي فئات نموذجية.
الكائن المادي في OOP هو:
عناصر بيئة الكمبيوتر للمستخدم:
الناس:
المعلومات:
العلاقة بين كائنات العالم الحقيقي و OOP كانت نتيجة لمجموعة من الوظائف والبيانات: أحدثت ثورة في البرمجة. لا يوجد مثل هذه المراسلات القريبة في اللغات الإجرائية.
الكائنات في OOP أعضاء في فئات. ماذا يعني هذا؟ لغات البرمجة لديها أنواع بيانات مدمجة. نوع int ، وهو عدد صحيح ، تم تعريفه مسبقًا في C ++. يمكنك الإعلان عن أي عدد من المتغيرات int.
وبالمثل ، يتم تعريف مجموعة من الكائنات من نفس الفئة. فهو يحدد الوظائف والبيانات المضمنة في الكائنات بدون تكوينها ، تماماً كما لا يخلق int المتغيرات.
الصف في OOP هو وصف لعدد من الكائنات المماثلة. الأمير ، ستينغ ومادونا من المطربين. لا يوجد شخص واحد يحمل هذا الاسم ، ولكن يمكن تسمية الناس إذا كان لديهم الخصائص المناسبة. الكائن OOP هو مثيل للفئة.
في الحياة ، يتم تقسيم الطبقات إلى فئات فرعية. على سبيل المثال ، يتم تقسيم الحيوانات إلى البرمائيات والثدييات والطيور والحشرات ، إلخ.
مبدأ هذا النوع من الانقسام هو ذلكلكل فئة فرعية خصائص مشتركة مع الطبقة التي تحدث منها. جميع السيارات لديها عجلات ومحرك. هذه هي الخصائص المميزة للمركبات. وبالإضافة إلى الخصائص العامة للكل فئة فرعية خصائصها. لدى الحافلات العديد من المقاعد ، والشاحنات لديها مساحة لنقل الحمولات الثقيلة.
وبالمثل ، يمكن أن تصبح الطبقة الأساسية أحد الوالدينالعديد من الفئات الفرعية المشتقة التي يمكن تعريفها بحيث تتقاسم خصائصها مع إضافة خاصة بها. يشبه الوراثة وظيفة تقوم بتبسيط البرنامج الإجرائي. إذا كانت عدة أجزاء من التعليمات البرمجية تفعل نفس الشيء تقريبًا ، فيمكنك استخراج العناصر المشتركة ووضعها في إجراء واحد. يمكن أن تستدعي ثلاثة أقسام للتطبيق وظيفة لتنفيذ إجراءات شائعة ، ولكن يمكنها أيضًا إنتاج عملياتها الخاصة. وبالمثل ، تحتوي الطبقة الأساسية على بيانات مشتركة للمجموعة المشتقة. مثل الوظائف ، يقلل الميراث من برنامج OO ويوضح الترابط بين عناصره.
بعد إنشاء الفئة وتصحيحها ، يمكن ذلكيتم تمريرها إلى المبرمجين الآخرين لإعادة استخدامها في تطبيقاتهم الخاصة. يشبه هذا مكتبة الوظائف التي يمكن تضمينها في تطبيقات مختلفة.
في OOP ، الميراث هو امتداد للفكرةاستخدام متعدد. من الفئة الموجودة ، دون تغييرها ، يمكنك إنشاء واحدة جديدة مع إضافة وظائف أخرى. تعد سهولة إعادة استخدام البرامج الموجودة ميزة هامة في OOP. ويعتقد أن هذا يوفر زيادة في العائد من الاستثمار الأولي.
تعتبر الكائنات مناسبة لإنشاء أنواع جديدة من البيانات. لنفترض أن البرنامج يستخدم قيم ثنائية الأبعاد (على سبيل المثال ، إحداثيات أو خطوط الطول والعرض) ، وهناك رغبة في التعبير عن الإجراءات المتعلقة بالعمليات الحسابية:
position1 = position + origin ،
حيث يمثل الموضع 1 والموضع والمنشأ أزواجًا من القيم العددية المستقلة. ينشئ إنشاء فئة تتضمن هاتين القيمتين وتوضيح المتغيرات بكائناتها نوع بيانات جديدًا.
عوامل التشغيل = (متساوية) و + (زائد) المستخدمة فيالحساب الموضعي أعلاه ، لا تتصرف نفسها كما هو الحال مع أنواع مدمجة ، مثل int. لا يتم تحديد موضع الكائنات ، إلخ مسبقًا ، ولكن يتم برمجتها. كيف يعرف هؤلاء المشغلين كيفية التعامل معهم؟ الجواب هو أنه بالنسبة لهم ، يمكنك تحديد أنماط سلوك جديدة. ستكون هذه العمليات عبارة عن وظائف عضو في فئة الموضع.
استخدام المشغلين أو الإجراءات فياعتمادا على ما تعمل معه ، ويسمى تعدد الأشكال. عندما يكون عامل التشغيل الحالي ، مثل + أو = ، قادرًا على العمل مع نوع بيانات جديد ، فإنه يُقال أنه محمّل بشكل زائد. التحميل الزائد في OOP هو نوع من تعدد الأشكال. إنها ميزة مهمة.
سيسمح الكتاب حول "البرمجة الشيئية للدمى" (OOP) الموجهة إلى الجميع بالتعرف على هذا الموضوع بمزيد من التفصيل.
</ p>