المقدمة: أقوم حاليًا بتأليف كتاب لمبرمجي دلفي المهرة حول موضوع بناء برامج جيدة التصميم باستخدام تقنيات البرمجة الشيئية في دلفي.
لا يزال هذا الكتاب في طور الكتابة، وآمل أن يتمكن الجميع من الحصول على فهم أولي لموضوع هذا الكتاب وأسلوبه اللغوي. وفي الوقت نفسه، يمكنك طرح آرائك الخاصة. كمؤلف، آمل أن يصبح هذا الكتاب كلاسيكيًا بين كتب دلفي الأصلية المحلية، وقد لا ينجح، لكنني سأبذل قصارى جهدي.
للأسباب المذكورة أعلاه، من المستحيل بالنسبة لي أن أنشر الكتاب بأكمله (هاها، فلن يشتريه أحد)، لذلك لا ينبغي نشر فصول لاحقة هنا (ربما سيكون هناك بعض المقتطفات).
وهنا أود أن أشكر هؤلاء الأصدقاء الذين شجعوني وقدموا آرائي (لقد قمت بنشرها في منتدى دلفي الخاص بـ csdn وتلقيت مجموعة واسعة من الردود، شكرًا لكم جميعًا). وأود أيضًا أن أشكر صديقتي إيسان، التي دعمتني وألهمتني دائمًا. كل ما يمكنني فعله هو أن أكتب بشكل جيد وأن أرد الجميل للجميع، وأنا أعلم أن الجميع (بما فيهم أنا) كانوا ينتظرون بفارغ الصبر الحصول على كتاب جيد!
الفصل الأول إعادة فهم دلفي
البساطة هي أصعب شيء يمكن الحصول عليه في العالم: فهي الحد الأقصى للخبرة والهدف النهائي للعبقرية. —— جورج ساند أنت بالفعل مبرمج دلفي ماهر ويمكنك استخدام دلفي لكتابة برنامج جميل وعملي بسرعة؛ لقد أصبحت دلفي جزءًا لا غنى عنه في عملك ودراستك. أفترض أن هذا صحيح، إذًا يجب أن يكون لديك أسبابك الخاصة أو أسباب اختيار دلفي كأداة التطوير الأولى لك. على الأقل، أفي بجميع الافتراضات المذكورة أعلاه. الآن، ما أريد أن أشارككم به هو الأسباب والأسباب التي دفعتني إلى اختيار دلفي، بالإضافة إلى فهمي لدلفي. يمكنك أن تعتبرني متعصبًا يدعم دلفي، على الرغم من أن ذلك سيجعلني أشعر أنك تنظر إلي بشكل سطحي للغاية، لكني لا أعترف بذلك، لكن لا مانع لدي. لأنني حقا أحبها. كان إصدار دلفي الذي تعاملت معه لأول مرة هو 3.0. وفي ذلك الوقت، استخدمته للتو كأداة RAD مثل Visual Basic. ومع ذلك، مع مرور الوقت، أصبح لدى دلفي 3 ودلفي 4 ودلفي 5 ودلفي 6 وكيليكس فهم أعمق وأعمق لدلفي. إنها أداة ذات دلالات غنية كلما زاد فهم الناس لها، زاد هوسهم بها وشعروا بأنهم لا ينفصلون عنها، على الرغم من أنها لا تزال مجرد أداة. باسكال هي لغة تهتم بجماليات البرنامج - لا شك أن كود باسكال هو أجمل كود - دلفي المبنية على Object Pascal (لغة باسكال التي تدعم التوجه الشيئي) تأخذ هذا الجمال إلى أقصى الحدود. الآن، يمكنك فتح دلفي، واختيار "مساعدة" - "حول" القائمة، وعندما تظهر نافذة "حول"، اضغط باستمرار على مفتاح Alt واكتب "فريق" بالتتابع في نفس الوقت. ماذا ترى؟ نعم، قائمة مطوري دلفي، دعونا نشكرهم على إنشاء أدوات التطوير هذه التي تشبه الأعمال الفنية!
1.1 نظرية أدوات التنمية "الموجهة نحو الناس".
يمكنك غالبًا رؤية أسئلة مثل هذه في منتديات البرمجة المختلفة: "هل لا يزال لدى VB مستقبل؟"؛ "هل سيتم التخلص من دلفي؟"؛ "هل سيتم استبدال MFC بـ .NET؟"... في الواقع، عندما طرح السؤال، لم يستطع أحد أن يعطي إجابة. لأن مستقبل التكنولوجيا أو المنتج لا يتم تحديده بالكامل من خلال التكنولوجيا نفسها، ولكنه يرتبط أيضًا بعوامل مثل الطلب في السوق واتجاه تطوير الشركة المنتجة. وما الذي يجب أن نهتم به هو إجابات هذه الأسئلة؟ لا أعتقد ذلك. نحن نعلم أن كل شيء في العالم يتكون من ذرات؛ فالبرامج المتغيرة باستمرار تتكون في النهاية من ثلاثة هياكل: التسلسل، والحلقة، والفرع؛ وقد تم تصميم كل من MFC الخاص بـ VC وVCL الخاص بـ Delphi باستخدام تقنية موجهة للكائنات (بغض النظر عن درجة الكائن)؛ - موجه). عندما تنظر إلى ما هو أبعد من المظهر السطحي للأشياء، فإن ما تراه هو نفس الجوهر أو جوهر مشابه! بعد إتقان الجوهر، ستجد أن مظهر المظهر طبيعي جدًا. فقط تخيل، عندما تتمكن من إزالة MFC تمامًا مثل Hou Jie (مؤلف كتاب "مقدمة إلى MFC")، هل ستظل قلقًا بشأن استبدال MFC بإطار عمل معين؟ من هذا المنظور، بالنسبة للمبرمج المحترف، يبقى مفهوم البرمجة دون تغيير. هناك نمط معين في عملية اكتشاف المشكلات وتحليلها وحلها، وبمجرد إتقان هذا النمط، سيكون لدى لغات البرمجة المختلفة وبيئات التطوير المختلفة شيء مشترك بالنسبة لك. أعتقد أن لغة C++ هي شيء يجب على كل مبرمج محترف إتقانه. بالطبع، هذا لا يعني مجرد تعلم بناء الجملة (يمكنك حتى تجاهل تعلم بعض بناء الجملة)، ولكن تعلم التصميم الموجه للكائنات وأساليب البرمجة من خلال لغة C++. لأن لغة C++ واسعة وعميقة، لأن لغة C++ قادرة على كل شيء. في لغة C++، يمكنك تعلم كل شيء عن النظرية الشيئية. بعد التعلم، ستتحول إلى لغة C++. لأن الميزات المثيرة للجدل الموجودة في النظرية الشيئية (مثل الميراث المتعدد) مدعومة في لغة C++. فقط بعد أن تتقنها يمكنك أن تختار بنفسك (مع أو ضد). بعد إتقان النظرية الشيئية، سواء كانت C++ أو Object Pascal أو java أو حتى C#، ستشعر بأوجه التشابه بينهما. هل هذا يعني أنه لا توجد فروق أخرى بين أدوات التطوير (ربما ينبغي تسميتها بيئات التطوير المتكاملة، لكن سأشير إليها كأدوات تطوير حسب عادتي أدناه) باستثناء اللغات التي تدعمها؟ بالطبع لا. أدوات التطوير هي الأدوات التي تساعدك على تحقيق أفكارك، وهي عبارة عن هياكل فوقية مبنية على أفكار أساسية. إن الدرجة التي تدعم بها أداة التطوير المفهوم الذي تريد تنفيذه والدرجة التي تبسط بها عملية التنفيذ هي النظر في أداة التطوير. أدوات التطوير بالنسبة للمبرمجين هي بمثابة أسلحة للجنود، إذا لم تكن الأسلحة في متناول اليد، فسوف يُهزم نصفها قبل المعركة. لقد أحببت دائمًا الشعار الإعلاني لهواتف نوكيا المحمولة: التكنولوجيا موجهة نحو الناس! نعم، "الناس" هم الأساس، ومهمة الأدوات هي مساعدة الناس على تحقيق أهدافهم بشكل أسرع وأسهل. لذلك، يجب أن تركز أدوات التطوير أيضًا على الأشخاص! باعتباري مبرمجًا ومستخدمًا مباشرًا لأدوات التطوير، آمل أن تكون أدوات التطوير التي أستخدمها شركائي ومساعدي حقًا، ويمكن أن تمنحني إحساسًا بالحرية وتسمح لي بالتنقل بحرية في عالم التعليمات البرمجية وتأقلم معي بدلاً من أن تكبلني! يوجد اليوم على نظام Windows العديد من أدوات التطوير للاختيار من بينها: Visual C++، Visual Basic، Delphi، C++ Builder، JBuilder... وهي تعتمد على لغات برمجة مختلفة وهي موالية لمفاهيم المنتجات الخاصة بشركات مختلفة. ومن هذا المنطلق فإن الفرق بينهما كبير جداً. إذًا ما هي أدوات التطوير الممتازة والمراعية والموجهة نحو الأشخاص؟ معاييري هي تلبية النقاط الأربع التالية: 1. أن تكون قادرًا على تبسيط المشكلة التي سيتم حلها وتنفيذها بسرعة بمفهوم معين 2. لا تخفي أي تفاصيل تريد معرفتها 3. يمكنك تجاهل التفاصيل التي لا تريدها للمعرفة 4. خذ زمام المبادرة هل هناك أدوات تطوير تلبي النقاط الأربع المذكورة أعلاه ومناسبة للمبرمجين من مختلف المستويات؟ إجابتي هي: نعم! هذا هو دلفي! لقد بسّطت كل شيء، لكنها لم تمنعني أبدًا من البحث عن الحقيقة. يمكنك إكمال المهام في عالم VCL الافتراضي المبسط الذي أنشأته لك. يمكنك أيضًا التعمق في عالم VCL لاستكشاف علاقة رسم الخرائط الخاصة به بالعالم الحقيقي (أي الواجهة الحقيقية لمنصة Windows) ومعرفة تصميم إطار العمل الخاص به. يمكنك أيضًا توسيع عالم VCL الافتراضي ليناسب احتياجاتك. أشعر بأنني محظوظ بوجود أداة التطوير هذه، بل وأكثر حظًا لأنني أستطيع اختيارها وإكمال عملي معها! (في الواقع، غالبًا ما تكون لغة البرمجة وأدوات التطوير المستخدمة في المشروع خارجة عن سيطرتك الشخصية وستكون مقيدة بالعديد من العوامل. على سبيل المثال: بيئة أجهزة العميل، وبيئة نظام التشغيل، وبيئة التطوير، وتكلفة أدوات التطوير وترخيصها شهادة، وما إلى ذلك. لذلك، أنا محظوظ جدًا لأنني قادر على اختيار أدوات التطوير المفضلة لدي لأعمال التطوير.) إن تعلم المفاهيم الموجهة للكائنات من خلال لغة C++ واستخدام دلفي لحل مشكلات العالم الحقيقي هو أسلوبي. وفي الوقت نفسه، فإنه يتحقق أيضًا من مقولة: تعلم من الأماكن الصعبة وطبق من الأماكن السهلة. المبرمجون الحقيقيون يستخدمون C++، والمبرمجون الأذكياء يستخدمون دلفي. حسنًا، المبرمجون الأذكياء حقًا يستخدمون لغة C++ لفهم لغة دلفي!
1.2 المزيد من مزايا دلفي
لقد استخدمت العديد من أدوات التطوير السائدة، لماذا اخترت دلفي؟ ربما يكون ذلك لأنني لست على دراية بأدوات التطوير الأخرى بعمق، لكن تميز دلفي نفسها هو على الأقل أحد الأسباب! ما هو الشيء العظيم في دلفي؟ إن التطوير الفعال لدلفي هو RAD (أداة تطوير التطبيقات السريعة)، التي تتمتع ببيئة تطوير مرئية، بالطبع، هناك العديد من أدوات التطوير ذات الوظائف المشابهة (مثل Visual Basic)، لكن دلفي تتمتع بالميزات الفريدة التالية: 1. ) إن دلفي موجهة نحو الكائنات حقًا. يمكن وراثة جميع المكونات الموجودة في مكتبة VCL المبنية على تقنية OO لإنشاء مكونات جديدة، بما في ذلك فئة النموذج TForm. وفي المقابل، تفتقر مكونات ActiveX إلى هذه المرونة. 2) تعتمد تقنية CodeInsight الخاصة بـ Delphi (أي وظيفة الإكمال التلقائي للكود) على معلومات المترجم، بينما يستخدم VB معلومات مكتبة النوع وميزة استخدام معلومات المترجم هي المزيد من المرونة. ومع ذلك، غالبًا ما يشتكي المبرمجون من أن مطالبات تعليمات برمجية دلفي تستغرق وقتًا طويلاً. في الواقع، أنا شخصيا أشعر أنه بعد التعود على سرعتها، أستطيع أن أشعر بالمتعة الإيقاعية. تعتمد لغة دلفي الفعالة على لغة Object Pascal. هذه لغة موجهة نحو الكائنات حقًا ولكنها أنيقة. إنها ليست أقل شأنا من العديد من اللغات الأخرى الموجهة للكائنات من حيث التكامل الوظيفي، ولكنها في الوقت نفسه ليست جشعة للمزيد وتزيد التعقيد بشكل أعمى. يتيح ذلك للمطورين الحصول على الدعم الكامل عند التصميم باستخدام أنماط مختلفة دون الحاجة إلى مراعاة الكثير من تفاصيل اللغة/المترجم أثناء التنفيذ. كفاءة التجميع يمكن القول أن دلفي هي أسرع مترجم أكواد محلية للغة عالية المستوى على نظام Windows الأساسي. ما هي فوائد التجميع السريع؟ يتيح لك المترجم السريع التبديل بشكل متكرر بين تعديل التعليمات البرمجية والتجميع والتشغيل. على الأقل، أنا معتاد جدًا على طريقة العمل هذه: قم بتشغيل البرنامج لرؤية التأثير، ثم اخرج من البرنامج، وقم بتعديل كمية صغيرة من التعليمات البرمجية، ثم قم بتشغيل البرنامج. ومترجم دلفي لا يجعلني أشعر بالانتظار أبدًا. n التنفيذ الفعال لا تتمتع دلفي بسرعة تجميع عالية فحسب، بل تتميز أيضًا بكفاءة تنفيذ التعليمات البرمجية المستهدفة التي تم إنشاؤها عالية جدًا. يستخدم Delphi وC++Builder نفس مُحسِّن الواجهة الخلفية، لذا فإن الكود الذي تم إنشاؤه بواسطته يكون بنفس كفاءة الكود الذي تم إنشاؤه بواسطة مترجم C++ ممتاز. تقوم دلفي بإنشاء كود أصلي بالكامل، لذلك يمكن تنفيذ الملف القابل للتنفيذ الناتج عن تجميع دلفي وتوزيعه بشكل مستقل (وهذا مهم جدًا لتطوير "البرمجيات الخضراء"). لا يلزم وجود دعم آخر لوقت التشغيل. بالطبع، يمكنك أيضًا اختيار تجميع الارتباط الديناميكي، والذي يمكن أن يقلل بشكل كبير من طول الملف القابل للتنفيذ، ومع ذلك، في هذه الحالة، عند توزيع البرنامج، يجب توزيع ملفات وقت التشغيل الضرورية في نفس الوقت. توفر الصيانة الفعالة لـ C++ للمبرمجين قدرًا كبيرًا من قوة اتخاذ القرار، لذا فهي قوية جدًا، ومع ذلك، في الوقت نفسه، يتطلب استخدام C++ لكتابة تعليمات برمجية ممتازة موجهة للكائنات أن يتمتع المبرمجون بصفات معينة. سيقتصر مبرمجو دلفي على إطار العمل الذي توفره VCL إلى حد ما (بالطبع، يمكنك التخلص من برمجة VCL في دلفي، نسبيًا، من الأسهل إنشاء تعليمات برمجية جيدة التصميم). لا يوفر Visual Basic آلية برمجة موجهة للكائنات على الإطلاق (يعتمد الإصدار VB6.0 والإصدارات السابقة على الكائنات وليس كائنات التوجه). إن التميز في إطار التعليمات البرمجية يقلل بشكل كبير من تكاليف صيانة البرامج. بناءً على كل الأسباب المذكورة أعلاه، اخترت دلفي!
1.3 موضوع هذا الكتاب
عادةً ما نكتب الكثير من التعليمات البرمجية للشركة أو لأنفسنا أو للأصدقاء. في بعض الأحيان، من أجل التحقق من فكرة ما أو تعلم تقنية معينة، سأكتب بعض التعليمات البرمجية التجريبية. دورة حياة هذا الكود قصيرة جدًا ولا تحتاج إلى صيانة بشكل أساسي، يمكنك فقط كتابتها كما تريد. ومع ذلك، عندما تريد حقًا إكمال مشروع ما، فإن تصميم الكود مهم جدًا. لأن مثل هذا الكود يتطلب صيانة طويلة المدى أو تعديلًا أو تحسينًا مستمرًا. تصميم الكود الفوضوي يجعل الصيانة صعبة أو مستحيلة، وتعديل مثل هذا الكود يعني المزيد من الأخطاء أو الكوارث. لذلك، قبل كتابة التعليمات البرمجية، يجب تصميمها. التصميم المذكور هنا لا يشير إلى التصميم الوظيفي، ولكنه يشير إلى تصميم إطار عمل الكود من قبل المبرمجين قبل البرمجة، بحيث يكون فهم الكود وصيانته أسهل في المستقبل. كثيرًا ما أسمع مقولة: عمر برنامج المبرمج هو 35 عامًا فقط. لا أعتقد أبدًا أن عمر المبرمج لا يتجاوز 35 عامًا، وربما بعد سن 35 عامًا قد تنخفض القدرة على التنفيذ (في الحقيقة القدرة الحرفية)، بينما القدرة على التصميم لا تقل بل تزيد مع زيادة الخبرة. هذا هو أثمن شيء. العمود الفقري لفرق تطوير البرمجيات الأجنبية هم بشكل عام أشخاص يبلغون من العمر حوالي 40 عامًا، وهؤلاء هم المبرمجون الرئيسيون الذين لا يمكنهم أن يصبحوا مبرمجين بعد سن 35 عامًا، وهم غير مؤهلين ليتم تسميتهم بالمبرمجين على الإطلاق. تحتاج هندسة البرمجيات إلى تحويل المبرمجين إلى مبرمجين وأن يصبحوا حلقة وصل في خط التجميع، ويتم إكمال أعمال التصميم على يد مصممين متخصصين (مثل مصممي الإطارات). ربما يكون الاتجاه هو تحسين تقسيم العمل، ولكن ما إذا كنا راضين عن كوننا مبرمجين أو نأمل في أن نصبح مصممين يعتمد على رؤيتنا وجهودنا. افتح آفاقك، بدلاً من تقييد نفسك والانغماس في "تحقيق الماجستير". القدرة على الإدراك هي الأساس فقط مع قدرة إدراك معينة يمكننا أن ننمو، ومع ذلك، فهي مجرد شرط ضروري، وليست كافية. وإلا فسيكون الأمر مثل الصعود إلى سفح الجبل والتفكير في أنك وصلت إلى قمة الجبل والركود. بعد ذلك، لا يمكنك سوى أن تكون مبرمجًا، ويكون عمر البرنامج الخاص بك 35 عامًا فقط. وبعد اكتساب هذا المنظور، آمل أن يساعدك هذا الكتاب على البدء. الكتب المتعلقة بدلفي المنشورة في الصين تشرح بشكل أساسي التنفيذ. عنوان هذا الكتاب هو "الاختراق من قبل دلفي ماسترز". لذا، افترض أنك الآن أستاذ في دلفي. لذلك، لن يغطي هذا الكتاب الكثير من تقنيات التنفيذ، على الرغم من وجود أمثلة على الرموز، إلا أن التركيز ينصب على تصميم بنيته، وليس تنفيذها. في هذه المرحلة، ربما تكون قد خمنت موضوع هذا الكتاب: كيفية استخدام التكنولوجيا الموجهة للكائنات في دلفي لبناء تعليمات برمجية جيدة التصميم. في رأيي، كتابة التعليمات البرمجية هي إبداع فني. الكود الأنيق واضح بذاته دون الحاجة إلى تعليقات زائدة. عندما يكون هناك الكثير من التعليقات، فقد حان الوقت للنظر فيما إذا كان التصميم معقولًا. يجب أن تكون كتابة الكتاب أيضًا إبداعًا فنيًا، إذا تمكنت من إخبار القراء بفهمك وتجربتك الفنية دون الحاجة إلى الكثير من "التعليقات التوضيحية" (هراء يهدر المساحة)، فسيكون ذلك ناجحًا للغاية. أتمنى أن أتمكن من ذلك، على الأقل أبذل قصارى جهدي.
1.4 ملخص
أعتقد أنه لا مفر بالنسبة لي من الشروع في طريق البرمجة. إن القدرة على أن أصبح مبرمجًا محترفًا هو أيضًا ما حلمت به وأدركته. ومع ذلك، ينبغي القول أن ظهور دلفي وحقيقة أنني تعرفت عليها وتعرفت عليها وأصبحت مهووسًا بها وأصبحت جزءًا من عملي كانت مفاجأة غير متوقعة. ما أريد قوله هنا هو أنه يجب أن تكون أكثر إصرارًا على نفسك. عندما تكون قد اتخذت موقفًا واضحًا وتعرف بوضوح المسار الذي اخترته، فلن تحتاج بعد الآن إلى أن يكون لديك أي شكوك أو وازع، واستمر في المضي قدمًا. على الرغم من أنني قد لا أنجح في النهاية (بالطبع، تعريف الجميع للنجاح مختلف)، إلا أنني أحب ما أحب دون أي ندم!