توضیحات

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

  مقاله مقدمه‌ای بر Object Pascal با word دارای 37 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد مقاله مقدمه‌ای بر Object Pascal با word  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی مقاله مقدمه‌ای بر Object Pascal با word،به هیچ وجه بهم ریختگی وجود ندارد


بخشی از متن مقاله مقدمه‌ای بر Object Pascal با word :

مقدمه‌ای بر Object Pascal

چنانچه درباره مك‌آپ مطالعه‌ای داشته باشید ممكنست تعجب كرده باشید از اینكه باید برنامه‌ریز Macintosh peogrommer’s Workshop(MPW) را تهیه كنید و بخصوص اینكه این برنامه‌ریز باید به زبان پاسكال نوشته شده باشد. فعلاً پاسخ مثبت است. در مورد آن كسانی كه تألیفات دیگران را دوست دارند و یا برنامه‌ریزی به زبان دیگر مثلاً C را ترجیح میدهند در حال حاضر شانس زیادی ندارند. دلیل آن دو چندان است. بسیاری از زبانها بروی Macintosh مطالب لازم را كه سیستم مك‌آپ دارد ندارند و حتی اگر داشته باشند سرعت پاسكال را ندارند.

در این مقاله، ابتدا ساختار O.P را توضیح داده سپس بعضی از معناشناسیهائی مورد استفاده در این ساختار را پیشنهاد می‌كنیم. در خصوص مراحل مختلفی از سازگاری بحث می‌كنیم كه یك زبان یا مؤلف دیگر برای استفاده از مك‌آپ و مراحل رسیدن به هدف آن نیاز دارد. خصوصاً، شغل خاص كه حاوی و زبان معمولی را كه به آن كه مربوط می‌شود نشان میدهیم. یكی هم راجع به چگونگی اضافه كردن مواد به زبان MPW صحبت خواهیم كرد. در آخر نمائی از آنچه تا بحال فرا گرفته‌ایم ارائه می‌كنیم.

Object Pascal
پیوست و ادامه‌ای است بر زبان پاسكال كه با مشورت نیكلاس ویرث، مخترع سیستم پاسكال، در شركت آپل انجام شد. این تداوم ناشی از تلاش نوعی از تشخیص پاسكال به نام كلس‌كال می‌باشد كه در كامپیوتر لیزا قابل دسترسی بود. خود مك‌آپ حاصل تول‌كیت لیزا، كه كارگاهی كاربردی برای ایجاد كاربردهای لیزا است، می‌باشد. لیزا تول كیت به زبان كلس‌كال نوشته شده است.

در سیستم O.P. معناشناسیهای معدودی دیده می‌شوند. غوده آبجكت، نوع جدیدی از داده‌هاست. Object شباهت بسیار زیادی به شرح كتبی دارد كه می‌تواند رشته داده‌های مضاعف نوع گشتاری را در خود جای دهد. مضافاً اینكه، فهرستی از روشها و دستورالعملهائی مربوط به متدهای مختلف را برای نوع خاصی از Object مشخص می‌كنید. این متدها، نقش هر یك از این نوع Object را توضیح میدهد. مثلاً می‌توانید نوع ظاهری Object را به شرح زیر تعریف كنید:
type
Shape = object
Bounds : Rect
Color: Pattemm
Pracedave Draw:
Procedure Erase:
Procedure Rotate (angle: integer):
Procedure Meve (delta: Point)
Function Area: integer:
End:

بعلاوه، می‌توانید نوعی از Object را كه دارای حوزه‌ها و روشهای Object نوع دیگری باشد نیز شناسائی كنید. نوع جدید می‌تواند روشها و حوزه‌های جدیدی را مشخص نموده روشها كه را كه در درون نهفته دارد و موردنظر شماست انتخاب نماید.
Type
Circle = object (Shape)
Radias: integer
Procedure Draw: override:
Function Area: integer: override
Procedure SetRadis (new Raduig: unteger)
End

هر مدلی از Object معمولاً اشاره به گروهی دارد. در مثال بالا، دایره زیرگروه شكل است. شكل گروه اصلی دایره می‌باشد. هر گروه (نوع Object) می‌تواند زیرمجموعه‌ها (انشعابات) زیادی داشته باشد، اما فقط یك سرگروه (اصل) دارد. وقتی از مفهوم ارتباط صحبت می‌شود اكثراً از واژه گروه (Class) استفاده می‌كنیم. هر وقت از انواع داده پاسكال حرف می‌زنم، واژه Object را به كار می‌برم.

