انجام پایان نامه

درخواست همکاری انجام پایان نامه  بانک مقالات رایگان انجام پایان نامه

سفارش پایان نامه

|

انجام پایان نامه ارشد

 پایان نامه 

پایان نامه‏ کامپیوتر

انجام پایان نامه‏ ارشد کامپیوتر

مقدمه :
از زمانی که کامپیوترها وارد زندگی انسانها شده اند به طور پیوسته پیشرفته تر و انعطاف پذیر می شوند. آنها از محاسبات پیچیده گرفته تا کنترل دستگاه های پیچیده را انجام می دهند. یکی از ملزومات این اعمال قابلیت کامپیوتر در مبادله اطلاعات با دنیای خارج از خود است . یکی راه های این ملزوم پورت ها هستند که در بسیاری از کامپیوترهای کنونی به همین منظور تعبیه شده اند . ولی برای استفاده از این امکانات نیاز به ابزارهای نرم افزاری نیز است.
در این پروژه ی نرم افزاری سعی شده است یک ابزار در محیط برنامه نویسی  دلفی(Delphi) تهیه شود تا برنامه نویسی برای استفاده از پورت ها را ساده تر وبا سرعت تر کند. به همین منظور در ابتدا توضیحاتی در مورد نوشتن کلاس ها و اجزاء ساخت در دلفی وبعد توضیحاتی در مورد این جزء ساخت ذکر شود.










تجرید داده ها و برنامه نویسی شیء گرا:
از انجا که دلفی یک زبان شیء گرا ست و برنامه نویسی با آن مستلزم یک درکی هر چند اندک از این نوع  برنامه نویسی را لازم میسازد به همین منظور در این قسمت به توضیحی مختصر در این مورد پرداخته ایم .
تجرید داده ها به منظور توجه روی اشیاء داده ای مورد نیاز برنامه وعملیات روی اشیاء و عد¬¬¬¬¬¬¬¬¬¬م توجه به چگونگی نمایش وذخیره اشیاء
 داده ای در حافظه به وجود امد که نمایندگان ان که ابتدا زبانهایی چون    C++, Turbo Pascal و بعداً با پیشرفت سیستم عامل ها و زبان های برنامه نویسی همچون زبانهایVC++, Delphi می باشد این روش به برنامه نویس اجازه میدهد قبل از پرداختن و بررسی جزئیا ت سازماندهی واقعی ان در حافظه و قبل از پیاده سازی انها بتوانند از اشیاء در برنامهها خود استفاده کند.استفاده از تجرید دادهها منتهی به مجموعه ای  از واحد برنامه هایی با قابلیت استفاده مجدد می شود که میتواند پایه و اساس برای طراحی وتولید نرم افزارهای بعدی باشد.
در بنامه نویسی شیگرا برنامه به واحد هایی به نام کلاس تقسیم میشود که هر یک دارای اشیاء داده ای مخصوص به خود و همچنین عملگرهای دستکاری این داده ها را دارا می یاشد وفقط از ان عملگرها میتوان برای دستیابی داده ها در خارج داده ها استفاده کرد و در حقیقت هر یک از این کلاسها وظایفی بر عهده دارند که باید به انجام برسانند به این خاطر کلاسها دارای مشخصه ها ی دستیابی متعددی هستند که هر یک محدودیتی را برای این داده ها به وجود می اورند.
یکی دیگر از امکانات این نوع برنامه نویسی ارث بری میباشد که موجب می شود یک کلاس فرزند کلاس دیگری باشد و بدون برناه نویسی دوباره از امخکانات کلاس والد خود استفاده کند وبا افزودن امکانات ان را گسترش دهد.

