ايران رساله
پروژه مقاله مقدمه‌ای بر Object Pascal با word

برای دریافت پروژه اینجا کلیک کنید

 پروژه مقاله مقدمه‌ای بر Object Pascal با word دارای 33 صفحه می باشد و دارای تنظیمات در 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 می‌سازد و اقدام به آنالیز آن برای بهینه‌سازی‌های بالقوه می‌کند.


برای دریافت پروژه اینجا کلیک کنید

شنبه بیست و سوم 5 1395
(0) نظر
برچسب ها :
X