Object ها از نامگذاری روشهای انواع جدید فرمهای پاسكال بوجود آمده‌اند. لغت جدید (دایره) را به كار می‌برید تا مثالی برای Object نوع دایره‌ای بزنید. وقتی در مورد متغیره‌ای از نوع Object از واژه جدید استفاده می‌شود، به ذخیره‌ای كافی در گروه اشاره داشته میزان متغیر را تا رسیدن به داده موردنظر (نقطه به نقطه) تنظیم می‎كند. فلشهای دوبل معمولاً برای تفهیم و بیان عدم مراجعه‎ای كه بطور اتوماتیك توسط مؤلف انجام میشود مورد نیاز است، بنابراین می‎توان مستقیماً به حوزه‎های اطلائی دست یافت، بعنوان مثال:

Acircle.bounds درست است نه Bounds 88 aCricle. برعكس برای استناد به روشی كه برای همان بیان استفاده می‎كنید باید نوشت: Acricle این طرح به روش نوع شیئی دایره شكل استفاده دارد. از آنجا كه همه متغیره‎‏های نوع Object به داده‎ها برمیگردند. نموداری مثل شكل 1=: شكل 2 باعث می‎شود كه نحوه شكل 1 بر داده‎های شكل 2 منطبق شود.

حوزه‎های یك موضوع خود می‎توانند مرجع‎هائی باشند برای موضوعات دیگر. مثلاً می‎توانید برای تعریف Shape حوزه جدید Shape بعدی را تعریف كنید و فرمهای بهم پیوسته‎ای داشته باشید با سیستم O.P. می‎توانید نوع جریانی را كه می‎تواند مرجعی ناشناخته باشد شناسائی كنید. در این روش، می‎توانید مرجعی دورانی برای انواع Object كه داشته باشید. چنانچه رالف با مشخص كننده یا مأنوسی مواجه شود می‎توان پذیرفت كه بزودی مشخص خواهد شد. چنانچه بعداً عنوان نشد، دستگاه علامت error میدهد. اندازه موضوع نامشخص به دلیل اینكه مرجع آن همیشه چهار بایت است زیاد مهم نیست. عمقی كه هر نوع Object بتواند داشته باشد نامحدود است. می‎توانید نسلی كوچك از یك دایره و یا نسل كوچك دیگری از آن نوع و امثال آنرا داشته باشید. هر نسلی كه جانشین می‎شود همه حوزه‎ها و روشهای همه نیاكان خود را بهمراه دارد.

لازمه O.P. اینست كه نوع تعریف شده Object در بالاترین سطح دستگاه‎ها یا برنامه بوده همیشه مدتی قابل ارائه باشد. در مورد یك دستگاه، این قضیه می‎تواند حالت متقابل داشته و یا بخشی تكمیلب باشد. پیكره یا كد واقعی این روش در دستورالعمل دستگاه و كاربرد یا برنامه كار قطعه ظاهر می‎شود. چنانچه پیكره روش اظهار شده در پرونده ظاهر نشده، مؤلف نشان خطای «روش كامل نشده است» میدهد. پیكره این روش درست مثل هر عملكرد و روش دیگری است:
Procodure shope. Erase
Begin
Erase Rect (bounds)
End.
Procedure circle. Draw
Begin
Fill Oval (bounds. Colcr)
Frame Oval (bounds)
End
در مورد این دو مثال نكات چندی است كه باید تذكر داده، نام روش با عنوان نام نوع، بیان شده است. واژه نام روش برای تمایز روشی است كه تعریف شده است. وقتی در مورد اصل روش صحبت می‎شود، همیشه عاملی ضمنی برای خود (Self) وجود دارد. Self به شیئی اشاره دارد كه به روش استفاده می‎كند. حوزه‎های Object نیز می‎توانند با Self تعریف شوند. مرزها یا Self. اما مؤلف عاملی ضمنی را بوجود آورده بنام رنگ «با استفاده از Self» كه روش را احاطه كرده باعث می‎شود حوزه‎های نام مستقیماً قابل دسترسی باشند.

بطور مشابه، با استفاده از واژه Self می‎توانید از درون هر روش به روش دیگری استفاده كنید. واژه روش دیگر، تكرار می‎كنیم فقط واژه روش دیگر كافیست. این موضوع نیاز Self را نسبت به وقتی كه كسی بخواهد موضوعی را به وضعیت عادی دیگری برگرداند مرتفع می‎سازد. مثلاً در مورد موضوع «مرا به لیست اضافه كنید (Self). در مورد عبارت a Circle. Draw از آنجا كه واژه a Circle زیر مجموعه Circleاست، روش Circle Draw بیش از بیش Shape Draw شناخته شده است. مضافاً اینكه اگر بخواهیم روی موضوع a Cricle Erase كار كنیم، چون Circle در مجموعه روش Erase نیست، باید به روش Shape Erase استفاده كرده، این مطلب بسادگی قابل فهم است. اگركه زیر را اجرا كنیم روش ناآشناتری را خواهیم داشت:

Var ashape: Shape
A Circle: Circle
New (a Circle)
A Circle. Bounds=some Rect
A Circle. Color=white
A Circle. Radius=bo
A shape=a circle
A shape=Draw

وقتی سیستم Shape Draw را اجرا می‎كنید، نام این روش چیست. Shape Draw یا circle Draw؟ حتی اگر سیستم a shape به عنوان یك شكل بیان می‎شود، تشخیص یك دوران باعث می‎شود به چیزی دورانی باشد و بنابراین طرح دوار نام این روش خواهد بود. این روش با مقادیری از مشخصه‎های دو بایتی در ابتدای هر شیئی كامل می‎شود. (تصویر 1) این قضیه نكات مهمی را گوشزد میكند. تشخیص و اظهار یك موضوع برابر است با یك دوران یعنی «امنیت» زیرا هر حوزه‎ای از روشها كه برای اشیاء بدست كه می‎باشد برای هر مورد دواری نیز صادق است.

اما تشخیص بر عكس آن به معنای شكل با امنیت نیست زیرا حوزه‎ها و روشهای اضافی Circle الزاماً با shape object قابل فهم نیست. مثلاً اگر بعدها به دوران شاعای روی آوریم، نمی‎توان فهمید كه آیا آن موضوع شكلی معمولی بوده است یا خیر. (در واقع این متغیره شكل می‎تواند به نسل كاملاً‌ متفاوتی از Shape مثلاً مثلث، اشاره كند. كه روشهای خاص دورانی نیز قابل شناخت نمی‎باشند.)

در این مورد باید بخاطر داشت كه حتی اگر متغیره موردی از نوع خاص هم باشد، در گذر زمان، به بیان نوع اصلی یا به نسل آن برمیگردد. معنی این حرف اینست كه می‎توان فهرستی از «اشكال» را داشت كه هر یك طرحی از كل باشد كه انواع اصلی مخلوطی از مجموعه دوایر، مستطیل‎ها، مثلث‎ها و انواع آن باشند. در نتیجه، تشخیص اینكه كلام را باید روش اصلی ناحیه باید از طولانی دست باشد. این كار با استفاده از طرح «روش رایج مخابره پیام» انجام می‎شود كه در آن جدولهائی از موقعیت روشها برای هدایت به روش صحیح به كار گرفته می‎شوند. این روش را بعداً مفصل‎تر توضیح خواهیم داد.

ساختار نهائی اضافه بر پاسكال، لغات كلیدی است. چنانچه روشی را كنار گذاشته‎اید تا كد نهائی خاص برای نوع مورد نظرتان اضافه كنید، اما هنوز مایلید از روش قبلی استفاده نمائید می‎باید از لغت بجا مانده بدنبال تمام روش استفاده كنید.
Qrocedure my controler. Procosskey stroke (ch:char)
Begin
Ifch=(X) Then
Do samethcing speeial
Else
Inheoited processkey strovk(ch).
End

كنترلر فرضی (A.C) بدون واسطه به نیاكان M.e.(My controller) برمیگردد. یعنی به P.K. (چرخه كه استراك) (بفرض آنكه وجود داشته باشد). اگر موجود باشد. بهترین روش نامیدن آن همیشه در زمان تألیف تعیین می‎شود-نیازی به روش مخابره زمانی نیست. این روش همواره نزدیكترین ریشه كانی است كه روش را كامل می‎كند. توجه داشته باشید كه منظور الزاماً ریشه بلافاصله قبلی نیست.

چنانچه ریشه قبلی روش را كامل نكند و ریشه بعدی نسل آنرا انجام دهد، آن روش را بآن نام می‎توان شناخت. با استفاده از لغت كلیدی ارثی بجای نامگذاری نیای واقعی نوع موضوع (عالی)، تغییرات بعدی می‎تواند شامل شما شود كه تكمیل روشی را در نیای اصلی یا عالی دارد و یا حذف كنید. چنانچه این نوع بجا مانده در روش استفاده شده باشد كه از نوع نیاز قبلی موضوع بجا نمانده باشد دستگاه پیام اشتباه میدهد.

O.P سیستم عملكرد عضویتی را نیز بدست میدهد. از این سیستم می‎توانید زمانی كه مورد خاصی در كلاسه معینی باشد استفاده نمائید. مثلاً می‎توانید بگوئید
If member (a) shape, Circle) then
Num circle:=numcicle +1

