مفهوم اشیا

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

این نمونه ها به صورت کاملا مستقل عمل می کنند. مثلا اگر از روی شی CdPlayer که در مقاله ی قبل ایجاد کردیم دو نمونه به نام های myPlayer1 و myPlayer2 بسازیم، هیچ کدام از این اشیا به هنگام استفاده در کار یکدیگر دخالتی نمی کنند. میزان صدا میتواند برای myPlayer1 روی ۴۰ تنظیم شود در حالی که میزان بلندی صدای myPlayer2 روی ۶۰ تنظیم شده است.

برای نمونه سازی از یک کلاس باید به صورت زیر عمل کرد:

 

ایجاد یک موجودیت از کلاس

myPlayer1 = CdPlayer()
myPlayer2 = CdPlayer()

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

فراخوانی خصوصیات اشیا

حالا ما دو نمونه از شی CdPlayer در اختیار داریم. برای ارتباط برقرار کردن با اشیا باید از خصوصیات آن ها استفاده کرد. خصوصیات همان متغیر ها و متد های تعریف شده برای اشیا هستند. مثلا اگر لازم باشد myPlayer1 آهنگ سوم از سی دی فرضی ما را با بلندی صدای ۵۰ درجه اجرا کند باید اعمال زیر را انجام دهیم:

 

فراخوانی خصوصیات اشیا

myPlayer1.volume = 50
myPlayer1.play(3)

در مثال بالا ما ابتدا توسط عملگر نقطه ( . ) خصوصیت volume را با ۵۰ تنظیم کردیم. سپس به همین طریق با فراخانی متد play ، اهنگ سوم از سی دی فرضی خود را اجرا کردیم. البته برای تنظیم صدا می توانستیم از متد setVolume هم استفاده کنیم که کاری مشابه با همین عمل ما را انجام می داد. حالا اگر بخواهیم به آهنگ بعدی پرش کنیم فقط کافی است متد nextSong را صدا بزنیم:


پخش آهنگ بعدی

myPlayer1.nextSong()

همانطور که میبینید ساختار کلاس طوری شی سی دی پلیر را پیاده سازی کرده است که انگار ما در حال استفاده از یک سی دی پلیر واقعی هستیم و متد هایی مثل play هم همانند دکمه های این سی دی پلیر عمل می کنند.


صفحه قبلی: پایتون
صفحه بعدی: PyGTK