دلفی و برنامه نویسی شئ گرا :
دلفی ابزارتولید  سریع برنامه های کاربردی است که بر اساس ابجکت پاسکال یک زبان شئ گرا با ویژگیهای کامل تهیه شده است و به این خاطر معماری دلفی یک معماری شئ گرا ست و کلاس ریشه آن TObjectاست . تمام کلاسها در دلفی این کلا س را به عنوان کلاس ریشه دارند . آنچه که دانستن ارث بری  را بیشترلازم میکندهمین موضوع است زیرا در  دلفی نوشتن کلاس پایه وجود ندارد ودر حقیقت نوشتن هر نوع کلاس ، نوعی ارث بری و افزودن امکانات بیشتر است . دلفی کلاسهایی دارد که هر کدام برای کاربرد مخصوص به کار میرود مانند TComponent  برای تولید اجزاء ساخت و Twin control  برای تولید اجزاء ساختی دارای Handelدیگر نیازی به نوشتن این کلاس ها در ریشه نیست واین خود قابلیت دلفی را افزایش میدهد.


ساختاركلاس و نحوه ى تعريف آن:
كلا سها حاوی داده ها يا فيلدها و عملگرهاى دستیابی یا متدها هستند و کلاس در حقیقت همان اشیائی هستند که می خواهیم دربرنامه باشد. کلاسها در قسمت unit interfaceها معرفی میشوند و متدهای آن در قسمت Implementation پیاده سازی میشود این متدها هستند که نحوهء   عملکرد برروی داده های کلاس را مشخص میکند. برای تعریف کلاس ابتدا بایداطلاعاتی را که میخواهیم درباره ی شیء در کلاس ذخیره شود را مشخص می کنیم وسپس اطلاعاتی که باید در بیرون از کلاس دیده شود را مشخص می کنیم در آخر متدهایی که باید روی این داده ها عمل کنند را پیاده سازی می کنیم. برای داده ها ومتدها مشخصه های دستیابی بوجود آمده اند تا کار پنهان سازی اطلاعات را آسان سازند که این مشخصه ها در دلفی به چهار مشخصه تقسیم میشوند:private , Public      Protected, published  
مشخصه private:
تعاریف داده ومتدی که در این بخش آورده شوند مختص این کلاس بوده و در داخل آن می توان از آنها استفاده کرد و دستیابی به آنها خارج از کلاس به طور مستقیم امکان پذیر نیست
مشخصه public:
در این مشخصه از همهجا می توان داده ها ومتدهای تعریف شده را استفاده کرد . در حقیقیت رابط بین بخش خصوصی ومحیط بیرون از کلاس این بخش است .برنامه نویس باید با استفاده از مشخصه های دیگر امکان دستیابی به داده هایی را بدهد که واقعا لازم است.
مشخصه:published
 رفتار این مشخصه همانند مشخصه public است ولی در مورد اجزاء ساخت آنهم زمانی که لازم باشد داده های به هنگام طراحی مقدار دهی شوند، به کار می رود.تمامی داده های تعریف شده در این بخش در Object inspector  نشان داده خواهند شد.