چنانچه نوع مورد از همان نوع یا از نسل مورد آزمایش باشد. سیستم member آنرا تائید میكند. در نمونه بالا. Numcircle می‎تواند ضربه‎ای برای دوایر و هر زیر مجموعه‎ای از دایره باشد، اما برای مربع‎ها، مثلث‎ها یا اشكال معمولی خطری محسوب نمی‎شود. استفاده از سیستم Member تا حدودی برعكس اصول برنامه‎ریزی مواد است (شما مجاز به شناخت آن با نوع خود نیستند). بنابراین استفاده آن معمولاً‌ جز در موارد و شرایط خاص، منع شده است.

از آنجا كه همه منابع Object بعنوان ابزاری در داده‎های توده‎ها نگهداری شده‎اند، ساختارهای زیادی از نوع Padcal هستند كه برای استفاده مطمئن می‎باشند. یكی از آنها عامل VAR در دستورالعمل جاری است. مؤلف Pascal عنوان عامل VAR را در جایگاه یعنی میكند. اگر توده در زمان انجام پروسه تكمیل شده، عنوان عامل موضوع خوره اعتبار خود را از دست میدهد. در چنین مواردی نویسنده هشدار میدهد. اگر مطمئن هستید دستورالعمل با متن هماهنگ نمی‎شود، می‎توانید قبل از عبارت از ($H-) استفاده كنید. با این كار دیگر نویسنده هشداری اعلام نمی‎كند. برای برگرداندن متن به حالت اول باید به عبارت. ($H+) را اضافه كنید.

سطوح انطباق
اگر برنامه‎نویسی هستید كه می‎خواهید از سیستم Mac App استفاده كنید سطوح گوناگونی از انطباق را باید بررسی كنید. یكی از آنها استفاده از عبارت‎های مشخص شده موارد است مثل نوع مورد یا موردی از كل مجموعه. دیگر وقتی است كه از ساختار پرونده موضوع صحبت می‎كنیم كه عبارتست از ساختار موضوع براساس تعاریف مشخص شده مفهوم مورد نظر، اجزاء بجا مانده و یا انواع روشهاست. مؤلف پاسكال باید همه بخشهای الحاقی به سیستم پاسكال را كه از MWP می‎گیرد به كاربرد تا علاوه بر ضمائم مشخص شده مورد، آن اضافات را به عنوان عوامل تألیف جداگانه به كارگیرد، عباراتی بر خلاف اظهارات، و حتی موارد زمانی متعددی مثل تألیفات شرطی.

نهایتاً، زبانهائی كه قابل تألیف برای موارد فایل هستند از ساختار تالیفی یكسانی استفاده می‎كنند، كه نام آنها در فهرست جزوه مرجع MPW آمده است. و بعلاوه پیمانها و روشهای خاص و جدول ساختارهای خاصی را كه در برنامه O.P آمده دربرمی‎گیرد.

چنانچه زبانی كه برای برنامه‎ریزی انتخاب شده مذموم موضوع مشخص شده O.P را تائید كند و اگر ساختارهای برنامه‎ریزی آن زبان با ساختارهای پاسكال شباهت داشته باشد براحتی می‎توان برنامه‎ای نوشت كه توجه اتوماتیكی Mac App به زبان دلخواه را بدهد. حالا مؤلف می‎تواند متن ترجمه شده و یا اصل تألیف را از Mac App به هر جهت نامفهوم مورد نظری از سیستم Apple را جایگزینی سیستم Mac App نماید. نویسندگانی كه از سیستم ساختار موضوعی MPW استفاده نمی‎كنند می‎توانند از بعضی از متغیره‎های موجود در Mac App را انتخاب نمایند. نویسندگانی كه به سیستم Pascal، سیستم كارگاهی M.P را اضافه كرده‎اند خود می‎توانند مستقیماً از منابع Mac App استفاده نمایند. اگر مؤلفه شما فقط تعدادی (نه همه) ضمائم را میدهد، می‎توانید منابع Mac App خود را به صورت عدم استفاده از مدلهای تأئید نشده تغییر دهید. البته ضمائم موضوع مشخص شده باید تأئید شده باشند.

برنامه نویسندگانی كه به هنگام كاربرد ساختار پرونده MPW كد گذاری می‎كنند و از جدول روش O.P و نمادهای مربوطه استفاده می‎نمایند می‎توانند مستقیماً به دو فایل Mac App مرتبط شوند. می‎توانند توسط فایلهای O.P از قبیل واحدهای Text و Dialog Box ارتباط برقرار نمایند.
اخیراً بسیاری از برنامه نویسان ساختار فایل MPW را تائید نمی‎كنند. از اینرو تنها امكان انتخاب آنها از ترجمه Mac App به زبان خاص خودشان است (كه لكنت در وضعیت O.Pترجمه‎ای ناچیز یا حتی بی معنی باشد.)

