آموزش قدم به قدم جاوا – قسمت هشتم

در قسمت هشتم آموزش جاوا که شروع مبحث مهم برنامه‌نویسی شی‌گراست با مفاهیم بنیادی و تئوری این سبک برنامه نویسی آشنا خواهیم شد.

برنامه‌نویسی شی‌گرا (Object Oriented Programming)

برنامه‌نویسی شی‌گرا در حال حاضر پرطرفدارترین روش برنامه‌نویسی است. زبان جاوا هم یکی از زبان‌هایی است که ذاتا شی‌گراست یعنی از اساس برای برنامه‌نویسی به سبک شی‌گرا ایجاد شده است. برنامه‌هایی که تا حالا نوشتیم همگی در یک فایل و یک مکان مشخص به نام متد main نوشته می‌شدند. این کار شاید برای برنامه‌های ده یا بیست خطی بدون مشکل باشد اگر بخواهیم برنامه‌های بزرگ را به این روش بنویسیم علاوه بر این‌که کدهای برنامه بسیار ناخوانا و درک آن بسیار مشکل خواهد شد، عیب‌یابی و رفع اشکال برنامه هم کاری بسیار سخت می‌شود. برای مثال تصور کنید در یک برنامه هزار خطی فقط یکی از خطوط برنامه دارای اشکال باشد و کل برنامه را مختل کند. آن‌گاه باید از ابتدا شروع کنید و خط به خط پیش بروید تا شاید بتوانید مشکل را پیدا کنید. در برنامه‌نویسی شی‌گرا برنامه به قسمت‌های کوچک‌تری به نام کلاس تقسیم می‌شود. هر کدام از این کلاس‌ها وظیفه به‌خصوصی دارد و هر کلاس با کلاس‌های دیگر تعامل دارد. این مجموعه کلاس‌ها برای هدفی واحد کار می‌کنند و در نتیجه یک نرم افزار کامل را تشکیل می‌دهند. همانطور که متوجه شدید نتیجه تقسیم‌بندی برنامه به اجزای کوچک‌تر (کلاس‌ها) ایجاد، نگهداری و رفع اشکال آسان برنامه خواهد بود.

اشیا (Objects)

حالا که با مفهوم کلاس آشنا شدید باید با مفهوم «شی» نیز آشنا شوید. یک کلاس به‌تنهایی کاربردی ندارد و برای این‌که بتوان از یک کلاس استفاده کرد باید یک شی (نمونه) از آن ایجاد کرد. کلاس را می‌توان به یک نقشه ساختمان تشبیه کرد. شما نمی‌توانید در نقشه ساختمان زندگی کنید بلکه این نقشه باید در قالب یک ساختمان پیاده‌سازی شود تا مفید و قابل استفاده باشد. در واقع کلاس حکم نقشه ایجاد شی را دارد که از این نقشه می‌توان به تعداد دلخواه شی ساخت و از آن‌ها استفاده کرد. به تصویر زیر دقت کنید

joop1

در این تصویر می‌توان نقشه ساختمان را کلاس و ساختمان‌های ساخته شده از این نقشه را اشیا ساخته شده از آن کلاس در نظر گرفت. اگر به اشیا اطراف خود در دنیای واقعی دقت کنیم می‌بینیم که: هر شی یک سری خصوصیت (Property) دارد، مثلا یک اتومبیل خصوصیاتی مثل سال تولید، رنگ، مقدار مصرف بنزین، قدرت موتور و… دارد. همچنین هر شی یک سری رفتار (Behavior) از خود بروز می‌دهد، مثلا یک اتومبیل رفتارهایی مانند ترمز‌گرفتن، افزایش سرعت، بوق‌زدن و… را می‌تواند از خود بروز دهد. اشیایی که ما در برنامه‌نویسی ایجاد می‌کنیم هم از مجموعه‌ای از خصوصیات و رفتارها تشکیل می‌شوند. در اصل این خصوصیات و رفتارها در کلاس مربوط به شی تعریف می‌شوند و در نمونه‌های (اشیا) ایجاد شده از کلاس قابل استفاده هستند.

