آشنایی با مفهوم آبجکت یا شیء در برنامه نویسی شیء گرا


زبان‌هایی همچون اسمبلی، کوبال، فورتران و سایر زبان‌های برنامه نویسی نسبتاً قدیمی به هیچ وجه شیء گرا نبودند و اصطلاحاً تحت عنوان زبان‌های Procedural (پروسیژرال یا پروسه ای) شناخته می‌شوند به طوری که برنامه‌های نوشته شده با این دست زبان‌های پروسه ای، به صورت پروسه‌ای از دستورات پشت سر هم بوده که یکی پس از دیگری اجرا شده و در نهایت برنامه به هدف اصلی‌اش خواهد رسید.

این دست زبان‌های پروسیژرال برای برنامه‌های نسبتاً بزرگ و پیچیده اصلاً مناسب نیستند چرا که مدیریت این دست برنامه‌ها کار بسیار دشواری خواهد بود و هرچه این برنامه ها بزرگ تر شوند، مدیریت آن ها هم سخت خواهد شد.. در چنین شرایطی بود که زبان‌های برنامه نویسی شیء گرا در دهه ۱۹۸۰ شروع به پیدایش کرده و به مرور زمان جای زبان‌های برنامه نویسی پروسیژرال را گرفتند.

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

از یک دید کلی، برنامه نویسی شیء گرا یک پارادایم برنامه نویسی است و به هیچ وجه ربطی به یک زبان برنامه نویسی ندارد بلکه به مفاهیمی مرتبط است که توسط زبان‌های بسیاری من جمله سی پلاس پلاس، جاوا، پایتون، پی اچ پی و … ساپورت می شود. پیش از این که بپرسیم یک آبجکت یا «شیء» در دنیای برنامه نویسی به چه معنا است، ابتدا می بایست بپرسیم که یک شیء در دنیای واقعی به چه چیزی اطلاق می گردد؟

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

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

اکنون که با مفهوم آبجکت ها در دنیای واقعی آشنا شدیم، حال نوبت به بررسی قابلیت‌های آبجکت ها می رسد. هر آبجکت یا شیء در دنیای واقعی دارای یکسری Attribute یا «ویژگی» است. به طور مثال، شیئ هچون لپ تاپ می‌تواند مشکی، هشت هسته ای و با حافظه ی رم هشت گیگابایتی باشد.

اشیاء در دنیای واقعی معمولاً دارای بیش از یک Attribute هستند و این در حالی است که ویژگی‌های اشیاء هیچ ربطی به ویژگی‌های سایر اشیاء ندارد. به عنوان مثالی دیگر، می‌توان میوه ای همچون سیب را در نظر گرفت. یک سیب می‌تواند تازه، قرمز، آبدار، ترش و خوشمزه باشد اما این به هیچ وجه بدان معنا نیست که تمامی سیب های داخل یخچال می بایست از چنین Attribute هایی برخوردار باشند. ممکن است سیب دیگری که در یخچال وجود دارد شیرین، زرد و بدمزه باشد اما به هر حال هر دو سیب اشیائی از یک جنس هستند.

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

به طور مثال، هواپیمای Boeing 747 و هواپیمای F16 هر دو از Behavior یکسانی که همان پرواز کردن است برخوردارند اما این در حالی است که Attribute های این دو شیء با یکدیگر کاملاً متفاوت است. به عبارت دیگر، هواپیمای بوئینگ 747 برای مسافربری طراحی شده است اما هواپیمای اف 16 برای جنگ با دشمن طراحی گشته است.

در دنیای کامپیوتر و برنامه نویسی هم آبجکت ها تا حد بسیار زیادی شبیه به اشیاء در دنیای واقعی هستند. هر آبجکت در یک برنامه‌ای که با یک زبان برنامه نویسی شیء گرا نوشته شده باشد دارای خصوصیات مخصوص به خود است، هویتی مجزا از سایر اشیاء موجود در برنامه داشته و رفتار خاصی هم از آن انتظار می رود.

در دنیای واقعی ما به هر چیزی که بتوانیم آن را ببینیم و لمس کنیم لقب شیء می‌دهیم اما در دنیای برنامه نویسی، قضیه تاحدودی متفاوت است. در برنامه نویسی، تاریخ، زمان، یک حساب بانکی و چیزهایی از این دست آبجکت تلقی می شوند. به طور مثال، فرض کنیم که در یک نرم‌افزار بانکی، آبجکتی داریم تحت عنوان BankAccount به معنی «حساب بانکی» که این آبجکت دارای یکسری Attribute ها است که از آن جمله می‌توان به نوع حساب بانکی، شماره حساب و … اشاره کرد. در عین حال، دارای Behavior هایی نیز می باشد. به عبارت دیگر، در یک حساب بانکی می‌توان سپرده گذاشت، پول جا به جا کرد و بسیاری کارهای دیگر. در عین حال، این حساب بانکی از سایر حساب‌های بانکی مجزا است، به عبارت دیگر، این حساب بانکی دارای هویتی منحصر به فرد است.