چنانچه شما بعنوان مؤلف نویسنده از جهت مذهبی (یا اعتقاد عملی) تعهدی در قبال ساختار خاص موضوع فایل ندارید، می‎خواهم استفاده از سیستم MPW را به شما توصیه كنم. در هر حالتی، بحث سازمان جدول روش خاص ما و نماید مخابره پیامی كه بدنبال آن می‎آید بسیار مفید است بخصوص اگربخواهید موارد خاصی را به زبان برنامه‎نویسی اضافه كنید و حتی اگر قصد داشته باشید كه زبان برنامه خود را به نحو كاملاً متفاوتی بنویسید.

ساختار فایل موضوع
همانطور كه قبلاً گفتیم،‌سیستم A.O.P فائلهائی را برای استفاده از ساختارهای MPW بدست میدهد. ساختار این فایل از مجموعه‎ای از گزارشات طولانی است. یازده نوع گزارش مختلف داریم. مهمترین انواع آنها برای این منظور عبارتند از تحریری، ضمنی و مرجعی، گزارش تحریری كه یا داده‎های تحریری جدیدی را شامل می‎شود. هر دستورالعمل یا كاربردی بوسیله كدی تحریری بیان می‎شود. این كه معمولاً بعد از یك یا چند گزارش مرجعی و یا ضمنی می‎آید. گزارش‎های مرجعی به مرجع گزارشات تحریری از گزارش ضمنی می‎پردازد. گزارش‎های ضمنی شامل كدهایی رایج و واقعی است.

«The class info proc» پروسه گروه اطلاعاتی
زمانی كه یك نوعی از Object type تعریف می‎شود یك (مقیاس كد ساختگی) ایجاد می‎گردد. كه این مدول به نام «Class info proc» پروسه گروه اطلاعاتی شناخته می‎شود، كه شامل اطلاعاتی مانند اطلاعاتی در ارتباط با سایر این نوع Obgect و اینكه از چه متدهایی و روشهایی برای این نوع استفاده شده‎اند می‎‏باشد. این مدول هرگز فراخوانی نمی‎شود و در یك بخش خامی جایگذاری شده به نام Methtable% به همراه بقیه پروسه گروه اطلاعاتی Class info ptoc همچنین این بخش یا Segment یك برنامه كوتاه دارد با نام RTS1% در هنگام شروع كار RTS1% فراخوانی می‎شود كه تمام سگمنتها را همراه متد تیبلها را در خود جای می‎دهد.

«The method Call» سیستم متدكال
قبل از اینكه من بخواهم به تنهایی در مورد نوع این متد تیبل صحبت بكنم، ما نیاز داریم كه بدانیم اصولاً چگونه یك متدكال كار می‎كند. به متدكال زیر توجه فرمایید.
Ashape.Move(dist);
متدكالها در سیستم پاسكال به طور طبیعی، اصولاً از تعرفه Pascal calling استفاده می‎كنند. در ابتدا پارامترهای جمع‎آوری و طبقه‎بندی می‎شوند (به صورتی كه آنها به صورت یك روش بیانی Preceduredeelaration به نظر می‎رسند)

سپس یكJSRcoll (Jamp to Subroutirc) ایجاد می‎گردد. برای متدكال بالا كه ابجكت به صورت زیر ظاهر می‎شود:
Move. L Dist,-(SP)
Move. L a shape, -(SP)
JSR
JSR به كجار می‎رود؟ همواره متدكال به اجرای نوع فرم سیستم ashape را بسته می‎باشد. ما نمی‎توانیم كه یك JSR را مستقریم در یك Shape. Move جایگذاری كنیم. در زمان اجرا ashape می‎تواند یك دایره، مربع یا چیز دیگری باشد در زمانی كه این كد كامپایل شده است.
ما نیازمند یك مكانیسم ارسال هستیم كه ابجكت را كنترل كند تا نوع آن را مشخص نماید. سپس روشی مناسب و در خور آن نوع را انتخاب كند. اما به كد بالا نگاه كنید ما حتی برای تماس روش خاصی را مشخص نكردیم. اكثر زبانهای كه (Obgect oriented) یا زبانهایی كه به object گردیده‎اند از یك روش انتخاب كننده برای تشخیص متد استفاده می‎كنند.

انتخاب‎‏گر یك تشخیص دهنده منحصر بفرد برای یك اسم متد خاص می‎باشد. این شیوه می‎تواند گران باشد به این دلیل كه به فضا و حافظه بیشتری نیازمند است. بعلاوه Object pascal كه متدهای نامربوط از سلسله Object دارای اسم مشابهی باشند در صورتی كه لیستهای پارامتر كاملاً متفاوتی از یكدیگر دارند. به طور كلی كامپایلر به صورت تعریفهای جداگانه متد برخورد می‎كند. در حقیقت اسم روش برای انتخاب‎گر می‎تواند گیج كننده باشد.

