برنامه نویسی پیشرفته در روبی
در این فصل، دیگر وارد بحث های حرفه ای و پیشرفته و البته قشنگ روبی می شویم. بحث هایی که میتوانند شما را وادار به مطالعه و همچنین کد زدن بیشتر کنند. در این فصل، سعی ما بر این است که بر مفاهیم تئوری تمرکز کنیم و سپس، به سراغ کد زدن در فصل بعدی برویم.
برنامه نویسی شی گرا
اگر بخواهیم به ساده ترین شکل ممکن برنامه نویسی شی گرا را توضیح دهیم، باید بگوییم که برنامه نویسی با گرفتن ایده از دنیای اطراف، و شبیه سازی و مدل سازی از آنها است. در واقع، وقتی کد شی گرا مینویسیم، یک مفهوم کلی را در نظر میگیریم، سپس اشیا را از آن خارج میکنیم. برای مثال، مفهوم عمومی اتومبیل را در نظر بگیرید، و سپس اشیائی که از این مفهوم خارج می شوند را متصور شوید. برای مثال، یک اتومبیل سواری و یک کامیون، هر دو اتومبیل هستند و از تعریف کلی اتومبیل استخراج شده اند، هرچند متفاوتند.
مفاهیم شی گرایی
به طور کلی، در برنامه نویسی شی گرا، ما با این مفاهیم مواجهیم :
- انتزاع
- وراثت
- چند ریختی
- کپسوله سازی
هر کدام از این مفاهیم، در قسمتی از برنامه، به کار می آیند در ادامه با آن آشنا خواهیم شد.
انتزاع
همان مثال اتومبیل را در نظر بگیرید. مفهوم «اتومبیل» به خودی خود یک مفهوم انتزاعی است. و اتومبیل هایی که از آن ساخته می شوند، اشیا هستند. در برنامه نویسی، به مفهوم انتزاعی ساخته شده، «کلاس» گفته می شود.
وراثت
کلاس یا همان مفهوم انتزاعی ساخته شده «اتومبیل» را در نظر بگیرید. اکنون وقت آن است که ما «اتومبیل شخصی» و «کامیون» بسازیم. هم اتومبیل های شخصی و هم کامیون ها، ویژگی های کلاس والد، یعنی اتومبیل را دارند. اگرچه، فرق های اساسی با یکدیگر دارند، اما در نهایت، هر دو اتومبیل هستند. در واقع، یک فرزند هیچوقت دقیقا والد خود نیست، اما ویژگی هایی دارد که میتوان تشخیص داد که کدام کلاس و کدام شی، فرزند کدام کلاس است.
چند ریختی
چند ریختی بدین معناست که یکی از ویژگی هایی که در مفهوم انتزاعی داریم، به شکل های متفاوتی کار کند، در عین این که عمل یکسان انجام میدهد. مثلا در کلاس اتومبیل، ما یک فرمان داریم که وظیفه یکسانی دارد، اما نحوه کارکردش میتواند مکانیکی، الکتریکی، هیدرولیکی و ... باشد. همانگونه که ترمز یا لنت ترمز میتواند متفاوت باشد. همینطور موتور اتومبیل، وظیفه اش تبدیل انرژی شیمیایی به مکانیکی است، اما این عملیات به شکل های مختلفی انجام می شود. مثلا اتومبیل شخصی موتور بنزینی دارد که میتواند کاربراتوری یا انژکتوری باشد، و کامیون نیز از موتور دیزلی استفاده می کند. در واقع، اگر یک ویژگی مشترک داشته باشیم، که به طور متفاوت کار کند ولی نتیجه کارکردش یکسان باشد، از مفهوم چندریختی استفاده کرده ایم.
کپسوله سازی
کپسوله سازی، بدین معناست که عملکرد بخش های خاصی را از دید کاربر، مخفی کنیم. برای مثال اتومبیل، کارکرد موتور را در نظر بگیرید. بدون این که کاربر از عملکرد موتور آگاه باشد، موتور کار میکند. کاربر اتومبیل تنها اتومبیل را روشن میکند، توسط پدالها، فرمان، دسته دنده و سایر امکاناتی که می تواند از آن استفاده کند، اتومبیل را کنترل میکند. اما کاربر، از نحوه تزریق سوخت داخل سیلندر اطلاعی ندارد، بلکه سازنده اتومبیل این قسمت را هندل کرده است. کاربر از نحوه استفاده از سیالاتی که برای کنترل ترمز و فرمان استفاده می شود خبر ندارد. حتی موقع خرابی یا به وجود آمدن اشکال در کارکرد بخشی از اتومبیل، باید اتومبیل را به دست تعمیر کار همان اتومبیل بخصوص سپرد. در واقع هر گاه بخواهیم از پیچیدگی کار نرم افزار خود بکاهیم، بخش هایی از نرم افزار را به اصطلاح کپسوله میکنیم. با استفاده از این کار، کاربر پیچیدگی قسمت های اعظمی از برنامه ما را نمی بیند، و تنها بخشی که به خودش مربوط است را تحت کنترل می گیرد.
جمع بندی
در این فصل، با مفاهیم پایه ای شی گرایی آشنا شدیم. در فصل های آینده، کد های شی گرا خواهیم نوشت و سپس وارد مسائل کاربردی زبان روبی می شویم. تا اینجا، شما کانسپت های خوبی را در ذهن خود جای داده اید، و این بدین معنیست که از این پس میتوانید برنامه های واقعا کاربردی بنویسید و منتشر کنید.