آ ﻣ ﻮ ز ش ﭘ ﯿ ﺸ ﺮ ﻓ ﺘ ﻪ ﺑ ﺮﻧ ﺎ ﻣ ﻪ ﻧ ﻮ ﯾ ﺴ ﯽ ﺑ ﻪ ز ﺑﺎ ن ﭘ ﺎﯾ ﺘ ﻮ ن Python ۱۴۰۱
آ ﻣ ﻮ ز ش ﭘ ﯿ ﺸ ﺮ ﻓ ﺘ ﻪ ﺑ ﺮﻧ ﺎ ﻣ ﻪ ﻧ ﻮ ﯾ ﺴ ﯽ ﺑ ﻪ ز ﺑﺎ ن ﭘ ﺎﯾ ﺘ ﻮ ن Python ۱۴۰۱
ﻫ
ی
ﺑﺮا
ن ﺘﻮ
ﭘﺎﯾ
۱۴۰۱
اﻣﯿﺮﺣﺴﯿﻦ ﺧﺴﺮوی
2022
amirkho.ir
ﻣ ﻘ ﺪﻣ ﻪ
اﻣﯿﺮﺣﺴﯿﻦ ﺧﺴﺮوی ﻫﺴﺘﻢ ﮐﺎرﺷﻨﺎﺳﯽ ﻣﻬﻨﺪﺳﯽ ﻧﺮم اﻓﺰار )ﺗﺎ ﺑﻪ اﯾﻨﺠﺎی دوره ﺳﺎل .(۱۴۰۱در دوره ﻫﺎی ﻣﺘﻌﺪد و ﻣﻌﺘﺒﺮ ﺑﯿﻦ اﻟﻤﻠﻠﯽ در زﻣﯿﻨﻪ ﻧﺮم اﻓﺰار ﺷﺮﮐﺖ ﮐﺮده ام و دارای ﭼﻨﺪ ﮔﻮاﻫﯿﻨﺎﻣﻪ ﺑﯿﻦ اﻟﻤﻠﻠﯽ و •
ﮔﻮاﻫﯽ ﻣﺪرس از ﺳﺎزﻣﺎن ﻓﻨﯽ و ﺣﺮﻓﻪ ای ﮐﺸﻮر ﻫﺴﺘﻢ و ﺳﺎﺑﻘﻪ ﺗﺪرﯾﺲ در آﻣﻮزﺷﮕﺎه ﻫﺎی ﻣﻌﺘﺒﺮ ﮐﺸﻮر و آﻣﻮزش ﻫﺎی آزاد در ﺑﺮﺗﺮﯾﻦ داﻧﺸﮕﺎه ﻫﺎی ﮐﺸﻮر دارم.
ﺑﺴﯿﺎر ﺧﻮﺷﺤﺎل ﻫﺴﺘﻢ ﮐﻪ اﯾﻦ دوره را ﺑﺮای ﺷﺮوع ﯾﺎدﮔﯿﺮی اﻧﺘﺨﺎب ﮐﺮده اﯾﺪ ﭼﺮاﮐﻪ در ﻣﺴﯿﺮ درﺳﺘﯽ ﺟﻬﺖ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻗﺮار ﮔﺮﻓﺘﻪ اﯾﺪ. •
از ۱۲دوازده ﺳﺎﻟﮕﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ را ﺷﺮوع ﮐﺮده ام و ﺣﺪودا ﺗﺎ اﻻن 6ﺳﺎل اﺳﺖ ﮐﻪ ﺑﻪ زﺑﺎن ﭘﺎﯾﺘﻮن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﯿﮑﻨﻢ و ﭘﺮوژه ﻫﺎی ﻣﺘﻌﻌﺪی اﻧﺠﺎم داده ام. •
در اﯾﻦ آﻣﻮزش ﺳﻌﯽ ﺷﺪه از ﺑﺮوزﺗﺮﯾﻦ ﻣﺘﺪ ﻫﺎی آﻣﻮزﺷﯽ و ﺗﺠﺮﺑﻪ ﺷﺨﺼﯽ ۵ﺳﺎﻟﻪ در زﻣﯿﻨﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﭘﺎﯾﺘﻮن اﺳﺘﻔﺎده ﺑﺸﻮد ﮐﻪ ﺷﻤﺎ ﻋﺰﯾﺰان ﺑﯿﺸﺘﺮﯾﻦ ﺑﻬﺮه را ﺑﺒﺮﯾﺪ. •
در ﺑﺨﺶ ﻫﺎﯾﯽ از آﻣﻮزش ﭘﺮوژه ﻫﺎی ﻋﻤﻠﯽ را اﻧﺠﺎم ﻣﯿﺪﻫﯿﻢ .در ﻫﺮ ﺑﺨﺸﯽ ﮐﻪ ﺑﻪ ﻣﺸﮑﻞ ﺧﻮردﯾﺪ ﻣﯿﺘﻮاﻧﯿﺪ از ﻃﺮﯾﻖ ﺳﺎﯾﺖ ﯾﺎ اﯾﻤﯿﻞ ﻣﺪرس ﺳﻮاﻻت ﺧﻮد را ﻣﻄﺮح ﮐﻨﯿﺪ. •
در اﯾﻦ دوره ﻣﺒﺎﺣﺚ ﺗﮑﻤﯿﻠﯽ دوره ﻣﻘﺪﻣﺎﺗﯽ ﺑﺮرﺳﯽ ﺧﻮاﻫﺪ ﺷﺪ +ﻣﺒﺎﺣﺚ ﻣﻌﻤﺎری ﻧﺮم اﻓﺰار و اﻧﻮاع روش ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ +ﭼﻨﺪﯾﻦ اﺑﺰار /ﻣﺎژول /ﭼﺎرﭼﻮب ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﮐﺎرﺑﺮدی. •
• ارﺗﺒﺎط ﻣﺴﺘﻘﯿﻢ ﺑﺎ ﻣﺪرس: ﺗﻮﺻﯿﻪ ﻫﺎی ﺷﺨﺼﯽ در ﮐﻨﺎر آﻣﻮزش اﯾﻦ دوره: •
16 8
28 18
29 19
30 20
31 21
32 22
33 23
34 24
35 25
36 26
47 37
48 38
49 39
50 40
51 41
52 42
53 43
54 44
55 45
56 46
67 57
68 58
69 59
70 60
71 61
72 62
73 63
74 64
75 65
76 66
87 77
88 78
89 79
90 80
91 81
92 82
93 83
94 84
95 85
96 86
107 97
108 98
109 99
110 100
111 101
112 102
113 103
114 104
115 105
116 106
127 117
128 118
129 119
130 120
131 121
132 122
133 123
134 124
135 125
136 126
اﻫﺪاف اﯾﻦ دوره؟
در اﯾﻦ دوره ﺑﻪ ﻣﺒﺎﺣﺚ ﺗﮑﻤﯿﻠﯽ دوره ﻣﻘﺪﻣﺎﺗﯽ ﻣﯿﭙﺮدازﯾﻢ. •
ﺑﺎ اﻃﻼﻋﺎت ﻋﻤﻮﻣﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﯿﺸﺘﺮی آﺷﻨﺎ ﺧﻮاﻫﯿﻢ ﺷﺪ. •
ﺗﻐﯿﯿﺮات و اﻣﮑﺎﻧﺎت ﺟﺪﯾﺪ ﭘﺎﯾﺘﻮن از ﻧﺴﺨﻪ ۳.۱۰را ﺑﺮرﺳﯽ و اﺳﺘﻔﺎده ﺧﻮاﻫﯿﻢ ﮐﺮد. •
ﭘﺲ از ﺗﺴﻠﻂ ﺑﺮ ﻣﺒﺎﺣﺚ ﻣﻘﺪﻣﺎﺗﯽ و ﻣﻌﻤﺎری ﻧﺮم اﻓﺰار و ...ﺑﻪ ﺣﻮزه ﻫﺎی ﻣﺨﺘﻠﻒ ﺗﻮﺳﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎی دﺳﮑﺘﺎپ و وب و ﻫﻮش •
روش ﻫﺎی اﯾﺪه ﭘﺮدازش و اﻧﺘﺸﺎر ﻣﺤﺼﻮل را ﻓﺮا ﺧﻮاﻫﯿﻢ ﮔﺮﻓﺖ. •
ﭼﻨﺪ ﻧﺮم اﻓﺰار ﮐﺎرﺑﺮدی در ﺣﻮزه ﻫﺎی ﻣﺨﺘﻠﻒ اﻧﺘﺸﺎر ﺧﻮاﻫﯿﻢ داد. •
PEPﭼﯿﺴﺖ؟
ﯾﮏ ﺳﻨﺪ اﺳﺖ ﮐﻪ اﻃﻼﻋﺎﺗﯽ را در اﺧﺘﯿﺎر ﺟﺎﻣﻌﻪ ﭘﺎﯾﺘﻮن ﻗﺮار ﻣﯿﺪﻫﺪ. •
وﯾﮋﮔﯽ ﻫﺎی ﺟﺪﯾﺪ ﭘﺎﯾﺘﻮن در ﻫﺮ ﻧﺴﺨﻪ را ﺗﻮﺻﯿﻒ ﻣﯿﮑﻨﺪ و ﻣﺸﺨﺼﺎت ﻓﻨﯽ از ﻫﺮ وﯾﮋﮔﯽ اراﺋﻪ ﻣﯿﺪﻫﺪ. •
ﻫﺮ PEPدارای ﻣﺸﺨﺼﺎﺗﯽ ﻣﺎﻧﻨﺪ ﺷﻤﺎره PEPو ﻧﻮﯾﺴﻨﺪﮔﺎن و ﺗﺎرﯾﺦ و… اﺳﺖ. •
ﻣﺨﺎﻃﺒﺎن اﺻﻠﯽ PEPﺗﻮﺳﻌﻪ دﻫﻨﺪﮔﺎن اﺻﻠﯽ ﭘﺎﯾﺘﻮن ﻫﺴﺘﻨﺪ ﺑﺎ اﯾﻦ ﺣﺎل ﻣﺴﺘﻨﺪات PEPﻣﯿﺘﻮاﻧﻨﺪ ﺑﺮای دﯾﮕﺮ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎن •
ﻫﻤﭽﻨﯿﻦ دارای ﯾﮑﺴﺮی اﺳﺘﺎﻧﺪرد ﻫﺎ ﻣﯿﺒﺎﺷﻨﺪ ﮐﻪ اﮔﺮ رﻋﺎﯾﺖ ﺷﻮﻧﺪ ﻣﯿﺘﻮاﻧﻨﺪ ﻣﺸﮑﻼت ﭘﯿﭽﯿﺪه را در ﻗﺎﻟﺐ ﯾﮏ ﺗﯿﻢ ﻣﺪﯾﺮﯾﺖ ﮐﻨﺪ. •
ﭘﺲ از ﻣﺮاﺟﻌﻪ ﺳﺎﯾﺖ رﺳﻤﯽ ﺟﺪاول PEPرا ﻣﺸﺎﻫﺪه ﻣﯿﮑﻨﯿﻢ ﮐﻪ ﻫﺮ ﮐﺪام دارای ﺷﻤﺎره و ﻋﻨﻮان ﻣﯿﺒﺎﺷﻨﺪ. •
PEP 8 PART 1
ﺑﻨﺪ ۸از PEPﯾﮏ ﺳﻨﺪ/ﺑﻨﺪ ﻋﻤﻮﻣﯽ ﻣﯿﺒﺎﺷﺪ ﮐﻪ ﯾﮑﺴﺮی اﺳﺘﺎﻧﺪارد ﻫﺎی ﮐﺪ ﻧﻮﯾﺴﯽ را ﺷﺮح ﻣﯿﺪﻫﺪ .ﺑﺮﺧﯽ از آﻧﻬﺎ: •
ﻗﺒﻞ و ﺑﻌﺪ از ﺗﺎﺑﻊ ﺑﺎﯾﺪ دو ﺧﻂ ﻓﻀﺎی ﺧﺎﻟﯽ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻪ. •
ﻗﺒﻞ و ﺑﻌﺪ از ﮐﻼس ﺑﺎﯾﺪ دو ﺧﻂ ﻓﻀﺎی ﺧﺎﻟﯽ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻪ. •
ﺑﺮای ﻧﺎﻣﮕﺬاری ﺛﻮاﺑﺖ در ﺑﺮﻧﺎﻣﻪ از ﺣﺮوف ﺑﺰرگ اﺳﺘﻔﺎده ﺑﺸﻪ(MAX_OVERFLOW, TOTAL ) . •
ﻗﺒﻞ و ﺑﻌﺪ از ﺗﺎﺑﻊ و ﮐﻼس ،در داﺧﻞ ﯾﮏ ﮐﻼس ،ﺑﺎﯾﺪ ﯾﮏ ﺧﻂ ﻓﻀﺎی ﺧﺎﻟﯽ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻪ. •
ﻓﺮاﺧﻮاﻧﯽ ﻣﺎژوﻟﻬﺎی ﻣﺨﺘﻠﻒ )ﻣﺜﻼ ﻣﺎژول osو sysﺑﺎﯾﺪ در ﺧﻄﻮط ﻣﺨﺘﻠﻒ و ﺟﺪاﮔﺎﻧﻪ اﻧﺠﺎم ﺷﻮد( •
رﻋﺎﯾﺖ اﺻﻮل ﺑﻨﺪ PEP ۸ﺑﺎﻋﺚ ﻣﯿﺸﻮد ﮐﺪ ﻣﺎ ﮐﻤﯽ ﺗﻤﯿﺰ ﺗﺮ ﺑﺎﺷﺪ. •
ﻫﻤﭽﻨﯿﻦ در ﮐﺎر ﮔﺮوﻫﯽ ﺧﻮاﻧﺎ ﺑﻮدن ﮐﺪ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﺑﺴﯿﺎر ﻣﻬﻢ اﺳﺖ. •
ﯾﮑﺴﺮی اﻣﮑﺎﻧﺎت ﺑﺴﯿﺎر ﮐﺎرﺑﺮدی در اﯾﻦ ﻧﺴﺨﻪ ﻫﺎ ﺑﻪ ﭘﺎﯾﺘﻮن اﺿﺎﻓﻪ ﺷﺪه اﺳﺖ. •
اﯾﻦ ﺗﻐﯿﯿﺮات در ﻗﺎﻟﺐ ﺑﻨﺪ ﻫﺎی PEP 634,635,636و… ﺷﺮح داده ﺷﺪه اﺳﺖ. •
ﺑﻪ روش ﻫﺎی ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ Programming Paradigmﮔﻔﺘﻪ ﻣﯿﺸﻮد. •
ﯾﮏ زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﯿﺘﻮاﻧﺪ از ﯾﮏ ﯾﺎ ﭼﻨﺪ ﺷﯿﻮه ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﭘﺸﺘﯿﺒﺎﻧﯽ ﻧﻤﺎﯾﺪ. •
ﻫﺪف اﻧﻮاع روش ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﮐﺪ ﻧﻮﯾﺴﯽ ﺑﻬﯿﻨﻪ ﺗﺮ و ﻗﺎﺑﻠﯿﺖ ﺧﻮاﻧﺎﯾﯽ ﺑﺎﻻ در ﺗﻮﺳﻌﻪ ﻫﺎی ﺑﻌﺪی و ﮐﺎر ﺗﯿﻤﯽ ﻣﯿﺒﺎﺷﺪ. •
ﺑﺎ اﻧﺘﺨﺎب ﺷﯿﻮه درﺳﺖ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﺤﺼﻮل ﻧﻬﺎﯾﯽ ﻋﻤﻠﮑﺮد ﻓﻨﯽ ﺑﺎﻻﺗﺮی ﺧﻮاﻫﺪ داﺷﺖ. •
ﻗﺒﻞ از ﺑﺮرﺳﯽ ﻓﻨﯽ روش ﻫﺎی ﻣﺨﺘﻠﻒ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ و ﺷﺮوع ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﯿﺒﺎﯾﺴﺖ روش ﻫﺎ را ﺑﻪ درﺳﺘﯽ درک ﮐﺮد ﭘﺲ •
در ﺑﺨﺶ ﻫﺎی ﺑﻌﺪی اﻧﻮاع روش ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﺮرﺳﯽ ﺧﻮاﻫﺪ ﺷﺪ. •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ دﺳﺘﻮری IMPERATIVE PROGRAMMING
ﯾﮑﯽ از ﺷﯿﻮه ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ اﺳﺖ ﮐﻪ در آن ﻣﺮاﺣﻞ اﺟﺮای ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﮐﺎﻣﭙﯿﻮﺗﺮی ﻗﺪم ﺑﻪ ﻗﺪم ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺑﯿﺎن ﻣﯽ ﺷﻮد. •
ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل اﮔﺮ ﻗﺼﺪ ﺑﺎزﮐﺮدن درﺑﯽ را داﺷﺘﻪ ﺑﺎﺷﯿﻢ و ﺑﺎ زﺑﺎن دﺳﺘﻮری ﻗﺼﺪ ﺑﯿﺎن آن را داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﺧﻮاﻫﯿﻢ ﮔﻔﺖ ﺑﻠﻨﺪ •
ﺷﻮ ،ﺑﻪ ﻃﺮف درب ﻧﺰدﯾﮏ ﺷﻮ ،دﺳﺘﮕﯿﺮه را ﺑﮕﯿﺮ و درب را ﺑﻪ ﻃﺮف ﺑﯿﺮون ﻫﻞ ﺑﺪه.
زﺑﺎن ﻣﺎﺷﯿﻦ و cو shellو COBOLو Pascalاز روش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ دﺳﺘﻮری اﺳﺘﻔﺎده ﻣﯿﮑﻨﻨﺪ. •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ اﻋﻼﻧﯽ DECLARATIVE PROGRAMMING
در اﯾﻦ روش ﻣﻨﻄﻖ و ﻫﺪف ﻣﺤﺎﺳﺒﺎت ﺑﺪون ﺷﺮح ِ ﭼﮕﻮﻧﮕﯽ اﻧﺠﺎم آﻧﻬﺎ ﺑﯿﺎن ﻣﯽ ﺷﻮد. •
ﺑﺮﺧﻼف زﺑﺎن ﻫﺎی دﺳﺘﻮری ،زﺑﺎن ﻫﺎی اﻋﻼﻧﯽ ﺑﻪ ﺟﺎی ﺗﺄﮐﯿﺪ ﺑﺮ ﭼﮕﻮﻧﮕﯽ اﻧﺠﺎم ﯾﮏ ﻋﻤﻞ روی اﯾﻨﮑﻪ ﭼﻪ ﮐﺎری ﻣﯿﺨﻮاﻫﯿﻢ اﻧﺠﺎم •
ﺑﺮای ﻣﺜﺎل در ﭘﺎﯾﮕﺎه ﻫﺎی داده ﻣﺒﺘﻨﯽ ﺑﺮ زﺑﺎن SQLﻓﻘﻂ ﻣﯿﮕﻮﯾﯿﻢ ﭼﻪ ﭼﯿﺰی ﻧﯿﺎز دارﯾﻢ و ﮐﺎر ﺑﺎ ﭼﮕﻮﻧﮕﯽ آن ﻋﻤﻞ ﻧﺪارﯾﻢ و ﺧﻮد •
در اﯾﻦ دوره از زﺑﺎن SQLﮐﻨﺎر ﭘﺎﯾﺘﻮن در ﭼﻨﺪ ﺑﺮﻧﺎﻣﻪ ﮐﺎرﺑﺮدی اﺳﺘﻔﺎده ﺧﻮاﻫﯿﻢ ﮐﺮد. •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺗﺎﺑﻌﯽ FUNCTIONAL PROGRAMMING
در دوره ﻣﻘﺪﻣﺎﺗﯽ ﺷﯿﻮه ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﺎ ﻫﻤﯿﻦ ﺷﯿﻮه ﺗﺎﺑﻌﯽ ﺑﻮد. •
در اﯾﻦ روش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﺮاﺣﻞ اﺟﺮای ﺑﺮﻧﺎﻣﻪ در ﻗﺎﻟﺐ ﺗﺮﮐﯿﺐ ﺗﻮاﺑﻊ و ﻓﺮاﺧﻮاﻧﯽ آﻧﻬﺎ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ اﺳﺖ. •
در اﯾﻦ روش ﺑﺨﺶ ﻫﺎی ﻣﺨﺘﻠﻒ ﯾﮏ ﺑﺮﻧﺎﻣﻪ را ﺟﺪاﮔﺎﻧﻪ ﺑﻪ ﺻﻮرت ﺗﺎﺑﻊ اﯾﺠﺎد ﻣﯿﮑﻨﯿﻢ و ﻫﺮ ﺟﺎ ﮐﻪ ﺑﻪ آﻧﻬﺎ ﻧﯿﺎز داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﻓﺮاﺧﻮاﻧﯽ ﯾﺎ •
ﺑﺮ ﺧﻼف زﺑﺎن ﻫﺎی دﺳﺘﻮری در روش ﺗﺎﺑﻌﯽ ﺧﻮد ﺗﻮاﺑﻊ ﻧﻮع داده ای اوﻟﯿﻪ ﻫﺴﺘﻨﺪ. •
ﺑﺪﯾﻦ ﻣﻌﻨﯽ ﮐﻪ از ﺧﺮوﺟﯽ ﺗﻮاﺑﻊ ﺑﻪ ﻋﻨﻮان ﻣﻘﺪار ﺑﺎزﮔﺸﺘﯽ در ﻣﺘﻐﯿﯿﺮ ﻫﺎ و ...ﻣﯿﺘﻮاﻧﯿﻢ اﺳﺘﻔﺎده ﮐﻨﯿﻢ. •
اﻟﺒﺘﻪ ﭘﺎﯾﺘﻮن ﻣﺤﺪود ﺑﻪ اﯾﻦ روش ﻧﯿﺴﺖ و ﻣﯿﺘﻮان روش ﻫﺎی ﻣﺨﺘﻠﻔﯽ و ﺗﺮﮐﯿﺒﯽ از آﻧﻬﺎ در ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﮐﺎر ﮔﺮﻓﺖ. •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 1
ﺷﺊ ﮔﺮاﯾﯽ ﯾﮑﯽ از ﺷﯿﻮه ﻫﺎی ﭘﺮﻃﺮﻓﺪار ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ اﺳﺖ. •
ﻫﻤﭽﻨﯿﻦ ﯾﮏ اﻟﮕﻮ /ﺷﯿﻮه ﺗﻔﮑﺮ اﺳﺖ ﮐﻪ ﺑﺮﮔﺮﻓﺘﻪ از دﻧﯿﺎی واﻗﻌﯽ اﺳﺖ ﯾﻌﻨﯽ ﻧﺤﻮه ﻣﺪﯾﺮﯾﺖ اﻃﻼﻋﺎت و ﻋﻤﻠﮑﺮد ﻫﺎ و ...ﺷﺒﯿﻪ ﺑﻪ دﻧﯿﺎی •
واﻗﻌﯽ اﺳﺖ.
ﻫﻤﻪ ﭼﯿﺰ از ﺟﻤﻠﻪ ﺗﻮاﺑﻊ و داده ﻫﺎ در ﻗﺎﻟﺒﯽ ﺑﻪ ﻧﺎم ﺷﺊ در ﮐﻨﺎر ﻫﻢ ﻗﺮار دارﻧﺪ. •
ﭘﺲ ﺧﻮد ﺗﻮاﺑﻊ ﻧﯿﺰ در روش ﺑﻪ ﮐﺎر ﮔﺮﻓﺘﻪ ﺧﻮاﻫﻨﺪ ﺷﺪ. •
در اﯾﻦ روش ﺗﻤﺮﮐﺰ اﺻﻠﯽ ﺑﺮ اﯾﻦ ﻧﯿﺴﺖ ﮐﻪ ﭼﻪ ﮐﺎری اﻧﺠﺎم دﻫﯿﻢ. •
ﺑﻠﮑﻪ ﺗﻤﺮﮐﺰ اﺻﻠﯽ ﺑﺮ روی داده ﻫﺎ و وﯾﮋﮔﯽ ﻫﺎی آﻧﻬﺎﺳﺖ ﺳﭙﺲ ﻋﻤﻠﯿﺎت ﻣﺪ ﻧﻈﺮ)ﺗﻮاﺑﻊ(. •
ﻣﻨﻈﻮر از ﻫﻤﻪ ﭼﯿﺰ داده ﻫﺎ در ﻗﺎﻟﺐ ﻣﺘﻐﯿﯿﺮ و ﺗﻮاﺑﻊ در ﻗﺎﻟﺐ ﻣﺘﺪ ﻫﺴﺘﻨﺪ. •
وﯾﮋﮔﯽ ﻫﺎ /ﺻﻔﺖ ﻫﺎ دﻗﯿﻘﺎ ﻣﺘﻐﯿﯿﺮ ﻫﺎﯾﯽ ﻫﺴﺘﻨﺪ ﮐﻪ ﻣﺸﺨﺼﺎت و ﻣﻘﺎدﯾﺮ آن ﺷﺊ را ﻣﺸﺨﺺ ﻣﯿﮑﻨﺪ. •
ﺑﺮای ﻣﺜﺎل ﻧﻮع داده ﻟﯿﺴﺖ ﯾﮏ ﺷﺊ اﺳﺖ ﮐﻪ دارای ﻣﻘﺪار و ﯾﮏ ﺳﺮی ﻣﺘﺪ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺧﻮدش اﺳﺖ ﻣﺜﻞ )(append •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 3
ﺑﺮای ﻣﺜﺎل در ﺧﺼﻮص ﯾﮏ ﺷﺨﺺ ﻣﯿﺨﻮاﻫﯿﻢ اﻃﻼﻋﺎﺗﯽ را ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ ﯾﺎ داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﻧﯿﺎزی ﻧﯿﺴﺖ ﺑﺮای ﻫﺮ ﺷﺨﺺ ﻣﺘﻐﯿﯿﺮ و ﺗﺎﺑﻊ •
ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ.
ﺑﻠﮑﻪ ﯾﮏ ﺷﺊ از ﻧﻮع ﻣﺜﻼ Personﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﯿﻢ و ﻫﺮﺟﺎ ﻧﯿﺎز داﺷﺘﻪ ﺑﺎﺷﯿﻢ از آن اﺳﺘﻔﺎده ﻣﯿﮑﻨﯿﻢ. •
ﺑﺮای ﻣﺜﺎل اﮔﺮ در ﻗﺎﻟﺐ ﯾﮏ ﻣﺘﻐﯿﯿﺮ ﯾﮏ ﺗﺎﭘﻞ ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ و آن ﻣﺘﻐﯿﯿﺮ را ﺑﻪ ﺗﺎﯾﻊ typeﺑﺪﻫﯿﻢ ﻧﻮع ﺷﺊ آن ﻫﻤﺎن ﺗﺎﭘﻞ اﺳﺖ و دارای •
ﯾﮑﺴﺮی رﻓﺘﺎر ﻫﺎی ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد ﺧﻮدش اﺳﺖ ﮐﻪ ﻫﻤﺎن ﻣﺘﺪ ﻫﺎی آن ﻣﯿﺒﺎﺷﺪ.
ﻣﺎ ﻧﯿﺰ ﻗﺼﺪ دارﯾﻢ ﭼﻨﯿﻦ اﺷﯿﺎﺋﯽ را اﯾﺠﺎد ﮐﻨﯿﻢ ﮐﻪ دارای ﻣﻘﺎدﯾﺮ و رﻓﺘﺎر ﻫﺎی ﻣﺨﺘﺺ ﺑﻪ ﺧﻮدﺷﺎن ﻫﺴﺘﻨﺪ. •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 4
ﻓﺮض ﮐﻨﯿﺪ در ﺑﺮﻧﺎﻣﻪ ای ﻣﯿﻨﻮﯾﺴﯿﻢ ﺑﺎ ﺧﺼﻮﺻﯿﺎت ﯾﮏ اﻧﺴﺎن و رﻓﺘﺎر ﻫﺎﯾﺶ ﺳﺮ و ﮐﺎر زﯾﺎدی دارﯾﻢ. •
ﺑﯿﻦ ﻫﻤﻪ ﺷﺨﺺ ﻫﺎﯾﯽ ﮐﻪ ﻗﺼﺪ دارﯾﻢ ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ اﯾﻦ وﯾﮋﮔﯽ ﻫﺎ و رﻓﺘﺎر ﻫﺎ ﻣﺸﺘﺮک اﺳﺖ. •
ﻣﺜﻼ ﻫﻤﻪ اﺷﺨﺎص ﻧﺎم دارﻧﺪ و رﻧﮓ ﭼﺸﻢ دارﻧﺪ و... •
ﮐﻼس class / ﺷﺨﺺ
”Name = “Amir
”EyeColor = “Brown
)(speak
رﻓﺘﺎر ﻫﺎ Methods /
ﺷﺊ object / )(sleep
class ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 5
ﯾﮏ ﮐﻼس ﻣﺤﯿﻄﯽ اﺳﺖ ﮐﻪ ﺧﺼﻮﺻﯿﺎت و رﻓﺘﺎر ﻫﺎی ﺷﺊ ﮐﻪ ﻣﺪ ﻧﻈﺮ دارﯾﻢ اﯾﺠﺎد ﮐﻨﯿﻢ را ﻧﮕﻪ دارای ﻣﯿﮑﻨﺪ. •
ﮐﻠﻤﻪ ﮐﻠﯿﺪی classرا ﻣﯿﻨﻮﯾﺴﯿﻢ ﺳﭙﺲ ﺑﻌﺪ از ان ﻧﺎم ﮐﻼس ﺑﺎ رﻋﺎﯾﺖ اﺳﺘﺎﻧﺪارد PEP8و ﺳﭙﺲ ﻋﻼﻣﺖ دو ﻧﻘﻄﻪ )(: •
ﻧﯿﺎز اﺳﺖ در ﻣﺮاﺣﻞ ﺑﻌﺪ وﯾﮋﮔﯽ ﻫﺎ /ﺧﺼﻮﺻﯿﺖ attrib /ﻫﺎ را ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ. •
در اﯾﻦ ﻣﺮﺣﻠﻪ ﺧﺼﻮﺻﯿﺎت attribs/و رﻓﺘﺎر ﻫﺎ methods/ﻫﺎ را ﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﯿﻢ. •
attributes
methods
class – attrib -methods ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 7
ﻫﺮ ﮐﺠﺎی ﺑﺮﻧﺎﻣﻪ ﻧﯿﺎز ﺑﻪ اﯾﻦ ﺷﺊ ﺑﺎﺷﺪ ﻣﯿﺒﺎﺳﺖ ﯾﮏ ﻧﻤﻮﻧﻪ از آن را درون ﯾﮏ ﻣﺘﻐﯿﯿﺮ اﯾﺠﺎد ﮐﻨﯿﻢ. •
ﺷﺊ ﺳﺎﺧﺘﻪ ﺷﺪه ﻣﺎ دﻗﯿﻘﺎ ﻣﺸﺎﺑﻪ ﺷﺊ ﻫﺎی دﯾﮕﺮ ﭘﺎﯾﺘﻮن اﺳﺖ. •
ﺗﻨﻬﺎ ﺗﻔﺎوت ﻣﯿﺎن اﺷﯿﺎء ﺧﺼﻮﺻﯿﺎت ﻣﺘﺪ ﻫﺎی آﻧﺎن اﺳﺖ. •
ﺑﺮای ﻣﺜﺎل ﺑﺎ ﺗﺎﺑﻊ )( typeﺷﺊ داده listو ﺷﺊ Personرا ﺑﺮرﺳﯽ ﮐﻨﯿﻢ. •
در ﺧﺮوﺟﯽ ﺑﺮﻧﺎﻣﻪ ﻣﯿﺒﯿﻨﯿﻢ ﮐﻪ دﻗﯿﻘﺎ ﺷﺊ ﻣﺎ ﻣﺸﺎﺑﻪ ﯾﮑﯽ از اﺷﯿﺎء ﭘﺎﯾﺘﻮن اﺳﺖ. •
class – attrib -methods ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 8
زﻣﺎﻧﯽ ﮐﻪ ﻣﺜﻼ ﺷﺊ داده ﻟﯿﺴﺖ را اﯾﺠﺎد ﻣﯿﮑﻨﯿﻢ ﻣﯿﺘﻮاﻧﯿﻢ آن را ﻣﻘﺪار دﻫﯽ ﮐﻨﯿﻢ. •
اﻣﺎ ﺷﺊ Personﮐﻪ ﻣﺎ اﯾﺠﺎد ﮐﺮدﯾﻢ ﻗﺎﺑﻠﯿﺖ ﻣﻘﺪار دﻫﯽ ﺑﻪ ﺧﺼﻮﺻﯿﺎت را ﻧﺪارد و ﺧﺼﻮﺻﯿﺎت ﺛﺎﺑﺖ ﻫﺴﺘﻨﺪ. •
ﺑﻪ ﺷﮑﻞ ﻣﻘﺎﺑﻞ ﻣﯿﺘﻮاﻧﯿﻢ از ﺧﺼﻮﺻﯿﺎت و ﻣﺘﺪ ﻫﺎی ﺷﺊ اﺳﺘﻔﺎده ﮐﻨﯿﻢ. •
اﮐﻨﻮن دﻗﯿﻘﺎ ﻣﺸﺎﺑﻪ ﺑﻘﯿﻪ اﺷﯿﺎء ﻣﯿﺘﻮان ﺑﻪ ﻣﺘﺪ ﻫﺎی آن دﺳﺘﺮﺳﯽ ﭘﯿﺪا ﮐﺮد. •
ﭼﻮن ﮐﻪ ﺗﻌﺮﯾﻒ ﮐﺮدﯾﻢ ﻧﻮع ﺷﺊ ﻣﺘﻐﯿﯿﺮ Person , user1اﺳﺖ ﯾﺎ اﯾﻨﮑﻪ user1ﯾﮏ ﻧﻤﻮﻧﻪ از Personاﺳﺖ •
در آﺧﺮ ﺧﺼﻮﺻﯿﺖ Fnameﮐﻪ ﺑﻪ ﺻﻮرت ﺛﺎﺑﺖ در ﺷﺊ Personﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ را ﭼﺎپ ﮐﺮدﯾﻢ. •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 9
اﺷﯿﺎء در ﭘﺎﯾﺘﻮن )ﻣﺜﻼ داده (listﺑﻪ ﻃﻮر ﭘﯿﺸﻔﺮض ﺧﺎﻟﯽ ﻫﺴﺘﻨﺪ. •
ﻣﺎ ﻧﯿﺰ ﺑﺎﯾﺪ ﺷﺊ ﺧﻮد را ﺑﻪ ﮔﻮﻧﻪ ای اﯾﺠﺎد ﮐﻨﯿﻢ ﮐﻪ ﻗﺎﺑﻠﯿﺖ ﻣﻘﺪار دﻫﯽ داﺷﺘﻪ ﺑﺎﺷﺪ. •
ﻫﻤﭽﻨﯿﻦ ﺷﺎﻣﻞ ﻣﺘﺪ ﻫﺎﯾﯽ ﺑﺎﺷﺪ ﮐﻪ ﻋﻤﻼ آﻧﻬﺎ را ﺑﻪ ﮐﺎر ﮔﯿﺮﯾﻢ. •
constructor ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 10
ﺑﻪ ﺟﻬﺖ رﻓﻊ ﻣﺸﮑﻼت ﻗﺒﻠﯽ )ﺧﺼﻮﺻﯿﺎت ﺛﺎﺑﺖ و ﻋﺪم اﺳﺘﻔﺎده از ﻣﺘﺪ ﻫﺎ( ﻧﯿﺎز اﺳﺖ ﮐﻪ ﯾﮏ ﺳﺎزﻧﺪه constructor/ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ. •
ﺳﺎزﻧﺪه ﻫﺎ ﻣﺘﺪ ﻫﺎی ﺧﺎﺻﯽ ﻫﺴﺘﻨﺪ و زﻣﺎﻧﯽ ﮐﻪ آﻧﻬﺎ را درون ﮐﻼس ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ ﮐﻼس ﻣﺎ اﯾﻦ اﺟﺎزه را ﻣﯿﺪﻫﺪ ﮐﻪ ﺧﺼﻮﺻﯿﺖ •
اﯾﻦ ﻋﻨﻮان ﺧﺎص __ __initاﺳﺖ و ﻣﯿﺒﺎﯾﺴﺖ در ﻗﺎﻟﺐ ﯾﮏ ﺗﺎﺑﻊ درون ﮐﻼس ﺗﻌﺮﯾﻒ ﺷﻮد. •
در واﻗﻊ اﯾﻦ ﯾﮏ ﻣﺘﺪ ﺧﺎص اﺳﺖ ﮐﻪ اﺟﺎزه ﻣﻘﺪار دﻫﯽ ﺧﺼﻮﺻﯿﺎت را ﺑﻪ ﻣﺎ ﻣﯿﺪﻫﺪ. •
ﻧﺤﻮه ﺗﻌﺮﯾﻒ ﮐﻠﯽ ﻣﺘﺪ ____init اﯾﻦ constructorﯾﮏ ورودی ﺧﺎص ﺑﺎ ﻋﻨﻮان selfﻧﯿﺰ ﺑﺎﯾﺪ داﺷﺘﻪ ﺑﺎﺷﺪ. •
اوﻟﯿﻦ ﭘﺎراﻣﺘﺮ ﻫﺮ ﻣﺘﺪ در ﯾﮏ ﮐﻼس ﺑﺎﯾﺪ selfﺑﺎﺷﺪ ﮐﻪ ﺑﻪ ﺷﺊ ﻓﺮاﺧﻮاﻧﯽ ﺷﺪه اﺷﺎره دارد. •
ﻣﺘﺪ __ __initﻫﻤﯿﺸﻪ ﺑﻪ ﻃﻮر ﺧﻮدﮐﺎر ﻫﻨﮕﺎم اﯾﺠﺎد ﺷﺊ اﺟﺮا ﻣﯿﺸﻮد. •
Instance Attributes ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 11
در ﺑﺨﺶ ﻗﺒﻞ ﻣﺘﻮﺟﻪ ﺷﺪﯾﻢ ﮐﻪ اﮔﺮ ﻗﺼﺪ داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﺧﺼﻮﺻﯿﺎت را ﻣﻘﺪار دﻫﯽ ﮐﻨﯿﻢ ﻣﯿﺒﺎﺳﺖ ﯾﮏ ﺗﺎﺑﻊ ﺑﺎ ﻋﻨﻮان __ __initدرون •
ﺧﺼﻮﺻﯿﺎﺗﯽ ﮐﻪ ﻗﺮار اﺳﺖ ﻫﺮ ﺳﺮی ﻣﻘﺪار دﻫﯽ ﺷﻮﻧﺪ را ﺧﺼﻮﺻﯿﺎت ﻧﻤﻮﻧﻪ ﻣﯿﮕﻮﯾﯿﻢ. •
ﻣﺘﺪ ﺳﺎزﻧﺪه
ﺷﺊ ﻣﺎ اﮐﻨﻮن دارای ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﻧﻤﻮﻧﻪ اﺳﺖ ﮐﻪ ﺣﯿﻦ اﯾﺠﺎد ﯾﮏ ﻧﻤﻮﻧﻪ از ﺷﺊ درون ﻣﺘﻐﯿﯿﺮ ﮐﻪ ﻣﯿﺘﻮان اﻫﺎ را ﻣﻘﺪار دﻫﯽ ﮐﺮد. •
در ﻣﺜﺎل ﻣﻘﺎﺑﻞ ﻣﺘﻐﯿﯿﺮ p1را ﺑﺎ ﮐﻼس Personﻣﻘﺪار دﻫﯽ ﮐﺮدﯾﻢ. •
ﺳﭙﺲ ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﻧﻤﻮﻧﻪ ﺷﺊ را ﻣﻘﺪار دﻫﯽ ﮐﺮدﯾﻢ و در آﺧﺮ ﭼﺎپ ﮐﺮدﯾﻢ. •
Instance Attributes ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 13
ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﻣﻘﺎدﯾﺮ وﯾﮋﮔﯽ ﻫﺎی ﺷﺊ ﻧﻤﻮﻧﻪ را از ﻃﺮﯾﻖ ﻣﺘﺪ ﺳﺎزﻧﺪه ﺗﻌﯿﯿﻦ ﮐﻨﯿﺪ. •
ﺳﺎزﻧﺪه زﯾﺮ ﺷﺎﻣﻞ ﭘﺎراﻣﺘﺮﻫﺎی ﻧﺎم و ﺳﻦ ،ﺑﻪ ﻏﯿﺮ از ﭘﺎراﻣﺘﺮ selfاﺳﺖ. •
در واﻗﻊ ﺑﺎ اﯾﻦ ﮐﺎر ﺑﻪ ﺻﻮرت ﻣﺴﺘﻘﯿﻢ ﻣﯿﺘﻮاﻧﯿﻢ ﺧﺼﻮﺻﯿﺖ ﻫﺎ را ﻣﻘﺪار دﻫﯽ ﮐﻨﯿﻢ. •
Instance Attributes ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 14
ﻫﻤﭽﻨﯿﻦ ﻫﻨﮕﺎم ﻣﻘﺪار دﻫﯽ ﺧﺼﻮﺻﯿﺖ ﻫﺎ دﻗﯿﻘﺎ ﻋﻨﻮان ﻣﺘﻐﯿﯿﺮ ﺧﺼﻮﺻﯿﺖ را ﻧﯿﺰ ﻧﻮﺷﺖ و آن را ﻣﻘﺪار دﻫﯽ ﮐﺮد. •
در ﻣﺜﺎل زﯾﺮ دو ﻣﺘﻐﯿﯿﺮ ﺑﺎ ﻧﺎم p1و p2ﺗﻌﺮﯾﻒ ﮐﺮده اﯾﻢ. •
ﻓﺮض ﮐﻨﯿﺪ ﻫﺮ دو ﯾﮏ ﺷﺨﺺ ﺟﺪاﮔﺎﻧﻪ ﮐﻪ دارای ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﻣﺸﺘﺮک ﺑﺎ ﻣﻘﺎدﯾﺮ ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ. •
ﺧﺐ ﺑﻪ ﻃﻮر ﻗﻄﻊ ﻫﻤﻪ اﻧﺴﺎن ﻫﺎ ﻗﻄﻌﺎ ﻧﺎم و ﺳﻦ دارﻧﺪ اﻣﺎ ﻣﻘﺪار آﻧﻬﺎ ﻣﺘﻔﺎوت اﺳﺖ. •
Instance Attribute Default Value ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 15
ﻣﯿﺘﻮان ﺑﺮای ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﻧﻤﻮﻧﻪ ﻣﻘﺎدﯾﺮ ﭘﯿﺸﻔﺮض ﺗﻌﺮﯾﻒ ﮐﺮد. •
ﺑﺮای ﻣﺜﺎل ﺷﺨﺼﯽ ﮐﻪ وارد ﺑﺮﻧﺎﻣﻪ ﻣﯿﺸﻮد و اﻃﻼﻋﺎت ﺧﻮد را وارد ﻧﻤﯿﮑﻨﺪ را ﻣﯿﮕﻮﯾﯿﻢ ﻧﺎﻣﺶ ﻣﻬﻤﺎن اﺳﺖ. •
Class Methods ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 16
ﻣﺎ ﻣﯿﺘﻮاﻧﯿﻢ ﻣﺘﺪ ﻫﺎی ﮔﻮﻧﺎﻧﯽ ﺑﺮای ﺷﺊﻣﺎن در ﻧﻈﺮ ﺑﮕﯿﺮم ﮐﻪ ﻫﺮ ﮔﺎه ﻧﯿﺎز ﺷﺪ آﻧﻬﺎ را ﻓﺮاﺧﻮاﻧﯽ ﮐﻨﯿﻢ. •
ﻓﺮض ﮐﻨﯿﺪ ﻣﺘﺪی ﻧﯿﺎز دارﯾﻢ ﮐﻪ ﻫﻨﮕﺎم ﻓﺮاﺧﻮاﻧﯽ ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﺗﻌﺮﯾﻒ ﺷﺪه را ﭼﺎپ ﮐﻨﺪ و ﻧﯿﺎزی ﺑﻪ ﺗﺎﺑﻊ ﺟﺪاﮔﺎﻧﻪ printﻧﺒﺎﺷﺪ. •
در ﺻﻮرﺗﯽ ﮐﻪ ﻗﺼﺪ دارﯾﻢ از ﻣﻘﺎدﯾﺮ ﺧﺼﻮﺻﯿﺖ ﻫﺎ در ﻣﺘﺪ ﻫﺎ اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﻣﯿﺒﺎﯾﺴﺖ ورودی selfرا ﻧﯿﺰ ﺑﻪ ﻣﺘﺪ ﻣﺪ ﻧﻈﺮ ﺑﺪﻫﯿﻢ. •
Class Methods ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 17
اﻟﺒﺘﻪ ﻣﯿﺘﻮان ﺑﻪ ﺟﺎی ﻋﺒﺎرت selfﺑﻪ ﻋﻨﻮان ورودی ﻫﺮ ﭼﯿﺰ دﯾﮕﺮی ﻧﯿﺰ ﺑﻪ ﻣﺘﺪ داد. •
ﺗﻨﻬﺎ ﻧﮑﺘﻪ در ﺧﺼﻮص ﺗﻌﺮﯾﻒ ﻣﺘﺪ اﯾﻦ اﺳﺖ ﮐﻪ ﺣﺘﻤﺎ ﯾﮏ ورودی داﺷﺘﻪ ﺑﺎﺷﺪ. •
در ﻏﯿﺮ اﯾﻨﺼﻮرت ﺑﺎ ﺧﻄﺎی آرﮔﻮﻣﺎن ورودی ﻣﻮاﺟﻪ ﺧﻮاﻫﯿﻢ ﺷﺪ. •
Deleting Attribute, Object, Class ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 18
دﻗﯿﻘﺎ ﻣﺸﺎﺑﻪ اﺷﯿﺎء دﯾﮕﺮ در زﺑﺎن ﭘﺎﯾﺘﻮن ﻣﯿﺘﻮان از ﻋﺒﺎرت delﺑﺮای ﺣﺬف ﺷﺊ اﯾﺠﺎد ﺷﺪه و ﮐﻼس و ﺧﺼﻮﺻﯿﺖ ﻫﺎ اﺳﺘﻔﺎده ﮐﺮد. •
ﺑﺮای ﺣﺬف ﺷﺊ ﮐﺎﻓﯽ اﺳﺖ ﭘﺲ از ﻋﺒﺎرت delﻧﺎم ﻣﺘﻐﯿﯿﺮی ﮐﻪ ﺷﺊ در ان اﯾﺠﺎد ﺷﺪه اﺳﺖ را ﺑﻨﻮﯾﺴﯿﻢ. •
ﺗﻤﺮﯾﻦ ۱ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 19
ﺗﻤﺮﯾﻦ: •
در اﯾﻦ ﻣﺤﯿﻂ ﻋﻤﻠﯿﺎﺗﯽ ﺷﺊ ﻫﺎی ﻣﺘﻔﺎوﺗﯽ ﻣﺜﻞ داﻧﺶ آﻣﻮزش و ...وﺟﻮد دارﻧﺪ. •
ﯾﮏ ﺷﺊ ﺑﺮای داﻧﺶ اﻣﻮزش اﯾﺠﺎد ﮐﻨﯿﺪ و ﺧﺼﻮﺻﯿﺎت آن را ﺗﻌﺮﯾﻒ ﮐﻨﯿﺪ) .ﺷﺎﻣﻞ ﻧﺎم و ﻧﺎم ﺧﺎﻧﻮادﮔﯽ و ﮐﺪ ﻣﻠﯽ و(... •
ﯾﮏ ﻣﺘﺪ ﺑﺮای ﺷﺊ داﻧﺶ آﻣﻮز اﯾﺠﺎد ﮐﻨﯿﺪ ﮐﻪ ﻋﻤﻠﯿﺎت ﺛﺒﺖ ﻧﺎم را اﻧﺠﺎم دﻫﺪ و وﻗﺘﯽ ﮐﻪ ﮐﻪ ﻓﺮاﺧﻮاﻧﯽ ﻣﯿﺸﻮد اﻃﻼﻋﺎت داﻧﺶ آﻣﻮزش را •
ﺗﻤﺮﯾﻦ: •
üﻗﺼﺪ دارﯾﻢ ﻣﺎژول ﺑﻪ روش ﺷﺊﮔﺮاﯾﯽ اﯾﺠﺎد ﮐﻨﯿﻢ ﮐﻪ ﺧﻮدرو ﻫﺎی ﻣﺘﻔﺎوﺗﯽ را ﺑﻪ ﻋﻨﻮان ﺷﺊ اﯾﺠﺎد ﮐﻨﯿﻢ و ﺧﺼﻮﺻﯿﺎت ﻫﺮ ﺷﺊ ﺷﺎﻣﻞ ﻧﺎم
üﻧﮑﺘﻪ :۲ﺧﺼﻮﺻﯿﺎت ﺧﻮدرو ﻫﺎ ﻣﺎﻧﻨﺪ ﻧﺎم و ﺳﺮﻋﺖ و ...ﻣﺸﺘﺮک اﺳﺖ .ﻓﻘﻂ ﻣﻘﺎدﯾﺮ ﺑﺎ ﻫﻢ ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ.
üﺷﺊ ﺧﻮدرو دارای ﯾﮏ ﻣﺘﺪ ﺑﺮای ﺗﺒﺪﯾﻞ وﯾﮋﮔﯽ ﺳﺮﻋﺖ ﺑﺮﺣﺴﺐ ) m/sﻣﺘﺮ ﺑﺮ ﺛﺎﻧﯿﻪ( ﺑﺎﺷﺪ.
üﺷﺊ ﺧﻮدرو دارای ﯾﮏ ﻣﺘﺪ ﺑﺎﺷﺪ ﮐﻪ ﻫﻨﮕﺎم ﻓﺮاﺧﻮاﻧﯽ اﻃﻼﻋﺎت ﺧﻮدرو ﺷﺎﻣﻞ ﻧﺎم و ﺳﺮﻋﺖ آن را ﻧﻤﺎﯾﺶ دﻫﺪ.
ﺳﻮرس ﮐﺪ ﺗﻤﺮﯾﻦ ۲ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 22
ﻣﺎ اﻏﻠﺐ ﺑﺎ ﻣﺤﺼﻮﻻت ﻣﺨﺘﻠﻔﯽ ﻣﻮاﺟﻪ ﻣﯽ ﺷﻮﯾﻢ ﮐﻪ دارای ﯾﮏ ﻣﺪل ﭘﺎﯾﻪ و ﯾﮏ ﻣﺪل ﭘﯿﺸﺮﻓﺘﻪ ﺑﺎ وﯾﮋﮔﯽ ﻫﺎی اﺿﺎﻓﯽ ﺑﯿﺶ از ﻣﺪل ﭘﺎﯾﻪ ﻫﺴﺘﻨﺪ. •
ﯾﮏ روﯾﮑﺮد ﻣﺪلﺳﺎزی ﻧﺮماﻓﺰاری) OOPﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ ﺳﺒﮏ ﺷﺊ ﮔﺮا( ﺑﻪ ﺟﺎی ﺳﺎﺧﺘﻦ از اﺑﺘﺪا ،ﻗﺎﺑﻠﯿﺖ ﯾﮏ ﮐﻼس ﻣﻮﺟﻮد را ﺑﺮای اﯾﺠﺎد ﯾﮏ ﮐﻼس •
ﺟﺪﯾﺪ ﮔﺴﺘﺮش ﻣﯽدﻫﺪ.
ﮐﻼس ﻣﻮﺟﻮد ﭘﺎﯾﻪ ﯾﺎ ﮐﻼس واﻟﺪ ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد ،در ﺣﺎﻟﯽ ﮐﻪ ﮐﻼس ﺟﺪﯾﺪ ﻓﺮزﻧﺪ ﯾﺎ ﮐﻼس ﻓﺮﻋﯽ ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد. •
وراﺛﺖ زﻣﺎﻧﯽ ﻇﺎﻫﺮ ﻣﯽ ﺷﻮد ﮐﻪ ﯾﮏ ﮐﻼس ﺟﺪﯾﺪ دارای راﺑﻄﻪ ” ”is aﺑﺎ ﯾﮏ ﮐﻼس ﻣﻮﺟﻮد/ﻗﺪﯾﻤﯽ ﺑﺎﺷﺪ. •
ﺳﮓ ﯾﮏ ﺣﯿﻮان اﺳﺖ ﻫﻤﭽﻨﯿﻦ ﮔﺮﺑﻪ ﻧﯿﺰ ﯾﮏ ﺣﯿﻮان اﺳﺖ .ﺑﻨﺎﺑﺮاﯾﻦ ،ﺣﯿﻮان ﻃﺒﻘﻪ/ﮐﻼس ﭘﺎﯾﻪ اﺳﺖ ،در ﺣﺎﻟﯽ ﮐﻪ ﺳﮓ و ﮔﺮﺑﻪ ﻃﺒﻘﺎت ارﺛﯽ ﻫﺴﺘﻨﺪ. •
اﯾﻦ اﻣﺮ اﺳﺘﻔﺎده ﻣﺠﺪد از وﯾﮋﮔﯽ ﻫﺎی ﻣﻮﺟﻮد را ﺗﺴﻬﯿﻞ ﻣﯽ ﮐﻨﺪ. •
ﮐﻼس ﻓﺮزﻧﺪ ﻣﯽ ﺗﻮاﻧﺪ ﭼﻨﺪ ﺗﻌﺮﯾﻒ دﯾﮕﺮ اﺿﺎﻓﻪ ﮐﻨﺪ ﯾﺎ ﯾﮏ ﻣﺘﺪ ﮐﻼس ﭘﺎﯾﻪ را دوﺑﺎره ﺗﻌﺮﯾﻒ ﮐﻨﺪ. •
Inheritance ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 24
اﯾﻦ وﯾﮋﮔﯽ در اﯾﺠﺎد ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺒﯽ از ﮐﻼس ﻫﺎ ﺑﺮای اﺷﯿﺎء در ﯾﮏ ﺳﯿﺴﺘﻢ اﻃﻼﻋﺎﺗﯽ ﭘﯿﭽﯿﺪه ﺑﺴﯿﺎر ﻣﻔﯿﺪ اﺳﺖ. •
ﻫﻤﭽﻨﯿﻦ اﻣﮑﺎن ﻃﺮاﺣﯽ ﯾﮏ ﮐﻼس ﺟﺪﯾﺪ ﺑﺮ اﺳﺎس ﺑﯿﺶ از ﯾﮏ ﮐﻼس ﻣﻮﺟﻮد وﺟﻮد دارد. •
ﻣﮑﺎﻧﯿﺴﻢ ﮐﻠﯽ اﯾﺠﺎد وراﺛﺖ در ﺷﮑﻞ ﻣﻘﺎﺑﻞ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ: •
ﻫﻨﮕﺎم ﺗﻌﺮﯾﻒ ﮐﻼس ﻓﺮزﻧﺪ ،ﻧﺎم ﮐﻼس واﻟﺪ در داﺧﻞ ﭘﺮاﻧﺘﺰ ﺟﻠﻮی آن ﻗﺮار ﻣﯽ ﮔﯿﺮد. •
ﺧﺼﻮﺻﯿﺖ ﻫﺎ /وﯾﮋﮔﯽ ﻫﺎ و ﻣﺘﺪﻫﺎی ﻧﻤﻮﻧﻪ ﺗﻌﺮﯾﻒ ﺷﺪه در ﮐﻼس واﻟﺪ ﺗﻮﺳﻂ ﺷﯽ ﮐﻼس ﻓﺮزﻧﺪ ﺑﻪ ارث ﻣﯽ رﺳﺪ. •
Inheritance ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 25
ﺑﺮای درک ﺑﻬﺘﺮ ﻣﺜﺎل زﯾﺮ را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ: •
اﯾﻦ دو ﺷﮑﻞ/ﺷﺊ ﻫﺮ دو ﭼﻬﺎرﺿﻠﻌﯽ ﻫﺴﺘﻨﺪ اﻣﺎ ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﻣﺴﺎﺣﺖ و ﻣﺤﯿﻂ آﻧﻬﺎ ﺑﺎ ﯾﮏ دﯾﮕﺮ ﻣﺘﻔﺎوت اﺳﺖ. •
ﭘﺲ ﻫﺮ دو از ﺷﺊ ﭼﻬﺎرﺿﻠﻌﯽ ارث ﺑﺮی ﻣﯿﮑﻨﻨﺪ وﯾﮋﮔﯽ ﭼﺎر ﺿﻠﻊ داﺷﺘﻦ را. •
اﺑﺘﺪا ﯾﮏ ﮐﻼس ﭼﻬﺎر ﺿﻠﻌﯽ ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮد و ﺑﻪ ﻋﻨﻮان ﯾﮏ ﮐﻼس ﭘﺎﯾﻪ/واﻟﺪ ﺑﺮای ﮐﻼس ﻣﺴﺘﻄﯿﻞ و ﻣﺮﺑﻊ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد. •
اﯾﻦ ﮐﻼس دارای ﯾﮏ ﻣﺘﺪ ﺑﺮای ﻣﺤﺎﺳﺒﻪ ﻣﺤﯿﻂ اﺳﺖ) .ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ در ﻫﻤﻪ ﭼﻬﺎر ﺿﻠﻌﯽ ﻫﺎ ﻣﺸﺘﺮک اﺳﺖ(. •
ﺳﭙﺲ ﯾﮏ ﮐﻼس ﺑﺮای ﻣﺴﺘﻄﯿﻞ ﺗﻌﺮﯾﻒ ﻣﯿﮑﻨﯿﻢ و ﻃﺒﻖ ﻗﻮاﺋﺪ ﺗﻌﺮﯾﻒ ﺷﺪه ﻣﯿﺒﺎﺳﺖ از ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﮐﻼس واﻟﺪ ﭼﻬﺎر ﺿﻠﻌﯽ ارث ﺑﺮی ﮐﻨﯿﻢ. •
ﺑﺮای اﺳﺘﻔﺎده از ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﮐﻼس ﭘﺎﯾﻪ ﺑﺎﯾﺪ از ﺗﺎﺑﻊ )( superاﺳﺘﻔﺎده ﮐﻨﯿﻢ. •
از آﻧﺠﺎ ﮐﻪ ﮐﻼس ﭼﻬﺎر ﺿﻠﻌﯽ دارای ﭼﻬﺎر آرﮔﻮﻣﺎن ﻣﯿﺒﺎﺷﺪ ﻣﯿﺒﺎﺳﺖ در ﮐﻼس ﻓﺮزﻧﺪ ﻧﯿﺰ ﭼﻬﺎر آرﮔﻮﻣﺎن ارث ﺑﺮی ﮐﻨﯿﻢ. •
ﻓﺮض ﮐﻨﯿﺪ ﻣﯿﺨﻮاﻫﯿﻢ ﯾﻢ ﻣﺘﺪ ﻣﯿﺨﻮاﻫﯿﻢ ﺑﻨﻮﯾﺴﯿﻢ ﮐﻪ ﻣﺴﺎﺣﺖ ﻣﺴﺘﻄﯿﻞ را ﺑﺮای ﻣﺎ ﺣﺴﺎب ﮐﻨﺪ. •
ﻣﺘﺪ ﻣﺤﺎﺳﺒﻪ ﻣﺤﯿﻂ ﭼﻬﺎر ﺿﻠﻌﯽ ﻫﺎ ﮐﻪ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ﺟﻤﻊ ﭼﻬﺎر ﺿﻠﻊ
Inheritance ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 27
ﺗﻤﺮﯾﻦ: •
ﻣﺘﺪی ﺑﺮای ﻣﺤﺎﺳﺒﻪ ﻣﺴﺎﺣﺖ ﺷﺊ ﻣﺴﺘﻄﯿﻞ اﯾﺠﺎد ﮐﻨﯿﺪ.
Overriding ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 29
در ﺑﺤﺚ ارث ﺑﺮی دﯾﺪﯾﻢ ﮐﻪ ﻫﺮ ﺷﺊ ﻣﯿﺘﻮاﻧﺪ ﺧﻮﺻﯿﺖ ﻫﺎ و رﻓﺘﺎرﻫﺎ/ﻣﺘﺪﻫﺎی ﺑﻪ ارث ﺑﺒﺮد. •
اﮐﻨﻮن ﻣﯿﺨﻮاﻫﯿﻢ ﺟﺪای از ﺧﺼﻮﺻﯿﺖ و ﻣﺘﺪ ﻫﺎی ﺑﺮ ارث ﺑﺮده ﺷﺪه ﺑﺮای ﻓﺮزﻧﺪ ﺧﺼﻮﺻﯿﺖ ﻫﺎ و ﻣﺘﺪ ﻫﺎی ﺧﺎص ﺧﻮدش را ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ. •
ﻣﺜﻼ دﯾﺪﯾﻢ ﮐﻪ ﻫﻤﻪ اﺷﮑﺎل ﭼﻬﺎرﺿﻠﻌﯽ ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﻣﺤﯿﻄﺸﺎن ﻣﺜﻞ ﻫﻢ اﺳﺖ اﻣﺎ اﺷﮑﺎﻟﯽ ﻣﺎﻧﻨﺪ ﻣﺴﺘﻄﯿﻞ و ﻣﺮﺑﻊ ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﻣﺴﺎﺣﺘﺸﺎن ﻣﺘﻔﺎوت •
اﺳﺖ ﺑﻨﺎﺑﺮاﯾﻦ ﺑﺎﺑﺖ اﯾﻦ ﻗﻀﯿﻪ ﺑﺎﯾﺪ ﻣﺘﺪ ﻫﺎی اﺧﺘﺼﺎﺻﯽ ﺧﻮدﺷﺎن را داﺷﺘﻪ ﺑﺎﺷﻨﺪ.
در ﻣﺜﺎل زﯾﺮ ﯾﮏ ﻣﺘﺪ اﺧﺘﺼﺎﺻﯽ ﺑﺮای ﻣﺴﺎﺣﺖ ﻣﺴﺘﻄﯿﻞ اﯾﺠﺎد ﮐﺮدﯾﻢ. •
ﺗﻤﺮﯾﻦ :اﮐﻨﻮن ﺷﺊ ﻣﺮﺑﻊ را اﯾﺠﺎد ﮐﻨﯿﺪ ﮐﻪ ﻗﺎﺑﻠﯿﺖ ﺑﺮرﺳﯽ ﻣﺤﯿﻂ و ﻣﺴﺎﺣﺖ را داﺷﺘﻪ ﺑﺎﺷﺪ. •
Public, Protected, Private Members ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 30
اﻋﻀﺎی :publicاﻋﻀﺎی ﻋﻤﻮﻣﯽ )ﻣﻌﻤﻮﻻ ً ﻣﺘﺪﻫﺎی اﻋﻼم ﺷﺪه در ﯾﮏ ﮐﻼس( از ﺧﺎرج از ﮐﻼس ﻗﺎﺑﻞ دﺳﺘﺮﺳﯽ ﻫﺴﺘﻨﺪ. •
ﻫﻤﻪ اﻋﻀﺎی ﯾﮏ ﮐﻼس ﭘﺎﯾﺘﻮن ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض ﻋﻤﻮﻣﯽ ﻫﺴﺘﻨﺪ .ﻫﺮ ﻋﻀﻮی از ﺧﺎرج از ﻣﺤﯿﻂ ﮐﻼس ﻗﺎﺑﻞ دﺳﺘﺮﺳﯽ اﺳﺖ. •
اﻋﻀﺎی :Protectedاﻋﻀﺎی ﻣﺤﺎﻓﻈﺖ ﺷﺪه ﯾﮏ ﮐﻼس از داﺧﻞ ﮐﻼس ﻗﺎﺑﻞ دﺳﺘﺮﺳﯽ ﻫﺴﺘﻨﺪ و ﺑﺮای زﯾﺮ ﮐﻼس ﻫﺎی آن ﻧﯿﺰ در دﺳﺘﺮس •
ﻫﺴﺘﻨﺪ.
ﻫﯿﭻ ﻣﺤﯿﻂ دﯾﮕﺮی اﺟﺎزه دﺳﺘﺮﺳﯽ ﺑﻪ آن را ﻧﺪارد و اﯾﻦ ﺑﺎﻋﺚ ﻣﯽ ﺷﻮد ﻣﻨﺎﺑﻊ ﺧﺎﺻﯽ از ﮐﻼس واﻟﺪ ﺗﻮﺳﻂ ﮐﻼس ﻓﺮزﻧﺪ ﺑﻪ ارث ﺑﺮده ﺷﻮد. •
ﺑﺮای ﺗﻌﺮﯾﻒ ﯾﮏ ﻋﻀﻮ ﻣﺤﺎﻓﻈﺖ ﺷﺪه ﻗﺒﻞ از ﻧﺎم آن ﯾﮏ ﻋﻼﻣﺖ زﯾﺮ ﻗﺮار ﻣﯿﺪﻫﯿﻢ. •
اﻋﻀﺎی :privateزﯾﺮﺧﻂ دوﮔﺎﻧﻪ __ ﮐﻪ ﭘﯿﺸﻮﻧﺪ ﯾﮏ ﻣﺘﻐﯿﺮ اﺳﺖ آن را ﺧﺼﻮﺻﯽ ﻣﯽ ﮐﻨﺪ .ﭘﯿﺸﻨﻬﺎد ﻗﻮی ﻣﯽ دﻫﺪ ﮐﻪ از ﺑﯿﺮون ﮐﻼس ﺑﻪ آن •
دﺳﺖ ﻧﺰﻧﯿﺪ .ﻫﺮ ﺗﻼﺷﯽ ﺑﺮای اﻧﺠﺎم اﯾﻦ ﮐﺎر ﻣﻨﺠﺮ ﺑﻪ ﯾﮏ AttributeErrorﻣﯽ ﺷﻮد.
Public, Protected, Private Members OBJECT ORIENTED PROGRAMMING ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا PART 31
Private members
Class Properties ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 32
ﯾﮏ وﯾﮋﮔﯽ ﺷﺊ در ﮐﻼس را ﻣﯿﺘﻮان ﺑﻪ ﮐﻤﮏ ﺗﺎﺑﻊ )( propertyﺗﻌﺮﯾﻒ ﮐﺮد. •
اﯾﻦ ﺗﺎﺑﻊ ﯾﮏ راﺑﻂ ﺑﺮای ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﻧﻤﻮﻧﻪ اﯾﺠﺎد ﻣﯿﮑﻨﺪ. •
ﻣﺜﺎل زﯾﺮ ﻧﺤﻮه اﯾﺠﺎد ﯾﮏ وﯾﮋﮔﯽ در ﭘﺎﯾﺘﻮن ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )( propertyرا ﻧﺸﺎن ﻣﯽ دﻫﺪ. •
در ﻣﺜﺎل زﯾﺮ ﺧﺼﻮﺻﯿﺖ __nameﯾﮏ ﺧﺼﻮﺻﯿﺖ ﭘﻨﻬﺎن اﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﯿﻢ اﻣﮑﺎن ﻣﻘﺪار دﻫﯽ ﻧﺪارد در ﺣﺎﻟﺖ ﻋﺎدی. •
در ﻗﺴﻤﺖ ﻫﺎی ﺟﻠﻮﺗﺮ ﻧﺤﻮه ﺗﻌﺮﯾﻒ ﻫﺎی ﻣﺨﺘﻠﻒ ﺧﺼﻮﺻﯿﺖ ﻫﺎ را ﺑﺮرﺳﯽ ﻣﯿﮑﻨﯿﻢ. •
اﮐﻨﻮن ﺧﺼﻮﺻﯿﺖ __nameﻓﻘﻂ از ﻃﺮﯾﻖ ﻣﺘﺪ )( setnameﻣﻘﺪار دﻫﯽ ﻣﯿﺸﻮدو در ﻣﺘﺪ )(getname •
در دﺳﺘﺮس اﺳﺖ.
ﻫﺮ دوی اﯾﻦ ﻣﺘﺪ ﻫﺎ ﺑﺮای ﺗﻌﺮﯾﻒ ﯾﮏ ﺧﺼﻮﺻﯿﺖ ﮐﻼس Studentﺑﻪ ﻧﺎم nameاﺳﺖ ﮐﻪ ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﯿﻢ •
اﻣﮑﺎن ﻣﻘﺪار دﻫﯽ ﻧﺪارد.
در واﻗﻊ ﻫﺪف اﯾﻦ اﺳﺖ ﮐﻪ ﻧﺤﻮه ﻣﻘﺪار دﻫﯽ را ﻣﺤﺪود و ﺑﺮای ﻣﻘﺪار دﻫﯽ از ﻣﺘﺪ اﺳﺘﻔﺎده ﮐﻨﯿﻢ! •
روش ﺳﺎده ﺗﺮی ﺑﺮای اﯾﻦ ﮐﺎر وﺟﻮد دارد ﮐﻪ در ﺑﺨﺶ ﻫﺎی ﺑﻌﺪی ﺑﺮرﺳﯽ ﺧﻮاﻫﯿﻢ ﮐﺮد. •
Decorators ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 33
در ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ،دﮐﻮراﺗﻮر ﯾﮏ اﻟﮕﻮی ﻃﺮاﺣﯽ اﺳﺖ ﮐﻪ ﻣﺴﺌﻮﻟﯿﺖ ﻫﺎی اﺿﺎﻓﯽ را ﺑﻪ ﺻﻮرت ﭘﻮﯾﺎ ﺑﻪ ﯾﮏ ﺷﺊ اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ. •
ﺑﻨﺎﺑﺮاﯾﻦ ،ﯾﮏ دﮐﻮراﺗﻮر در ﭘﺎﯾﺘﻮن ﻣﺴﺌﻮﻟﯿﺖﻫﺎ/ﻋﻤﻠﮑﺮدﻫﺎی اﺿﺎﻓﯽ را ﺑﻪ ﺻﻮرت ﭘﻮﯾﺎ و ﺑﺪون ﺗﻐﯿﯿﺮ ﯾﮏ ﺗﺎﺑﻊ ﺑﻪ ﯾﮏ ﺗﺎﺑﻊ دﯾﮕﺮ اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﺪ. •
در ﭘﺎﯾﺘﻮن ،ﯾﮏ ﺗﺎﺑﻊ را ﻣﯽ ﺗﻮان ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﺑﻪ ﺗﺎﺑﻊ دﯾﮕﺮی ارﺳﺎل ﮐﺮد. •
ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮان ﯾﮏ ﺗﺎﺑﻊ را در داﺧﻞ ﺗﺎﺑﻊ دﯾﮕﺮی ﺗﻌﺮﯾﻒ ﮐﺮد و ﯾﮏ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮاﻧﺪ ﺗﺎﺑﻊ دﯾﮕﺮی را ﺑﺮﮔﺮداﻧﺪ. •
ﺑﻨﺎﺑﺮاﯾﻦ ،دﮐﻮراﺗﻮر در ﭘﺎﯾﺘﻮن ﺗﺎﺑﻌﯽ اﺳﺖ ﮐﻪ ﺗﺎﺑﻊ دﯾﮕﺮی را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن درﯾﺎﻓﺖ ﻣﯽ ﮐﻨﺪ. •
رﻓﺘﺎر ﺗﺎﺑﻊ آرﮔﻮﻣﺎن ﺗﻮﺳﻂ دﮐﻮراﺗﻮر ﺑﺪون ﺗﻐﯿﯿﺮ واﻗﻌﯽ آن ﮔﺴﺘﺮش ﻣﯽ ﯾﺎﺑﺪ. •
ﺗﺎﺑﻊ decoratorرا ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر @ و ﺑﻌﺪ از آن ﻧﺎم ﺗﺎﺑﻊ روی ﯾﮏ ﺗﺎﺑﻊ اﻋﻤﺎل ﮐﺮد. •
Decorators ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 34
اﮐﻨﻮن ،ﻣﯽﺗﻮاﻧﯿﻢ ﻋﻤﻠﮑﺮد ﺗﺎﺑﻊ ﻓﻮق را ﺑﺪون ﺗﻐﯿﯿﺮ ،ﺑﺎ اﻧﺘﻘﺎل آن ﺑﻪ ﺗﺎﺑﻌﯽ دﯾﮕﺮ ،ﻣﺎﻧﻨﺪ ﺷﮑﻞ زﯾﺮ ،ﮔﺴﺘﺮش دﻫﯿﻢ. •
در ﺑﺎﻻ ،ﺗﺎﺑﻊ )( mydecoratorﯾﮏ ﺗﺎﺑﻊ را ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن ﻣﯽ ﮔﯿﺮد. •
ﺑﻨﺎﺑﺮاﯾﻦ ،ﻋﻤﻠﮑﺮد ﺗﺎﺑﻊ )( hiرا ﺑﺪون ﺗﻐﯿﯿﺮ آن ﮔﺴﺘﺮش ﻣﯽ دﻫﺪ. •
ﺑﺎ اﯾﻦ ﺣﺎل ،اﯾﻦ ﯾﮏ دﮐﻮراﺗﻮر درﺳﺖ و ﺣﺴﺎﺑﯽ و اﺻﻮﻟﯽ ﻧﯿﺴﺖ! •
Decorators ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 35
دﮐﻮراﺗﻮر در ﭘﺎﯾﺘﻮن را ﻣﯽ ﺗﻮان ﺑﺮ روی ﻫﺮ ﺗﺎﺑﻊ ﻣﻨﺎﺳﺐ ﺑﺎ اﺳﺘﻔﺎده از ﻧﺤﻮ @decorator_nameﺑﺮای ﮔﺴﺘﺮش ﻋﻤﻠﮑﺮد ﺗﺎﺑﻊ زﯾﺮﯾﻦ ﺗﻌﺮﯾﻒ ﮐﺮد. •
اﮐﻨﻮن ،ﻣﯽﺗﻮاﻧﯿﻢ از mydecoratorﺑﻪﻋﻨﻮان دﮐﻮراﺗﻮر ﺑﺮای اﻋﻤﺎل روی ﺗﺎﺑﻌﯽ اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﮐﻪ ﻫﯿﭻ آرﮔﻮﻣﺎﻧﯽ ﻧﺪارد ،ﻫﻤﺎﻧﻄﻮر ﮐﻪ در زﯾﺮ ﻧﺸﺎن •
اﮐﻨﻮن ﺑﺎ ﻓﺮاﺧﻮاﻧﯽ ﺗﺎﺑﻊ )( hiﻋﻤﻠﯿﺎت ﻫﺎی ﺗﺎﺑﻊ دﮐﻮراﺗﻮر ﻧﯿﺰ اﻧﺠﺎم ﻣﯿﺸﻮد. •
ﭘﺎﯾﺘﻮن دارای ﭼﻨﺪ ﺗﺎﺑﻊ دﮐﻮراﺗﻮر ﮐﺎرﺑﺮدی اﺳﺖ ﮐﻪ ﻣﺎ ﻣﯿﺘﻮاﻧﯿﻢ در ﺟﺎﻫﺎی ﻣﺨﺘﻠﻒ اﻟﺨﺼﻮص ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا از آﻧﻬﺎ اﺳﺘﻔﺎده ﮐﻨﯿﻢ. •
@property ﯾﮏ ﻣﺘﺪ را ﺑﻪ ﻋﻨﻮان ﻣﺘﺪﻫﺎی ﺗﻨﻈﯿﻢ ﮐﻨﻨﺪه ﯾﺎ ﮔﯿﺮﻧﺪه ﯾﮏ وﯾﮋﮔﯽ اﻋﻼم ﻣﯽ ﮐﻨﺪ.
@classmethod ﻣﺘﺪی را ﺑﻪ ﻋﻨﻮان ﻣﺘﺪ ﮐﻼس اﻋﻼم ﻣﯽ ﮐﻨﺪ ﮐﻪ ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از ﻧﺎم ﮐﻼس ﻓﺮاﺧﻮاﻧﯽ ﮐﺮد.
دﮐﻮراﺗﻮر @propertyﯾﮏ دﮐﻮراﺗﻮر داﺧﻠﯽ در ﭘﺎﯾﺘﻮن ﺑﺮای ﺗﺎﺑﻊ )( propertyاﺳﺖ. •
از @propertyدر ﻫﺮ ﻣﺘﺪ ﯾﮏ ﮐﻼس ﺑﺮای اﺳﺘﻔﺎده از ﯾﮏ ﻣﺘﺪ ﺑﻪ ﻋﻨﻮان ﯾﮏ وﯾﮋﮔﯽ ﻣﯿﺘﻮاﻧﯿﺪ اﺳﺘﻔﺎده ﮐﻨﯿﺪ. •
:@<property-name>.setter (2ﻣﺘﺪ setterرا ﺑﺮای ﺧﺎﺻﯿﺖ ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﻣﻘﺪار ﯾﮏ وﯾﮋﮔﯽ را ﺗﻨﻈﯿﻢ ﮐﻨﺪ.
:@<property-name>.deleter (3ﻣﺘﺪ ﺣﺬف را ﺑﻪ ﻋﻨﻮان ﺧﺎﺻﯿﺘﯽ ﮐﻪ ﯾﮏ ﺧﺎﺻﯿﺖ را ﺣﺬف ﻣﯽ ﮐﻨﺪ ،ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ.
Declare a Property ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 37
در ﻗﻄﻌﻪ ﮐﺪ زﯾﺮ دﮐﻮراﺗﻮر @propertyروی ﻣﺘﺪ )( nameاﻋﻤﺎل ﺷﺪ. •
اﮐﻨﻮن ﺑﺎ ﻣﺘﺪ )( nameﺑﻪ ﻋﻨﻮان ﯾﮏ وﯾﮋﮔﯽ ﻣﯿﺘﻮاﻧﯿﻢ ﻣﻘﺪار __nameرا ﺑﻪ دﺳﺖ آورﯾﻢ. •
در ﺑﺨﺶ ﻗﺒﻠﯽ ﻣﺘﺪ )( nameﺑﻪ ﻋﻨﻮان ﯾﮏ وﯾﮋﮔﯽ ﺗﻌﺮﯾﻒ ﮐﺮدﯾﻢ. •
ﻣﺎ ﻓﻘﻂ ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﻪ ﻣﻘﺪار وﯾﮋﮔﯽ nameدﺳﺘﺮﺳﯽ داﺷﺘﻪ ﺑﺎﺷﯿﻢ اﻣﺎ ﻧﻤﯽ ﺗﻮاﻧﯿﻢ آن را ﺗﻐﯿﯿﺮ دﻫﯿﻢ. •
ﺑﺮای ﺗﻐﯿﯿﺮ ﻣﻘﺪار وﯾﮋﮔﯽ ،ﺑﺎﯾﺪ ﻣﺘﺪ setterرا ﺑﺮای وﯾﮋﮔﯽ nameﺑﺎ اﺳﺘﻔﺎده از @property-name.setterﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ ،ﻣﺎﻧﻨﺪ ﺷﮑﻞ زﯾﺮ: •
ﺑﻪ ﮐﻤﮏ دﮐﻮراﺗﻮر @property-name.deleterﻣﯿﺘﻮان ﻣﺘﺪی ﺗﻌﺮﯾﻒ ﮐﺮد ﮐﻪ وﯾﮋﮔﯽ ﯾﺎ ﺧﺎﺻﯿﺖ را ﺣﺬف ﻣﯿﮑﻨﺪ. •
دﮐﻮراﺗﻮر @classmethodﺑﺮای اﻋﻼم ﻣﺘﺪی در ﮐﻼس اﺳﺘﻔﺎده ﻣﯽﺷﻮد ﮐﻪ ﻣﯽﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از )( ClassName.MethodNameﻓﺮاﺧﻮاﻧﯽ ﮐﺮد. •
اوﻟﯿﻦ ﭘﺎراﻣﺘﺮ ﺑﺎﯾﺪ clsﺑﺎﺷﺪ ﮐﻪ ﻣﯽ ﺗﻮان از آن ﺑﺮای دﺳﺘﺮﺳﯽ ﺑﻪ وﯾﮋﮔﯽ ﻫﺎی ﮐﻼس اﺳﺘﻔﺎده ﮐﺮد. (2
ﻣﺘﺪ ﮐﻼس ﻓﻘﻂ ﻣﯽ ﺗﻮاﻧﺪ ﺑﻪ وﯾﮋﮔﯽ ﻫﺎی ﮐﻼس دﺳﺘﺮﺳﯽ داﺷﺘﻪ ﺑﺎﺷﺪ اﻣﺎ ﺑﻪ وﯾﮋﮔﯽ ﻫﺎی ﻧﻤﻮﻧﻪ دﺳﺘﺮﺳﯽ ﻧﺪارد. (3
ﻣﺘﺪ ﮐﻼس را ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از )( ClassName.MethodNameو ﻫﻤﭽﻨﯿﻦ ﺑﺎ اﺳﺘﻔﺎده از ﺷﯽء ﻓﺮاﺧﻮاﻧﯽ ﮐﺮد. (4
در ﻣﺜﺎل ﻣﻘﺎﺑﻞ ﮐﻼس Studentدارای ﯾﮏ وﯾﮋﮔﯽ ﺑﺮای ﺧﻮد ﮐﻼس و ﯾﮏ وﯾﮋﮔﯽ ﻧﻤﻮﻧﻪ اﺳﺖ. •
ﯾﮏ ﻣﺘﺪ ﺑﺎ ﻋﻨﻮان tostringﺑﻪ ﮐﻤﮏ دﮐﻮراﺗﻮر @classmethodﺗﻌﺮﯾﻒ ﮐﺮده اﯾﻢ. •
ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ اوﻟﯿﻦ ﭘﺎراﻣﺘﺮ ﻫﺮ @classmethodﺑﺎﯾﺪ clsﺑﺎﺷﺪ ﮐﻪ ﺑﺘﻮان از آن ﺑﺮای دﺳﺘﺮﺳﯽ ﺑﻪ وﯾﮋﮔﯽ ﻫﺎی ﮐﻼس اﺳﺘﻔﺎده ﮐﺮد. •
@staticmethod decorator ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 42
@staticmethodﯾﮏ دﮐﻮراﺗﻮر داﺧﻠﯽ اﺳﺖ ﮐﻪ ﯾﮏ ﻣﺘﺪ اﺳﺘﺎﺗﯿﮏ را در ﮐﻼس در ﭘﺎﯾﺘﻮن ﺗﻌﺮﯾﻒ ﻣﯽ ﮐﻨﺪ. •
ﻣﺘﺪ اﺳﺘﺎﺗﯿﮏ ﻧﻤﯽ ﺗﻮاﻧﺪ ﺑﻪ وﯾﮋﮔﯽ/ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﮐﻼس ﯾﺎ وﯾﮋﮔﯽ/ﺧﺼﻮﺻﯿﺖ ﻫﺎی ﻧﻤﻮﻧﻪ دﺳﺘﺮﺳﯽ داﺷﺘﻪ ﺑﺎﺷﺪ. •
ﻣﺘﺪ اﺳﺘﺎﺗﯿﮏ را ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از )( ClassName.MethodNameو ﻫﻤﭽﻨﯿﻦ ﺑﺎ اﺳﺘﻔﺎده از )( object.MethodNameﻓﺮاﺧﻮاﻧﯽ ﮐﺮد. •
در ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎرﺑﺮدی ﻣﯿﺘﻮان از آن در ﮐﻼس ﺑﻪ ﻋﻨﻮان ﯾﮏ راﻫﻨﻤﺎ ﯾﺎ ﻣﺘﺪی ﮐﻪ ورژن ﺑﺮﻧﺎﻣﻪ را ﺑﮕﻮﯾﺪ اﺳﺘﻔﺎده ﮐﺮد. •
Magic or Dunder Methods ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 43
ﻣﺘﺪﻫﺎی ﺟﺎدوﯾﯽ در ﭘﺎﯾﺘﻮن ﻣﺘﺪﻫﺎی ﺧﺎﺻﯽ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺎ زﯾﺮﺧﻂ دوﺗﺎﯾﯽ __ ﺷﺮوع و ﺧﺘﻢ ﻣﯽ ﺷﻮﻧﺪ. •
ﻣﺘﺪﻫﺎی ﺟﺎدوﯾﯽ ﻗﺮار ﻧﯿﺴﺖ ﻣﺴﺘﻘﯿﻤﺎ ً ﺗﻮﺳﻂ ﺷﻤﺎ ﻓﺮاﺧﻮاﻧﯽ ﺷﻮﻧﺪ ،اﻣﺎ ﻓﺮاﺧﻮاﻧﯽ ﺑﻪ ﺻﻮرت داﺧﻠﯽ از ﮐﻼس در ﯾﮏ ﻋﻤﻞ ﺧﺎص اﻧﺠﺎم ﻣﯽ ﺷﻮد. •
ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ،ﻫﻨﮕﺎﻣﯽ ﮐﻪ دو ﻋﺪد را ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮ +اﺿﺎﻓﻪ ﻣﯽ ﮐﻨﯿﺪ ،ﺑﻪ ﺻﻮرت داﺧﻠﯽ ،ﻣﺘﺪ )(__ __addﻓﺮاﺧﻮاﻧﯽ ﻣﯽ ﺷﻮد. •
ﮐﻼس ﻫﺎی داﺧﻠﯽ در ﭘﺎﯾﺘﻮن روش ﻫﺎی ﺟﺎدوﯾﯽ زﯾﺎدی را ﺗﻌﺮﯾﻒ ﮐﺮدهاﻧﺪ. •
از ﺗﺎﺑﻊ )( dirﺑﺮای ﻣﺸﺎﻫﺪه ﺗﻌﺪاد ﻣﺘﺪﻫﺎی ﺟﺎدوﯾﯽ ﮐﻪ ﺗﻮﺳﻂ ﯾﮏ ﮐﻼس ﺑﻪ ارث ﺑﺮده ﺷﺪه اﺳﺖ اﺳﺘﻔﺎده ﻣﯿﺸﻮد. •
ﺑﺮای ﻣﺜﺎل ،ﺗﻤﺎم وﯾﮋﮔﯽ ﻫﺎ و ﻣﺘﺪﻫﺎی ﺗﻌﺮﯾﻒ ﺷﺪه در ﮐﻼس floatرا ﻓﻬﺮﺳﺖ ﻣﯽ ﮐﻨﺪ. •
اﮔﺮ اﯾﻦ ﺗﺎﺑﻊ ﺑﺪون آرﮔﻮﻣﺎن ﻓﺮاﺧﻮاﻧﯽ ﺷﻮد اﺳﺎﻣﯽ ﻣﺘﺪ ﻫﺎی اﺟﺮاﯾﯽ ﺑﺮﻧﺎﻣﻪ را در اﺳﮑﻮپ ﻓﻌﻠﯽ )ﺑﺮﻧﺎﻣﻪ ﭘﯿﺶ رو( •
ﺑﺮ ﻣﯿﮕﺮداﻧﺪ!
Magic or Dunder Methods ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 44
ﻫﻤﺎﻧﻄﻮر ﮐﻪ در ﺑﺨﺶ ﻗﺒﻞ دﯾﺪﯾﺪ ،ﮐﻼس floatﺷﺎﻣﻞ ﻣﺘﺪﻫﺎی ﺟﺎدوﯾﯽ ﻣﺨﺘﻠﻔﯽ اﺳﺖ ﮐﻪ ﺑﺎ زﯾﺮﺧﻂ ﻫﺎی دوﺗﺎﯾﯽ ﺗﻌﺮﯾﻒ ﺷﺪه اﻧﺪ. •
ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ،ﻣﺘﺪ __ __addﯾﮏ ﻣﺘﺪ ﺟﺎدوﯾﯽ اﺳﺖ ﮐﻪ زﻣﺎﻧﯽ ﻓﺮاﺧﻮاﻧﯽ ﻣﯽ ﺷﻮد ﮐﻪ دو ﻋﺪد را ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮ +اﺿﺎﻓﻪ ﮐﻨﯿﻢ. •
ﺑﺎ اﯾﻦ ﺣﺎل ،ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﻗﺒﻼ ً ذﮐﺮ ﺷﺪ ،روشﻫﺎی ﺟﺎدوﯾﯽ ﺑﻪ اﯾﻦ ﻣﻌﻨﺎ ﻧﯿﺴﺖ ﮐﻪ ﻣﺴﺘﻘﯿﻤﺎ ً اﺳﺘﻔﺎده ﺷﻮﻧﺪ ،ﺑﻠﮑﻪ ﺑﻪ ﺻﻮرت دروﻧﯽ از ﻃﺮﯾﻖ •
ﻣﺘﺪﻫﺎی ﺟﺎدوﯾﯽ اﻏﻠﺐ ﺑﺮای ﺗﻌﺮﯾﻒ رﻓﺘﺎرﻫﺎی ﺑﺎرﮔﺬاری ﺷﺪه اﭘﺮاﺗﻮرﻫﺎی از ﭘﯿﺶ ﺗﻌﺮﯾﻒ ﺷﺪه در ﭘﺎﯾﺘﻮن اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ. •
ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ،ﻋﻤﻠﮕﺮﻫﺎی ﺣﺴﺎﺑﯽ ﺑﻪ ﻃﻮر ﭘﯿﺶ ﻓﺮض ﺑﺮ اﺳﺎس ﻋﻤﻠﻮﻧﺪﻫﺎی ﻋﺪدی ﻋﻤﻞ ﻣﯽ ﮐﻨﻨﺪ. •
اﯾﻦ ﺑﺪان ﻣﻌﻨﯽ اﺳﺖ ﮐﻪ اﺷﯿﺎء ﻋﺪدی ﺑﺎﯾﺪ ﻫﻤﺮاه ﺑﺎ ﻋﻤﻠﮕﺮﻫﺎﯾﯽ ﻣﺎﻧﻨﺪ / ،* ،- ،+و ﻏﯿﺮه اﺳﺘﻔﺎده ﺷﻮﻧﺪ. •
ﻋﻤﻠﮕﺮ +ﻧﯿﺰ ﺑﻪ ﻋﻨﻮان ﯾﮏ ﻋﻤﻠﮕﺮ اﻟﺤﺎق در ﮐﻼس ﻫﺎی list ،stringو tupleاﺳﺘﻔﺎده ﻣﯽ ﺷﻮد. •
در ﺑﺨﺶ ﻫﺎی ﺑﻌﺪی ﭼﻨﺪ ﻣﺘﺪ ﺟﺎدوﯾﯽ ﻣﻬﻢ ﺑﺮرﺳﯽ ﻣﯿﺸﻮد. •
__new__() method ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 45
در ﭘﺎﯾﺘﻮن ﻣﺘﺪ ﺟﺎدوﯾﯽ )(__ __newﺣﺘﻤﺎ ﻗﺒﻞ از ﻣﺘﺪ )(__ __initﻓﺮاﺧﻮاﻧﯽ ﻣﯽ ﺷﻮد. •
ﻣﺘﺪ )(__ __newﯾﮏ ﺷﯽ ﺟﺪﯾﺪ ﺑﺮﻣﯽ ﮔﺮداﻧﺪ ﮐﻪ ﺳﭙﺲ ﺑﺎ )(__ __initﻣﻘﺪاردﻫﯽ اوﻟﯿﻪ ﻣﯽ ﺷﻮد. •
__str__() method ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 46
ﺑﺮای ﺑﺎزﮔﺮداﻧﺪن ﯾﮏ ﻧﻤﺎﯾﺶ رﺷﺘﻪ ﻗﺎﺑﻞ ﭼﺎپ از ﻫﺮ ﮐﻼس ﺗﻌﺮﯾﻒ ﺷﺪه ﺗﻮﺳﻂ ﮐﺎرﺑﺮ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد. •
ﺑﺮای ﻣﺜﺎل ﻋﺪد ۱۲را ﺑﻪ ﻋﻨﻮان ورودی ﺑﻪ ﺗﺎﺑﻊ )( strﻣﯿﺪﻫﯿﺪ. •
ﭼﻮن در ﮐﻼس ﺷﺊ intﻣﺘﺪ __ __strﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ ﻣﯿﺘﻮان ﻣﻘﺪار ﻋﺪد ﺻﺤﯿﺢ را ﺑﻪ ﻣﺘﻦ ﺗﺒﺪﯾﻞ ﮐﺮد! •
در ﺣﺎﻟﺖ ﻋﺎدی اﮔﺮ ﯾﮏ ﺷﺊ ﺳﺎﺧﺘﻪ ﺷﺪه از ﮐﻼس را ﺑﻪ ﺗﺎﺑﻊ آن ﭼﯿﺰی اﺳﺖ ﮐﻪ دﻟﺨﻮاه ﻣﺎ اﺳﺖ. •
__add__() method ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 47
ﺑﺎ ﺗﻌﺮﯾﻒ اﯾﻦ ﻣﺘﺪ ﺑﺮای ﮐﻼس ﻣﯿﺘﻮان ﻗﺎﺑﻠﯿﺘﯽ ﺑﻪ ﺷﺊ ﻫﺎی ﺳﺎﺧﺘﻪ ﺷﺪه از ﮐﻼس داد ﮐﻪ ﺑﺘﻮان ﺑﺎ ﻋﻤﻠﮕﺮ +ﺧﺮوﺟﯽ ﻫﺎی ﺷﺊ را ﺟﻤﻊ ﮐﺮد. •
Magic methods ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 48
داﻧﺴﺘﯿﻢ ﮐﻪ ﻫﺪف اﺳﺘﻔﺎده از آﻧﻬﺎ در ﮐﻼس دادن ﺑﺮﺧﯽ ﻗﺎﺑﻠﯿﺖ ﻫﺎ ﺑﻪ ﮐﻼس اﺳﺖ. •
ﻣﺜﻼ ﻣﯿﺘﻮان ﺑﺎ ﻣﺘﺪ __ __strﻗﺎﺑﻠﯿﺘﯽ ﺑﻪ ﮐﻼس داد ﮐﻪ زﻣﺎﻧﯽ ﮐﻪ آن را ﭘﺮﯾﻨﺖ ﻣﯿﮑﻨﯿﻢ ﺧﺮوﺟﯽ دﻟﺨﻮاه ﻣﺎ ﺑﺎﺷﺪ. •
ﯾﺎ ﺑﺎ ﻣﺘﺪ __ __addﻣﯿﺘﻮان ﻗﺎﺑﻠﯿﺘﯽ ﺑﻪ ﮐﻼس داد ﮐﻪ ﺷﺊ ﻫﺎی ﺳﺎﺧﺘﻪ ﺷﺪه آن ﮐﻼس را ﺑﺘﻮان ﺑﺎ ﻣﻘﺎدﯾﺮ دﯾﮕﺮ ﺟﻤﻊ ﮐﺮد. •
ﺟﺪول ﻣﺘﺪ ﻫﺎی ﺟﺎدوﯾﯽ ﮐﺎرﺑﺮدی در ﺑﺨﺶ ﻫﺎی ﺑﻌﺪی آﻣﺪه اﺳﺖ. •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺷﺊ ﮔﺮا OBJECT ORIENTED PROGRAMMING PART 49