«The Selector proc» پروسه انتی بگر
این سئوال باقی می‎ماند كه ما چگونه می‎توانیم یك انتخاب گر خاص برای هر(Method name) اسم متد ایجاد كنیم؟ ما اجازه می‎دهیم كه لینكر (Linker) این كار را انجام بدهد. لینكر در هنگام اصلاح بازفرنس‎های سگمنت مواجه می‎شود و آنها را با JSR‎ها ارتباط می‎دهد، و با داشتن آنها به جامپ تیبل می‎رود و سپس به مسیر و روتین صحیح می‎رسد.

زمانی كه سگمنت‎ها لود نشده‎اند و در حافظه دوباره لود می‎شوند ورودیهای جامپ تیبل به طور مناسبی به زور می‎گردند. جامپ تیبل در نزدیكی یك آدرس رجیستر A5 ذخیره می‎گردند. همگی JSRها در جدول از فرم JSR X(A5) هستند. جای X به نقطه مبدا در جامپ تیبل برمی‎گردد. این همان مبدا X است كه لینكر ایجاد می‎كند و این همانست كه ما به عنوان متد سلكتور استفاده می‎كنیم. به همین ترتیب به هر اسم متد جدید كه می‎رسد، در هنگام تالیف و نوشتن از یك تعرف ابجكت مواجه می‎گردد. یك رویه بسیار كوچك ایجاد می‎شود. اینرویه منسوب داشته شده به «Selectorpric» است.

اسم آن به فرم Type name$Method Name همانند Shape$move است. توجه داشته باشیم كه سلكتور پراك پروسه انتی بگر برای متدهای باطل شده ایجاد نشده است. و فقط در زمانی است كه در ابتدا با تعریف متد روبرو می‎شود. متدها به همراه اسمهای همنام در یك شاخه نامربوط از یك سلسله یك سلكتور پراك دارند. برای مثال Employce$Move. محتویات سلكتور پراك به سارگی یك JSR به روتین توزیع كننده متد حقیقی آن است كه با –Method% مشخص می‎گردد.

این بخش به سلكتور پراك مناسب مربوط می‌شود كه همه متدكالها را هدایت كرده باشد. بنابراین در توضیح بالا در مورد JSR خواهد شد JSR Shape$Move. تمامی سلكتور پراك‌ها در یك بخش مخصوص دیگری جای گرفتند. «%-Selproc» قدر بحرانی آن زمانی است كه JSR توسط لینكر متصل گردد.

2-بایستی كه به جامپ تیبل جابجا می‌شوند مخصوص آن اسم متد می‌باشد. روتین توزیع كننده متد آن بایتها را چك می‌كند و آنها را در مقابل ارزشهای ذخیره شده در متد تیبل جفت می‌كند (Match). كه تشخیص دهد كه چه متدی فراخوانی شده است.

«Mettod table format» جدول ساختار روش
همانطور كه در قبل متذكر شدیم متد تیبل برای یك ابجكت تایپ خاص در انتهای Class info proc ظاهر می‌شود. تیبل در حقیقت یك جفت از رفرنس‌ها است هر جفت برای هر متد بوسیله نوع آن ایجاد شده است. رفرنس اول در هر جفت مربوط به سلكتورپراك و دومین مربوط به اجرای متد حقیقی می‌باشد. هر كدام از این رفرنس‌ها متعد می‌باشند كه همواره در كنار سكنت باشند.

به طور طبیعی زمانی كه لینكر در حال اصلاح‌سازی در كنار رفرنس سگنت می‌باشد تنها به وصل بایتهای جابجا شده از اینتراكشن نمی‌باشد. و همچنین بیت‌ها را در اینتراكشن مرتب می‌كند تا یك AS مرتبط ایجاد كند. برای متد تیبل‌ها هیچ JSR وجود ندارد تنها Offsetها یا مبداءهایی كه احتیاج دارند به اینكه متصل گردند. خوشبختانه یك بیت مخصوص وجود دارد به نام (The AS relatve flay) محل آن در ركورد رفرنس است تا به لینكر گوشزد كند كه تلاش برای ویرایش كلمه قبل از محل شروع (Offset) نكند.

 روش جدید
ابجكتهایی كه ایجاد شده‌اند از رویه جدید استفاده می‌كنند. با وجود اینكه پارامتر یك متغیر، Object type باشد كامپایلر آن را شناسایی می‌كند. این برای Pointer tyepها نسبت به یك رویه نرمال كه جدید است خیلی متفاوت به نظر می‌رسد. این رویه و %OB NEW دیتارادوی توده كاربرد اختصاص میدهد. (پوینتر نرمال دیتای اختصاص داده شده را از توده یا گروه مخصوص پاسكال می‌گیرد.)