مشخصه protected :
با نمونه ای از یک شیء نمی توان به داده ها ومتدهای تعریف شده در این بخش دستیابی داشت .اما اگر زیر کلاس جدیدی تعریف گردد در آن صورت همان اعضای محافظت شده مستقیماً توسط کلاس جدید قابل دستیابی است.اگر نظر بر این است که دستیابی کاربر کلاس رابه داده ها یا متد ها را محدود کنیم ودر عین حال امکان امکان دستیابی به داده ها یا گسترش متدهای آن را برای برنامه نویسان دیگر فراهم کنیم ،آنها را در این بخش می آوریم.
در نوشتن کلاس ها باید چند نکته را بخاطر داشت:
1-    محدوده ی شناخت داده ها و رویه ها را تا جایی که ممکن است محدود کنیم تا دستیابی به همان اندازه ای باشد که لازم است.
2-    حدالامکان از دستیابی private در کلاس ها استفاده کنیم .همه چیز باید خصوصی باشد مگر اینکه دلیلی بر خصوصی نبودن وجود داشته باشد.
3-    داده ها باید همیشه خصوصی باشند ودستیابی به آنها باید از طریق خصوصیات امکان پذیر باشد.
خصوصیات (properties):
خصوصیات برای کاربر کلاس همان داده ها هستند ولی برای برنامه نویس کلاس قابلیتهای جدیدی برای هوشمند ساختن داده ها افزوده است .خصوصیات شکل مربوط به حفظ سادگی داده ها را حفظ می کنند ودر عین حال کاربرد امن داده های خصوصی را که از طریق متد های عمومی  مورد استفاده قرار می گیرند،فراهم می سازد.ودر یک جمله برای دستیابی داده های خصوصی به کار می روند.
شیوه تعریف خصوصیات به صورت زیر است:
Property variublename:datatype read fieldname write fieldname;
کلمه   property به همان صورت نوشته می شود  variablename نام خصوصیت است که برای دستیابی به فیلد مورد استفاده قرار می گیرد.datatype نوع داده ای خصوصیت را مشخص می کند read و write امکان دستیابی به فیلدها را برقرار می سازند .زمانی که مقداری در خصوصیت جایگزین می کنیم در حقیقت فیلدی که در مقابل write قرار دارد را مقداردهی می کنیم و زمانی که مقدار خصوصیت را مورد دستیابی قرار می دهیم در واقع مقدار فیلدی که در مقابل read آمده است را مورد دستیابی قرار میدهیم.
نکته ای که قابلیت خصوصیات را افزایش می دهد ای است که توابع و رویه ها نیز در صورتی که با نوع خصوصیات سازگار باشند می توان به جای فیلد ها استفاده کرد.این قابلیت موجب می شود که اطلاعاتی که نیاز به پردازش به هنگام خواندن یا نوشتن در خصوصیات است ، امکان پذیر باشد.در این مواقع در مقابل read  یک تابع با خروجی سازگار باخصوصیت نوشته می شود ودر مقابل write یک رویه با ورودی سازگار با خصوصیت نوشته می شود.دلفی به هنگام خواندن خصوصیت تابع را اجرا می کند وبه هنگام مقدار دهی مقدار وارد شده را آرگومان رویه قرار داده وآن را اجرا می کند. این گونه توابع و رویه ها ویژگیهایی دارند: اوٌل اینکه در بخش خصوصی کلاس تعریف می شوند که در حقیقت هدف ازبوجود آمدن خصوصیات نیز همین بوده تا جزئیات را مخفی کند و کاربر کلاس را از بکار بردن متدها برای مقدار دهی برهاند مثلا بجای بکار بردن setcolor  و   getcolorمقداری را در خصوصیت color قرار می دهد ویا از آن می خواند.دوم اینکه برای نام گذاری آنها قراردادی است که شرکت  Borland برای سادگی وضع کرده است
بدین صورت که ابتدای نام توابعی که در خصوصیات به کار می روند Get نوشته می شود و به همین صورت در اوٌل رویه ها Set  نوشته می شود. وبالاخره اینکه اگر خصوصیات در قسمت Published  معرفی شوند در Object inspector  نشان داده می شوند و قابل دستیابی هستند که موجب می شود که توابع آنها نیز اجرا گردد. در این صورت اگر نیازی به اجرای برخی از دستورات آنها نیست باید تمهیدات آن را در داخل توابع و رویه قرار داد.
علاوه بر معرفی محدوده های دستیابی وخصوصیات چند مطلب مهم دیگر نیز در مورد کلاس ها وجود دارد و آنها اینکه هر کلاس باید متدی برای ایجاد یک نمونه ازآن شیء وجود داشته باشد که آن را constructor می نامند. متدی که constructor  است باید آن نمونه شیء را در حافظه ایجاد کند ومقدار اوٌلیه دهد.یک متد دیگر برای از بین بردن آن نمونه شیء لازم است که آن را destructor  می نامند و کار آن از بین بردن و آزاد سازی فضای حافظه ی کلاس است.همچنین کلاس ها باید به پیام های ویندوز پاسخ دهند یا به آن پیام بفرستند.
همانطور که قبلاًََ ذکر شد ریشه ی کلاس ها در دلفی Tobject است که یکی از دلایل این اجبار وجود این سه متد پایه ر کلاس Tobject است و بنابراین تضمین می کند که کلاس های دلفی رفتار واقعی کلاس های پایه را دارا هستند .علاوه بر این دو متد بسیار مهم دیگر نیز در Tobject طراحی شده اند . متد free که با زبان اسمبلی نوشته شده ویک متد بسیار قابل اطمینان برای آزاد سازی شیء است.این متد حتی در صورتی که شیء nil باشد نیز کار خود را به درستی انجام می دهد.متد دیگر Dispatch است که برای پیام رسانی بهتر ا بداع شده است . پیام های ویندوز مخصوص شیء های  دارای Handle  مانند list box و button هاست ولی در دلفی به خاطر همین متد همه ی کلاس ها می توانند آنها را دریافت کنند.


