دانلود مقاله مقدمه‌ ای بر Object Pascal

Word 53 KB 34858 28
مشخص نشده مشخص نشده کامپیوتر - IT
قیمت قدیم:۱۶,۰۰۰ تومان
قیمت: ۱۲,۸۰۰ تومان
دانلود فایل
  • بخشی از محتوا
  • وضعیت فهرست و منابع
  • چنانچه درباره مک‌آپ مطالعه‌ای داشته باشید ممکنست تعجب کرده باشید از اینکه باید برنامه‌ریز 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 مرتبط شوند.

    می‎توانند توسط فایلهای 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) نکند.

    «Objects on the heap and the new routine»توده (Object) و روش جدید ابجکتهایی که ایجاد شده‌اند از رویه جدید استفاده می‌کنند.

    با وجود اینکه پارامتر یک متغیر، 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 می‌سازد و اقدام به آنالیز آن برای بهینه‌سازی‌های بالقوه می‌کند.

    «Treatment of monomor pinc Mehods» بیشترین ذخیره کردن‌های مهم و معنی‌دار از اینجا برمی‌خیزد که قادر به شناسایی آن متدهایی که تنها در یک Object type به کار گرفته شده‌اند، باشیم.

    به عبارت دیگر متدهایی که هرگز Overridden (باطل سازی) نشده‌اند.

    تا زمانی که این متدهای «Mono Morphic» تنها، یک وظیفه داشته باشند هیچ نیازی برای فراخوانی آنها برای همراهی کردن با متد اتصال نمی‌باشد.

    بهینه‌ساز برای اینکه مستقیماً به متد برسد تماس‌ها را به متد دوباره مسیرسازی می‌کند.

    تنها همین مورد باعث افزایش سرعت به طور کلی نمی‌شود بلکه فضایی که نیاز می‌باشد نیز کاهش می‌یابد.

    دیگر نیازی به سلکتورپراک و نه ورودی جامپ تیبل که به آن اشاره شد نیست.

    همچنین ورودی در متد تیبل برای آن متد می‌تواند حذف شود.

    ما دریافتیم که تقریباً %75 متدی که در Mae APP تعریف شده همگی Mono morphic هستند.

    این شامل تعداد زیادی متدهای داخلی از کلاسهای Mac APP است.

    «Trans portation of the Method tables for poly morphic Methods» در حال حاضر برای متدهای باقی‌مانده «Poly morphic» آن متدهایی که توسط بیشتر از یک کلاس بکار بسته شده‌اند.

    متد تیبلهای کاهش یافته پس و پیش شده‌اند.

    این است که قبل از هر متد تیبل یک لیست از کلاسهایی است که برای یک متد خاص به کار بسته شده است.

    این در جدولهای بیشتری با طولهای کمتر نتیجه می‌شود.

    در گذشته روش جدولها در Class info procها ذخیره می‌شدند.

    الآن تیبلها در سلکتورپراکها ذخیره می‌گردند.

    در حقیقت آنها فوراً بعد از اینستراکشن TSR که به روتین اتصال متد می‌رود ذخیره می‌شوند.

    بنابراین آدرس متد تیبل در بالای محل انباشتن در زمانی که روتین اتصال وارد می‌گردد است.

    فرم و شکل این متد تیبل جدید به صورت یک لیست از جفتهای 2 بایتی است.

    المنت اول در جفت یک شماره کلاس است که توسط بهینه‌ساز ایجاد شده است.

    المنت دوم یک رفرنس برای متدهای حقیقی بکار بسته شده است که لینکر آنها را با یک A5 متصل کرده است.

    (این المنت نسبت به فرمت متد تیبل قبل تغییری نداشته است.) شماره گروه از یک گروه خاص همواره بزرگتر از Super calss آن است.

    با شماره‌گذاری کلاسها به این ترتیب و به این شیوه و نگهداری در یک جدول جداگانه سوپرکلاسها خواهیم داشت که روتین متد اتصال می‌تواند به درستی و به طور مناسبی متد تیبل را جستجو کند.

    The New Object Header در محیط بهینه‌سازی شده در هنگام اجرا ابجکتها نسبت به قبل یک 2 بایت شناساگر کلاس متفاوت دیگر دارند.

    مبدأ A5 به ورودی جامپ تیبل از Class info ptoc جایگزین شده است با شماره کلاس که بهینه ساز آن را ایجاد کرده است.

    (Classin foproc) دیگر شامل متد تیبلها یا یک رفرنس به سوپرکلاس نیست.

    در حقیقت تنها یک 2 بایت ورودی دارد که با نام شماره کلاس است.

    ترتیب فراخوانی به %-OB NEW همانند چیزی است که قبلاً به آن اشاره کردیم.

    اما در حقیقت بهینه‌ساز دوباره بازبینی می‌کند.

    به صورت: %-Setclass index فراخوانی در %-OB NEW به جای فراخوانی %opt setct.

    %Optct شماره کلاس را از Class info proc گرفته و آن را در Objeet Header انباشته می‌کند.

    The New method dispatch rowtinen روش جار مخابره پیام جدول روش جدید نیاز به اصول کلی متد اتصال جدیدی دارد.

    در حقیقت این همان اصول کلی است که توسط روتین متد اتصال در 128k ROM استفاده می‌گردد.

    روتین همچنین قابل استفاده و دسترسی در کتابخانه‌ها برای ماشینهای 64 k ROM است.

    یک الگوریتم پیچیده‌ای استفاده شده تا فقط متدهایی که به سلسله ابجکت پردازش کننده متد متعلق است را چک کند.

    برای مثال مثالی که در جدولهای 4 و 5 آمده است را دنبال کنید.

  • فهرست:

    ندارد.
     

    منبع:

    ندارد.

