آشنایی مقدماتی با مفهوم شیء گرایی در زبان برنامه نویسی پایتون

سیده آمین ارمان

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/05/10
ارسالی ها
1,730
امتیاز واکنش
20,744
امتیاز
795
محل سکونت
البرز
پیش از آن که شروع به یادگیری سینتکس زبان برنامه نویسی پایتون کنیم، لازم است با بعضی مفاهیم بسیار مهم در برنامه نویسی آشنا شویم که یکی از این مفاهیم مهم که الگوی اصلی تفکر ما در برنامه نویسی به زبان پایتون را شکل خواهد داد مسئله ی شیء گرایی است. در این آموزش سعی داریم با ذکر مثال‌هایی ساده و کاربردی، با اصول این الگوی برنامه نویسی آشنا شویم.

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

اولین زبان برنامه نویسی که بر اساس این الگو طراحی و ساخته شد Simula-67 بود که نام آن برگرفته از واژه ی Simulation به معنی شبیه سازی گرفته شده بود که برای شبیه سازی اجرای عملیات بانکی مورد استفاده قرار می گرفت. پس از آن، زبان Smalltalk طراحی شد که به عنوان اولین زبان برنامه نویسی موفق شیء گرا به حساب می آید.

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

یک مثال ساده از اشیاء می تواند افراد باشد. هر فرد نامی دارد که به عنوان هویت یا Identity اش تنها مخصوص خود او است. این فرد خصوصیات متفاوتی می تواند داشته باشد، به طور مثال جنسیت، سن، ملیت، و ... که در اصطلاح برنامه نویسی شیء گرا به آن ها Attribute یا خصوصیت می‌گوییم. هم چنین هر فرد می تواند اعمال خاصی را انجام دهد، مثلاً راه برود، غذا بخورد، صحبت کند، رانندگی کند، و ... که به این اعمال Behaviour یا رفتار می گوییم.

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

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

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

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

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

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

برخی موضوعات مشابه

بالا