وراثت:
وراثت مفهومی است که قابلیت برنامه نویسی شیء گرا را افزایش می دهد وآن عبارت است از تعریف یک زیر کلاس که قابلیت های کلاس والد خود را داراست و میتواند قابلیت های جدیدی نیز اظافه کند ودر حقیقت قابلیت های آن را گسترش دهد.برای تعریف یک زیر کلاس به صورت زیر باید عمل کرد:
New_Class=class(Parent_Class)
البته برای نام کلاس نیز قرار دادی وجود دارد وآن حرف T می باشد که در اول نام هرکلاس می آید.
چند مفهوم برای زیر کلاس وجود دارد که درباره ی نحوه ی تعریف متدها در کلاس ها و تاثیر آن در زیر کلاس هاست. یکی متد های مجازی است که بیشتر در کلاس های رده بالا تعریف می شوند و دومی متد های دینامیکی . متد هایی که به این دو صورت تعریف گردند قابل تغییر در زیر کلاس ها هستند ومثالی از آن متد Destroy  موجود در کلاس Tobject است که به صورت مجازی تعریف شده . تفاوت این دو در این است که متد های مجازی  برای سرعت بهینه می شوند در صورتی که متد های دینامیکی برای اندازه مورد نیاز بهینه می شوند. زمانی که دایرکتیوی برای متد تعیین نکنیم آن متد ایستا نامیده می شود. متد ایستا را نمی توان تغییر داد ومثال آن متد create موجود در Tobject  است که به صورت ایستا تعریف شده ونمی توان  آن را تغییر داد ولی می توان چندین constructor  داشت مانند create(Aowner:Tcomponent) موجود در Tcomponent که به صورت مجازی تعریف شده است.
برای تغییر یا اصلاح رفتار متدهای مجازی و دینامیکی باید آنها را Override کرد . یک مثال خوب از این مورد Wincontrol ها هستند که همه آنها زیر کلاس Twincontrol اند و متد paint را دارا هستند که به پیام WM_PAINT پاسخ میدهد ولی  تمام wincontrol ها شکل های متفاوتی دارند پس باید این متد را برای هر کدام از آنها Override  کرد تا برای هر کدام رفتار متناسبی داشته باشند.
ممکن است رویه ای که یک متد با آن override میشودرفتار مورد نظر در زیر کلاس را کاملا تغییر دهد ولی گاهی هم لازم است که رویه همان رفتار را به اضافه ی رفتار دیگر از خود نشان دهد که با فراخوانی متد inherited در داخل متد override  شده این نیز امکان پذیر می باشد.








انجام پایان نامه

انجام پایان نامه کامپیوتر، انجام پایان نامه ارشد کامپیوتر، انجام پایان نامه، پایان نامه

برای دیدن ادامه مطلب از لینک زیر استفاده نمایید

 

  دانلود مقاله | انجام پایان نامه

سفارش پایان نامه