|
|
برنامه نویسی ساخت یافته مقدمه:در مقابل برنامه های منسجم برنامه های اسپاگتی (Spaghetti) قرار دارند. اسپاگتی به معنای ماکرونی است و این اصطلاح به این علت به کار برده می شود که تمام بخش های برنامه به طور نا صحیح با هم در ارتباط هستند. یعنی برای مثال کلاس TClass1 از یک مغیر عمومی از نوع TClass2 برای تنظیم مقادیر خود استفاده می کنند و به آن وابسطه هستند. مانند کد زیر:
این کد به شدت در معرض شکست قرار دارد ، چون هر دو کلاس به هم وابسته بوده و با تغییری اندک در یکی از آنها باید دیگری را نیز اصلاح و به روز رسانی کرد. علاوه بر این هنگامی که می خواهید از یکی از کلاس ها استفاده کنید با هر دو متغیر fClass1 و fClass2 ایجاد شده و آماده باشند در غیر این صورت با یک خطا روبرو خواهید شد. در چنین برنامه هایی با تغییری اندک در هر یک از کلاس ها ( یا فرم هایی مانند این کلاس ها) باید تغییرات در هر دو اعمال شوند که البته زمان زیادی را خواهد گرفت و با بزرگتر شدن پروژه این مشکل حاد تر خواهد شد. جنگ با ماکرونی!:یک راه حل بسیار مناسب نوشتن فرم ها ، کلاس ها و در صورت امکان رویه های مستقل است. یعنی باید به صورت مستقل عمل نمایند و از هیچ کلاسی استفاده ننمایند. این بهترین حالت است؛ اما معمولا این چنین کلاس هایی کمتر استفاده می شوند. اگر کلاسی از سایر اشیا
استفاده می کند نباید از متغیر های عمومی آن شیئ استفاده کند. برای رفع این مشکل می
توان آن اشیاء را به صورت پاراکتر به ایجاد کننده آن () ارسال کرد. در این صورت
کلاس مد نظر این شیئ را در یک متغیر برای استفاده ذخیره نماید.
این نمونه یک کلاس
کارآمد است. در این مثال bmp
به عنوان پارامتر به ایجاد کننده TmyClass
ارسال می شود. سپس برای استفاده های بعدی در متغیر داخلی
fBitmap ذخیره مشود.
fBitmap آدرس
bmp ارسالی را در خود ذخیره کرده و
هنگام استفاده از همانند آن است که از خود متغییر bmp
استفاده می کنید. منسجم کردن رابطه فرم ها:به طور معمول هر فرمی
را که به پروژه اضافه میکنید دستور Application.CreateForm(TFormClass, FormVar);
به فایل پروژه تان (dpr)
افزوده می شود. این دستور سبب خواهد شد که به محض اجرای برنامه فرم ایجاد شود. برای
برنامه های کوچک شیوه مناسبی است. اما برای پروژه های بزرگ مشکل ساز خواهد بود.
البته این مثال ناقص است ولی به خوبی کار خواهد کرد. برای اینکه بدانید چه دکمه ای در فرم 2 فشرده شده است از کد زیر استفاده کنید.
در این مثال ShowModal فرم دوم را نمایش خواهد و تا زمانیکه دکمه ای که ModalResult آن تنظیم شده، فشرده نشود فرم بسته نخواهد شد. پس از بسته شدن فرم2 مقدار برگشتی ShowModal بررسی خواهد شد و صورت صحیح بودن شرط پیغامی صادر خواهد شد. در این مثال فرم1 تا بسته شدن فرم2 غیر فعال خواهد بود. حال اگر نیاز باشد که هر دو فرم به طور همزمان در دسترس و فعال باشند چه می توان کرد؟ پاسخ این سوال استفاده از روشی است که در ادامه مورد بررسی می باشد. ابتدا باید متغیری از
نوع فرم دوم ایجاد کنید. سپس مس میتوانید با فراخوانی متد
show فرم2 را نمایش داد. در این صورت
هر دو فرم به صورت همزمان قابل دسترسی هستند.
و در فرم دوم:
البته این مثال ناقصی است که می توانید نقایص آن را مرتفع سازید. تخصیص مقداد caFree به Action سبب آزاد سازی حافظه آن و تخصیص مقداد caHide فقط باعث مخفی شدن آن خواهد شد و فرم همچنان در حافظه می باشد. بخش دوم برنامه نویسی ساخت یافته به زودی در سایت قرار خواهد گرفت. نویسنده: سالار خلیل
زاده |
|
|
آخرين به روز رسانی: آمار بازدید: |