سلام
قسمت نوزدهم آموزش زبان برنامه نویسی پایتون.
همانطور که در درس قبل گفته بودیم امروز با برنامه نویسی شی گرا و کلاس ها در خدمت شما هستیم.
برنامه نویسی شی گرا :
مقدمه
برای برنامه نویسی شی گرا در هر زبانی ابتدا باید مفهوم اصلی شی گرایی را درک کرد. شی گرایی
ابزار و یا خصوصیت خاص یک زبان برنامه نویسی نیست؛ حتی در زبانی مثل cهم که از امکانات شی
گرایی برخوردار نیست، باز هم امکان برنامه نویسی شی گرا وجود دارد. نمونه ای بارز از یک همچین
برنامه هایی کتابخانه ی معروف gtkاست که به صورت شی گرا در cپیاده سازی شده است. در
حقیقت شی گرایی نوعی طرز تفکر خاص در پیاده سازی برنامه هاست. به این صورت که برنامه
نویس با قسمت های مختلف برنامه اش دقیقا همانند اشیای عادی در دنیای حقیقی رفتار میکند، و
سعی میکند با کنار هم قرار دادن آن ها برنامه ی خود را به سرانجام برساند.
مثالی از دنیای واقعی :
مثال 1:
نجاری را در نظر بگیرید که برای ساخت یک میز باید از اشیای مختلفی مثل میخ، چکش، اره
و... استفاده کند. هر کدام از این ابزارها اشیای جدا گانه ای هستند که بدون دخالت در کار یکدیگر به
ساخت میز مورد نظر نجار کمک میکنند. چکش میخ را میکوبد بدون این که از ماهیت میخ با خبر
باشد... اره چوب را تکه تکه میکند بدون این که در کار چکش دخالت کند.... در نهایت حاصل کار میزی
خواهد بود که نجار با استفاده از این ابزارها پدید آورده است. در حقیقت نجار برای ساخت میز خود از
اشیای مختلفی که هر کدام ماهیت و خصوصیات خاص خودشان را دارند کمک گرفت.
مثال 2:
فرض نمایید که ما قصد داریم قطعه ای را به طور انبوه تولید نماییم یک روش آنست که ما این قطعات
را یک به یک تراش دهیم ولی این کار ممکن است ماهها و شاید سالها طول بکشد و اگر نتیجه کار را
هم بررسی نماییم ملحظه می کنیم که قطعات همگی یک شکل و یک دست نیستند همچینین هزینه
تمام شده آن هم بسیار بال خواهد بود اما روش بهتری نیز وجود دارد و آن این است که ما یک قالب برای
آن قطعه بسازیم و بعد با استفاده از آن قالب قطعات مورد نیاز خود را تولید نماییم.
پس اگر ما فقط در ساختن قالب دقت لزم را به خرج دهیم در پایان کار مشاهده می کنیم که قطعات
تولید شده همگی یک شکل و یک دست از آب درآمده اند. در برنامه نویسی شی گرا هم در واقع از
این روش استفاده می شود ما یک قالب )کلس( می سازیم و آن را امتحان می نماییم تا از درستی
طرز کار آن مطمئن شویم و بعد از آن بارها استفاده می نماییم.
مزایای شی گرایی :
شی گرایی در دنیای برنامه نویسی هم به همین صورت است. برنامه نویس در طول کار خود اشیای
مورد نیاز خود را ایجاد میکند و یا از اشیای آماده ای که توسط برنامه نویسان دیگر ایجاد شده است
استفاده میکند — تا با در کنار هم قرار دادن آن ها برنامه ای را به وجود آورد که از اشیای مختلفی
تشکیل شده است. این روش مزیت های زیادی دارد که در زیر چند نمونه از اصلی ترین آن ها را با هم
مرور میکنیم:
•بهینه شدن ساختار برنامه :
شی گرایی باعث تولید برنامه های ساخت یافته تری می شود که
امکان تغییر و توسعه در برنامه را ساده تر میکند. مثال: اگر بخواهید قسمت خاصی از برنامه
را تغییر دهید، دیگر لزم نیست تمام کدهای برنامه را ویرایش کنید چون می دانید که تغییرات
شما فقط در همان قسمت مد نظرتان اعمال میشود و خللی در کار قسمت های دیگر به وجود
نمی آید.
•استفاده مجدد از کدها :
وقتی شما یک شی جدید را خلق میکنید میتوانید تا مدت ها از آن
استفاده کنید و یا آن را با دیگران به اشتراک بگذارید. این مزیت هنگام ساخت کتابخانه های
شی گرا بسیار کارآمد است. مثال: یک دوچرخه می تواند تا مدت زمان زیادی به شما سواری
دهد. تازه میتوانید برای سواری آن را به دوستانتان هم قرض بدهید.
•کپسوله سازی :
در برنامه نویسی هر چه اشیای تشکیل دهنده ی یک برنامه از طرز کار یکدیگر
بی خبرتر باشند، برنامه شما ساختار بهتری پیدا خواهد کرد زیرا در این شرایط اشیا در کار
یکدیگر دخالت نمی کنند؛ با استفاده از شی گرایی قسمت های مختلف برنامه ی شما از نحوه
ی کار همدیگر بی خبرند و این مساله در حالی اتفاق می افتد که شما به عنوان برنامه نویس از
طرز کار آن ها اطلاع دارید. مثال: یک نجار می داند که فرو رفتن میخ در چوب، به خاطر نوک
یک کوبیدن خالص! یعنی بهتر است که چکش حتی از شی ای که به آن نیرو وارد می کند هم
بی خبر بماند. به زبان دیگر چکش فقط باید ضربه بزند، این که شی ضرب دیده میخ باشد یا
دیوار، دیگر در حیطه ی معلومات چکش نمی گنجد!
•وراثت
: این قابلیت دقیقا متناسب با نامش عمل میکند. یعنی اگر یک شی "الف" از شی "ب"
ارث ببرد، یک سری از خصوصیات شی "ب" به شی "الف" وارد می شود. در برنامه نویسی به
شی "الف" فرزند، و به شی "ب" والد گفته می شود.
مثال
فرزندی که به دنیا می آید اصول یک سری از خصوصیات ظاهری و یا رفتاری پدر خودش را به ارث
خواهد برد حال که با تعدادی از مزایای اصلی شی گرایی آشنا شدید، مطمئنا اشتیاق برنامه نویسان به
برنامه های شی گرا را درک خواهید کرد.
نتیجه گیری :
پایتون یکی از آن زبان هایی است که بر خلف ، cامکانات شی گرایی را در بطن وجودش پیاده سازی
کرده است. برنامه نویسان میتوانند با استفاده از پایتون به صورت قدرتمندی اقدام به تولید برنامه
های شی گرا نمایند. اما به خاطر داشته باشید وجود تفکر شی گرایی به هنگام برنامه نویسی مهم تر
ار وجود امکانات شی گرایی در آن زبان خاص است. حال که با مفهوم شی گرایی در دنیای حقیقی
آشنا شدید می توانید با دنبال کردن این سری مقالت، تمام این مفاهیم را با استفاده از پایتون در
دنیای برنامه نویسی هم پیاده سازی کنید. در این مقالت سعی شده است تا جدید ترین روش های
شی گرایی در پایتون به شما آموزش داده شود. به همین خاطر ما از کلس های سبک جدید پایتون
برای آموزش استفاده کرده ایم که به مراتب قابلیت های بالتری نسبت به کلس های کلسیک پایتون
دارند.
منبع :
ویکی فارسی پایتون و حمید روحی