در این فصل از آموزش جاوا، در مورد مفاهیم برنامهنویسی شی گرا در جاوا صحبت می کنیم. برنامه نویسی شی گرا پارادایم یا الگویی است که مفاهیمی همچون وراثت، اتصال داده و چندریختی در آن بحث میشود.
Simula اولین زبان برنامه نویسی شی گرا محسوب میشود. به الگوی برنامه نویسی که همه چیز یک شی به حساب می آید، زبان برنامه نویسی تماما شی گرا می گویند.
Smalltalk به عنوان اولین زبان برنامه نویسی تماما شیگرا شناخته می شود.
از زبان های محبوب شیگرا می توان به جاوا، سیشارپ، پیاچپی، پایتون و سی پلاس پلاس اشاره کرد.
هدف اصلی الگوی برنامه نویسی شی گرا این است که مفاهیمی همچون کلاس، وراثت، شی، انتزاع و چندریختی را همانند دنیای واقعی پیاده سازی کرد.
شی یا Object یک جسم در دنیای واقعی همانند خودکار، صندلی، میز، کامپیوتر و غیره می باشد. برنامه نویسی شیگرا الگویی برای طراحی برنامه با استفاده از کلاس و اشیا است. الگو مذکور توسعه و نگهداری نرمافزار را با ارائه مفاهیم زیر ساده سازی می کند.
شی
هر جسم یا نهادی که دارای رفتار و وضعیت باشد، شی گفته می شود. برای مثال صندلی، خودکار، میز، کیبرد و دوچرخه. شی میتواند فیزیکی یا منطقی باشد.
هر شی میتواند به عنوان نمونه یک کلاس تعریف شود. اشیا دارای آدرس می باشند و قسمتی از حافظه را به خود اختصاص میدهند. اشیا می توانند بدون آنکه جزئیات اطلاعات یا کد یکدیگر را بدانند با یکدیگر ارتباط برقرار کنند، تنها نکته مهم نوع پیام فرستاده شده و پاسخ داده شده است.
مثال: سگ یک شی به حساب می آید زیرا خصوصیاتی همچون رنگ، وزن، اسم و نژادش وضعیت او را نشان میدهند و اعمالی همچون تکان دادن دم، پارس کردن و خوردن از جمله رفتارهای او می باشند.
کلاس
مجموعهای از اشیا را کلاس می نامند. کلاس یک ماهیت منطقی است.
در واقع می توان کلاس را همچون الگویی دانست که می توان بیشمار شی از آن تولید کرد. کلاس فضایی اشغال نمی کند.
وراثت
وقتی یک شی تمام وضعیت و رفتار یک شی والد را دریافت می کند، از مفهوم وراثت استفاده شده است. وراثت باعث میشود که کد تکراری نوشته نشود و به چندریختی در زمان اجرا دست پیدا کرد.
چندریختی
اگر یک کار را بتوان به شکل های گوناگون انجام داد، به عنوان چندریختی شناخته می شود. به عنوان مثال برای کشیدن یک شی یا راضی کردن مشتریها چندین روش وجود دارد.
در جاوا از مفاهیمی همچون Overload و Override برای دستیابی به چندریختی استفاده می شود.
انتزاع
پنهان کردن جزئیات و نمایش عملکرد را انتزاع می گویند. به عنوان مثال وقتی از تلفن استفاده می کنیم، از نحوه عملکرد یا جزئیات داخلی خبر نداریم و تنها با عملکرد دستگاه آشنایی داریم.
در جاوا از کلاس و اینترفیس های انتزاعی برای دستیابی به انتزاع استفاده می کنند.
کپسوله سازی
اتصال یا بستهبندی کد و دیتا کنار هم به گونهای که یک واحد را تشکیل دهند را کپسوله سازی می گویند. مانند کپسول که داروهای مختلفی را داخل خود دارد.
کلاس جاوا مثالی از کپسوله سازیست. جاوا بین (Java bean) از آنجایی که تمام اعضای آن خصوصی می باشند، یک کلاس تماما کپسولهسازی شده است.
1- برنامهنویسی شیگرا توسعه و نگهداری کد را راحتتر میکند در حالی که با بزرگ شدن پروژه، کنترل کد در برنامه نویسی رویهای کار ساده ای نیست.
2- برنامهنویسی شی گرا امکانی برای مخفی سازی اطلاعات فراهم می کند در حالی که در برنامه نویسی رویهای، یک داده سراسری است از همه جا در دسترس است.
در ادامه نمایش داده در زبانهای برنامهنویسی شیگرا و رویهای را میبینید.
زبانهای مبتنی بر شی تمامی ویژگی های زبانهای شی گرا را دارا می باشد غیر از وراثت. جاوا اسکریپت و VBScript از جمله این زبانها می باشند.
مفاهیمی از شیگرایی که خواهیم آموخت:
از روش های نامگذاری برای نام گذاری کلاس ها، اشیا، متدها و ثابتها استفاده می شود.
همانطور که از اسم آنها یعنی قاعده پیداست، قانون نیستند و مجبور به پیروی از آنها نیستید اما تمامی کلاسها، متدها، پکیجها و اینترفیسهای جاوا بر مبنای همین قواعد داده می شوند.
با استفاده از این قواعد، کدهایی می نویسید که راحتتر بتوانید بخوانید و خوانده شوند. در نتیجه زمان کمتری صرف خواندن کد می شود.
نام | سنت |
کلاس | با حرف بزرگ آغاز می شود و اسم است مانند: String، Button، System |
اینترفیس | با حرف بزرگ آغاز می شود و باید صفت باشد مانند: Runnable، Remote و ActionListener |
متد | باید با حرف کوچک شروع شود و فعل باشد: actionPerformed,main,print,println |
متغیر | با حرف کوچک آغاز می شود: firstName، orderNumber |
پکیج | با حروف کوچک نوشته میشود: util، lang، java |
ثابت | با حروف بزرگ نوشته میشوند: RED، MAX_PRIORITY |
در جاوا از سینتکس نام گذاری CamelCase برای متغیرها، کلاسها و متدها استفاده می شود.
در صورتی که اسم شامل چندین کلمه باشد، کلمات دوم به بعد حتما با حرف بزرگ آغاز می شوند مانند: ActionPerformed، firstName و ActionListener
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.