این تمرینها کل مطالب فصل اول را پوشش میدهند. ابتدا خودتان پاسخ دهید، سپس با پاسخنامه که در انتهای بخش قرار دارد مقایسه کنید.
تمرین ۱ – پرسشهای مفهومی
۱. شیءگرایی از دل کدام نیاز و برای حل چه مشکلی متولد شد؟ بهطور خاص توضیح دهید مشکل اصلی کدهای بزرگ در دوران پیش از شیءگرایی چه بود.
۲. دو مکتب فکری اصلی در پیدایش شیءگرایی را نام ببرید (بههمراه سازندگانشان) و تفاوت نگاهشان را در یک جمله بیان کنید.
۳. جملهی معروف آلن کی این بود که شیءگرایی برای او یعنی «پیامرسانی، نه ساختارهای داده». این نگاه، ریشهی کدام اصل شیءگرایی است و چرا؟
۴. چهار پارادایم اصلی برنامهنویسی را نام ببرید و برای هرکدام یک حوزهی کاربردی مناسب ذکر کنید.
۵. منظور از «پایتون چندپارادایمی است» چیست؟ یک مزیت و یک مسئولیتی که این ویژگی به همراه دارد را بگویید.
تمرین ۲ – نقدها و فلسفه
۶. سه نقد اصلی که به شیءگرایی وارد است را نام ببرید و هرکدام را در یک جمله توضیح دهید.
۷. استعارهی «موز و گوریل و جنگل» از جو آرمسترانگ دربارهی کدام نقد شیءگرایی است؟ منظورش را با زبان خودتان توضیح دهید.
۸. شعار «We are all consenting adults here» در پایتون به چه معناست و به کدام ویژگی زبان مربوط میشود؟
تمرین ۳ – تاریخچهی پایتون و MRO
۹. New-Style Classes در کدام نسخهی پایتون معرفی شد و مهمترین تغییری که ایجاد کرد چه بود؟
۱۰. در پایتون ۳، این دو تعریف چه تفاوتی با هم دارند؟
class User:
pass
class User(object):
pass
۱۱. MRO چیست و پایتون امروز از کدام الگوریتم برای محاسبهی آن استفاده میکند؟
۱۲. (کدخوانی) خروجی print(d.hello()) و print(D.__mro__) در کد زیر چیست؟ چرا؟
class A:
def hello(self):
return "A"
class B(A):
def hello(self):
return "B"
class C(A):
def hello(self):
return "C"
class D(B, C):
pass
d = D()
print(d.hello())
print(D.__mro__)
تمرین ۴ – مقایسه و تحلیل
۱۳. جدول زیر را کامل کنید (پایتون در برابر جاوا):
| ویژگی | Python | Java |
|---|---|---|
| ارثبری چندگانه | ؟ | ؟ |
| کپسولسازی | ؟ | ؟ |
| نوعبندی | ؟ | ؟ |
۱۴. چرا گفته میشود شیءگرایی پایتون به روبی نزدیکتر است تا به جاوا؟ دستکم دو دلیل بیاورید.
۱۵. حداقل سه مورد از پیشنیازهای دانشی لازم پیش از شروع یادگیری شیءگرایی را نام ببرید.
۱۶. سه دلیل عملی برای اینکه چرا یادگیری شیءگرایی برای ورود به بازار کار ضروری است را ذکر کنید.
تمرین ۵ – پرسش تحلیلی (تفکر انتقادی)
۱۷. این جمله را نقد یا تأیید کنید: «چون شیءگرایی نقدهای جدی دارد، بهتر است بهجای آن همیشه از برنامهنویسی تابعی استفاده کنیم.» پاسخ خود را با توجه به مفهوم Tradeoff توضیح دهید.