چنانچه درباره مکآپ مطالعهای داشته باشید ممکنست تعجب کرده باشید از اینکه باید برنامهریز 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 مثلاً مثلث، اشاره کند.
که روشهای خاص دورانی نیز قابل شناخت نمیباشند.) وقتی سیستم Shape Draw را اجرا میکنید، نام این روش چیست.
که روشهای خاص دورانی نیز قابل شناخت نمیباشند.) در این مورد باید بخاطر داشت که حتی اگر متغیره موردی از نوع خاص هم باشد، در گذر زمان، به بیان نوع اصلی یا به نسل آن برمیگردد.
معنی این حرف اینست که میتوان فهرستی از «اشکال» را داشت که هر یک طرحی از کل باشد که انواع اصلی مخلوطی از مجموعه دوایر، مستطیلها، مثلثها و انواع آن باشند.
در نتیجه، تشخیص اینکه کلام را باید روش اصلی ناحیه باید از طولانی دست باشد.
این کار با استفاده از طرح «روش رایج مخابره پیام» انجام میشود که در آن جدولهائی از موقعیت روشها برای هدایت به روش صحیح به کار گرفته میشوند.
این روش را بعداً مفصلتر توضیح خواهیم داد.
ساختار نهائی اضافه بر پاسکال، لغات کلیدی است.
چنانچه روشی را کنار گذاشتهاید تا کد نهائی خاص برای نوع مورد نظرتان اضافه کنید، اما هنوز مایلید از روش قبلی استفاده نمائید میباید از لغت بجا مانده بدنبال تمام روش استفاده کنید.
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