علاقمندان به زبان های برنامه نویسی روزتون بخیر. با آموزش زبان برنامه نویسی پاسکال (Pascal) از وب سایت آموزشی پی وی لرن همراهتون خواهیم بود. در بخش آخر کلاس ها در زبان پاسکال (Pascal) با رابط ها، کلاس های انتزاعی (Abstract) در پاسکال و کلمه Static همراه خواهیم بود.
رابط ها برای ارائه یک نام تابع مشترک برای پیاده سازها (implementers) تعریف شده اند. پیاده سازان مختلف می توانند آن رابط ها را مطابق با نیاز خود پیاده سازی کنند. می توان گفت ، رابط ها اسکلت هایی هستند که توسط توسعه دهندگان پیاده سازی شده اند. در زیر مثالی از رابط ها وجود دارد.
1 2 3 4 5 6 7 8 9 10 | type Mail = Interface Procedure SendMail; Procedure GetMail; end; Report = Class(TInterfacedObject, Mail) Procedure SendMail; Procedure GetMail; end; |
لطفاً توجه داشته باشید که وقتی یک کلاس رابط را پیاده سازی می کنید ، باید تمام متدهای رابط را پیاده سازی کند. اگر روش اینترفیس پیاده سازی نشده باشد ، کامپایلر خطا می دهد.
کلاس انتزاعی با استفاده از کلمه abstract در تعریف کلاس مشخص می شود ، مانند مثال زیر.
1 2 3 4 5 | <span class="pln">type </span><span class="typ">Shape</span> <span class="pun">=</span><span class="pln"> ABSTRACT CLASS </span><span class="pun">(</span><span class="typ">Root</span><span class="pun">)</span> <span class="typ">Procedure</span><span class="pln"> draw</span><span class="pun">;</span><span class="pln"> ABSTRACT</span><span class="pun">;</span> <span class="pun">...</span> <span class="kwd">end</span><span class="pun">;</span> |
هنگام ارث بردن از یک کلاس انتزاعی ، کلیه روش هایی که در اعلام کلاس والدین مشخص است باید توسط کودک تعریف شود. علاوه بر این ، این روش ها باید با همان دید تعریف شوند.
اعلام اعضای کلاس یا روش ها به صورت ایستا (Static) باعث می شود بدون نیاز به نمونه سازی کلاس ، آن ها را در دسترس قرار دهید. عضوی که به صورت ایستا اعلام شده باشد با یک شی کلاس نمونه سازی شده، قابل دسترسی نیست (هرچند که یک روش استاتیک می تواند). مثال زیر مفهوم را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | program StaticExample; {$mode objfpc} {$static on} type myclass=class num : integer;static; end; var n1, n2 : myclass; begin n1:= myclass.create; n2:= myclass.create; n1.num := 12; writeln(n2.num); n2.num := 31; writeln(n1.num); writeln(myclass.num); myclass.num := myclass.num + 20; writeln(n1.num); writeln(n2.num); end. |
هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.
1 2 3 4 5 | 12 31 31 51 51 |
برای استفاده از اعضای static باید از دستورالعمل {static on$} استفاده کنید.
در بخش آخر مبحث کلاس ها در زبان پاسکال (Pascal) با رابط ها، کلاس های انتزاعی (Abstract) در پاسکال و کلمه Static آشنا شدیم. موفق باشید.