%-DB NEW همچنین باید دو بایت شناساگر برای ابجكت ایجاد كند. خیلی شبیه به دو بایت دیگری كه خیلی قبل با آنها برخورد كردیم. این یك مبدأ (Offset)A5 در جامپ تیبل می‌باشد.

این بار رفرنس به Class info proc از Class از پارامتر به NEW است. ترتیب فراخوانی حقیقی برای NEW (یك دایره) به صور زیر است:
PEA a circle
PEA circle’s class info proc +2
Move.W #Size of instanse, -(sp)
JSR %-OBNEW
علامت «+2» برای Info proc یك مثل عمل Haek است. ورودی جامپ تیبل برای Jump X Class info proc است در جایی كه X آدرس Class inf proc می‌باشد. ما نمی‌خواهیم كه كد را آنجا اجرا كنیم. ما فقط می‌خواهیم به اطلاعات داخل آن نگاه كنیم. با «+2» ما حالتی را ایجاد كرده‌ایم كه به Class info proc دسترسی داشته باشیم و جایی كه پرینتر اصلی (ارجح) آدرس ذخیره شده بعد از JMP اینستراكشن درون جامپ تیبل می‌باشد.

%-OB NEW روتین %-Set Class index را فراخوانی می‌كند كه AS را از این «handle» كم كرده و نتیجه را در بخش 2 بایت شناساگر انباشته می‌كند. زمانی كه یك متد فراخوانی می‌گردد %-Method را به بخش 2 بایت از آبجكت اضافه می‌كند. بنابراین دسترسی به بخش Class info proc را بازسازی می‌كند.
The method Dispatch Routine روش جاری مخابره پیام
در جدول‌های 2 و 3 چگونگی كلی فراخوانی یك متد را مشاهده كردیم. همانطور كه قبلاً هم دیدیم پارامتر‌های متد بتنهایی توسط هندل به ابجكت كشانده شده‌اند به صورتی كه هر كدام بدست ذخیره شدن هدایت شده‌ باشند.

سپس ما یك JSR را به سلكتورپراك انجام دادیم در این مورد داریم: Shape$ Ratate مثل همه سلكتورپراك‌ها Shape$ Ratate به سادگی یك JSR به روتین اتصال %-Method می‌باشد. در متد اتصال روتین ابتدا ما قسمت هندل به ابجكت را از قسمتی كه در آن انباشته می‌كنیم یا محل ذخیره، به اصطلاح تصرف می‌كنیم یا می‌رباییم. سپس ما از بخش بالایی ابجكت كلاس شناساگر بایتها را می‌گسترانیم.

با اضافه كردن A5 به این بایتها امكان دسترسی به دایره‌ی Class info proc را خواهیم داشت. متد «Seleator» 2 بایت مبدأ، بعد از اینستراكشن JSR به سلكتورپراك است. ما به جستجو از میان متد تیبل در Class info proc برای جفت كردن این انتخاب‌گر می‌پردازیم. تا زمانی كه Rotate از دایره خارج نشده است ما نمی‌توانیم جفتی در این تیبل پیدا كنیم. سپس به بخش روتین مناسب Shape-Rotate می‌رود.

Type cheking
در گذشته‌ای نه چندان دور متذكر شدم كه اگر شما از تایپ استفاده كنید مجبور هستید تا به گمارش یك تعریفی از Object type به دیگری داشته باشید، چك كننده run time هم ایجاد می‌شود. این چك كردن برای آن است كه ببیند نوع تایپ ابجكت همانند آن چیزی است كه نگارش شده یا یك زاده از متغیر در سمت چپ گمارش است. این چك كردن در زمانی ایجاد می‌شود كه شما Member funtion را فراخوانی می‌كنید. روتینی كه این كار را انجام می‌دهد به نام %-OBCHK است.

2 پارامتر را می‌گیرد و یك هندل به ابجكت و یك پوینتر به ورودی جامپ تیبل از Class info proc برای كلاس كه چه عضوی تست شده است. اگر تست موفقیت‌آمیز باشد %=OBCHK ابجكت Hondle را برمی‌گرداند و اگر در تست جواب ندهد آن را حذف و معدوم می‌سازد. این به نام روتین برلین فراخوانی می‌شود. روتین %-IN obj برای انجام یك تست واقعی است.

اطلاعات آماده شده‌اند از این قرار بعلاوه برای كسی كه می‌خواهد امكانات Object-orientel را در زبان‌هایش بكار گیرد باید كافی باشد. Object Assebler بحثی است كه در پیش می‌باشد، یك مثالی است كه چگونه ما می‌توانیم یك متد تیبل نوبت از زبان دیگر بگیریم و مشابه آن ایجاد كنیم. و ساخت یك Object file سازگار و متناوب (متغیر) در برنامه‌نویسی مخصوصاً در Object Pascul را انجام دهیم و به پایان برسانیم.
با وجود اینكه فواید زیادی در استفاده یك زبان سطح بالا وجود دارد می‌خواهیم كه قادر باشیم فرار كنیم از جمع كردن زبان زمانی كه مجبور هستیم. بخشهای بحرانی یك كاربرد Code-time را بهره‌ور سازیم.

