|
| 1 | +.. role:: emoji-size |
| 2 | + |
| 3 | +.. meta:: |
| 4 | + :description: کتاب آموزش زبان برنامه نویسی پایتون به فارسی، آموزش شی گرایی در پایتون، تعریف کلاس در پایتون، ایجاد شی در پایتون، OOP در پایتون |
| 5 | + :keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, شی گرایی در پایتون |
| 6 | + |
| 7 | + |
| 8 | +درس ۱۷: شی گرایی (OOP) در پایتون - تعریف کلاس و ایجاد شی |
| 9 | +============================================================================ |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +پیشتر مفهوم شیگرایی شرح داده شده است (درس پنجم). در این درس میخواهیم به بررسی چگونگی پیادهسازی این مفهوم در زبان برنامه نویسی پایتون بپردازیم. پیشنیاز این درس مطالعه درس پنجم است. |
| 14 | + |
| 15 | +توجه داشته باشید، هم اکنون پشتیبانی نسخه 2x پایتون به پایان رسیده است. بنابراین به منظور جلوگیری از پیچیدگیهای غیر ضروری، تمام مطالب این درس بر مبنای پایتون 3x ارايه خواهد شد. |
| 16 | + |
| 17 | + |
| 18 | + |
| 19 | +:emoji-size:`✔` سطح: متوسط |
| 20 | + |
| 21 | +---- |
| 22 | + |
| 23 | + |
| 24 | +.. contents:: سرفصلها |
| 25 | + :depth: 2 |
| 26 | + |
| 27 | +---- |
| 28 | + |
| 29 | +برنامهنویسی شی گرا (Object-Oriented Programming) |
| 30 | +---------------------------------------------------------------------------------------------------- |
| 31 | + |
| 32 | +همانطور که پیشتر نیز گفته شده است، پایتون یک زبان برنامهنویسی چند الگویی (multi-paradigm) است و از الگوهای مختلفی از جمله شی گرایی پشتیبانی میکند. شی گرایی یک الگوی برنامهنویسی یا روشی برای طراحی کدهای برنامه است. |
| 33 | + |
| 34 | +در این شیوه کدهای برنامه در قالب موجودیتهای کوچکی به نام **کلاس (Class)** به وجود میآیند. کلاسها چیزی نیستند جز ابزاری که توسط آن میتوان دادهها و عملیات مرتبط با یکدیگر را در یک دسته و جدا از سایر بخشهای کد قرار داد. با کمک کلاسها رفتار و عملکرد هر تکه از کد مشخص است و با سایر بخشهای کد تداخل پیدا نمیکند. ایجاد یک کلاس به معنی ایجاد یک **نوع (Type)** جدید در برنامه میباشد که میتوان چندین **شی (Object)** یا **نمونه (Instance)** از آن نوع ایجاد کرد. یک برنامه شیگرا حاصل ارتباط و تعامل اشیا مختلف ایجاد شده در آن است. |
| 35 | + |
| 36 | +مفاهیم زیادی از پایتون تا پیش از این درس مطرح شده است که باید بدانیم که تمام آنها از پیادهسازی شی گرا پیروی میکردند. هر چیزی در پایتون یک شی است. انواع داده مانند اعداد، رشته، لیست یا دیکشنری همگی شی بودند - نمونههایی که از کلاسهای مربوط به خود ایجاد شدهاند. حتی تعریف تابع نیز به معنی ایجاد یک شی از کلاس متناطر آن بوده است. اما حالا میخواهیم نوع یا کلاسهای مورد نظر خودمان را در برنامه ایجاد و اشیایی از این کلاسها نمونه سازی کنیم. در ادامه به شرح این روند خواهیم پرداخت. |
| 37 | + |
| 38 | + |
| 39 | +تعریف کلاس (Class) |
| 40 | +-------------------------------------------------------- |
| 41 | + |
| 42 | +در پایتون برای تعریف کلاس از کلمه کلیدی ``class`` استفاده میگردد؛ همانند الگو پایین:: |
| 43 | + |
| 44 | + class ClassName: |
| 45 | + <statement-1> |
| 46 | + . |
| 47 | + . |
| 48 | + . |
| 49 | + <statement-N> |
| 50 | + |
| 51 | +کلمه کلیدی تعریف کلاس - ``class`` - یک دستور اجراپذیر (Executable Statement) است. یک کلاس پیش از اجرای دستور خود هیچ تاثیری در برنامه ندارد. این شرایط سبب میشود که حتی بتوان یک کلاس را در میان بدنه دستور شرط (``if``) یا درون بدنه یک تابع تعریف کرد. [در پشت صحنه]: با اجرای دستور تعریف کلاس، یک شی از نوع type در حافظه ایجاد میگردد و از نام کلاس برای اشاره به آن شی استفاده میشود. |
| 52 | + |
| 53 | +بعد از کلمه کلیدی ``class`` نام کلاس (به دلخواه کاربر) نوشته میشود. سطر نخست تعریف مانند تمام دستورات مرکب (Compound) که به صورت معمول در چند سطر نوشته میشوند و سرآیند دارند، به کاراکتر ``:`` ختم میشود. از سطر دوم با رعایت یکنواخت تورفتگی دستورات بدنه کلاس نوشته میشوند:: |
| 54 | + |
| 55 | + >>> class MyClassName: |
| 56 | + ... pass |
| 57 | + ... |
| 58 | + >>> |
| 59 | + |
| 60 | + >>> type(MyClassName) |
| 61 | + <class 'type'> |
| 62 | + |
| 63 | + |
| 64 | +.. tip:: |
| 65 | + پیشنهاد `PEP 8 <http://www.python.org/dev/peps/pep-0008>`__: برای نوشتن نام کلاس از شیوه CapitalizedWords استفاده شود. |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | +نمونهسازی یا ایجاد شی از کلاس |
| 70 | +-------------------------------------------------------- |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | +| |
| 76 | +
|
| 77 | +---- |
| 78 | + |
| 79 | +:emoji-size:`😊` امیدوارم مفید بوده باشه |
| 80 | + |
| 81 | +`لطفا دیدگاه و سوالهای مرتبط با این درس خود را در کدرز مطرح نمایید. <https://www.coderz.ir/python-oop/>`_ |
| 82 | + |
| 83 | + |
| 84 | + |
0 commit comments