در قسمت هشتم آموزش جاوا که شروع مبحث مهم برنامهنویسی شیگراست با مفاهیم بنیادی و تئوری این سبک برنامه نویسی آشنا خواهیم شد.
برنامهنویسی شیگرا (Object Oriented Programming)
برنامهنویسی شیگرا در حال حاضر پرطرفدارترین روش برنامهنویسی است. زبان جاوا هم یکی از زبانهایی است که ذاتا شیگراست یعنی از اساس برای برنامهنویسی به سبک شیگرا ایجاد شده است. برنامههایی که تا حالا نوشتیم همگی در یک فایل و یک مکان مشخص به نام متد main نوشته میشدند. این کار شاید برای برنامههای ده یا بیست خطی بدون مشکل باشد اگر بخواهیم برنامههای بزرگ را به این روش بنویسیم علاوه بر اینکه کدهای برنامه بسیار ناخوانا و درک آن بسیار مشکل خواهد شد، عیبیابی و رفع اشکال برنامه هم کاری بسیار سخت میشود. برای مثال تصور کنید در یک برنامه هزار خطی فقط یکی از خطوط برنامه دارای اشکال باشد و کل برنامه را مختل کند. آنگاه باید از ابتدا شروع کنید و خط به خط پیش بروید تا شاید بتوانید مشکل را پیدا کنید. در برنامهنویسی شیگرا برنامه به قسمتهای کوچکتری به نام کلاس تقسیم میشود. هر کدام از این کلاسها وظیفه بهخصوصی دارد و هر کلاس با کلاسهای دیگر تعامل دارد. این مجموعه کلاسها برای هدفی واحد کار میکنند و در نتیجه یک نرم افزار کامل را تشکیل میدهند. همانطور که متوجه شدید نتیجه تقسیمبندی برنامه به اجزای کوچکتر (کلاسها) ایجاد، نگهداری و رفع اشکال آسان برنامه خواهد بود.
اشیا (Objects)
حالا که با مفهوم کلاس آشنا شدید باید با مفهوم «شی» نیز آشنا شوید. یک کلاس بهتنهایی کاربردی ندارد و برای اینکه بتوان از یک کلاس استفاده کرد باید یک شی (نمونه) از آن ایجاد کرد. کلاس را میتوان به یک نقشه ساختمان تشبیه کرد. شما نمیتوانید در نقشه ساختمان زندگی کنید بلکه این نقشه باید در قالب یک ساختمان پیادهسازی شود تا مفید و قابل استفاده باشد. در واقع کلاس حکم نقشه ایجاد شی را دارد که از این نقشه میتوان به تعداد دلخواه شی ساخت و از آنها استفاده کرد. به تصویر زیر دقت کنید
در این تصویر میتوان نقشه ساختمان را کلاس و ساختمانهای ساخته شده از این نقشه را اشیا ساخته شده از آن کلاس در نظر گرفت. اگر به اشیا اطراف خود در دنیای واقعی دقت کنیم میبینیم که: هر شی یک سری خصوصیت (Property) دارد، مثلا یک اتومبیل خصوصیاتی مثل سال تولید، رنگ، مقدار مصرف بنزین، قدرت موتور و… دارد. همچنین هر شی یک سری رفتار (Behavior) از خود بروز میدهد، مثلا یک اتومبیل رفتارهایی مانند ترمزگرفتن، افزایش سرعت، بوقزدن و… را میتواند از خود بروز دهد. اشیایی که ما در برنامهنویسی ایجاد میکنیم هم از مجموعهای از خصوصیات و رفتارها تشکیل میشوند. در اصل این خصوصیات و رفتارها در کلاس مربوط به شی تعریف میشوند و در نمونههای (اشیا) ایجاد شده از کلاس قابل استفاده هستند.
سه مفهوم اساسی در برنامهنویسی شیگرا
در ادامه با سه مفهوم اساسی در برنامهنویسی شیگرا به نامهای «کپسولهسازی»، «وراثت» و «چندریختی» آشنا خواهیم شد. این مفاهیم برخلاف اسمشان ساده هستند. در قسمتهای آینده این مفاهیم تئوری را به صورت عملی پیادهسازی خواهیم کرد.
کپسولهسازی (Encapsulation)
این اصل میگوید اجزای تشکیلدهنده یک کلاس باید تا حد امکان از دید کلاسهای دیگر مخفی باشد. البته اگر تمام اجزای یک کلاس از دید کلاسهای دیگر مخفی باشد آنگاه کلاس بیاستفاده خواهد بود، چون کلاسها باید توانایی تعامل با یکدیگر را داشته باشند. پس میتوان نتیجه گرفت که فقط اجزایی از کلاس که برای کار با آن کلاس به کار میروند باید در معرض دید کلاسهای دیگر باشند. یک مثال برای این مفهوم در دنیای واقعی تلویزیون است: شما برای استفاده از تلویزیون خود با دکمههای آن کار میکنید و اجزای داخلی تلویزیون از دید شما پنهان است. شما نیازی به دانستن اینکه نحوه کار تلویزیون چگونه است یا مثلا اینکه تلویزیون از چند قطعه سختافزاری تشکیل شده ندارید. در واقع دکمههای تلویزیون رابط آن با دنیای بیرون هستند و برای استفاده از تلویزیون فقط به چند دکمه و یا یک کنترل نیاز دارید پس فقط همان اجزایی در معرض استفاده قرار گرفتهاند که برای کار با تلویزیون لازم هستند.
وراثت (Inheritance)
وراثت فرآیندی است که در آن یک کلاس میتواند خصوصیات و رفتارهای یک کلاس دیگر را به ارث ببرد. فرض کنید در یک برنامه کلاسی به نام “اتومبیل” داریم و خصوصیات آن وزن، رنگ و مدل و رفتارهای آن گاز دادن، ترمز گرفتن و بوق زدن است. حال اگر نیاز به ایجاد کلاسی برای “کامیون” داشته باشیم میتوانیم به جای اینکه خصوصیات مشترک تمام اتومبیلها را دوباره در کلاس کامیون تعریف کنیم، آن ها را از کلاس “اتومبیل” به ارث ببریم. اگر کلاسی از کلاس دیگر ارث بری داشته باشد آنگاه به کلاس پدر Superclass و به کلاس فرزند (وارث) Subclass گفته میشود.
چند ریختی (Polymorphism)
بر خلاف کپسولهسازی و وراثت برای چند ریختی تعریف دقیقی نمیتوان ارائه کرد و زمانی میتوان این مفهوم را کاملا فهمید که مصادیق آن را در کد ببینیم. فعلا سادهترین تعریفی که میتوان از چند ریختی ارائه داد این است که چند ریختی قابلیتی است که توسط آن یک شی میتواند در شرایط مختلف رفتارهای مختلفی از خود بروز دهد. با این مفهوم در آینده کاملا آشنا خواهید شد.
من با علاقه این آموزش برنامه نویسی رو دنبال مینم و از اینکه خیلی ساده و خوب مطالب رو آموزش میدید متشکرم.
لطف دارید
خوشحالم که مورد توجهتون قرار گرفته
خوب توضیح دادید تشکر
اگر میشه یک گروه بزنید که دوستان باشن وبهتر باهم ارتباط داشته باشیم
[…] قسمت نهم از آموزش جاوا و پس از جلسه هشتم در مورد مبانی برنامهنویسی شیگرا، مباحث مربوطه را پی […]
مرسی ادمین جان امورش هاتون رو همیشه دنبال میکنم
تنها یک سوال داشتم در این سایت http://appinapps.com برنامه نویسی جاوا به صورت طبقه بندی تدریس میشه
ایا سایت شما هم اینگونه است
لطف دارید البته من ادمین نیستم 🙂
منظورتون از طبقه بندی رو متوجه نشدم. اگه منظورتون مقدماتی و پیشرفته است خیر همچین طبقه بندی ای نداریم و قرار بر اینه که کل جاوا رو از اول تا آخر آموزش بدیم
متشکرم از شما،واقعا لطف میکنید
سلام
آموزش ها بسیار روان و خوب است
لطفا در پایان هر قسمت لینک قسمت بعدی را نیز قرار دهید