Kahibaro
Discord Login Register

برنامه‌نویسی شی‌گرا چیست؟

دید کلی از برنامه‌نویسی شی‌گرا

برنامه‌نویسی شی‌گرا (Object-Oriented Programming یا به‌اختصار OOP) یک «روش فکر کردن» و «سازمان‌دهی کد» است. در این روش، به‌جای این‌که فقط دنباله‌ای از دستورها بنویسیم، برنامه را به مجموعه‌ای از «اشیاء» (Object) تبدیل می‌کنیم؛ هر شیء چیزی را در دنیای واقعی یا در منطق برنامه نمایندگی می‌کند.

ایدهٔ اصلی:
برنامه را طوری می‌نویسیم که انگار با یک مجموعه «چیز» (مثل کاربر، کتاب، سفارش، ماشین، حساب بانکی) کار می‌کنیم، نه فقط با متغیرهای پراکنده و توابع جدا از هم.

به‌طور شهودی:

هر دو روش مفیدند، ولی برنامه‌نویسی شی‌گرا مخصوصاً وقتی برنامه بزرگ‌تر و پیچیده‌تر می‌شود، به منظم و قابل‌فهم ماندن کد کمک زیادی می‌کند.

ایدهٔ «شیء» در زندگی روزمره

برای درک OOP، از یک مثال واقعی کمک می‌گیریم: «ماشین».

یک ماشین در دنیای واقعی:

در برنامه‌نویسی شی‌گرا، ما کاری شبیه همین انجام می‌دهیم:
برای مفهوم «ماشین» یک «شیء نرم‌افزاری» می‌سازیم که:

در نتیجه:

در پایتون، این «چیز واحد» همان شیء است.

چرا اصلاً شی‌گرا؟

برای یک برنامهٔ چند خطی شاید مهم نباشد، ولی وقتی برنامه رشد می‌کند، شی‌گرا بودن مزیت‌های زیادی دارد:

۱. نزدیک شدن کد به دنیای واقعی

در مسائل واقعی معمولاً با «موجودیت‌ها» سروکار داریم، نه فقط با اعداد و رشته‌ها:

برنامه‌نویسی شی‌گرا کمک می‌کند هرکدام از این‌ها را به‌عنوان یک «نوع شیء» تعریف کنیم و خیلی شبیه به دنیای واقعی با آن‌ها کار کنیم.

۲. سازمان‌دهی و تقسیم کد

در پروژه‌های بزرگ، ده‌ها و صدها فایل و هزاران خط کد وجود دارد. OOP کمک می‌کند:

وقتی برای هر «چیز» یک کلاس و شیء داریم، راحت‌تر می‌توانیم بگوییم:
«اگر مشکلی در مدیریت سفارش‌ها است، باید سراغ کدی بروم که مربوط به Order است.»

۳. قابلیت استفادهٔ مجدد (Reusability)

اگر برای چیزی یک کلاس خوب طراحی کنیم، می‌توانیم در جاهای مختلف برنامه، بارها از آن استفاده کنیم.

مثال ساده:

این استفادهٔ مجدد، هم وقت را کم می‌کند هم خطا را.

۴. نگهداری و توسعهٔ راحت‌تر

بیشترِ وقت یک برنامه‌نویس صرف «تغییر دادن» و «بهبود دادن» برنامه‌های موجود می‌شود، نه فقط نوشتن از صفر.

برنامه‌نویسی شی‌گرا کمک می‌کند:

این کار باعث می‌شود:

۵. همکاری تیمی بهتر

در پروژه‌های گروهی، OOP کمک می‌کند:

این باعث می‌شود:

نگاه مفهومی: داده + رفتار با هم

در برنامه‌های ساده معمولاً داده و رفتار جدا هستند:

در برنامه‌نویسی شی‌گرا، این دو را کنار هم می‌گذاریم:

این ترکیب «داده + رفتار» در یک واحد، باعث می‌شود:

نمونهٔ سادهٔ ذهنی (بدون ورود به جزئیات فنی کلاس‌ها)

فرض کنید در برنامه‌تان با «دانشجو» کار می‌کنید. در حالت شی‌گرا، شما:

به‌صورت مفهومی، شبیه این است:

دانشجو:
    ویژگی‌ها:
        نام
        شماره_دانشجویی
        نمرات
    کارها:
        محاسبه_معدل()
        چاپ_کارنامه()

فعلاً لازم نیست بدانید دقیقاً در پایتون چطور پیاده‌سازی می‌شود؛ نکتهٔ مهم این است که:

مفهوم «شیء» در پایتون

در پایتون، تقریباً همه‌چیز یک «شیء» است:

یعنی:

مثال:

text = "salam"
print(text.upper())  # SALAM

در اینجا:

این یعنی شما عملاً از قبل دارید با اشیاء کار می‌کنید، حتی اگر هنوز واژه‌های «کلاس» و «OOP» را نیاموخته باشید.

مزایا و معایب در سطح ابتدایی

هیچ روشی جادویی نیست؛ OOP هم مزایا و هم محدودیت‌هایی دارد.

مزایا (در سطحی که الان نیاز داریم بدانیم)

چالش‌ها برای مبتدیان

هدف این فصل این است که به‌تدریج این مفاهیم را برایتان قابل‌لمس و کاربردی کند.

مقایسهٔ شهودی: شی‌گرا در برابر غیرشی‌گرا

برای دید کلی، فرض کنید برنامه‌ای داریم برای مدیریت نمرات دانشجو.

رویکرد غیرشی‌گرا (دستوری)

کد ذهنی:

names = [...]
grades = [...]
def average(grades):
    ...
def print_report(names, grades):
    ...

باید حواسمان باشد که همیشه نام‌ها و نمرات با هم هماهنگ بمانند و توابع ورودی درست بگیرند.

رویکرد شی‌گرا

کد ذهنی:

دانشجو:
    نام
    نمرات
    محاسبه_معدل()
    چاپ_گزارش()

این رویکرد کمک می‌کند «منطق مربوط به دانشجو» در یک جا جمع شود و بقیهٔ برنامه فقط با اشیاء «دانشجو» کار کند، نه با لیست‌های پراکنده.

جایگاه OOP در مسیر یادگیری شما

تا این‌جا در دوره، شما:

برنامه‌نویسی شی‌گرا روی همین پایه‌ها سوار می‌شود:

در بخش‌های بعدی این فصل، به‌صورت گام‌به‌گام می‌بینید:

تا همین‌جا کافی است این ایدهٔ کلی در ذهن‌تان بماند:

در برنامه‌نویسی شی‌گرا، به‌جای فکر کردن فقط به «دستورها»،
به «چیزهایی که در مسئله وجود دارند» فکر می‌کنیم
و برای هرکدام، یک مدل نرم‌افزاری می‌سازیم که هم داده داشته باشد و هم رفتار.

Views: 8

Comments

Please login to add a comment.

Don't have an account? Register now!