SlideShare a Scribd company logo
OBJECT ORIENTED
VS
FUNCTIONAL
•
.‫‌هاست‬
‫ه‬‫برنام‬ ‫در‬ ‫مسائل‬ ‫حل‬ ‫برای‬ ‫روش‬ ‫یا‬ ‫شیوه‬ ‫یک‬ ،‫‌نویسی‬
‫ه‬‫برنام‬ ‫پارادایم‬
•
‫توسعه‬ ‫برای‬ ‫د‬#
‫ن‬‫‌توا‬
‫ی‬‫م‬ ‫س‬#
‫ی‬‫‌نو‬
‫ه‬‫برنام‬ ‫ه‬#
‫ک‬ ‫ت‬#
‫س‬‫ا‬ ‫‌هایی‬
‫ت‬‫یاس‬#
‫س‬ ‫و‬ ‫‌ها‬
‫ی‬‫تراتژ‬#
‫س‬‫ا‬ ،‫ول‬#
‫ص‬‫ا‬ ‫ل‬#
‫م‬‫شا‬ ‫م‬#
‫ی‬‫پارادا‬ ‫ر‬#
‫ه‬
.‫بگیرد‬ ‫کار‬ ‫به‬ ‫‌افزار‬
‫م‬‫نر‬
•
.‫‌کنند‬
‫ی‬‫م‬ ‫پیروی‬ ‫پارادایم‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫از‬ً ‫معموال‬ ‫مختلف‬ ‫‌نویسی‬
‫ه‬‫برنام‬ ‫‌های‬
‫ن‬‫زبا‬ •
‫اهمیت‬ ‫ت‬#‫درس‬ ‫م‬#‫پارادای‬ ‫انتخاب‬ ،‫‌افزار‬
‫م‬‫نر‬ ‫عه‬#‫توس‬ ‫در‬
.‫دارد‬ ‫زیادی‬
•
:‫از‬ ‫عبارتند‬ ‫‌ها‬
‫م‬‫پارادای‬ ‫‌ترین‬
‫ب‬‫محبو‬ ‫از‬ ‫تا‬ ‫دو‬
•
‫‌گرا‬
‫ی‬‫ش‬ ‫‌نویسی‬
‫ه‬‫برنام‬
•
‫تابعی‬ ‫‌نویسی‬
‫ه‬‫برنام‬
Functional programming
‫تابعی‬ ‫نویسی‬ ‫برنامه‬
•
،‫ی‬#
‫ع‬‫تاب‬ ‫ی‬#
‫س‬‫‌نوی‬
‫ه‬‫برنام‬ ‫زبان‬ ‫اولین‬
LISP
‫ه‬#
‫ه‬‫د‬ ‫اواخر‬ ‫در‬ ،
۱۹۵۰
‫کامپیوترهای‬ ‫برای‬
‫ی‬#
‫م‬‫عل‬
IBM
‫ری‬#
‫س‬
700/7000
‫فناوری‬ ‫انستیتوی‬ ‫در‬ ‫ی‬#
‫ت‬‫کار‬ ‫ک‬#
‫م‬ ‫جان‬ ‫ط‬#
‫س‬‫تو‬
.‫شد‬ ‫داده‬ ‫توسعه‬ ‫ماساچوست‬
•
‫ع‬#‫تواب‬
LISP
‫یک‬ ‫یله‬#‫‌وس‬
‫ه‬‫ب‬ ‫و‬ ‫شده‬ ‫ف‬#‫تعری‬ ‫چرچ‬ ‫الندای‬ ‫نماد‬ ‫از‬ ‫تفاده‬#‫اس‬ ‫ا‬#‫ب‬
‫میسر‬ ‫ی‬#
‫ت‬‫بازگش‬ ‫توابع‬ ‫تعریف‬ ‫تفاده‬#
‫س‬‫ا‬ ‫امکان‬ ‫تا‬ ‫‌اند‬
‫ه‬‫یافت‬ ‫ترش‬#
‫س‬‫گ‬ »‫ب‬#
‫س‬‫«برچ‬
.‫شود‬
•
.‫است‬ ‫شده‬ ‫بنا‬ ‫توابع‬ ‫مفهوم‬ ‫اساس‬ ‫بر‬ ‫تابعی‬ ‫‌نویسی‬
‫ه‬‫برنام‬
•
.‫‌کنند‬
‫ی‬‫م‬ ‫تولید‬ ‫خروجی‬ ‫و‬ ‫‌گیرند‬
‫ی‬‫م‬ ‫ورودی‬ ‫که‬ ‫توابعی‬
•
.‫ندارند‬ ‫جانبی‬ ‫اثر‬ ‫هیچ‬ ‫که‬ ‫معنا‬ ‫این‬ ‫به‬ ،‫هستند‬ ‫خالص‬ ‫توابع‬ ‫این‬
‫تابعی‬ ‫نویسی‬ ‫برنامه‬
•
:‫هستند‬ ‫یک‬ ‫درجه‬ ‫همچنین‬
•
‫منتقل‬ ‫آرگومان‬ ‫عنوان‬ ‫ه‬#‫ب‬
‫شوند‬
•
‫بازگشت‬ ‫ه‬#‫نتیج‬ ‫عنوان‬ ‫ه‬#‫ب‬
‫شوند‬ ‫داده‬
.
const a = document.querySelector('#number1').value;
const b = document.querySelector('#number2').value;
function sum(a, b)
{
return a + b;
}
function displayResult(result)
{
console.log(result);
}
‫اول‬ ‫ورودی‬
‫دوم‬ ‫ورودی‬
‫جمع‬ ‫تابع‬
‫نتیجه‬ ‫تابع‬
‫تابعی‬ ‫‌نویسی‬
‫ه‬‫برنام‬ ‫از‬ ‫‌کننده‬
‫ی‬‫پشتیبان‬ ‫‌های‬
‫ن‬‫زبا‬
Lisp
Clojure
Wolfram
Erlang
Haskell
F#
‫مزایا‬ ‫معایب‬
‫با‬ ‫پیچیدگی‬ ‫‌سازی‬
‫ه‬‫ساد‬ :‫انتزاعی‬ ‫قدرت‬
‫و‬ ‫کوچک‬ ‫توابع‬ ‫به‬ ‫مسائل‬ ‫شکستن‬
‫مستقل‬
‫جای‬ ‫به‬ ‫بازگشت‬ ‫از‬ ‫استفاده‬ :‫بازگشت‬
‫سنتی‬ ‫‌های‬
‫ه‬‫حلق‬
‫منطق‬ ‫اساس‬ ‫بر‬ ‫‌ها‬
‫ه‬‫برنام‬ :‫بودن‬ ‫منطقی‬
‫‌شوند‬
‫ی‬‫م‬ ‫نوشته‬ ‫ریاضی‬
‫با‬ ‫آشنایی‬ ‫به‬ ‫نیاز‬ :‫ریاضی‬ ‫اصطالحات‬
‫ریاضی‬ ‫مباحث‬
‫تغییر‬ ‫بدون‬ ‫‌یابی‬
‫ل‬‫اشکا‬ :‫آسان‬ ‫دیباگ‬
‫انجام‬ ‫‌تر‬
‫ع‬‫سری‬ ‫و‬ ‫‌تر‬
‫ه‬‫ساد‬ ‫وضعیت‬
‫‌شود‬
‫ی‬‫م‬
‫همزمان‬ ‫اجرای‬ :‫موازی‬ ‫‌نویسی‬
‫ه‬‫برنام‬
‫سرعت‬ ‫افزایش‬ ‫و‬ ‫تداخل‬ ‫بدون‬ ‫توابع‬
‫پردازش‬
‫ضروری‬ ‫محاسبات‬ ‫فقط‬ :‫تنبل‬ ‫ارزیابی‬
‫و‬ ‫زمان‬ ‫در‬ ‫‌جویی‬
‫ه‬‫صرف‬ ،‫‌شود‬
‫ی‬‫م‬ ‫انجام‬
‫منابع‬
Object oriented programming
‫گرا‬ ‫شی‬ ‫نویسی‬ ‫برنامه‬
‫دهه‬ ‫ر‬#‫اواخ‬ ‫در‬ »‫‌گرا‬
‫ه‬‫«روی‬ ‫و‬ »‫اختاریافته‬#‫«س‬ ‫ی‬#‫نویس‬ ‫ه‬#‫برنام‬ ‫رویکردهای‬ #
‫ع‬‫انوا‬
1970
‫دهه‬ ‫اوایل‬ ‫و‬
1980
.‫کنند‬ ‫پیدا‬ ‫ظهور‬
‫قالب‬ ‫در‬ ‫ط‬#
‫ب‬‫مرت‬ ‫ع‬#
‫ب‬‫توا‬ ‫و‬ ‫ا‬#
‫ه‬‌
‫ه‬‫داد‬ ‫ن‬#
‫آ‬ ‫در‬ ‫ه‬#
‫ک‬ ‫ت‬#
‫س‬‫ا‬ ‫ی‬#
‫ش‬‫رو‬ ‫شیءگرا‬ ‫ی‬#
‫س‬‫‌نوی‬
‫ه‬‫برنام‬
‫آن‬ ‫ع‬#
‫ب‬‫توا‬ ‫و‬ ‫ا‬#
‫ه‬‌
‫ه‬‫داد‬ ‫ه‬#
‫ک‬ ‫ت‬#
‫س‬‫ا‬ ‫تقل‬#
‫س‬‫م‬ ‫د‬#
‫ح‬‫وا‬ ‫ک‬#
‫ی‬ ‫ء‬#
‫ی‬‫ش‬ ‫ر‬#
‫ه‬ .‫‌شوند‬
‫ی‬‫م‬ ‫ع‬#
‫م‬‫ج‬ ‫اشیاء‬
‫وارد‬ ‫تغییرات‬ ‫آن‬ ‫درون‬ ‫‌های‬
‫ه‬‫داد‬ ‫ه‬#
‫ب‬ ‫د‬#
‫ن‬‫‌توان‬
‫ی‬‫نم‬ ‫ی‬#
‫ن‬‫بیرو‬ ‫ع‬#
‫ب‬‫توا‬ ‫و‬ ‫د‬#
‫ن‬‫‌ا‬
‫ه‬‫شد‬ ‫وله‬#
‫س‬‫کپ‬
.‫‌کند‬
‫ی‬‫م‬ ‫کمک‬ ‫د‬#
‫ک‬ ‫‌تر‬
‫ه‬‫ساد‬ ‫مدیریت‬ ‫و‬ ‫بهتر‬ ‫سازماندهی‬ ‫به‬ ‫روش‬ ‫این‬ .‫کنند‬
‫گرا‬ ‫شی‬ ‫نویسی‬ ‫برنامه‬
‫تابعی‬ ‫‌نویسی‬
‫ه‬‫برنام‬ ‫از‬ ‫‌کننده‬
‫ی‬‫پشتیبان‬ ‫‌های‬
‫ن‬‫زبا‬
Java
C++
Python
C#
Ruby
Swift
‫‌ها‬
‫س‬‫کال‬ ‫و‬ ‫اشیاء‬ ‫مفهوم‬
‫و‬ ‫‌ها‬
‫ی‬‫دسترس‬ ،‫وصیات‬#
‫ص‬‫خ‬ ،‫ا‬#
‫ه‬‫متد‬ ‫ف‬#
‫ی‬‫تعار‬ ‫ل‬#
‫م‬‫شا‬ ‫ه‬#
‫ک‬ ‫‌ای‬
‫ه‬‫بدن‬ ‫ی؛‬#
‫ش‬ ‫ک‬#
‫ی‬ ‫د‬#
‫ب‬‫کال‬ ‫و‬ ‫ب‬#
‫ل‬‫قا‬ :‫کالس‬
.‫است‬ ‫تغییرات‬
‫واقعی‬ ‫اشیاء‬ ‫ر‬#
‫گ‬‫نمایان‬ ‫‌توانند‬
‫ی‬‫م‬ ‫که‬ ‫خاص‬ ‫‌های‬
‫ه‬‫داد‬ ‫ا‬#
‫ب‬ ‫کالس‬ ‫از‬ ‫‌شده‬
‫ه‬‫اخت‬#
‫س‬ ‫‌های‬
‫ه‬‫نمون‬ :‫اشیاء‬
.‫باشند‬ ‫خیالی‬ ‫یا‬
‫درخواست‬ ‫ا‬#
‫ی‬ ‫ر‬#
‫ی‬‫تغی‬ ‫ه‬#
‫ن‬‫هرگو‬ ‫و‬ ‫د‬#
‫ن‬‫‌کن‬
‫ی‬‫م‬ ‫ص‬#
‫خ‬‫مش‬ ‫را‬ ‫اشیاء‬ ‫رفتار‬ ‫ه‬#
‫ک‬ ‫کالس‬ ‫ل‬#
‫خ‬‫دا‬ ‫ع‬#
‫ب‬‫توا‬ :‫ا‬#
‫ه‬‫متد‬
.‫دهند‬ ‫می‬ ‫انجام‬ ‫را‬
.‫‌کنند‬
‫ی‬‫م‬ ‫تعریف‬ ‫را‬ ‫مدل‬ ‫یک‬ ‫‌های‬
‫ی‬‫ویژگ‬ ‫که‬ ‫کالس‬ ‫درون‬ ‫متغیرهایی‬ :‫خصوصیات‬
‫چیست؟‬ ‫گرایی‬ ‫شی‬ ‫اصول‬
‫گرایی‬ ‫شی‬ ‫اصل‬ ‫چهار‬ ‫بر‬ ،‫کالس‬ ‫و‬ ‫شی‬ ‫مفاهیم‬ ‫‌بر‬
‫ه‬‫عالو‬ ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫برنامه‬ ‫رویکرد‬
:‫از‬ ‫‌اند‬
‫ت‬‫عبار‬ ‫که‬ ‫دارد‬ ‫تاکید‬ ‫نیز‬
•
»‫‌سازی‬
‫ه‬‫«کپسول‬ ‫اصل‬
(
Encapsulation
)
•
( »‫تجرید‬ | ‫«انتزاع‬ ‫اصل‬
Abstraction
)
•
( »‫‌بری‬
‫ث‬‫ار‬ | ‫«وراثت‬ ‫اصل‬
Inheritance
)
•
»‫چندریختی‬ | ‫م‬###‫مورفیس‬ ‫ی‬###‫«پل‬ ‫ل‬###‫اص‬
(
Polymorphism
)
‫‌سازی‬
‫ه‬‫کپسول‬
•
‫از‬ ‫‌ها‬
‫ن‬‫آ‬ ‫ه‬#
‫ب‬ ‫تقیم‬#
‫س‬‫م‬ ‫ترسی‬#
‫س‬‫د‬ ‫از‬ ‫جلوگیری‬ ‫و‬ ‫ی‬#
‫ش‬ ‫درون‬ ‫م‬#
‫ه‬‫م‬ ‫اطالعات‬ ‫نگهداری‬
.‫کالس‬ ‫بیرون‬
•
‫د‬#
‫ک‬ ‫امنیت‬ ‫افزایش‬
:‫دسترسی‬ ‫‌های‬
‫ت‬‫حال‬
‫خصوصی‬
.‫دسترسی‬ ‫قابل‬ ‫کالس‬ ‫همان‬ ‫درون‬ ‫از‬ ‫فقط‬
‫شده‬ ‫محافظت‬
.)‫‌ها‬
‫س‬‫(زیرکال‬ ‫فرزند‬ ‫‌های‬
‫س‬‫کال‬ ‫برای‬ ‫دسترسی‬ ‫قابل‬
‫عمومی‬
.‫کالس‬ ‫بیرون‬ ‫از‬ ‫دسترسی‬ ‫قابل‬
‫انتزاع‬
.‫جزئیات‬ ‫‌سازی‬
‫ه‬‫پیاد‬ ‫بدون‬ ‫کلی‬ ‫مفاهیم‬ ‫تعریف‬ ‫نی‬#
‫ع‬‫ی‬ #
‫ع‬‫انتزا‬
‫از‬ ‫مستقیم‬ ‫ازی‬#
‫س‬‌
‫ه‬‫نمون‬ ‫و‬ ‫د‬#
‫ن‬‫‌کن‬
‫ی‬‫م‬ ‫ص‬#
‫خ‬‫مش‬ ‫را‬ ‫اختار‬#
‫س‬ ‫ط‬#
‫ق‬‫ف‬ ‫انتزاع‬ ‫‌های‬
#
‫س‬‫کال‬
.‫نیست‬ ‫ممکن‬ ‫‌ها‬
‫ن‬‫آ‬
‫وراثت‬ ‫اصل‬
.‫ببرد‬ ‫ارث‬ ‫به‬ ‫را‬ ‫والد‬ ‫کالس‬ ‫متدهای‬ ‫و‬ ‫‌ها‬
‫ی‬‫ویژگ‬ ‫‌تواند‬
‫ی‬‫م‬ ‫فرزند‬ ‫کالس‬ ‫یعنی‬ ‫وراثت‬
.‫‌شود‬
‫ی‬‫م‬ ‫تکرار‬ ‫از‬ ‫جلوگیری‬ ‫و‬ ‫د‬#
‫ک‬ ‫از‬ ‫مجدد‬ ‫استفاده‬ ‫باعث‬ ‫اصل‬ ‫این‬
‫جدید‬ ‫متدهای‬ ‫و‬ ‫‌ها‬
‫ی‬‫ویژگ‬ ،‫والد‬ ‫‌های‬
‫ی‬‫ویژگ‬ ‫بر‬ ‫عالوه‬ ‫‌تواند‬
‫ی‬‫م‬ ‫فرزند‬ ‫کالس‬
.‫باشد‬ ‫داشته‬ ‫هم‬ ‫را‬ ‫خودش‬ ‫مخصوص‬
object oriented programing vs functional programming
‫چندریختی‬ ‫اصل‬
‫وظایف‬ ‫ا‬#
‫م‬‫ا‬ ،‫د‬#
‫ن‬‫باش‬ ‫ه‬#
‫ت‬‫داش‬ ‫د‬#
‫ل‬‫وا‬ ‫کالس‬ ‫ا‬#
‫ب‬ ‫‌نام‬
‫م‬‫ه‬ ‫متدهای‬ ‫د‬#
‫ن‬‫‌توان‬
‫ی‬‫م‬ ‫د‬#
‫ن‬‫فرز‬ ‫‌های‬
#
‫س‬‫کال‬
‫والد‬ ‫کالس‬ ‫متدهای‬ ‫عملکرد‬ ‫‌توان‬
‫ی‬‫م‬ ،‫ب‬#
‫ی‬‫ترت‬ ‫ن‬#
‫ی‬‫ا‬ ‫ه‬#
‫ب‬ .‫باشد‬ ‫متفاوت‬ ‫د‬#
‫ن‬‫‌توا‬
‫ی‬‫م‬ ‫ا‬#
‫ه‬‌
‫ن‬‫آ‬
.‫کرد‬ ‫‌سازی‬
‫ه‬‫پیاد‬ ‫مختلف‬ ‫‌های‬
‫ه‬‫شیو‬ ‫به‬ ‫فرزند‬ ‫‌های‬
‫س‬‫کال‬ ‫در‬ ‫را‬
object oriented programing vs functional programming
‫مزایا‬ ‫معایب‬
‫بودن‬ ‫ماژوالر‬ ‫کدنویسی‬ ‫زیاد‬ ‫حجم‬
‫کدها‬ ‫از‬ ‫مجدد‬ ‫استفاده‬ ‫قابلیت‬
‫زبان‬ ‫چند‬ ‫در‬ ‫‌سازی‬
‫ه‬‫پیاد‬ ‫قابل‬
‫‌نویسی‬
‫ه‬‫برنام‬
‫‌وری‬
‫ه‬‫بهر‬ ‫میزان‬ ‫افزایش‬
‫شناسایی‬ ‫به‬ ‫زیاد‬ ‫زمان‬ ‫تخصیص‬
‫پروژه‬ ‫در‬ ‫‌گرایی‬
‫ی‬‫ش‬ ‫‌های‬
‫ه‬‫مولف‬
‫‌افزاری‬
‫م‬‫نر‬
‫‌پذیری‬
‫س‬‫مقیا‬ ‫و‬ ‫‌روزرسانی‬
‫ه‬‫ب‬ ‫قابلیت‬
‫باال‬ ‫‌پذیری‬
‫ف‬‫انعطا‬
object oriented programing vs functional programming
‫ویژگی‬ ‫‌گرا‬
‫ی‬‫ش‬ ‫‌نویسی‬
‫ه‬‫برنام‬ ‫تابعی‬ ‫‌نویسی‬
‫ه‬‫برنام‬
‫تمرکز‬ ‫‌ها‬
‫ن‬‫آ‬ ‫بین‬ ‫روابط‬ ‫و‬ ‫اشیاء‬ ‫ریاضی‬ ‫اعمال‬ ‫و‬ ‫توابع‬
‫‌ها‬
‫ه‬‫داد‬
‫درون‬ ‫متدها‬ ‫همراه‬ ‫به‬ ‫‌ها‬
‫ه‬‫داد‬
‫دارند‬ ‫قرار‬ ‫اشیاء‬
‫همیشه‬ ‫و‬ ‫‌کنند‬
‫ی‬‫نم‬ ‫تغییر‬ ‫‌ها‬
‫ه‬‫داد‬
‫هستند‬ ‫ثابت‬
‫ساختار‬ ‫وراثت‬ ‫و‬ ‫‌ها‬
‫س‬‫کال‬ ‫ساختار‬ ‫‌ها‬
‫ن‬‫آ‬ ‫ترکیب‬ ‫و‬ ‫خالص‬ ‫توابع‬
‫معایب‬
،‫بلندتر‬ ‫کدهای‬ ،‫بیشتر‬ ‫پیچیدگی‬
‫همزمانی‬ ‫مشکالت‬
‫برای‬ ‫‌سازی‬
‫ه‬‫پیاد‬ ‫در‬ ‫دشواری‬
‫‌تر‬
‫ه‬‫پیچید‬ ‫مسائل‬ ‫برخی‬

More Related Content

Similar to object oriented programing vs functional programming (20)

DOCX
طرح درس بسته 3 جلد 1 سال 94
pani ansari
 
DOCX
طرح درس بسته 3 جلد 1 سال 94
pani ansari
 
PDF
ceph csi vs rook and its benefit and future
Yashar Esmaildokht
 
PDF
Mohamady zahedy c#
danesh_fd
 
PDF
Aliaskari,fayazi resource sharing.markor.. .docx
fahime aliaskari
 
PPTX
programing.pptx
NasratullahMirzai2
 
PPTX
An Introduction to Word embeddings
ComInSyS
 
PDF
ابزارهای پردازش زبان طبیعی
Ehsan Asgarian
 
PPTX
Oracle ADF Presentation
Farzad Babamiri
 
PDF
آموزش پردازش تصویر با OpenCV - بخش دوم
faradars
 
PPTX
افسانه مستندسازی در پروژه‌های نرم‌افزاری
Web Standards School
 
PPTX
Javascript
javadboroji
 
PPTX
Javascript
javadboroji
 
PDF
بازاریابی دیجیتال - روز هفتم
Adel Talebi
 
PDF
یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری
Web Standards School
 
PDF
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
faradars
 
PDF
Network management 2_sample
Paktia University
 
PDF
مقدمه ای بر جمع آوری اطلاعات
iuvmtech
 
PPTX
لاراول ارائه 26 سپتامبر 2021 اسکایپ
saber tabatabaee
 
PPTX
agil software managment by scrunm in tfs
Reza Rahimy
 
طرح درس بسته 3 جلد 1 سال 94
pani ansari
 
طرح درس بسته 3 جلد 1 سال 94
pani ansari
 
ceph csi vs rook and its benefit and future
Yashar Esmaildokht
 
Mohamady zahedy c#
danesh_fd
 
Aliaskari,fayazi resource sharing.markor.. .docx
fahime aliaskari
 
programing.pptx
NasratullahMirzai2
 
An Introduction to Word embeddings
ComInSyS
 
ابزارهای پردازش زبان طبیعی
Ehsan Asgarian
 
Oracle ADF Presentation
Farzad Babamiri
 
آموزش پردازش تصویر با OpenCV - بخش دوم
faradars
 
افسانه مستندسازی در پروژه‌های نرم‌افزاری
Web Standards School
 
Javascript
javadboroji
 
Javascript
javadboroji
 
بازاریابی دیجیتال - روز هفتم
Adel Talebi
 
یادگیری و آموزش تکنولوژی‌های جدید در سال آینده - میلاد نوری
Web Standards School
 
آموزش نرم افزار صنعتی کنترل و مانیتورینگ LabVIEW
faradars
 
Network management 2_sample
Paktia University
 
مقدمه ای بر جمع آوری اطلاعات
iuvmtech
 
لاراول ارائه 26 سپتامبر 2021 اسکایپ
saber tabatabaee
 
agil software managment by scrunm in tfs
Reza Rahimy
 

object oriented programing vs functional programming

  • 2. • .‫‌هاست‬ ‫ه‬‫برنام‬ ‫در‬ ‫مسائل‬ ‫حل‬ ‫برای‬ ‫روش‬ ‫یا‬ ‫شیوه‬ ‫یک‬ ،‫‌نویسی‬ ‫ه‬‫برنام‬ ‫پارادایم‬ • ‫توسعه‬ ‫برای‬ ‫د‬# ‫ن‬‫‌توا‬ ‫ی‬‫م‬ ‫س‬# ‫ی‬‫‌نو‬ ‫ه‬‫برنام‬ ‫ه‬# ‫ک‬ ‫ت‬# ‫س‬‫ا‬ ‫‌هایی‬ ‫ت‬‫یاس‬# ‫س‬ ‫و‬ ‫‌ها‬ ‫ی‬‫تراتژ‬# ‫س‬‫ا‬ ،‫ول‬# ‫ص‬‫ا‬ ‫ل‬# ‫م‬‫شا‬ ‫م‬# ‫ی‬‫پارادا‬ ‫ر‬# ‫ه‬ .‫بگیرد‬ ‫کار‬ ‫به‬ ‫‌افزار‬ ‫م‬‫نر‬ • .‫‌کنند‬ ‫ی‬‫م‬ ‫پیروی‬ ‫پارادایم‬ ‫چند‬ ‫یا‬ ‫یک‬ ‫از‬ً ‫معموال‬ ‫مختلف‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ ‫‌های‬ ‫ن‬‫زبا‬ • ‫اهمیت‬ ‫ت‬#‫درس‬ ‫م‬#‫پارادای‬ ‫انتخاب‬ ،‫‌افزار‬ ‫م‬‫نر‬ ‫عه‬#‫توس‬ ‫در‬ .‫دارد‬ ‫زیادی‬ • :‫از‬ ‫عبارتند‬ ‫‌ها‬ ‫م‬‫پارادای‬ ‫‌ترین‬ ‫ب‬‫محبو‬ ‫از‬ ‫تا‬ ‫دو‬ • ‫‌گرا‬ ‫ی‬‫ش‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ • ‫تابعی‬ ‫‌نویسی‬ ‫ه‬‫برنام‬
  • 4. • ،‫ی‬# ‫ع‬‫تاب‬ ‫ی‬# ‫س‬‫‌نوی‬ ‫ه‬‫برنام‬ ‫زبان‬ ‫اولین‬ LISP ‫ه‬# ‫ه‬‫د‬ ‫اواخر‬ ‫در‬ ، ۱۹۵۰ ‫کامپیوترهای‬ ‫برای‬ ‫ی‬# ‫م‬‫عل‬ IBM ‫ری‬# ‫س‬ 700/7000 ‫فناوری‬ ‫انستیتوی‬ ‫در‬ ‫ی‬# ‫ت‬‫کار‬ ‫ک‬# ‫م‬ ‫جان‬ ‫ط‬# ‫س‬‫تو‬ .‫شد‬ ‫داده‬ ‫توسعه‬ ‫ماساچوست‬ • ‫ع‬#‫تواب‬ LISP ‫یک‬ ‫یله‬#‫‌وس‬ ‫ه‬‫ب‬ ‫و‬ ‫شده‬ ‫ف‬#‫تعری‬ ‫چرچ‬ ‫الندای‬ ‫نماد‬ ‫از‬ ‫تفاده‬#‫اس‬ ‫ا‬#‫ب‬ ‫میسر‬ ‫ی‬# ‫ت‬‫بازگش‬ ‫توابع‬ ‫تعریف‬ ‫تفاده‬# ‫س‬‫ا‬ ‫امکان‬ ‫تا‬ ‫‌اند‬ ‫ه‬‫یافت‬ ‫ترش‬# ‫س‬‫گ‬ »‫ب‬# ‫س‬‫«برچ‬ .‫شود‬
  • 5. • .‫است‬ ‫شده‬ ‫بنا‬ ‫توابع‬ ‫مفهوم‬ ‫اساس‬ ‫بر‬ ‫تابعی‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ • .‫‌کنند‬ ‫ی‬‫م‬ ‫تولید‬ ‫خروجی‬ ‫و‬ ‫‌گیرند‬ ‫ی‬‫م‬ ‫ورودی‬ ‫که‬ ‫توابعی‬ • .‫ندارند‬ ‫جانبی‬ ‫اثر‬ ‫هیچ‬ ‫که‬ ‫معنا‬ ‫این‬ ‫به‬ ،‫هستند‬ ‫خالص‬ ‫توابع‬ ‫این‬ ‫تابعی‬ ‫نویسی‬ ‫برنامه‬ • :‫هستند‬ ‫یک‬ ‫درجه‬ ‫همچنین‬ • ‫منتقل‬ ‫آرگومان‬ ‫عنوان‬ ‫ه‬#‫ب‬ ‫شوند‬ • ‫بازگشت‬ ‫ه‬#‫نتیج‬ ‫عنوان‬ ‫ه‬#‫ب‬ ‫شوند‬ ‫داده‬ .
  • 6. const a = document.querySelector('#number1').value; const b = document.querySelector('#number2').value; function sum(a, b) { return a + b; } function displayResult(result) { console.log(result); } ‫اول‬ ‫ورودی‬ ‫دوم‬ ‫ورودی‬ ‫جمع‬ ‫تابع‬ ‫نتیجه‬ ‫تابع‬
  • 7. ‫تابعی‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ ‫از‬ ‫‌کننده‬ ‫ی‬‫پشتیبان‬ ‫‌های‬ ‫ن‬‫زبا‬ Lisp Clojure Wolfram Erlang Haskell F#
  • 8. ‫مزایا‬ ‫معایب‬ ‫با‬ ‫پیچیدگی‬ ‫‌سازی‬ ‫ه‬‫ساد‬ :‫انتزاعی‬ ‫قدرت‬ ‫و‬ ‫کوچک‬ ‫توابع‬ ‫به‬ ‫مسائل‬ ‫شکستن‬ ‫مستقل‬ ‫جای‬ ‫به‬ ‫بازگشت‬ ‫از‬ ‫استفاده‬ :‫بازگشت‬ ‫سنتی‬ ‫‌های‬ ‫ه‬‫حلق‬ ‫منطق‬ ‫اساس‬ ‫بر‬ ‫‌ها‬ ‫ه‬‫برنام‬ :‫بودن‬ ‫منطقی‬ ‫‌شوند‬ ‫ی‬‫م‬ ‫نوشته‬ ‫ریاضی‬ ‫با‬ ‫آشنایی‬ ‫به‬ ‫نیاز‬ :‫ریاضی‬ ‫اصطالحات‬ ‫ریاضی‬ ‫مباحث‬ ‫تغییر‬ ‫بدون‬ ‫‌یابی‬ ‫ل‬‫اشکا‬ :‫آسان‬ ‫دیباگ‬ ‫انجام‬ ‫‌تر‬ ‫ع‬‫سری‬ ‫و‬ ‫‌تر‬ ‫ه‬‫ساد‬ ‫وضعیت‬ ‫‌شود‬ ‫ی‬‫م‬ ‫همزمان‬ ‫اجرای‬ :‫موازی‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ ‫سرعت‬ ‫افزایش‬ ‫و‬ ‫تداخل‬ ‫بدون‬ ‫توابع‬ ‫پردازش‬ ‫ضروری‬ ‫محاسبات‬ ‫فقط‬ :‫تنبل‬ ‫ارزیابی‬ ‫و‬ ‫زمان‬ ‫در‬ ‫‌جویی‬ ‫ه‬‫صرف‬ ،‫‌شود‬ ‫ی‬‫م‬ ‫انجام‬ ‫منابع‬
  • 9. Object oriented programming ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫برنامه‬
  • 10. ‫دهه‬ ‫ر‬#‫اواخ‬ ‫در‬ »‫‌گرا‬ ‫ه‬‫«روی‬ ‫و‬ »‫اختاریافته‬#‫«س‬ ‫ی‬#‫نویس‬ ‫ه‬#‫برنام‬ ‫رویکردهای‬ # ‫ع‬‫انوا‬ 1970 ‫دهه‬ ‫اوایل‬ ‫و‬ 1980 .‫کنند‬ ‫پیدا‬ ‫ظهور‬
  • 11. ‫قالب‬ ‫در‬ ‫ط‬# ‫ب‬‫مرت‬ ‫ع‬# ‫ب‬‫توا‬ ‫و‬ ‫ا‬# ‫ه‬‌ ‫ه‬‫داد‬ ‫ن‬# ‫آ‬ ‫در‬ ‫ه‬# ‫ک‬ ‫ت‬# ‫س‬‫ا‬ ‫ی‬# ‫ش‬‫رو‬ ‫شیءگرا‬ ‫ی‬# ‫س‬‫‌نوی‬ ‫ه‬‫برنام‬ ‫آن‬ ‫ع‬# ‫ب‬‫توا‬ ‫و‬ ‫ا‬# ‫ه‬‌ ‫ه‬‫داد‬ ‫ه‬# ‫ک‬ ‫ت‬# ‫س‬‫ا‬ ‫تقل‬# ‫س‬‫م‬ ‫د‬# ‫ح‬‫وا‬ ‫ک‬# ‫ی‬ ‫ء‬# ‫ی‬‫ش‬ ‫ر‬# ‫ه‬ .‫‌شوند‬ ‫ی‬‫م‬ ‫ع‬# ‫م‬‫ج‬ ‫اشیاء‬ ‫وارد‬ ‫تغییرات‬ ‫آن‬ ‫درون‬ ‫‌های‬ ‫ه‬‫داد‬ ‫ه‬# ‫ب‬ ‫د‬# ‫ن‬‫‌توان‬ ‫ی‬‫نم‬ ‫ی‬# ‫ن‬‫بیرو‬ ‫ع‬# ‫ب‬‫توا‬ ‫و‬ ‫د‬# ‫ن‬‫‌ا‬ ‫ه‬‫شد‬ ‫وله‬# ‫س‬‫کپ‬ .‫‌کند‬ ‫ی‬‫م‬ ‫کمک‬ ‫د‬# ‫ک‬ ‫‌تر‬ ‫ه‬‫ساد‬ ‫مدیریت‬ ‫و‬ ‫بهتر‬ ‫سازماندهی‬ ‫به‬ ‫روش‬ ‫این‬ .‫کنند‬ ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫برنامه‬
  • 12. ‫تابعی‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ ‫از‬ ‫‌کننده‬ ‫ی‬‫پشتیبان‬ ‫‌های‬ ‫ن‬‫زبا‬ Java C++ Python C# Ruby Swift
  • 13. ‫‌ها‬ ‫س‬‫کال‬ ‫و‬ ‫اشیاء‬ ‫مفهوم‬ ‫و‬ ‫‌ها‬ ‫ی‬‫دسترس‬ ،‫وصیات‬# ‫ص‬‫خ‬ ،‫ا‬# ‫ه‬‫متد‬ ‫ف‬# ‫ی‬‫تعار‬ ‫ل‬# ‫م‬‫شا‬ ‫ه‬# ‫ک‬ ‫‌ای‬ ‫ه‬‫بدن‬ ‫ی؛‬# ‫ش‬ ‫ک‬# ‫ی‬ ‫د‬# ‫ب‬‫کال‬ ‫و‬ ‫ب‬# ‫ل‬‫قا‬ :‫کالس‬ .‫است‬ ‫تغییرات‬ ‫واقعی‬ ‫اشیاء‬ ‫ر‬# ‫گ‬‫نمایان‬ ‫‌توانند‬ ‫ی‬‫م‬ ‫که‬ ‫خاص‬ ‫‌های‬ ‫ه‬‫داد‬ ‫ا‬# ‫ب‬ ‫کالس‬ ‫از‬ ‫‌شده‬ ‫ه‬‫اخت‬# ‫س‬ ‫‌های‬ ‫ه‬‫نمون‬ :‫اشیاء‬ .‫باشند‬ ‫خیالی‬ ‫یا‬ ‫درخواست‬ ‫ا‬# ‫ی‬ ‫ر‬# ‫ی‬‫تغی‬ ‫ه‬# ‫ن‬‫هرگو‬ ‫و‬ ‫د‬# ‫ن‬‫‌کن‬ ‫ی‬‫م‬ ‫ص‬# ‫خ‬‫مش‬ ‫را‬ ‫اشیاء‬ ‫رفتار‬ ‫ه‬# ‫ک‬ ‫کالس‬ ‫ل‬# ‫خ‬‫دا‬ ‫ع‬# ‫ب‬‫توا‬ :‫ا‬# ‫ه‬‫متد‬ .‫دهند‬ ‫می‬ ‫انجام‬ ‫را‬ .‫‌کنند‬ ‫ی‬‫م‬ ‫تعریف‬ ‫را‬ ‫مدل‬ ‫یک‬ ‫‌های‬ ‫ی‬‫ویژگ‬ ‫که‬ ‫کالس‬ ‫درون‬ ‫متغیرهایی‬ :‫خصوصیات‬
  • 14. ‫چیست؟‬ ‫گرایی‬ ‫شی‬ ‫اصول‬ ‫گرایی‬ ‫شی‬ ‫اصل‬ ‫چهار‬ ‫بر‬ ،‫کالس‬ ‫و‬ ‫شی‬ ‫مفاهیم‬ ‫‌بر‬ ‫ه‬‫عالو‬ ‫گرا‬ ‫شی‬ ‫نویسی‬ ‫برنامه‬ ‫رویکرد‬ :‫از‬ ‫‌اند‬ ‫ت‬‫عبار‬ ‫که‬ ‫دارد‬ ‫تاکید‬ ‫نیز‬ • »‫‌سازی‬ ‫ه‬‫«کپسول‬ ‫اصل‬ ( Encapsulation ) • ( »‫تجرید‬ | ‫«انتزاع‬ ‫اصل‬ Abstraction ) • ( »‫‌بری‬ ‫ث‬‫ار‬ | ‫«وراثت‬ ‫اصل‬ Inheritance ) • »‫چندریختی‬ | ‫م‬###‫مورفیس‬ ‫ی‬###‫«پل‬ ‫ل‬###‫اص‬ ( Polymorphism )
  • 15. ‫‌سازی‬ ‫ه‬‫کپسول‬ • ‫از‬ ‫‌ها‬ ‫ن‬‫آ‬ ‫ه‬# ‫ب‬ ‫تقیم‬# ‫س‬‫م‬ ‫ترسی‬# ‫س‬‫د‬ ‫از‬ ‫جلوگیری‬ ‫و‬ ‫ی‬# ‫ش‬ ‫درون‬ ‫م‬# ‫ه‬‫م‬ ‫اطالعات‬ ‫نگهداری‬ .‫کالس‬ ‫بیرون‬ • ‫د‬# ‫ک‬ ‫امنیت‬ ‫افزایش‬ :‫دسترسی‬ ‫‌های‬ ‫ت‬‫حال‬ ‫خصوصی‬ .‫دسترسی‬ ‫قابل‬ ‫کالس‬ ‫همان‬ ‫درون‬ ‫از‬ ‫فقط‬ ‫شده‬ ‫محافظت‬ .)‫‌ها‬ ‫س‬‫(زیرکال‬ ‫فرزند‬ ‫‌های‬ ‫س‬‫کال‬ ‫برای‬ ‫دسترسی‬ ‫قابل‬ ‫عمومی‬ .‫کالس‬ ‫بیرون‬ ‫از‬ ‫دسترسی‬ ‫قابل‬
  • 16. ‫انتزاع‬ .‫جزئیات‬ ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫بدون‬ ‫کلی‬ ‫مفاهیم‬ ‫تعریف‬ ‫نی‬# ‫ع‬‫ی‬ # ‫ع‬‫انتزا‬ ‫از‬ ‫مستقیم‬ ‫ازی‬# ‫س‬‌ ‫ه‬‫نمون‬ ‫و‬ ‫د‬# ‫ن‬‫‌کن‬ ‫ی‬‫م‬ ‫ص‬# ‫خ‬‫مش‬ ‫را‬ ‫اختار‬# ‫س‬ ‫ط‬# ‫ق‬‫ف‬ ‫انتزاع‬ ‫‌های‬ # ‫س‬‫کال‬ .‫نیست‬ ‫ممکن‬ ‫‌ها‬ ‫ن‬‫آ‬
  • 17. ‫وراثت‬ ‫اصل‬ .‫ببرد‬ ‫ارث‬ ‫به‬ ‫را‬ ‫والد‬ ‫کالس‬ ‫متدهای‬ ‫و‬ ‫‌ها‬ ‫ی‬‫ویژگ‬ ‫‌تواند‬ ‫ی‬‫م‬ ‫فرزند‬ ‫کالس‬ ‫یعنی‬ ‫وراثت‬ .‫‌شود‬ ‫ی‬‫م‬ ‫تکرار‬ ‫از‬ ‫جلوگیری‬ ‫و‬ ‫د‬# ‫ک‬ ‫از‬ ‫مجدد‬ ‫استفاده‬ ‫باعث‬ ‫اصل‬ ‫این‬ ‫جدید‬ ‫متدهای‬ ‫و‬ ‫‌ها‬ ‫ی‬‫ویژگ‬ ،‫والد‬ ‫‌های‬ ‫ی‬‫ویژگ‬ ‫بر‬ ‫عالوه‬ ‫‌تواند‬ ‫ی‬‫م‬ ‫فرزند‬ ‫کالس‬ .‫باشد‬ ‫داشته‬ ‫هم‬ ‫را‬ ‫خودش‬ ‫مخصوص‬
  • 19. ‫چندریختی‬ ‫اصل‬ ‫وظایف‬ ‫ا‬# ‫م‬‫ا‬ ،‫د‬# ‫ن‬‫باش‬ ‫ه‬# ‫ت‬‫داش‬ ‫د‬# ‫ل‬‫وا‬ ‫کالس‬ ‫ا‬# ‫ب‬ ‫‌نام‬ ‫م‬‫ه‬ ‫متدهای‬ ‫د‬# ‫ن‬‫‌توان‬ ‫ی‬‫م‬ ‫د‬# ‫ن‬‫فرز‬ ‫‌های‬ # ‫س‬‫کال‬ ‫والد‬ ‫کالس‬ ‫متدهای‬ ‫عملکرد‬ ‫‌توان‬ ‫ی‬‫م‬ ،‫ب‬# ‫ی‬‫ترت‬ ‫ن‬# ‫ی‬‫ا‬ ‫ه‬# ‫ب‬ .‫باشد‬ ‫متفاوت‬ ‫د‬# ‫ن‬‫‌توا‬ ‫ی‬‫م‬ ‫ا‬# ‫ه‬‌ ‫ن‬‫آ‬ .‫کرد‬ ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫مختلف‬ ‫‌های‬ ‫ه‬‫شیو‬ ‫به‬ ‫فرزند‬ ‫‌های‬ ‫س‬‫کال‬ ‫در‬ ‫را‬
  • 21. ‫مزایا‬ ‫معایب‬ ‫بودن‬ ‫ماژوالر‬ ‫کدنویسی‬ ‫زیاد‬ ‫حجم‬ ‫کدها‬ ‫از‬ ‫مجدد‬ ‫استفاده‬ ‫قابلیت‬ ‫زبان‬ ‫چند‬ ‫در‬ ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫قابل‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ ‫‌وری‬ ‫ه‬‫بهر‬ ‫میزان‬ ‫افزایش‬ ‫شناسایی‬ ‫به‬ ‫زیاد‬ ‫زمان‬ ‫تخصیص‬ ‫پروژه‬ ‫در‬ ‫‌گرایی‬ ‫ی‬‫ش‬ ‫‌های‬ ‫ه‬‫مولف‬ ‫‌افزاری‬ ‫م‬‫نر‬ ‫‌پذیری‬ ‫س‬‫مقیا‬ ‫و‬ ‫‌روزرسانی‬ ‫ه‬‫ب‬ ‫قابلیت‬ ‫باال‬ ‫‌پذیری‬ ‫ف‬‫انعطا‬
  • 23. ‫ویژگی‬ ‫‌گرا‬ ‫ی‬‫ش‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ ‫تابعی‬ ‫‌نویسی‬ ‫ه‬‫برنام‬ ‫تمرکز‬ ‫‌ها‬ ‫ن‬‫آ‬ ‫بین‬ ‫روابط‬ ‫و‬ ‫اشیاء‬ ‫ریاضی‬ ‫اعمال‬ ‫و‬ ‫توابع‬ ‫‌ها‬ ‫ه‬‫داد‬ ‫درون‬ ‫متدها‬ ‫همراه‬ ‫به‬ ‫‌ها‬ ‫ه‬‫داد‬ ‫دارند‬ ‫قرار‬ ‫اشیاء‬ ‫همیشه‬ ‫و‬ ‫‌کنند‬ ‫ی‬‫نم‬ ‫تغییر‬ ‫‌ها‬ ‫ه‬‫داد‬ ‫هستند‬ ‫ثابت‬ ‫ساختار‬ ‫وراثت‬ ‫و‬ ‫‌ها‬ ‫س‬‫کال‬ ‫ساختار‬ ‫‌ها‬ ‫ن‬‫آ‬ ‫ترکیب‬ ‫و‬ ‫خالص‬ ‫توابع‬ ‫معایب‬ ،‫بلندتر‬ ‫کدهای‬ ،‫بیشتر‬ ‫پیچیدگی‬ ‫همزمانی‬ ‫مشکالت‬ ‫برای‬ ‫‌سازی‬ ‫ه‬‫پیاد‬ ‫در‬ ‫دشواری‬ ‫‌تر‬ ‫ه‬‫پیچید‬ ‫مسائل‬ ‫برخی‬