استفاده كردن از زبان قدرتمند ماكرو توسط اسمبلگر MPW 68000 این امكان را به من می‌دهد كه یك مجموعه از ماكروها را بنویسم كه این اجازه را به من می‌دهد كه یك گروه را تعریف، متدها را فراخوانی و بكار گیرم. و همچنین یك ابجكت جدید ایجاد كنم. تمامی اینها در زبان اسمبلی 68000 می‌باشد.
برای مثال تعریفهای دایره و Shape كه ما در پاسكال مشاهده می‌كنیم به صورت زیر است:
(زمانی كه یك خط را ادامه می‌دهد، كاراكتر (\) برای اسمبلگر نیاز است.)

ابجكت Def macro در حقیقت Class info proc ایجاد می‌كند و سلكتورپراك نیزهمانطور كه در قبل گفتیم. همانطور كه در ذیل مشاهده می‌كنید متد A تعریف می‌شود:

Proc meth از ماكرو (و Func Meth از ماكرو) ماكروی دیگری را می‌طلبند. ابجكت With این اجازه و این امكان را به رفرنس‌های داخلی‌تر یا اصلی‌تر می‌دهد كه به طور صحیح و مناسب فعالیت بكنند مانند كرانهای (AO).
Move self یك ماكروی ساده می‌باشد كه SELF off را از محل ذخیره می‌گیرد. این فرض را بر این می‌گذارد كه شما متد را با یك لینك A6 شروع كرده‌اید. روتین فوق SELF را در A0 لود می‌كند و همچنین اختلافهای آن. و باندهای فیلد را به قسمت ذخیره می‌فرستد بنابراین Eease Rect می‌تواند فراخوانی شود. بعد از جداسازی قسمت ذخیره و انباشتن توسط انباشتن آدرس برگشتی در بالای پارامتر سینگل (كك) و SELF و بازگشتهای متد و … تصحیح می‌شود.
متد كالهای ایجاد شده از Methcall macro استفاده می‌كنند:

برای كشیدن (Draw)Methcall یك JSR برای سلكتورپراك مناسب و صحیح ایجاد می‌كند. اگر فراخوانی از داخل یك Shape یا یك Subclass از Shape ایجاد شده باشد پارامتر Shape می‌تواند حذف شود. ماكروهای مهم دیگرinherited و New object باشند:
inhorited همانند چیزی كه در Object pascal است رفتار می‌كند New object نیازمند یك مرجعی برای حافظه و یك اسم Type است. موضوع New object در حافظه ذخیره شده است كه محل آن توسط پارامتر مشخص می‌گردد.

توضیح كامل در ارتباط با ماكروها در نشریه مانوال MPW Assemblerو هم در رفرنس راهنمای Mac App وجود دارد. تا زمانی كه این ماكروها ایجاد می‌شوند زبان می‌تواند بین كدهای مشابه كه در Object Pascal و فایلهای Mac App Object ایجاد می‌شوند ارتباط برقرار كند. در حقیقت متدهای خاص در Object Pascal می‌توانند در خارج از محیط شناسایی شوند و در زبان اسمبلی كه از ماكروها استفاده می‌كنند به صورت كد كدینگ شوند.
«The Optimzer and the New Run Time Environmenth»
در اجرا، Applicationهایی كه در Mac APP نوشته شده‌اند به خوبی نقش خود را ایفا می‌كنند و به طور كلی از كیفیت خوبی برخوردارند. با وجود اینكه حقیقت این است كه متد گال قبل از اینكه اجرا شود باید همراه مكانیسم اتصال برود. به هر حال ما متوجه شدیم كه بعضی بهینه‌سازی‌های معنی‌دار و مهم در كل سلسله Object type كه تا به حال شناخته شده یكبار ممكن گشته است.

ما یك برنامه بهینه‌ساز را توسعه و بسط دادیم كه فایلهای ابجكت را درست قبل از اینكه به متصل شوند پردازش كند. این یك نماینده داخلی از كل سلسله Object thpe می‌سازد و اقدام به آنالیز آن برای بهینه‌سازی‌های بالقوه می‌كند.

برای دریافت اینجا کلیک کنید

سوالات و نظرات شما

برچسب ها

سایت پروژه word, دانلود پروژه word, سایت پروژه, پروژه دات کام,
Copyright © 2014 icbc.ir