کلمات کلیدی: End - Macintosh - object - Object Pascal - انشعابات - پاسکال

هر چه قابلیت ابزار را بشناسیم ابزار شناسی بهتر می شود . الگو ریتم های بهینه تر می شود . قدرت انتخاب زبانها بالا تر می رود . یادگیری زبانهای جدید آسان تر می شود . برای طراحی زبان جدید می توان از قابلیتهای زبانهایی که شناختیم استفاده کنیم و نقاط ضعف را رفع کنیم . (مانند java ) Attributes of a good language : ساختار زبان ساده و روشن و واضح (کد نویسی راحت باشد) سنخیت با آن طبیعت ...

در اينجا لازم به ذکر است برخي ويژگي هاي نرم افزار را بررسي کنيم . مدتها پيش برنامه نويسان از زبانهاي ساده مثل بيسيک يا پيچيده چون اسمبل استفاده مي کردند . اما turbo pascal با داشتن کامپايلر قوي توانست جاي خود را در برنامه ها تثبيت کند و به خوبي جلوه

تاريخچه زبان دلفي دلفي در واقع يک کامپايلر پاسکال است. دلفي 6 نسل جديد کامپايلر هاي پاسکال است که شرکت Borland از زمان ايجاد اولين نسخه پاسکال توسط Andres Hejlsberg در 15 سال پيش به بازار عرضه کرد. برنامه نويسي به زبان پاسکال در ساليان سال از استو

=1 تاريخچه زبان دلفي دلفي در واقع يک کامپايلر پاسکال است. دلفي 6 نسل جديد کامپايلر هاي پاسکال است که شرکت Borland از زمان ايجاد اولين نسخه پاسکال توسط Andres Hejlsberg در 15 سال پيش به بازار عرضه کرد. برنامه نويسي به زبان پاسکال در ساليان سال از ا

System - Self : از آنجايي که Self به عنوان يک تک فرايند UNIX و يا يک تک برنامه ي Macintosh اجرا مي شود بنابراين به دو بخش تقسيم مي شود : 1- (VM) virtual machine Self 2- Self world اجراي ( VM ) برنامه هاي Self توسط اشيايي در Self world تعيين مي شود

تاريخچه مختصري از زبان دلفي از زمان پيدايش تا دلفي 6 به تفکيک نسخه‌هاي مختلف آن دلفي در واقع يک کامپايلر پاسکال است. دلفي 6 نسل جديد کامپايلر هاي پاسکال است که شرکت Borlandاز زمان ايجاد اولين نسخه پاسکال توسط Andres Hejlsberg در 15 سال پيش به بازار

از زماني که کامپيوترها وارد زندگي انسانها شده اند به طور پيوسته پيشرفته تر و انعطاف پذير مي شوند. آنها از محاسبات پيچيده گرفته تا کنترل دستگاه هاي پيچيده را انجام مي دهند. يکي از ملزومات اين اعمال قابليت کامپيوتر در مبادله اطلاعات با دنياي خارج از خ

تاريخچه دلفي : شرکت Borland پس از معرّفي موفّق نسخه Borland Pascal و تکميل آن با عرضه نسخه هفتم اين زبان برنامه‌نويسي، در حدود سال 1374 ش. شروع به کار بر روي يک ابزار طرّاحي سريع برنامه‌هاي کاربردي به نام دلفي نمود. بعد از آن‌که تعيين شد معماري

دِلفی (Delphi) یا به تعبیری ویژوآل پاسکال – یک زبان برنامه‌ نویسی است و بستری برای توسعهٔ نرم‌افزار که شرکت بورلند آن را تولید کرده است. این زبان، در بدو انتشار خود در سال ۱۹۹۵، به عنوان یکی از نخستین ابزارهایی مطرح شد که از توسعهٔ نرم‌افزار بر مبنای متدولوژی RAD((Rapid Application Developmentپشتیبانی می‌کردند؛ یعنی تولید و توسعهٔ سریع برنامه‌های کاربردی این نرم افزار بر مبنای ...

فصل اول: مفاهيم پايه اي تاريخچه زبان پاسکال زبان سطح بالاي Algol يک زبان ساختار يافته جهت پياده کردن الگوريتم هاي رياضي مي باشد اما داراي کاستي هايي همچون نداشتن داده هاي کراکتري و پونيتري است. در تکامل اين زبان، زبان پاسکال توسط پروفسور نيکلاث وير

ثبت سفارش
تعداد
عنوان محصول