توجه داشته باشیم که در دنیای برنامه نویسی آبجکت ها همواره نمی بایست قابل روٍئیت باشند. برای روشن‌تر شدن این مسأله مثالی دیگر می زنیم. فرض کنیم که در حال نوشتن یک نرم‌افزار ثبت رویدادها هستیم. یک رویداد چیزی است همچون جشن تولد، عروسی، بزرگداشت و … هیچ کدام از این رویدادها فیزیکی نیستند و به نوعی انتزاعی بوده اما در دنیای برنامه نویسی تحت عنوان آبجکت شناخته می شوند و همان گونه که ما با اشیاء ملموس در دنیای فیزیکی برخورد می کنیم، می توان با آن ها برخورد کرد.

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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
پویا نظری
پویا نظریتوسعه‌دهنده‌ موبایل اپ، دانشجوی نرم‌افزار
هفت هسته ای؟؟
ادمین سایت
ادمین سایت
با سلام خدمت شما کاربر گرامی،
خطا برطرف گردید.

با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به

کاربر میهمان
کاربر میهمان
آموزش خوبی بود و مفهوم رو به خوبی منتقل می کرد
سپاس
کاربر میهمان
کاربر میهمان
کاربر میهمان
کاربر میهمان
واقعا عالی بود
Morteza Narouie
Morteza Narouie
واقعا عجیبه که چرا این به ذهن سکان آکادمی نرسیده که یک دکمه شناور برای رفتن به درس بعدی ایجاد کنه !! الان اینکه ما هی بریم بالا یا پایین صفحه برای پیدا کردن لینک درس بعد خیلی عذاب آوره !!
کاربر میهمان
کاربر میهمان
سلام.پاراگراف 13،خط 9 نوشته شده مملوس.درستش ملموس هست.لطفا اصلاح کنید.
ادمین سایت
ادمین سایت
با تشکر از تذکر شما
اصلاح گردید

ارادتمند
تیم سکان آکادمی

در پاسخ به

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

در پاسخ به

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

در پاسخ به

بهزاد مرادی
بهزاد مرادی مدرس، کپی‌رایتر و دولوپر
سلام. چند تا مثال می زنم. عشق، آزادی، امنیت، پاداش، تنفر و ... اینها چیزهایی هستند که مفهوم آن ها فقط در ذهن گوینده و شنونده ملموس است و در دنیای واقعی نمی توان یک شیء پیدا کرد و گفت این آزادیه.

در پاسخ به

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

و در نهایت میخواستم یه خطای تایپی جزئی را بگم , در پاراگراف 9 -- خط اول :
مورد دیگری که اشیاء در دنیای واقعی از آن برخوردارند چیزی است تحت عنوان Bahavior به معنی «رفتار یا عملکرد» که کارکرد یک شیء را مشخص می سازد.

Bahavior
=
Behavior

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

در پاسخ به

Milad Caesar
Milad Caesar
ضمن تشکر از شما بخاطر سایت خوبتون...
ایرباس مدلی به نام 747 ندارد و این مدل متعلق به بوئینگ است. لطفا اصلاح بفرمایید
با تشکر مجدد
بهزاد مرادی
بهزاد مرادی مدرس، کپی‌رایتر و دولوپر
ممنون از تذکر شما. اصلاح شد

در پاسخ به

soroush.8 nazari
soroush.8 nazari
دوباره سلام. خیلی عالی توضیح دادید و من اولین باری هست که مفهوم شی گرایی رو با تمام وجودم میفهمم. فقط یک پیشنهاد دارم که اگه عملی بکنید ، خواندن در سایت پرمحتوا و عالیتون واقعا آسان تر میشه.
1-لطفا در قسمت پنل مدیریتی ، آپشن هایی برای شخصی سازی رنگ پس زمینه قرار بدید که بتوان رنگ خاکستری اون رو تغییر داد که چشم کمتر اذیت بشه .(در طولانی مدت)
2-لطفا در همین قسمت مطالعه دکمه هایی برای پیمایش بین آموزش های قبل و بعد تعبیه کنید که دیگر نیاز نباشد برای این کار به قسمت سرفصل ها برویم.
3-لطفا در قسمت سر فصل ها ، امکانی فراهم کنید تا زمانی که به هر یک از آموزش های برنامه نویسی میرویم ، سایت به صورت خودکار ما را به پیش آخرین مطلب خوانده شده ببرد.البته نه که به داخل آن برود ، فقط با استفاده از پیمایش صفحه به پیش آخرین تیک برود.
.........................................................................................................
البته 2 مورد آخر مهم تر هستند چرا که ، اگر اجرایی شوند ، روند مطالعه خیلی سریع تر پیش می رود و در زمان صرفه جویی میشود.

با تشکر از شما که به این موارد رسیدگی می کنید.
ادمین سایت
ادمین سایت
با سلام.
احتراما به استحضار می رساند که امکان انتخاب تم بک گراند نیز طبق نظر شما به سایت اضافه گردید. خواهشمند است وارد ناحیه ی کاربری خود شده و از بخش ویرایش پروفایل، یک تصویر را انتخاب نموده و تغییرات را ذخیره کنید. لاگ اوت کنید و مجدد لاگین نمایید تا تغییرات را مشاهده کنید.

با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به

ادمین سایت
ادمین سایت
با سلام
کاربر گرامی، ضمن تشکر از پیشنهاد خوب شما، امیدواریم با قرار دادن لیست سرفصل های آموزشی در صفحه ی تک تک آموزش ها، بخشی از درخواست شما مرتفع شده باشد.
ان شاء الله بررسی خواهیم کرد و در صورت عملی بودن، این امکان را برای کاربران محترم سکان آکادمی فراهم خواهیم ساخت تا بتوانند رنگ پس زمینه ی دلخواه خود را نیز انتخاب نمایند.


با تشکر
ارادتمند
تیم سکان آکادمی

در پاسخ به