سه مفهوم اساسی در برنامه‌نویسی شی‌گرا

در ادامه با سه مفهوم اساسی در برنامه‌نویسی شی‌گرا به نام‌های «کپسوله‌سازی»، «وراثت» و «چندریختی» آشنا خواهیم شد. این مفاهیم برخلاف اسم‌شان ساده هستند. در قسمت‌های آینده این مفاهیم تئوری را به صورت عملی پیاده‌سازی خواهیم کرد.

کپسوله‌سازی (Encapsulation)

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

وراثت (Inheritance)

وراثت فرآیندی است که در آن یک کلاس می‌تواند خصوصیات و رفتارهای یک کلاس دیگر را به ارث ببرد. فرض کنید در یک برنامه کلاسی به نام “اتومبیل” داریم و خصوصیات آن وزن، رنگ و مدل و رفتارهای آن گاز دادن، ترمز گرفتن و بوق زدن است. حال اگر نیاز به ایجاد کلاسی برای “کامیون” داشته باشیم می‌توانیم به جای این‌که خصوصیات مشترک تمام اتومبیل‌ها را دوباره در کلاس کامیون تعریف کنیم، آن ها را از کلاس “اتومبیل” به ارث ببریم. اگر کلاسی از کلاس دیگر ارث بری داشته باشد آنگاه به کلاس پدر Superclass و به کلاس فرزند (وارث) Subclass گفته می‌شود.

چند ریختی (Polymorphism)

بر خلاف کپسوله‌سازی و وراثت برای چند ریختی تعریف دقیقی نمی‌توان ارائه کرد و زمانی می‌توان این مفهوم را کاملا فهمید که مصادیق آن را در کد ببینیم. فعلا ساده‌ترین تعریفی که می‌توان از چند ریختی ارائه داد این است که چند ریختی قابلیتی است که توسط آن یک شی می‌تواند در شرایط مختلف رفتارهای مختلفی از خود بروز دهد. با این مفهوم در آینده کاملا آشنا خواهید شد.

 

مصطفی نصیری

دانشجوی نرم افزار هستم و علاقه شدیدی به برنامه نویسی مخصوصا با زبان جاوا دارم! در حال حاضر تمرکزم روی اندرویده. دوست دارم چیزایی که یاد میگیرم رو با بقیه به اشتراک بگذارم :)

همچنین ممکن است دوست داشته باشید ...

۸ واکنش

  1. Jam Terrace گفت:

    من با علاقه این آموزش برنامه نویسی رو دنبال مینم و از اینکه خیلی ساده و خوب مطالب رو آموزش میدید متشکرم.

  2. امین گفت:

    خوب توضیح دادید تشکر
    اگر میشه یک گروه بزنید که دوستان باشن وبهتر باهم ارتباط داشته باشیم

  3. Saaman گفت:

    مرسی ادمین جان امورش هاتون رو همیشه دنبال میکنم
    تنها یک سوال داشتم در این سایت http://appinapps.com برنامه نویسی جاوا به صورت طبقه بندی تدریس میشه
    ایا سایت شما هم اینگونه است

    • مصطفی نصیری گفت:

      لطف دارید البته من ادمین نیستم 🙂
      منظورتون از طبقه بندی رو متوجه نشدم. اگه منظورتون مقدماتی و پیشرفته است خیر همچین طبقه بندی ای نداریم و قرار بر اینه که کل جاوا رو از اول تا آخر آموزش بدیم

  4. Saaman گفت:

    متشکرم از شما،واقعا لطف میکنید

  5. mohammad گفت:

    سلام
    آموزش ها بسیار روان و خوب است
    لطفا در پایان هر قسمت لینک قسمت بعدی را نیز قرار دهید

  1. ۱۲-بهمن , ۱۳۹۴

    […] قسمت نهم از آموزش جاوا و پس از جلسه هشتم در مورد مبانی برنامه‌نویسی شی‌گرا، مباحث مربوطه را پی […]

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *