SlideShare a Scribd company logo
‫بزرگ‬ ‫از‬ ‫یکی‬
‫مشکالت‬ ‫ترین‬
OOP
‫اینکه‬ ‫سر‬ ‫بر‬ ‫نظر‬ ‫اتفاق‬ ‫که‬ ‫اینه‬
OOP
‫دقیقا‬
‫نداره‬ ‫وجود‬ ‫هست‬ ‫چیزی‬ ‫چه‬
!
‫ی‬ ‫واژه‬ ‫پای‬
Paradigm
‫آقای‬ ‫توسط‬ ‫بار‬ ‫اولین‬ ‫برای‬
Robert W. Floyd
‫برنده‬ ‫که‬
‫جایزه‬ ‫ی‬
Turing
‫شد‬ ‫باز‬ ‫کامپیوتری‬ ‫متون‬ ‫در‬ ‫هستند‬ ‫هم‬
.
‫مجموعه‬ ‫یعنی‬ ‫ساده‬ ‫زبان‬ ‫به‬ ،‫پاردایم‬
‫از‬ ‫ای‬
.‫کار‬ ‫یک‬ ‫انجام‬ ‫برای‬ ‫الگوها‬
‫مشکالت‬ ‫حل‬ ‫برای‬ ‫نگرش‬ ‫نوعی‬
.
‫تئوری‬ ‫نظر‬ ‫از‬
Simula
‫زبان‬ ‫اولین‬
OOP
‫دو‬ ‫دارای‬ ‫زبان‬ ‫این‬ .‫میاد‬ ‫حساب‬ ‫به‬
‫نسخه‬ .‫هست‬ ‫نسخه‬
‫ی‬
1
‫اسم‬ ‫به‬ ‫واحدی‬ ‫دارای‬ ،
Process
‫اجرا‬ ‫میتونست‬ ‫که‬ ‫بود‬
‫برگرده‬ ‫اجرا‬ ‫به‬ ‫دوباره‬ ‫و‬ ،‫بشه‬ ‫متوقف‬ ‫کار‬ ‫وسط‬ ،‫بشه‬
‫مشابه‬ ‫چیزی‬ ‫حقیقت‬ ‫در‬
coroutine
‫شی‬ ‫عنوان‬ ‫به‬ ‫شما‬ ‫که‬ ‫هست‬ ‫چیزی‬ ‫این‬ .‫ها‬
‫میشناسید؟‬ ‫گرایی‬
coroutine
‫ها؟‬
‫نسخه‬
‫دوم‬ ‫ی‬
Simula
‫به‬ ‫ملقب‬
Sumla 67
‫ابسترکشن‬ ‫و‬ ‫داد‬ ‫انجام‬ ‫چرخش‬ ‫یه‬
‫های‬
‫اسم‬ ‫به‬ ‫واحدی‬ ‫بار‬ ‫اولین‬ ‫اینجا‬ .‫کرد‬ ‫رو‬ ‫متفاوتی‬
class
‫کالس‬ .‫شد‬ ‫رونمایی‬
‫بود‬ ‫تابع‬ ‫سری‬ ‫یک‬ ‫و‬ ،‫متغیر‬ ‫سری‬ ‫یک‬ ‫دارای‬
.
،‫خب‬
‫با‬ ‫این‬ ‫فرق‬ ‫بگید‬ ‫ممکنه‬
‫مثال‬
C
‫یه‬ ‫میتونیم‬ ‫هم‬ ‫اونجا‬ ‫ما‬ ‫چیه؟‬
struct
‫سری‬ ‫یک‬ ‫دارای‬ ‫که‬ ‫باشیم‬ ‫داشته‬
‫باشه؟‬ ‫تابع‬ ‫سری‬ ‫یه‬ ‫و‬ ‫متغیر‬
‫اساسی‬ ‫فرق‬
class
‫با‬
struct
‫زبان‬ ‫در‬
C
‫به‬ ‫بود‬ ‫موضوعی‬ ‫در‬
inheritance.
‫در‬ ‫همچنین‬
‫راستا‬ ‫همین‬
class
‫بر‬ ‫مبتنی‬ ‫مورفیسم‬ ‫پلی‬ ‫دارای‬
subtyping
‫بود‬
.
‫جا‬
‫اینکه‬ ‫توجه‬ ‫لب‬
‫زبان‬ ‫این‬ ‫در‬ ‫چیز‬ ‫همه‬
public
‫بود‬
!
‫زبان‬
Simula
.‫موند‬ ‫باقی‬ ‫آکادمیک‬ ‫حد‬ ‫در‬
‫شی‬ ‫که‬ ‫باری‬ ‫اولین‬ ‫اما‬
‫زبان‬ ‫با‬ ،‫شد‬ ‫کامپیوتر‬ ‫دنیای‬ ‫وارد‬ ‫عمل‬ ‫در‬ ‫گرایی‬
Smalltalk
‫عبارت‬ ‫که‬ ‫بود‬ ‫باری‬ ‫اولین‬ ‫اینجا‬ ‫و‬ ‫بود؛‬
Object-oriented programming
‫علی‬ ‫توسط‬
‫حضرت‬
Alan Kay
‫سر‬
‫زبان‬
‫افتاد‬ ‫ها‬
.
‫زبان‬
Smalltalk
‫شی‬ ‫تمام‬ ‫زبان‬ ‫یه‬
‫شی‬ ‫یک‬ ‫زبان‬ ‫این‬ ‫در‬ ‫چیز‬ ‫همه‬ ‫یعنی‬ .‫بود‬ ‫گرا‬
‫خود‬ ‫حتی‬ .‫هست‬
class
‫مثل‬ ‫مقادیری‬ ‫یا‬ .‫هست‬ ‫شی‬ ‫یک‬ ‫هم‬
2
‫یا‬
3
‫هستند‬ ‫شی‬ ‫هم‬
.
‫در‬ ‫همچنین‬
SmallTalk
‫ایده‬ ‫روی‬
‫ی‬
message passing
‫زیر‬ ‫عبارت‬ ‫مثال‬ .‫است‬ ‫شده‬ ‫تاکید‬
‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬
...
‫گفتی‬
‫در‬ ‫که‬ ‫م‬
smalltalk
‫یعنی‬ .‫است‬ ‫شی‬ ‫یک‬ ‫چیز‬ ‫همه‬
3
‫و‬
4
.‫هستن‬ ‫شی‬ ‫همگی‬ + ‫و‬
‫شی‬ ‫به‬ ‫را‬ + ‫پیغام‬ ‫یعنی‬ ‫باال‬ ‫عبارت‬
3
‫شی‬ .‫برسان‬
4
‫آن‬ ‫پارامتر‬ ‫حکم‬ ‫هم‬
‫دارد‬ ‫را‬ ‫مسیج‬
.
‫شی‬ ‫اینجا‬
3
‫حالت‬
message broker
‫ران‬ ‫سیستم‬ ‫یعنی‬ !‫دارد‬
‫به‬ ‫را‬ + ‫پیغام‬ ‫تایم‬
‫شی‬
3
‫شی‬ ‫و‬ ‫میرساند‬
3
‫با‬ ‫که‬ ‫میگیرد‬ ‫تصمیم‬
‫کند‬ ‫کار‬ ‫چه‬ ‫آن‬
.
‫حالت‬ ‫به‬
‫شی‬ ،‫پیشفرض‬
3
‫هم‬ ‫متدی‬ ‫آیا‬ ‫ببیند‬ ‫تا‬ ‫میچرخد‬
‫یا‬ ‫دارد‬ ‫مسیج‬ ‫این‬ ‫با‬ ‫نام‬
‫کنیم‬ ‫تصور‬ ‫میتوانیم‬ ‫بنابراین‬ .‫میکند‬ ‫اجرا‬ ‫را‬ ‫متد‬ ‫آن‬ ‫صورت‬ ‫این‬ ‫در‬ ‫نه؟‬
‫میخورد‬ ‫رقم‬ ‫دارد‬ ‫این‬ ‫مشابه‬ ‫اتفاقی‬ ‫که‬
:
3->plus(4)
‫می‬ .‫دهید‬ ‫تغییر‬ ‫را‬ ‫رفتار‬ ‫این‬ ‫توانید‬ ‫می‬ ‫شما‬ ‫اما‬
‫توانید‬
‫شی‬ ‫برای‬
3
‫تعیین‬
‫هم‬ ‫متد‬ ‫فراخوانی‬ ‫جای‬ ‫به‬ ،‫گرفت‬ ‫پیغامی‬ ‫چنین‬ ‫هربار‬ ‫که‬ ‫کنید‬
‫کار‬ ،‫نام‬
‫دهد‬ ‫انجام‬ ‫دیگری‬
.
‫با‬ ‫شما‬ ‫ذهنیت‬ ‫اینجا‬
message
‫و‬ ‫ها‬
message broker
‫مدل‬ ‫مشابه‬ .‫هست‬ ‫طرف‬ ‫ها‬
Actor.
‫عنوان‬ ‫به‬ ‫که‬ ‫هست‬ ‫چیزی‬ ‫این‬ ‫آیا‬
OOP
‫میشناسید؟‬
‫داریم؟‬ ‫چه‬ ‫کار‬ ‫اینجای‬ ‫تا‬ ‫خب‬
class
‫و‬
inheritance
‫بر‬ ‫مبتنی‬ ‫مورفیسم‬ ‫پلی‬ ‫و‬
subtyping
‫همچنین‬
message passing
‫تفسیر‬ ‫تاسف‬ ‫کمال‬ ‫با‬ ‫چون‬ .‫نداریم‬ ‫آن‬ ‫با‬ ‫کاری‬ ‫ما‬ ‫که‬
‫است‬ ‫آن‬ ‫از‬ ‫متفاوت‬ ‫گرایی‬ ‫شی‬ ‫از‬ ‫عام‬
!
‫بعدی‬ ‫موضوع‬ ‫به‬ ‫میرسیم‬
: Encapsulation
‫مفهوم‬
Encapsulation
‫هر‬ ‫یا‬ ،‫کامپوننت‬ ،‫ماژول‬ ،‫(کالس‬ ‫کد‬ ‫واحدهای‬ ‫یعنی‬
‫چیزی‬
‫می‬ ‫را‬ ‫اسمش‬ ‫که‬
‫یک‬ ‫خود‬ ‫برای‬ ‫کدام‬ ‫هر‬ )‫گذارید‬
API
‫و‬ ،‫میکنند‬ ‫مشخص‬ ‫عمومی‬
‫همین‬ ‫طریق‬ ‫از‬ ‫فقط‬ ‫باهم‬ ‫واحدها‬ ‫ارتباط‬
API
‫جزییات‬ ‫به‬ ‫نباید‬ ‫و‬ ‫است‬ ‫عمومی‬
‫هم‬ ‫داخلی‬
(state
‫صحنه‬ ‫پشت‬ ‫توابع‬ ‫و‬
)
‫باشند‬ ‫داشته‬ ‫کاری‬
.
‫خواننده‬ ‫بین‬ ‫در‬
‫برنامه‬ ‫مدل‬ ‫همه‬ ،‫نوشته‬ ‫این‬ ‫های‬
‫آن‬ .‫دارد‬ ‫وجود‬ ‫نویس‬
‫هایی‬
‫زبان‬ ‫با‬ ‫که‬
‫های‬
oo
‫آن‬ .‫میکنند‬ ‫کار‬
‫با‬ ‫که‬ ‫هایی‬
fp
‫می‬ ‫کار‬
‫آن‬ .‫کنند‬
‫که‬ ‫هایی‬
procedural
‫میزنن‬ ‫کد‬
...
‫گرفتن‬ ‫نظر‬ ‫در‬ ‫بدون‬ ‫شده‬ ‫حال‬ ‫به‬ ‫آیا‬ :‫است‬ ‫این‬ ‫من‬ ‫سوال‬
Encapsulation
‫کدنویسی‬
‫کنید؟‬
‫رعایت‬
Encapsulation
‫همه‬ ‫در‬ .‫است‬ ‫روتین‬ ‫کامال‬ ‫رویه‬ ‫یک‬
‫زبان‬ ‫ی‬
‫پارادایم‬ ‫و‬ ‫ها‬
‫ها‬
‫است‬ ‫کاری‬ ‫حداقل‬ ‫این‬ .‫است‬ ‫عمومی‬ ‫قانون‬ ‫یک‬ ‫مثل‬ .‫میکنیم‬ ‫رعایت‬ ‫را‬ ‫آن‬ ‫ما‬
‫کنیم‬ ‫رعایت‬ ‫جا‬ ‫همه‬ ‫را‬ ‫آن‬ ‫میکنیم‬ ‫سعی‬ ‫که‬
.
‫که‬ ‫میشود‬ ‫تصور‬ ‫اینطور‬ ‫چرا‬ ‫پس‬
Encapsulation
‫در‬ ‫منحصرا‬ ‫فقط‬ ‫که‬ ‫چیزیست‬
oop
‫دارد؟‬ ‫وجود‬
‫دارد‬ ‫دلیل‬ ‫دو‬ ‫من‬ ‫نظر‬ ‫به‬
:
،‫افراد‬ ‫از‬ ‫زیادی‬ ‫بخش‬ ‫چون‬ :‫اول‬ ‫دلیل‬
Encapsulation
‫با‬ ‫را‬
Access modifier
‫ها‬
‫می‬
‫ایده‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫نه‬ ‫و‬ ،‫شناسند‬
‫می‬ ‫فکر‬ ‫یعنی‬ !‫جامع‬ ‫ی‬
‫مثل‬ ‫چیزهایی‬ ‫کنند‬
public
‫و‬
private
‫همان‬
Encapsulation
‫که‬ ‫حالی‬ ‫در‬ .‫است‬
Encapsulation
‫ایده‬ ‫یک‬
‫کلی‬ ‫ی‬
‫ندارد‬ ‫اینها‬ ‫به‬ ‫ربطی‬ ‫و‬ ‫است‬
.
‫حقیقت‬ ‫در‬
Access modifier
‫کام‬ ‫برای‬ ‫اعالن‬ ‫نوعی‬ ‫تنها‬
‫در‬ ‫تا‬ ‫هستند‬ ‫مفسر‬/‫پایلر‬
‫دهند‬ ‫تذکر‬ ‫شما‬ ‫به‬ ،‫پرتی‬ ‫حواس‬ ‫صورت‬
.
‫چیز‬ ‫همه‬ ‫اگر‬ ‫حتی‬
public
‫بازمیتوان‬ ‫هم‬ ‫باشد‬
Encapsulation
‫کدها‬ .‫کرد‬ ‫رعایت‬ ‫را‬
‫نمی‬ ‫که‬ ‫خودشان‬
‫باید‬ ‫شما‬ .‫کنند‬ ‫استفاده‬ ‫هم‬ ‫اعضای‬ ‫از‬ ‫بروند‬ ‫دزدکی‬ ‫توانند‬
‫آن‬
‫کنید‬ ‫تایپ‬ ‫را‬ ‫ها‬
!
‫بخش‬ ‫شدند‬ ‫باعث‬ ‫که‬ ‫زبانی‬ ‫دو‬ :‫دوم‬ ‫دلیل‬
‫با‬ ‫افراد‬ ‫از‬ ‫بزرگی‬
OOP
‫آشنا‬
،‫شوند‬
++C
‫و‬
Java
‫ماژول‬ ‫سیستم‬ ‫دارای‬ ‫که‬ ‫است‬ ‫سالی‬ ‫چند‬ ‫تنها‬ ‫دو‬ ‫هر‬ .‫بودند‬
‫شده‬
‫نبودند‬ ‫ماژول‬ ‫دارای‬ ‫روزها‬ ‫آن‬ ‫در‬ ‫و‬ ‫اند‬
.
‫وظیفه‬ ‫زمان‬ ‫آن‬ ‫در‬ ‫بنابراین‬
‫دوش‬ ‫بر‬ ‫هم‬ ‫ماژول‬ ‫ی‬
class
‫از‬ ‫استفاده‬ ‫و‬ ‫افتاد‬
Access modifier
‫راه‬ ‫تنها‬ ،‫کالس‬ ‫در‬ ‫ها‬
‫برنامه‬
‫بود‬ ‫ماژوالر‬ ‫نویسی‬
.
‫خیلی‬
‫شی‬ ‫بدون‬ ‫میکنند‬ ‫تصور‬ ‫هنوزه‬ ‫که‬ ‫هم‬ ‫هنوز‬ ‫ها‬
‫کدهای‬ ‫توان‬ ‫نمی‬ ‫گرایی‬
‫نوشت‬ ‫ماژوالر‬
.
‫است‬ ‫گرفته‬ ‫نشات‬ ‫جا‬ ‫همین‬ ‫از‬ ‫شبهه‬ ‫این‬ ‫میکنم‬ ‫فکر‬ ‫من‬ ‫و‬
.
‫چیه؟‬ ‫گرایی‬ ‫شی‬ ‫پس‬ ،‫توصیفات‬ ‫این‬ ‫با‬ ‫خب‬
‫تعریف‬ ‫طبق‬
Alan Kay:
‫شی‬
‫یعنی‬ ‫تنها‬ ‫من‬ ‫نظر‬ ‫از‬ ‫گرایی‬
«
‫پیام‬
‫ها‬
»
‫نگه‬ ،
‫کردن‬ ‫مخفی‬ ‫و‬ ‫محافظت‬ ‫و‬ ‫داری‬
‫پروسه‬ ‫دیگر‬ ‫از‬ ‫پروسه‬ ‫هر‬ ‫وضعیت‬
‫و‬ ،‫ها‬
late-binding
‫است‬ ‫چیز‬ ‫همه‬ ‫برای‬
.
‫که‬ ‫چیزی‬
kay
‫یک‬ ‫توصیف‬ ‫بلکه‬ ،‫هست‬ ‫روش‬ ‫یک‬ ‫توصیف‬ ‫تنها‬ ‫نه‬ ،‫میده‬ ‫توضیح‬
‫ران‬ ‫سیستم‬
‫ارلنگ‬ ‫سیستمی‬ ‫چنین‬ ‫از‬ ‫نمونه‬ ‫بارزترین‬ .‫است‬ ‫پیشرفته‬ ‫تایم‬
‫اصال‬ ‫که‬ ‫زبانی‬ .‫هست‬
oop
‫و‬ ‫نیست‬
‫واقع‬ ‫در‬
fp
‫نیست؟‬ ‫جالب‬ !‫هست‬
oop
‫زبانی‬ ‫ترین‬
‫زبان‬ ‫یک‬ ‫داره‬ ‫وجود‬ ‫حاضر‬ ‫حال‬ ‫در‬ ‫که‬
fp
‫بخونید‬ ‫رو‬ ‫قضیه‬ ‫آخر‬ ‫تا‬ !‫هست‬
‫خودتون‬
...
‫تعریف‬ ‫اما‬
kay
‫شی‬ ‫عنوان‬ ‫به‬ ‫شما‬ ‫که‬ ‫نیست‬ ‫چیزی‬ ‫اون‬ ،
‫می‬ ‫گرایی‬
.‫شناسید‬
‫درسته؟‬
‫شی‬ ،‫بعد‬ ‫به‬ ‫اینجا‬ ‫از‬
‫یک‬ ‫به‬ ‫تبدیل‬ ،‫سیستم‬ ‫یک‬ ‫توصیف‬ ‫جای‬ ‫به‬ ‫گرایی‬
«
‫تفکر‬
»
‫میشه‬
!
‫قابلیت‬ ‫از‬ ‫سری‬ ‫یک‬ ‫اگر‬ ‫اما‬ ،‫بیفته‬ ‫اتفاق‬ ‫جا‬ ‫همه‬ ‫میتونه‬ ‫که‬ ‫تفکری‬
‫ها‬
‫پیاده‬ ،‫باشه‬ ‫دسترس‬ ‫در‬ ‫مستقیما‬
‫راحت‬ ‫ما‬ ‫برای‬ ‫سازیش‬
‫میشه‬ ‫تر‬
.
‫شی‬ ‫توصیف‬ ‫موقع‬ ‫همیشه‬ ‫پس‬
‫که‬ ‫موارد‬ ‫سری‬ ‫یک‬ ‫کردن‬ ‫لیست‬ ‫به‬ ‫میرسیم‬ ،‫گرایی‬
‫اون‬ ‫حضور‬ ‫صورت‬ ‫در‬
‫شی‬ ‫از‬ ‫استفاده‬ ‫حال‬ ‫در‬ ‫که‬ ‫میکنیم‬ ‫تصور‬ ،‫ها‬
‫هستم‬ ‫گرایی‬
:
-
‫کالس‬
-
‫وراثت‬
-
‫پلی‬
‫بر‬ ‫مبتنی‬ ‫مورفیسم‬
subtyping
-
‫و‬
Encapsulation
‫همون‬ ‫عادی‬ ‫حالت‬ ‫در‬ ‫که‬ ‫کالس‬
struct
‫زبان‬ ‫همه‬ ‫در‬ ‫بیش‬ ‫و‬ ‫کم‬ .‫هست‬ ‫توابع‬ ‫و‬
‫ها‬
‫هست‬ ‫چیزی‬ ‫چنین‬
.
‫قضیه‬
Encapsulation
‫همه‬ ‫در‬ ‫و‬ ‫هست‬ ‫عمومی‬ ‫موضوع‬ ‫یک‬ ‫که‬ ‫هم‬
‫ماژوالر‬ ‫کدهای‬ ‫ی‬
‫میشه‬ ‫رعایت‬
.
‫چی‬ ‫خب‬
‫می‬ ‫باقی‬ ‫وسط‬ ‫این‬
‫مختص‬ ‫فقط‬ ‫و‬ ‫فقط‬ ‫که‬ ‫داره‬ ‫وجود‬ ‫چی‬ ‫مونه؟‬
oop
‫و‬ ‫هست‬
‫دیگه‬ ‫جای‬ ‫در‬
‫نمیشه؟‬ ‫دیده‬ ‫ای‬
‫بر‬ ‫مبتنی‬ ‫مورفیسم‬ ‫پلی‬ ‫و‬ ‫وراثت‬ ‫میده‬ ‫قد‬ ‫من‬ ‫عقل‬ ‫به‬ ‫که‬ ‫چیزی‬ ‫تنها‬
subtyping
‫هست‬
.
‫فرد‬ ‫به‬ ‫منحصر‬ ‫خصوصیت‬ ‫این‬ ،‫اینکه‬ ‫عجیب‬ ‫و‬
oop
‫در‬ ‫که‬ ‫هست‬ ‫خصوصیتی‬ ‫همون‬ ،
‫مکتب‬ ‫خود‬
oop
‫میگن‬ ‫هم‬
‫جمله‬ !‫کنید‬ ‫دوری‬ ‫ازش‬ ‫باید‬
‫معروف‬ ‫ی‬
«
‫را‬ ‫کامپوزیشن‬
‫دهید‬ ‫ترجیح‬ ‫وراثت‬ ‫به‬
!»
‫شی‬ ‫این‬ ‫هست‬ ‫عجیبی‬ ‫چیز‬ ‫یک‬ ‫اصال‬
‫گرایی‬
...
‫نظر‬
«
‫شخصی‬
»
‫چیه؟‬ ‫من‬
‫شی‬ ‫که‬ ‫اینه‬ ‫من‬ ‫نظر‬
‫که‬ ‫هست‬ ‫چیزی‬ ‫اون‬ ‫گرایی‬
Kay
‫تمام‬ .‫میگه‬
.
‫عنوان‬ ‫به‬ ‫افراد‬ ‫بیشتر‬ ‫که‬ ‫چیزی‬ ‫این‬ ‫اما‬
‫شی‬
‫میگم‬ ‫بهش‬ ‫من‬ ،‫میشناسن‬ ‫گرایی‬
«
‫کال‬
‫گرایی‬ ‫س‬
!»
‫برنامه‬ ‫یعنی‬
‫کالس‬ ‫بر‬ ‫مبتنی‬ ‫نویسی‬
.
‫کالس‬ ‫مبنای‬ ‫بر‬ ‫مختلف‬ ‫های‬ ‫بخش‬ ‫سازی‬ ‫مدل‬ ‫یعنی‬
‫این‬ ‫بین‬ ‫ارتباط‬ ‫ایجاد‬ ‫و‬ ،‫ها‬
‫به‬ ‫کالس‬ ‫نبود‬ ،‫تفکر‬ ‫این‬ ‫در‬ ...‫تایپینگ‬ ‫ساب‬ ‫و‬ ‫وراثت‬ ‫مبنای‬ ‫بر‬ ‫ها‬ ‫مدل‬
‫برنامه‬ ‫اصال‬ ‫و‬ ‫است‬ ‫اسپاگتی‬ ‫و‬ ‫کثیف‬ ‫و‬ ‫ریخته‬ ‫درهم‬ ‫کدهای‬ ‫معنی‬
‫به‬ ‫نویسی‬
‫حا‬ ‫این‬ ‫از‬ ‫غیر‬
‫نیست‬ ‫ممکن‬ ‫لت‬
.
‫موضوع‬ ‫و‬ ،‫کنیم‬ ‫بندی‬ ‫دسته‬ ‫رو‬ ‫هم‬ ‫به‬ ‫مرتبط‬ ‫توابع‬ ‫و‬ ‫دیتا‬ ‫اینکه‬
Encapsulation
‫برنامه‬ ‫دیگش‬ ‫اسم‬ ‫این‬ ،‫کنیم‬ ‫رعایت‬ ‫هم‬ ‫رو‬
‫همه‬ ‫در‬ .‫هست‬ ‫ماژوالر‬ ‫نویسی‬
‫زبان‬
‫یک‬ ‫که‬ ‫موارد‬ ‫این‬ ‫رعایت‬ ‫صرف‬ ‫به‬ ‫آیا‬ .‫میشه‬ ‫رعایت‬ ‫داره‬ ‫وجود‬ ‫هم‬ ‫ها‬
‫داریم‬ ‫ما‬ ‫هستن‬ ‫عمومی‬ ‫مباحث‬ ‫سری‬
oop
‫می‬ ‫کار‬
‫کنیم؟‬
‫هم‬ ‫هسکل‬ ‫یعنی‬ ‫میکنن؛‬ ‫رو‬ ‫کار‬ ‫همین‬ ‫هم‬ ‫هسکل‬ ‫در‬ ‫مثال‬
oop
.‫نمیدونم‬ ...‫هست؟‬
‫این‬ ‫که‬ ‫میدونم‬ ‫فقط‬ ...‫شما‬ ‫خود‬ ‫به‬ ‫میسپرم‬ ‫رو‬ ‫برداشت‬ ‫این‬
‫مثبتی‬ ‫موارد‬ ‫ها‬
‫موارد‬ ‫این‬ ‫از‬ ‫کدوم‬ ‫هیچ‬ ‫با‬ ‫من‬ .‫هست‬ ‫الزم‬ ‫جا‬ ‫همه‬ ‫در‬ ‫شون‬ ‫رعایت‬ ‫و‬ ‫هستند‬
‫اون‬ ‫روی‬ ‫هم‬ ‫خیلی‬ ‫اتفاقا‬ ،‫هیچ‬ ‫که‬ ‫ندارم‬ ‫مشکلی‬
‫ها‬
‫دارم‬ ‫تاکید‬
...
‫اما‬
oop
‫در‬ ‫معروف‬ ‫قول‬ ‫به‬ ،
«
‫خیابان‬ ‫کف‬
»
‫داریم‬ ‫واقعیت‬ ‫در‬ ‫که‬ ‫چیزی‬ ‫اون‬ ‫و‬
‫مدل‬ ‫شی‬ ‫قالب‬ ‫در‬ ‫باید‬ ‫چیز‬ ‫همه‬ ‫اون‬ ‫در‬ ‫که‬ ‫نگرشی‬ ‫مدل‬ ‫اون‬ ‫یعنی‬ ،‫میبینیم‬
‫و‬ ‫موضوع‬ ‫هر‬ ‫مناسب‬ ‫که‬ ‫نگرشی‬ ‫چنین‬ ‫اینکه‬ ‫بدتر‬ ‫و‬ ‫بشه‬ ‫بندی‬ ‫طبقه‬ ‫و‬ ‫سازی‬
‫مساله‬
‫و‬ ‫زبان‬ ‫کل‬ ‫به‬ ‫میشه‬ ‫داده‬ ‫تعمیم‬ ،‫نیست‬ ‫ای‬
‫در‬ ‫حل‬ ‫راه‬ ‫تنها‬ ‫میشه‬
‫دسترس‬
.
‫برنامه‬ ‫در‬ ‫من‬ ‫نظر‬ ‫از‬
‫داریم‬ ‫چیز‬ ‫دو‬ ‫نویسی‬
:
۱
:
‫دیتا‬
۲
:
‫تابع‬
.
‫برنامه‬ ‫در‬ ‫که‬ ‫هم‬ ‫کاری‬
‫هست‬ ‫دیتا‬ ‫کردن‬ ‫ترنسفرم‬ ‫میدیم‬ ‫انجام‬ ‫نویسی‬
.
‫حل‬ ‫راه‬ ‫از‬ ‫بسیاری‬ ‫میکنم‬ ‫حس‬
‫در‬ ‫که‬ ‫هایی‬
oop
.‫هست‬ ‫کاری‬ ‫اضافه‬ ‫نوعی‬ ‫میبینم‬
‫خیلی‬ ‫که‬ ‫میدونم‬
‫عقید‬ ‫هم‬ ‫من‬ ‫با‬ ‫هاتون‬
‫نیستید‬ ‫ه‬
.
‫شی‬ :‫پایانی‬ ‫سوال‬ ‫حاال‬
‫چیه؟‬ ‫دقیقا‬ ‫گرایی‬

More Related Content

PDF
Object-Oriented-Programming-in-Python
PDF
Clojure se-radio.net Interview with Rich Hickey (ترجمه مصاحبه رادیو مهندسی نر...
PDF
OSI Model vs TCP/IP Model
PDF
How to be a better Developer & Programmer
PDF
مقاله هندسه محاسباتی
PDF
Design Patterns چیست و به چه دردی می خورد؟ (persian)
PDF
PDF
Network management 2_sample
Object-Oriented-Programming-in-Python
Clojure se-radio.net Interview with Rich Hickey (ترجمه مصاحبه رادیو مهندسی نر...
OSI Model vs TCP/IP Model
How to be a better Developer & Programmer
مقاله هندسه محاسباتی
Design Patterns چیست و به چه دردی می خورد؟ (persian)
Network management 2_sample

Similar to یکی از بزرگ‌ترین مشکلات OOP اینه که اتفاق نظر بر سر اینکه OOP دقیقا چه چیزی هست وجود نداره! (20)

PDF
openstack designate
PDF
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
PDF
Pg autoscaling in ceph
PDF
how add and remove Mgr in ceph cluster
PDF
کتاب الکترونیک تجربه‌های یک برنامه‌نویس جوان
PDF
how add and delete new mon in ceph cluster
PDF
rbdmap in ceph
DOCX
مدل رانده
PDF
Rbdmap ceph realease 0.2
PPT
S1
PDF
how enable ceph dashboard
PPT
Java programming languages
PDF
Systemd and its various uses and capabilities.
PDF
Ceph: A Powerful, Scalable, and Flexible Storage Solution
PDF
Data-Centered Architecture: Blackboard Architecture Style
PDF
Aliaskari,fayazi resource sharing.markor.. .docx
PPTX
Mrppt ir-nature-2
openstack designate
(ِData Structures-Java Object oriented Programming Languages)ساختارهای دیتا ...
Pg autoscaling in ceph
how add and remove Mgr in ceph cluster
کتاب الکترونیک تجربه‌های یک برنامه‌نویس جوان
how add and delete new mon in ceph cluster
rbdmap in ceph
مدل رانده
Rbdmap ceph realease 0.2
S1
how enable ceph dashboard
Java programming languages
Systemd and its various uses and capabilities.
Ceph: A Powerful, Scalable, and Flexible Storage Solution
Data-Centered Architecture: Blackboard Architecture Style
Aliaskari,fayazi resource sharing.markor.. .docx
Mrppt ir-nature-2
Ad

یکی از بزرگ‌ترین مشکلات OOP اینه که اتفاق نظر بر سر اینکه OOP دقیقا چه چیزی هست وجود نداره!

  • 1. ‫بزرگ‬ ‫از‬ ‫یکی‬ ‫مشکالت‬ ‫ترین‬ OOP ‫اینکه‬ ‫سر‬ ‫بر‬ ‫نظر‬ ‫اتفاق‬ ‫که‬ ‫اینه‬ OOP ‫دقیقا‬ ‫نداره‬ ‫وجود‬ ‫هست‬ ‫چیزی‬ ‫چه‬ ! ‫ی‬ ‫واژه‬ ‫پای‬ Paradigm ‫آقای‬ ‫توسط‬ ‫بار‬ ‫اولین‬ ‫برای‬ Robert W. Floyd ‫برنده‬ ‫که‬ ‫جایزه‬ ‫ی‬ Turing ‫شد‬ ‫باز‬ ‫کامپیوتری‬ ‫متون‬ ‫در‬ ‫هستند‬ ‫هم‬ . ‫مجموعه‬ ‫یعنی‬ ‫ساده‬ ‫زبان‬ ‫به‬ ،‫پاردایم‬ ‫از‬ ‫ای‬ .‫کار‬ ‫یک‬ ‫انجام‬ ‫برای‬ ‫الگوها‬ ‫مشکالت‬ ‫حل‬ ‫برای‬ ‫نگرش‬ ‫نوعی‬ . ‫تئوری‬ ‫نظر‬ ‫از‬ Simula ‫زبان‬ ‫اولین‬ OOP ‫دو‬ ‫دارای‬ ‫زبان‬ ‫این‬ .‫میاد‬ ‫حساب‬ ‫به‬ ‫نسخه‬ .‫هست‬ ‫نسخه‬ ‫ی‬ 1 ‫اسم‬ ‫به‬ ‫واحدی‬ ‫دارای‬ ، Process ‫اجرا‬ ‫میتونست‬ ‫که‬ ‫بود‬ ‫برگرده‬ ‫اجرا‬ ‫به‬ ‫دوباره‬ ‫و‬ ،‫بشه‬ ‫متوقف‬ ‫کار‬ ‫وسط‬ ،‫بشه‬ ‫مشابه‬ ‫چیزی‬ ‫حقیقت‬ ‫در‬ coroutine ‫شی‬ ‫عنوان‬ ‫به‬ ‫شما‬ ‫که‬ ‫هست‬ ‫چیزی‬ ‫این‬ .‫ها‬ ‫میشناسید؟‬ ‫گرایی‬ coroutine ‫ها؟‬ ‫نسخه‬ ‫دوم‬ ‫ی‬ Simula ‫به‬ ‫ملقب‬ Sumla 67 ‫ابسترکشن‬ ‫و‬ ‫داد‬ ‫انجام‬ ‫چرخش‬ ‫یه‬ ‫های‬ ‫اسم‬ ‫به‬ ‫واحدی‬ ‫بار‬ ‫اولین‬ ‫اینجا‬ .‫کرد‬ ‫رو‬ ‫متفاوتی‬ class ‫کالس‬ .‫شد‬ ‫رونمایی‬ ‫بود‬ ‫تابع‬ ‫سری‬ ‫یک‬ ‫و‬ ،‫متغیر‬ ‫سری‬ ‫یک‬ ‫دارای‬ . ،‫خب‬ ‫با‬ ‫این‬ ‫فرق‬ ‫بگید‬ ‫ممکنه‬ ‫مثال‬ C ‫یه‬ ‫میتونیم‬ ‫هم‬ ‫اونجا‬ ‫ما‬ ‫چیه؟‬ struct ‫سری‬ ‫یک‬ ‫دارای‬ ‫که‬ ‫باشیم‬ ‫داشته‬ ‫باشه؟‬ ‫تابع‬ ‫سری‬ ‫یه‬ ‫و‬ ‫متغیر‬ ‫اساسی‬ ‫فرق‬ class ‫با‬ struct ‫زبان‬ ‫در‬ C ‫به‬ ‫بود‬ ‫موضوعی‬ ‫در‬ inheritance. ‫در‬ ‫همچنین‬ ‫راستا‬ ‫همین‬ class ‫بر‬ ‫مبتنی‬ ‫مورفیسم‬ ‫پلی‬ ‫دارای‬ subtyping ‫بود‬ . ‫جا‬ ‫اینکه‬ ‫توجه‬ ‫لب‬ ‫زبان‬ ‫این‬ ‫در‬ ‫چیز‬ ‫همه‬ public ‫بود‬ ! ‫زبان‬ Simula .‫موند‬ ‫باقی‬ ‫آکادمیک‬ ‫حد‬ ‫در‬ ‫شی‬ ‫که‬ ‫باری‬ ‫اولین‬ ‫اما‬ ‫زبان‬ ‫با‬ ،‫شد‬ ‫کامپیوتر‬ ‫دنیای‬ ‫وارد‬ ‫عمل‬ ‫در‬ ‫گرایی‬ Smalltalk ‫عبارت‬ ‫که‬ ‫بود‬ ‫باری‬ ‫اولین‬ ‫اینجا‬ ‫و‬ ‫بود؛‬ Object-oriented programming ‫علی‬ ‫توسط‬ ‫حضرت‬ Alan Kay ‫سر‬ ‫زبان‬ ‫افتاد‬ ‫ها‬ . ‫زبان‬ Smalltalk ‫شی‬ ‫تمام‬ ‫زبان‬ ‫یه‬ ‫شی‬ ‫یک‬ ‫زبان‬ ‫این‬ ‫در‬ ‫چیز‬ ‫همه‬ ‫یعنی‬ .‫بود‬ ‫گرا‬ ‫خود‬ ‫حتی‬ .‫هست‬ class ‫مثل‬ ‫مقادیری‬ ‫یا‬ .‫هست‬ ‫شی‬ ‫یک‬ ‫هم‬ 2 ‫یا‬ 3 ‫هستند‬ ‫شی‬ ‫هم‬ . ‫در‬ ‫همچنین‬ SmallTalk ‫ایده‬ ‫روی‬ ‫ی‬ message passing ‫زیر‬ ‫عبارت‬ ‫مثال‬ .‫است‬ ‫شده‬ ‫تاکید‬ ‫بگیرید‬ ‫نظر‬ ‫در‬ ‫را‬ ... ‫گفتی‬ ‫در‬ ‫که‬ ‫م‬ smalltalk ‫یعنی‬ .‫است‬ ‫شی‬ ‫یک‬ ‫چیز‬ ‫همه‬ 3 ‫و‬ 4 .‫هستن‬ ‫شی‬ ‫همگی‬ + ‫و‬ ‫شی‬ ‫به‬ ‫را‬ + ‫پیغام‬ ‫یعنی‬ ‫باال‬ ‫عبارت‬ 3 ‫شی‬ .‫برسان‬ 4 ‫آن‬ ‫پارامتر‬ ‫حکم‬ ‫هم‬ ‫دارد‬ ‫را‬ ‫مسیج‬ . ‫شی‬ ‫اینجا‬ 3 ‫حالت‬ message broker ‫ران‬ ‫سیستم‬ ‫یعنی‬ !‫دارد‬ ‫به‬ ‫را‬ + ‫پیغام‬ ‫تایم‬ ‫شی‬ 3 ‫شی‬ ‫و‬ ‫میرساند‬ 3 ‫با‬ ‫که‬ ‫میگیرد‬ ‫تصمیم‬ ‫کند‬ ‫کار‬ ‫چه‬ ‫آن‬ . ‫حالت‬ ‫به‬ ‫شی‬ ،‫پیشفرض‬ 3 ‫هم‬ ‫متدی‬ ‫آیا‬ ‫ببیند‬ ‫تا‬ ‫میچرخد‬ ‫یا‬ ‫دارد‬ ‫مسیج‬ ‫این‬ ‫با‬ ‫نام‬ ‫کنیم‬ ‫تصور‬ ‫میتوانیم‬ ‫بنابراین‬ .‫میکند‬ ‫اجرا‬ ‫را‬ ‫متد‬ ‫آن‬ ‫صورت‬ ‫این‬ ‫در‬ ‫نه؟‬ ‫میخورد‬ ‫رقم‬ ‫دارد‬ ‫این‬ ‫مشابه‬ ‫اتفاقی‬ ‫که‬ : 3->plus(4) ‫می‬ .‫دهید‬ ‫تغییر‬ ‫را‬ ‫رفتار‬ ‫این‬ ‫توانید‬ ‫می‬ ‫شما‬ ‫اما‬ ‫توانید‬ ‫شی‬ ‫برای‬ 3 ‫تعیین‬ ‫هم‬ ‫متد‬ ‫فراخوانی‬ ‫جای‬ ‫به‬ ،‫گرفت‬ ‫پیغامی‬ ‫چنین‬ ‫هربار‬ ‫که‬ ‫کنید‬ ‫کار‬ ،‫نام‬ ‫دهد‬ ‫انجام‬ ‫دیگری‬ . ‫با‬ ‫شما‬ ‫ذهنیت‬ ‫اینجا‬ message ‫و‬ ‫ها‬ message broker ‫مدل‬ ‫مشابه‬ .‫هست‬ ‫طرف‬ ‫ها‬ Actor. ‫عنوان‬ ‫به‬ ‫که‬ ‫هست‬ ‫چیزی‬ ‫این‬ ‫آیا‬ OOP ‫میشناسید؟‬
  • 2. ‫داریم؟‬ ‫چه‬ ‫کار‬ ‫اینجای‬ ‫تا‬ ‫خب‬ class ‫و‬ inheritance ‫بر‬ ‫مبتنی‬ ‫مورفیسم‬ ‫پلی‬ ‫و‬ subtyping ‫همچنین‬ message passing ‫تفسیر‬ ‫تاسف‬ ‫کمال‬ ‫با‬ ‫چون‬ .‫نداریم‬ ‫آن‬ ‫با‬ ‫کاری‬ ‫ما‬ ‫که‬ ‫است‬ ‫آن‬ ‫از‬ ‫متفاوت‬ ‫گرایی‬ ‫شی‬ ‫از‬ ‫عام‬ ! ‫بعدی‬ ‫موضوع‬ ‫به‬ ‫میرسیم‬ : Encapsulation ‫مفهوم‬ Encapsulation ‫هر‬ ‫یا‬ ،‫کامپوننت‬ ،‫ماژول‬ ،‫(کالس‬ ‫کد‬ ‫واحدهای‬ ‫یعنی‬ ‫چیزی‬ ‫می‬ ‫را‬ ‫اسمش‬ ‫که‬ ‫یک‬ ‫خود‬ ‫برای‬ ‫کدام‬ ‫هر‬ )‫گذارید‬ API ‫و‬ ،‫میکنند‬ ‫مشخص‬ ‫عمومی‬ ‫همین‬ ‫طریق‬ ‫از‬ ‫فقط‬ ‫باهم‬ ‫واحدها‬ ‫ارتباط‬ API ‫جزییات‬ ‫به‬ ‫نباید‬ ‫و‬ ‫است‬ ‫عمومی‬ ‫هم‬ ‫داخلی‬ (state ‫صحنه‬ ‫پشت‬ ‫توابع‬ ‫و‬ ) ‫باشند‬ ‫داشته‬ ‫کاری‬ . ‫خواننده‬ ‫بین‬ ‫در‬ ‫برنامه‬ ‫مدل‬ ‫همه‬ ،‫نوشته‬ ‫این‬ ‫های‬ ‫آن‬ .‫دارد‬ ‫وجود‬ ‫نویس‬ ‫هایی‬ ‫زبان‬ ‫با‬ ‫که‬ ‫های‬ oo ‫آن‬ .‫میکنند‬ ‫کار‬ ‫با‬ ‫که‬ ‫هایی‬ fp ‫می‬ ‫کار‬ ‫آن‬ .‫کنند‬ ‫که‬ ‫هایی‬ procedural ‫میزنن‬ ‫کد‬ ... ‫گرفتن‬ ‫نظر‬ ‫در‬ ‫بدون‬ ‫شده‬ ‫حال‬ ‫به‬ ‫آیا‬ :‫است‬ ‫این‬ ‫من‬ ‫سوال‬ Encapsulation ‫کدنویسی‬ ‫کنید؟‬ ‫رعایت‬ Encapsulation ‫همه‬ ‫در‬ .‫است‬ ‫روتین‬ ‫کامال‬ ‫رویه‬ ‫یک‬ ‫زبان‬ ‫ی‬ ‫پارادایم‬ ‫و‬ ‫ها‬ ‫ها‬ ‫است‬ ‫کاری‬ ‫حداقل‬ ‫این‬ .‫است‬ ‫عمومی‬ ‫قانون‬ ‫یک‬ ‫مثل‬ .‫میکنیم‬ ‫رعایت‬ ‫را‬ ‫آن‬ ‫ما‬ ‫کنیم‬ ‫رعایت‬ ‫جا‬ ‫همه‬ ‫را‬ ‫آن‬ ‫میکنیم‬ ‫سعی‬ ‫که‬ . ‫که‬ ‫میشود‬ ‫تصور‬ ‫اینطور‬ ‫چرا‬ ‫پس‬ Encapsulation ‫در‬ ‫منحصرا‬ ‫فقط‬ ‫که‬ ‫چیزیست‬ oop ‫دارد؟‬ ‫وجود‬ ‫دارد‬ ‫دلیل‬ ‫دو‬ ‫من‬ ‫نظر‬ ‫به‬ : ،‫افراد‬ ‫از‬ ‫زیادی‬ ‫بخش‬ ‫چون‬ :‫اول‬ ‫دلیل‬ Encapsulation ‫با‬ ‫را‬ Access modifier ‫ها‬ ‫می‬ ‫ایده‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫نه‬ ‫و‬ ،‫شناسند‬ ‫می‬ ‫فکر‬ ‫یعنی‬ !‫جامع‬ ‫ی‬ ‫مثل‬ ‫چیزهایی‬ ‫کنند‬ public ‫و‬ private ‫همان‬ Encapsulation ‫که‬ ‫حالی‬ ‫در‬ .‫است‬ Encapsulation ‫ایده‬ ‫یک‬ ‫کلی‬ ‫ی‬ ‫ندارد‬ ‫اینها‬ ‫به‬ ‫ربطی‬ ‫و‬ ‫است‬ . ‫حقیقت‬ ‫در‬ Access modifier ‫کام‬ ‫برای‬ ‫اعالن‬ ‫نوعی‬ ‫تنها‬ ‫در‬ ‫تا‬ ‫هستند‬ ‫مفسر‬/‫پایلر‬ ‫دهند‬ ‫تذکر‬ ‫شما‬ ‫به‬ ،‫پرتی‬ ‫حواس‬ ‫صورت‬ . ‫چیز‬ ‫همه‬ ‫اگر‬ ‫حتی‬ public ‫بازمیتوان‬ ‫هم‬ ‫باشد‬ Encapsulation ‫کدها‬ .‫کرد‬ ‫رعایت‬ ‫را‬ ‫نمی‬ ‫که‬ ‫خودشان‬ ‫باید‬ ‫شما‬ .‫کنند‬ ‫استفاده‬ ‫هم‬ ‫اعضای‬ ‫از‬ ‫بروند‬ ‫دزدکی‬ ‫توانند‬ ‫آن‬ ‫کنید‬ ‫تایپ‬ ‫را‬ ‫ها‬ ! ‫بخش‬ ‫شدند‬ ‫باعث‬ ‫که‬ ‫زبانی‬ ‫دو‬ :‫دوم‬ ‫دلیل‬ ‫با‬ ‫افراد‬ ‫از‬ ‫بزرگی‬ OOP ‫آشنا‬ ،‫شوند‬ ++C ‫و‬ Java ‫ماژول‬ ‫سیستم‬ ‫دارای‬ ‫که‬ ‫است‬ ‫سالی‬ ‫چند‬ ‫تنها‬ ‫دو‬ ‫هر‬ .‫بودند‬ ‫شده‬ ‫نبودند‬ ‫ماژول‬ ‫دارای‬ ‫روزها‬ ‫آن‬ ‫در‬ ‫و‬ ‫اند‬ . ‫وظیفه‬ ‫زمان‬ ‫آن‬ ‫در‬ ‫بنابراین‬ ‫دوش‬ ‫بر‬ ‫هم‬ ‫ماژول‬ ‫ی‬ class ‫از‬ ‫استفاده‬ ‫و‬ ‫افتاد‬ Access modifier ‫راه‬ ‫تنها‬ ،‫کالس‬ ‫در‬ ‫ها‬ ‫برنامه‬ ‫بود‬ ‫ماژوالر‬ ‫نویسی‬ . ‫خیلی‬ ‫شی‬ ‫بدون‬ ‫میکنند‬ ‫تصور‬ ‫هنوزه‬ ‫که‬ ‫هم‬ ‫هنوز‬ ‫ها‬ ‫کدهای‬ ‫توان‬ ‫نمی‬ ‫گرایی‬ ‫نوشت‬ ‫ماژوالر‬ . ‫است‬ ‫گرفته‬ ‫نشات‬ ‫جا‬ ‫همین‬ ‫از‬ ‫شبهه‬ ‫این‬ ‫میکنم‬ ‫فکر‬ ‫من‬ ‫و‬ .
  • 3. ‫چیه؟‬ ‫گرایی‬ ‫شی‬ ‫پس‬ ،‫توصیفات‬ ‫این‬ ‫با‬ ‫خب‬ ‫تعریف‬ ‫طبق‬ Alan Kay: ‫شی‬ ‫یعنی‬ ‫تنها‬ ‫من‬ ‫نظر‬ ‫از‬ ‫گرایی‬ « ‫پیام‬ ‫ها‬ » ‫نگه‬ ، ‫کردن‬ ‫مخفی‬ ‫و‬ ‫محافظت‬ ‫و‬ ‫داری‬ ‫پروسه‬ ‫دیگر‬ ‫از‬ ‫پروسه‬ ‫هر‬ ‫وضعیت‬ ‫و‬ ،‫ها‬ late-binding ‫است‬ ‫چیز‬ ‫همه‬ ‫برای‬ . ‫که‬ ‫چیزی‬ kay ‫یک‬ ‫توصیف‬ ‫بلکه‬ ،‫هست‬ ‫روش‬ ‫یک‬ ‫توصیف‬ ‫تنها‬ ‫نه‬ ،‫میده‬ ‫توضیح‬ ‫ران‬ ‫سیستم‬ ‫ارلنگ‬ ‫سیستمی‬ ‫چنین‬ ‫از‬ ‫نمونه‬ ‫بارزترین‬ .‫است‬ ‫پیشرفته‬ ‫تایم‬ ‫اصال‬ ‫که‬ ‫زبانی‬ .‫هست‬ oop ‫و‬ ‫نیست‬ ‫واقع‬ ‫در‬ fp ‫نیست؟‬ ‫جالب‬ !‫هست‬ oop ‫زبانی‬ ‫ترین‬ ‫زبان‬ ‫یک‬ ‫داره‬ ‫وجود‬ ‫حاضر‬ ‫حال‬ ‫در‬ ‫که‬ fp ‫بخونید‬ ‫رو‬ ‫قضیه‬ ‫آخر‬ ‫تا‬ !‫هست‬ ‫خودتون‬ ... ‫تعریف‬ ‫اما‬ kay ‫شی‬ ‫عنوان‬ ‫به‬ ‫شما‬ ‫که‬ ‫نیست‬ ‫چیزی‬ ‫اون‬ ، ‫می‬ ‫گرایی‬ .‫شناسید‬ ‫درسته؟‬ ‫شی‬ ،‫بعد‬ ‫به‬ ‫اینجا‬ ‫از‬ ‫یک‬ ‫به‬ ‫تبدیل‬ ،‫سیستم‬ ‫یک‬ ‫توصیف‬ ‫جای‬ ‫به‬ ‫گرایی‬ « ‫تفکر‬ » ‫میشه‬ ! ‫قابلیت‬ ‫از‬ ‫سری‬ ‫یک‬ ‫اگر‬ ‫اما‬ ،‫بیفته‬ ‫اتفاق‬ ‫جا‬ ‫همه‬ ‫میتونه‬ ‫که‬ ‫تفکری‬ ‫ها‬ ‫پیاده‬ ،‫باشه‬ ‫دسترس‬ ‫در‬ ‫مستقیما‬ ‫راحت‬ ‫ما‬ ‫برای‬ ‫سازیش‬ ‫میشه‬ ‫تر‬ . ‫شی‬ ‫توصیف‬ ‫موقع‬ ‫همیشه‬ ‫پس‬ ‫که‬ ‫موارد‬ ‫سری‬ ‫یک‬ ‫کردن‬ ‫لیست‬ ‫به‬ ‫میرسیم‬ ،‫گرایی‬ ‫اون‬ ‫حضور‬ ‫صورت‬ ‫در‬ ‫شی‬ ‫از‬ ‫استفاده‬ ‫حال‬ ‫در‬ ‫که‬ ‫میکنیم‬ ‫تصور‬ ،‫ها‬ ‫هستم‬ ‫گرایی‬ : - ‫کالس‬ - ‫وراثت‬ - ‫پلی‬ ‫بر‬ ‫مبتنی‬ ‫مورفیسم‬ subtyping - ‫و‬ Encapsulation ‫همون‬ ‫عادی‬ ‫حالت‬ ‫در‬ ‫که‬ ‫کالس‬ struct ‫زبان‬ ‫همه‬ ‫در‬ ‫بیش‬ ‫و‬ ‫کم‬ .‫هست‬ ‫توابع‬ ‫و‬ ‫ها‬ ‫هست‬ ‫چیزی‬ ‫چنین‬ . ‫قضیه‬ Encapsulation ‫همه‬ ‫در‬ ‫و‬ ‫هست‬ ‫عمومی‬ ‫موضوع‬ ‫یک‬ ‫که‬ ‫هم‬ ‫ماژوالر‬ ‫کدهای‬ ‫ی‬ ‫میشه‬ ‫رعایت‬ . ‫چی‬ ‫خب‬ ‫می‬ ‫باقی‬ ‫وسط‬ ‫این‬ ‫مختص‬ ‫فقط‬ ‫و‬ ‫فقط‬ ‫که‬ ‫داره‬ ‫وجود‬ ‫چی‬ ‫مونه؟‬ oop ‫و‬ ‫هست‬ ‫دیگه‬ ‫جای‬ ‫در‬ ‫نمیشه؟‬ ‫دیده‬ ‫ای‬ ‫بر‬ ‫مبتنی‬ ‫مورفیسم‬ ‫پلی‬ ‫و‬ ‫وراثت‬ ‫میده‬ ‫قد‬ ‫من‬ ‫عقل‬ ‫به‬ ‫که‬ ‫چیزی‬ ‫تنها‬ subtyping ‫هست‬ . ‫فرد‬ ‫به‬ ‫منحصر‬ ‫خصوصیت‬ ‫این‬ ،‫اینکه‬ ‫عجیب‬ ‫و‬ oop ‫در‬ ‫که‬ ‫هست‬ ‫خصوصیتی‬ ‫همون‬ ، ‫مکتب‬ ‫خود‬ oop ‫میگن‬ ‫هم‬ ‫جمله‬ !‫کنید‬ ‫دوری‬ ‫ازش‬ ‫باید‬ ‫معروف‬ ‫ی‬ « ‫را‬ ‫کامپوزیشن‬ ‫دهید‬ ‫ترجیح‬ ‫وراثت‬ ‫به‬ !» ‫شی‬ ‫این‬ ‫هست‬ ‫عجیبی‬ ‫چیز‬ ‫یک‬ ‫اصال‬ ‫گرایی‬ ... ‫نظر‬ « ‫شخصی‬ » ‫چیه؟‬ ‫من‬ ‫شی‬ ‫که‬ ‫اینه‬ ‫من‬ ‫نظر‬ ‫که‬ ‫هست‬ ‫چیزی‬ ‫اون‬ ‫گرایی‬ Kay ‫تمام‬ .‫میگه‬ . ‫عنوان‬ ‫به‬ ‫افراد‬ ‫بیشتر‬ ‫که‬ ‫چیزی‬ ‫این‬ ‫اما‬ ‫شی‬ ‫میگم‬ ‫بهش‬ ‫من‬ ،‫میشناسن‬ ‫گرایی‬ « ‫کال‬ ‫گرایی‬ ‫س‬ !» ‫برنامه‬ ‫یعنی‬ ‫کالس‬ ‫بر‬ ‫مبتنی‬ ‫نویسی‬ .
  • 4. ‫کالس‬ ‫مبنای‬ ‫بر‬ ‫مختلف‬ ‫های‬ ‫بخش‬ ‫سازی‬ ‫مدل‬ ‫یعنی‬ ‫این‬ ‫بین‬ ‫ارتباط‬ ‫ایجاد‬ ‫و‬ ،‫ها‬ ‫به‬ ‫کالس‬ ‫نبود‬ ،‫تفکر‬ ‫این‬ ‫در‬ ...‫تایپینگ‬ ‫ساب‬ ‫و‬ ‫وراثت‬ ‫مبنای‬ ‫بر‬ ‫ها‬ ‫مدل‬ ‫برنامه‬ ‫اصال‬ ‫و‬ ‫است‬ ‫اسپاگتی‬ ‫و‬ ‫کثیف‬ ‫و‬ ‫ریخته‬ ‫درهم‬ ‫کدهای‬ ‫معنی‬ ‫به‬ ‫نویسی‬ ‫حا‬ ‫این‬ ‫از‬ ‫غیر‬ ‫نیست‬ ‫ممکن‬ ‫لت‬ . ‫موضوع‬ ‫و‬ ،‫کنیم‬ ‫بندی‬ ‫دسته‬ ‫رو‬ ‫هم‬ ‫به‬ ‫مرتبط‬ ‫توابع‬ ‫و‬ ‫دیتا‬ ‫اینکه‬ Encapsulation ‫برنامه‬ ‫دیگش‬ ‫اسم‬ ‫این‬ ،‫کنیم‬ ‫رعایت‬ ‫هم‬ ‫رو‬ ‫همه‬ ‫در‬ .‫هست‬ ‫ماژوالر‬ ‫نویسی‬ ‫زبان‬ ‫یک‬ ‫که‬ ‫موارد‬ ‫این‬ ‫رعایت‬ ‫صرف‬ ‫به‬ ‫آیا‬ .‫میشه‬ ‫رعایت‬ ‫داره‬ ‫وجود‬ ‫هم‬ ‫ها‬ ‫داریم‬ ‫ما‬ ‫هستن‬ ‫عمومی‬ ‫مباحث‬ ‫سری‬ oop ‫می‬ ‫کار‬ ‫کنیم؟‬ ‫هم‬ ‫هسکل‬ ‫یعنی‬ ‫میکنن؛‬ ‫رو‬ ‫کار‬ ‫همین‬ ‫هم‬ ‫هسکل‬ ‫در‬ ‫مثال‬ oop .‫نمیدونم‬ ...‫هست؟‬ ‫این‬ ‫که‬ ‫میدونم‬ ‫فقط‬ ...‫شما‬ ‫خود‬ ‫به‬ ‫میسپرم‬ ‫رو‬ ‫برداشت‬ ‫این‬ ‫مثبتی‬ ‫موارد‬ ‫ها‬ ‫موارد‬ ‫این‬ ‫از‬ ‫کدوم‬ ‫هیچ‬ ‫با‬ ‫من‬ .‫هست‬ ‫الزم‬ ‫جا‬ ‫همه‬ ‫در‬ ‫شون‬ ‫رعایت‬ ‫و‬ ‫هستند‬ ‫اون‬ ‫روی‬ ‫هم‬ ‫خیلی‬ ‫اتفاقا‬ ،‫هیچ‬ ‫که‬ ‫ندارم‬ ‫مشکلی‬ ‫ها‬ ‫دارم‬ ‫تاکید‬ ... ‫اما‬ oop ‫در‬ ‫معروف‬ ‫قول‬ ‫به‬ ، « ‫خیابان‬ ‫کف‬ » ‫داریم‬ ‫واقعیت‬ ‫در‬ ‫که‬ ‫چیزی‬ ‫اون‬ ‫و‬ ‫مدل‬ ‫شی‬ ‫قالب‬ ‫در‬ ‫باید‬ ‫چیز‬ ‫همه‬ ‫اون‬ ‫در‬ ‫که‬ ‫نگرشی‬ ‫مدل‬ ‫اون‬ ‫یعنی‬ ،‫میبینیم‬ ‫و‬ ‫موضوع‬ ‫هر‬ ‫مناسب‬ ‫که‬ ‫نگرشی‬ ‫چنین‬ ‫اینکه‬ ‫بدتر‬ ‫و‬ ‫بشه‬ ‫بندی‬ ‫طبقه‬ ‫و‬ ‫سازی‬ ‫مساله‬ ‫و‬ ‫زبان‬ ‫کل‬ ‫به‬ ‫میشه‬ ‫داده‬ ‫تعمیم‬ ،‫نیست‬ ‫ای‬ ‫در‬ ‫حل‬ ‫راه‬ ‫تنها‬ ‫میشه‬ ‫دسترس‬ . ‫برنامه‬ ‫در‬ ‫من‬ ‫نظر‬ ‫از‬ ‫داریم‬ ‫چیز‬ ‫دو‬ ‫نویسی‬ : ۱ : ‫دیتا‬ ۲ : ‫تابع‬ . ‫برنامه‬ ‫در‬ ‫که‬ ‫هم‬ ‫کاری‬ ‫هست‬ ‫دیتا‬ ‫کردن‬ ‫ترنسفرم‬ ‫میدیم‬ ‫انجام‬ ‫نویسی‬ . ‫حل‬ ‫راه‬ ‫از‬ ‫بسیاری‬ ‫میکنم‬ ‫حس‬ ‫در‬ ‫که‬ ‫هایی‬ oop .‫هست‬ ‫کاری‬ ‫اضافه‬ ‫نوعی‬ ‫میبینم‬ ‫خیلی‬ ‫که‬ ‫میدونم‬ ‫عقید‬ ‫هم‬ ‫من‬ ‫با‬ ‫هاتون‬ ‫نیستید‬ ‫ه‬ . ‫شی‬ :‫پایانی‬ ‫سوال‬ ‫حاال‬ ‫چیه؟‬ ‫دقیقا‬ ‫گرایی‬