در این مطلب، ویدئو آریل اورتیز – الگوهای طراحی در پایتون برای چشمان آموزش ندیده – PyCon 2019 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 3:14:48
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:03,830
بسیار خوب ساعت 120 ظهر بخیر همه
2
00:00:03,830 –> 00:00:10,559
به این آموزش خوش آمدید الگوهای طراحی
3
00:00:10,559 –> 00:00:14,429
در پایتون برای چشمان آموزش ندیده همانطور
4
00:00:14,429 –> 00:00:17,310
که چند لحظه پیش اشاره کردم این پیوند
5
00:00:17,310 –> 00:00:19,109
به مطالبی است که ما در آن حضور داشتیم
6
00:00:19,109 –> 00:00:22,560
ببخشید من از استفاده خواهم کرد خوب
7
00:00:22,560 –> 00:00:27,150
این را در سایت مربوطه منتشر کردم.
8
00:00:27,150 –> 00:00:30,330
در صفحه آموزش PyCon خوب است،
9
00:00:30,330 –> 00:00:33,239
بنابراین احتمالاً از قبل می دانید که ما به
10
00:00:33,239 –> 00:00:37,250
تمام مطالب از طریق مطالب وب دسترسی خواهیم داشت
11
00:00:37,250 –> 00:00:40,710
، بنابراین مطمئن شوید
12
00:00:40,710 –> 00:00:42,059
که اتصال دارید، به یاد داشته باشید که یک
13
00:00:42,059 –> 00:00:46,320
شبکه Wi-Fi عمومی PyCon 2019 وجود دارد که
14
00:00:46,320 –> 00:00:52,620
امیدواریم به آن دسترسی داشته باشید. این من هستم، من
15
00:00:52,620 –> 00:00:55,559
از مکزیک آمده ام، نام من آریل اورتیز است.
16
00:00:55,559 –> 00:00:58,859
17
00:00:58,859 –> 00:01:01,829
18
00:01:01,829 –> 00:01:05,700
19
00:01:05,700 –> 00:01:08,460
20
00:01:08,460 –> 00:01:11,070
من به مکزیکوسیتی نزدیکتر هستم و به
21
00:01:11,070 –> 00:01:13,260
22
00:01:13,260 –> 00:01:16,920
مدت 25 سال عضو هیئت علمی تمام وقت بوده ام و
23
00:01:16,920 –> 00:01:19,560
عمدتاً موضوعات مرتبط با علوم رایانه را تدریس می
24
00:01:19,560 –> 00:01:22,470
کنم که در آنها چند سالی است که از پایتون
25
00:01:22,470 –> 00:01:27,360
در زمینه های مختلف
26
00:01:27,360 –> 00:01:28,950
کامپایلر ساختارهای داده استفاده می کنم. توسعه وب ساخت و ساز
27
00:01:28,950 –> 00:01:32,159
و غیره بسیار خوب، پس
28
00:01:32,159 –> 00:01:34,770
باید ایمیل من باشد یا در پایان ظاهر می شود،
29
00:01:34,770 –> 00:01:36,689
بنابراین اگر می خواهید با من تماس بگیرید، می توانید این کار را انجام دهید
30
00:01:36,689 –> 00:01:42,630
، بنابراین این آموزش در مورد چه چیزی است،
31
00:01:42,630 –> 00:01:44,729
خوب در مورد الگوهای طراحی است، ما
32
00:01:44,729 –> 00:01:47,070
کمی زمان صرف خواهیم کرد یک
33
00:01:47,070 –> 00:01:48,840
بررسی کلی، اما امیدواریم که بقیه
34
00:01:48,840 –> 00:01:52,200
ارائه ما به داشتن
35
00:01:52,200 –> 00:01:53,610
کمی تجربه عملی در
36
00:01:53,610 –> 00:01:56,579
کار با الگوهای طراحی باشد، اما قبل از اینکه به
37
00:01:56,579 –> 00:01:58,500
طور خاص در مورد
38
00:01:58,500 –> 00:02:01,860
الگوهای طراحی صحبت کنیم، اجازه دهید در مورد اینکه چه چیزی به
39
00:02:01,860 –> 00:02:04,009
طور کلی الگو از نظر
40
00:02:04,009 –> 00:02:10,470
نرم افزاری است صحبت کنیم. بنابراین یک الگو یا در این مورد
41
00:02:10,470 –> 00:02:12,050
الگوها
42
00:02:12,050 –> 00:02:13,580
مفید خواهند بود زیرا
43
00:02:13,580 –> 00:02:16,580
تجربیاتی را در توسعه نرمافزار به تصویر میکشند
44
00:02:16,580 –> 00:02:18,170
که
45
00:02:18,170 –> 00:02:20,240
بارها و بارها کارایی آنها ثابت شده است و
46
00:02:20,240 –> 00:02:25,400
راهحلی برای مشکلات خاص ارائه میدهند، بنابراین به
47
00:02:25,400 –> 00:02:26,690
عبارت دیگر یک الگو کاری است که
48
00:02:26,690 –> 00:02:29,450
شما در آن انجام دادهاید. گذشته موفقیت آمیز بود و
49
00:02:29,450 –> 00:02:32,630
می خواهید دوباره آن را در موقعیت های مختلف اعمال کنید
50
00:02:32,630 –> 00:02:36,500
، بخش مهمی که در اینجا باید به
51
00:02:36,500 –> 00:02:39,650
آن اشاره کرد این است که الگوها
52
00:02:39,650 –> 00:02:43,040
اینگونه نیستند و اختراع نشده اند. هی در
53
00:02:43,040 –> 00:02:45,380
واقع کشف شده اند، بنابراین در این مرحله
54
00:02:45,380 –> 00:02:47,870
متوجه خواهید شد که شاید برخی از
55
00:02:47,870 –> 00:02:50,180
الگوهای طراحی که ما به آنها نگاه می کنیم ممکن است
56
00:02:50,180 –> 00:02:52,190
در گذشته از آنها استفاده کرده باشید
57
00:02:52,190 –> 00:02:53,570
و نمی دانستید که آنها الگوهای طراحی هستند
58
00:02:53,570 –> 00:02:55,040
و ناگهان بگویید اوه من
59
00:02:55,040 –> 00:02:57,440
اختراع کردم آن الگو را یادم میآید که
60
00:02:57,440 –> 00:03:00,140
خودم با آن راهحل آمدم، خوب
61
00:03:00,140 –> 00:03:01,850
حقیقت این است که شما احتمالاً خودتان آن را کشف کردهاید،
62
00:03:01,850 –> 00:03:03,740
خوب چیزی که در
63
00:03:03,740 –> 00:03:06,350
اینجا در این آموزش میخواهید یاد بگیرید، نام
64
00:03:06,350 –> 00:03:08,150
آن الگو است، خوب است و شما خواهید دید
65
00:03:08,150 –> 00:03:10,430
که خیلی چیزهای دیگر را به خوبی خواهید دید. مردم به آن فکر کردهاند
66
00:03:10,430 –> 00:03:12,800
و زمینه بهتری را
67
00:03:12,800 –> 00:03:14,870
در مورد اینکه چگونه میتوانید آن را بهبود ببخشید و
68
00:03:14,870 –> 00:03:17,890
از آن استفاده کنید، در شرایط دیگری به شما میدهد،
69
00:03:17,890 –> 00:03:22,550
بنابراین الگوها بار دیگر چیزهایی هستند که
70
00:03:22,550 –> 00:03:24,590
اتفاق افتاده است که ما میتوانیم در نقطهای تشخیص دهیم
71
00:03:24,590 –> 00:03:26,930
که مشکل خاصی را در یک نقطه خاص حل میکند
72
00:03:26,930 –> 00:03:29,050
. زمینه و ما میتوانیم بارها از آنها استفاده کنیم
73
00:03:29,050 –> 00:03:32,060
بهجای اختراع مجدد
74
00:03:32,060 –> 00:03:33,980
آن راهحلها، اساساً
75
00:03:33,980 –> 00:03:37,160
میتوانیم هر زمان که لازم بود از آنها استفاده کنیم، بنابراین اکنون میخواهیم در
76
00:03:37,160 –> 00:03:39,470
مورد
77
00:03:39,470 –> 00:03:43,310
دستهبندی الگوها بسته به انتزاع آنها صحبت کنیم.
78
00:03:43,310 –> 00:03:47,030
در سطح n خواهیم
79
00:03:47,030 –> 00:03:50,330
دید که وقتی در مورد الگوها صحبت می کنیم سه سطح انتزاعی وجود دارد،
80
00:03:50,330 –> 00:03:53,630
بگذارید
81
00:03:53,630 –> 00:03:57,170
اولین مورد را ذکر کنیم، این موارد وجود دارد
82
00:03:57,170 –> 00:03:59,810
که اصطلاحات اصطلاحات نامیده می شوند.
83
00:03:59,810 –> 00:04:01,910
84
00:04:01,910 –> 00:04:05,510
85
00:04:05,510 –> 00:04:07,459
مشکلات خاص در یک
86
00:04:07,459 –> 00:04:09,680
زبان خاص، این اصطلاحات
87
00:04:09,680 –> 00:04:13,010
معمولاً لزوماً
88
00:04:13,010 –> 00:04:14,930
به درستی به زبانهای دیگر مهاجرت نمیکنند، بنابراین
89
00:04:14,930 –> 00:04:16,790
زبانهای برنامهنویسی بسیار
90
00:04:16,790 –> 00:04:18,500
خاص هستند، ما چند نمونه
91
00:04:18,500 –> 00:04:20,810
از برخی اصطلاحات رایج را در پایتون
92
00:04:20,810 –> 00:04:23,979
میبینیم، سپس چیزهایی به نام
93
00:04:23,979 –> 00:04:25,360
معماری داریم.
94
00:04:25,360 –> 00:04:28,270
بالاترین سطحی است
95
00:04:28,270 –> 00:04:32,870
که ما در رابطه با الگوهای مربوط به
96
00:04:32,870 –> 00:04:34,790
معماری معماری در سیستم
97
00:04:34,790 –> 00:04:38,240
داریم، ما در مورد سطح کلان صحبت می کنیم
98
00:04:38,240 –> 00:04:41,240
یا تصویر کلان در مورد نحوه کار سیستم
99
00:04:41,240 –> 00:04:43,310
و در واقع ساختار آن در
100
00:04:43,310 –> 00:04:45,040
مورد اجزاء و روشی که آنها صحبت می کنیم.
101
00:04:45,040 –> 00:04:47,720
اجزای سازنده روابط
102
00:04:47,720 –> 00:04:50,600
بین آنها وجود دارد، بنابراین الگوهای معماری
103
00:04:50,600 –> 00:04:53,090
باید با چیزهایی انجام شود که
104
00:04:53,090 –> 00:04:55,700
احتمالاً اصطلاحات l را شنیده اید. مانند MVC
105
00:04:55,700 –> 00:04:59,030
میکرو سرویسهای مدل-نما-کنترلر یا
106
00:04:59,030 –> 00:05:01,460
اگر در یونیکس و لینوکس برنامهنویسی کردهاید
107
00:05:01,460 –> 00:05:03,710
، چیزی به نام لولهها و
108
00:05:03,710 –> 00:05:05,800
فیلترها وجود دارد، همه اینها در واقع
109
00:05:05,800 –> 00:05:09,020
الگوهای معماری هستند که واقعاً به ما اجازه میدهند
110
00:05:09,020 –> 00:05:12,410
به طور کلی
111
00:05:12,410 –> 00:05:15,260
ساختار یک سیستم کار کامل را فراهم کنیم.
112
00:05:15,260 –> 00:05:18,530
سطح بسیار بالایی دارند و
113
00:05:18,530 –> 00:05:20,540
دقیقاً در بالای چیزی قرار دارند که ما امروز روی آن تمرکز میکنیم که به
114
00:05:20,540 –> 00:05:24,020
115
00:05:24,020 –> 00:05:26,150
116
00:05:26,150 –> 00:05:27,740
117
00:05:27,740 –> 00:05:30,620
118
00:05:30,620 –> 00:05:33,370
الگوهای طراحی مربوط میشود یا مربوط به الگوهای طراحی است. با
119
00:05:33,370 –> 00:05:36,950
مسائل خاصی در مورد طراحی بخشی
120
00:05:36,950 –> 00:05:38,600
از یک سیستم، نه سیستم کامل، بلکه فقط
121
00:05:38,600 –> 00:05:43,330
ممکن است بخشی باشد، انجام دهید و بار دیگر اینها
122
00:05:43,330 –> 00:05:46,370
راه حل های مشکلات تکرار شونده هستند و
123
00:05:46,370 –> 00:05:48,080
این ویژگی خاص را دارند
124
00:05:48,080 –> 00:05:50,840
که معمولاً مستقل از زبان هستند، اما
125
00:05:50,840 –> 00:05:52,850
معمولاً به آن گرایش دارند. یک
126
00:05:52,850 –> 00:05:55,640
الگوی برنامه نویسی خاص، بنابراین در اینجا
127
00:05:55,640 –> 00:05:58,000
ما به طور خاص برای
128
00:05:58,000 –> 00:06:00,200
الگوهای طراحی نگاه می کنیم، ما به
129
00:06:00,200 –> 00:06:03,820
آداپتور و مشاهدهگر روش قالب singleton و موارد دیگر نگاه می کنیم.
130
00:06:03,820 –> 00:06:08,690
الگوهای طراحی را می
131
00:06:08,690 –> 00:06:10,760
توان در زبان های دیگری غیر
132
00:06:10,760 –> 00:06:12,890
از پایتون استفاده کرد، در واقع
133
00:06:12,890 –> 00:06:15,050
در لحظه ای خواهیم دید که وقتی
134
00:06:15,050 –> 00:06:18,050
حرکت الگوی عمومی شروع شد، بسیاری از
135
00:06:18,050 –> 00:06:19,729
اطلاعات مربوط به الگو در
136
00:06:19,729 –> 00:06:21,320
واقع با استفاده از زبان هایی که
137
00:06:21,320 –> 00:06:25,880
در آن زمان در دسترس بودند، عمدتاً ++C توصیف می شود.
138
00:06:25,880 –> 00:06:29,090
و البته در زمانهای اخیر
139
00:06:29,090 –> 00:06:30,800
ما میتوانیم این را برای هر
140
00:06:30,800 –> 00:06:32,870
زبان شی گرا دیگری اعمال
141
00:06:32,870 –> 00:06:34,130
کنیم، بهطور خاص، الگوهای طراحی که میخواهیم به آنها
142
00:06:34,130 –> 00:06:37,729
نگاه کنیم، به برنامهنویسی شی گرا مربوط میشوند،
143
00:06:37,729 –> 00:06:38,919
144
00:06:38,919 –> 00:06:41,710
سایر پارادایمهای برنامهنویسی مانند
145
00:06:41,710 –> 00:06:43,360
الگوی برنامهنویسی تابعی. یا
146
00:06:43,360 –> 00:06:44,919
پارادایم برنامه نویسی ضروری، آنها
147
00:06:44,919 –> 00:06:46,569
نیز ممکن است الگوهای طراحی خاص خود را داشته باشند،
148
00:06:46,569 –> 00:06:48,009
اما مواردی که ما به آنها
149
00:06:48,009 –> 00:06:50,889
نگاه خواهیم کرد، مختص
150
00:06:50,889 –> 00:06:52,830
پارادایم شی گرا هستند، بسیار خوب،
151
00:06:52,830 –> 00:06:56,289
بنابراین اجازه دهید به سرعت به چند نمونه از
152
00:06:56,289 –> 00:07:00,520
اصطلاحات نگاه کنیم، اجازه دهید به سراغ مواد خود
153
00:07:00,520 –> 00:07:04,479
برویم و ما دوباره به اینجا در بخش
154
00:07:04,479 –> 00:07:10,120
دسته بندی الگو می رویم، بنابراین بیایید
155
00:07:10,120 –> 00:07:13,629
به این چیزهایی که اصطلاحات نامیده می شوند نگاهی بیندازیم، فکر
156
00:07:13,629 –> 00:07:16,439
می کنم ارزش ذکر کردن را
157
00:07:16,439 –> 00:07:19,810
دارند efly پس بیایید به چند
158
00:07:19,810 –> 00:07:21,909
نمونه از اصطلاحات در پایتون نگاهی بیندازیم
159
00:07:21,909 –> 00:07:24,279
به یاد داشته باشید که اینها الگوهایی هستند که
160
00:07:24,279 –> 00:07:27,129
سطح بسیار پایینی دارند و معمولاً به
161
00:07:27,129 –> 00:07:29,620
طور خاص در یک زبان برنامه نویسی خاص استفاده می
162
00:07:29,620 –> 00:07:31,779
شوند و در این مورد این پایتون است
163
00:07:31,779 –> 00:07:35,469
که ما روی آن تمرکز می کنیم و این
164
00:07:35,469 –> 00:07:37,389
نام ها عبارتند از لزوماً جهانی نیستند،
165
00:07:37,389 –> 00:07:39,339
بنابراین ممکن است آنها را با نامهای دیگری بشناسید،
166
00:07:39,339 –> 00:07:42,400
اما ایده کلی
167
00:07:42,400 –> 00:07:44,860
باید اساساً یکسان باشد، بنابراین در اینجا
168
00:07:44,860 –> 00:07:46,569
چیزی داریم که من آن را
169
00:07:46,569 –> 00:07:50,289
عملگرهای مقایسه زنجیرهای نامیدم، بسیار خوب است، بنابراین در این
170
00:07:50,289 –> 00:07:56,529
مورد ما یک عبارت if داریم و
171
00:07:56,529 –> 00:07:59,889
میخواهیم بررسی کنید که آیا X یک متغیر است،
172
00:07:59,889 –> 00:08:02,020
مقدار آن متغیر بین این دو
173
00:08:02,020 –> 00:08:04,569
مقدار بین 0 تا 10 است، البته
174
00:08:04,569 –> 00:08:06,610
چیزی بزرگتر از 0 اما
175
00:08:06,610 –> 00:08:08,830
کمتر از 10 در بسیاری از
176
00:08:08,830 –> 00:08:10,089
زبان های برنامه نویسی، در واقع اکثر
177
00:08:10,089 –> 00:08:11,560
زبان های برنامه نویسی شما در نهایت چیزی
178
00:08:11,560 –> 00:08:13,599
شبیه به این را می نویسید که درخواست می کنید. ابتدا یک شرط
179
00:08:13,599 –> 00:08:15,129
و سپس با استفاده از یک پایان به آن ملحق میشوید
180
00:08:15,129 –> 00:08:16,839
و مطمئن میشوید که هر دوی آنها
181
00:08:16,839 –> 00:08:20,469
واقعاً درست هستند، اما پایتون
182
00:08:20,469 –> 00:08:22,509
در واقع چیز بسیار بهتری برای شما دارد.
183
00:08:22,509 –> 00:08:25,509
فقط می توان 0 را کمتر از X کمتر از 10 قرار داد، بسیار
184
00:08:25,509 –> 00:08:28,240
خوب، من به این عملگر مقایسه زنجیره ای زنگ می زنم
185
00:08:28,240 –> 00:08:30,669
تا بتوانیم از تکرار
186
00:08:30,669 –> 00:08:33,219
متغیر X جلوگیری کنیم و در پایان فقط آن را به
187
00:08:33,219 –> 00:08:34,659
این صورت بنویسیم و البته حتی
188
00:08:34,659 –> 00:08:36,309
لازم نیست که آنها همان عملگر باشند. به عنوان مثال
189
00:08:36,309 –> 00:08:38,049
در اینجا ما می توانیم کمتر از و در اینجا
190
00:08:38,049 –> 00:08:41,649
می توانیم کمتر یا مساوی یا متفاوت
191
00:08:41,649 –> 00:08:43,779
از غیره داشته باشیم و نیازی نیست که همه
192
00:08:43,779 –> 00:08:47,589
اینها را با استفاده از این عملگرهای ربط
193
00:08:47,589 –> 00:08:51,130
مانند آخر بپیوندیم.
194
00:08:51,130 –> 00:08:53,110
195
00:08:53,110 –> 00:08:58,160
196
00:08:58,160 –> 00:09:00,110
مقایسه زنجیره ای خوب است،
197
00:09:00,110 –> 00:09:03,529
پس ما اصطلاح دیگری داریم
198
00:09:03,529 –> 00:09:05,840
که آن را محیط اسکریپت سطح بالا
199
00:09:05,840 –> 00:09:08,690
می نامیم، بنابراین یک فایل می تواند در واقع در جایی که مقداری
200
00:09:08,690 –> 00:09:10,250
کد پایتون را قرار می دهیم، در واقع دو
201
00:09:10,250 –> 00:09:13,100
کاربرد متفاوت داشته باشد، می توانیم مستقیماً از آن به عنوان
202
00:09:13,100 –> 00:09:14,420
یک اسکریپت استفاده کنیم، چیزی که بلافاصله اجرا می
203
00:09:14,420 –> 00:09:18,529
کنیم یا ما می توانیم از آن به عنوان یک ماژول استفاده
204
00:09:18,529 –> 00:09:22,070
کنیم که از فایل دیگری در برنامه خود وارد می کنیم، بسیار
205
00:09:22,070 –> 00:09:25,310
خوب است و گاهی اوقات می خواهیم
206
00:09:25,310 –> 00:09:27,529
207
00:09:27,529 –> 00:09:29,180
بسته به اینکه به عنوان یک اسکریپت
208
00:09:29,180 –> 00:09:31,310
به عنوان یک برنامه مستقل اجرا می شود یا اینکه آن را اجرا می کنیم، بتوانیم این فایل را به روش های مختلف
209
00:09:31,310 –> 00:09:34,100
اجرا کنیم. به عنوان یک ماژول، بنابراین ما می توانیم
210
00:09:34,100 –> 00:09:37,130
معمولاً این اصطلاح کوچک را در پایین پرونده خود
211
00:09:37,130 –> 00:09:39,800
قرار دهیم، ما می خواهیم بپرسیم که آیا
212
00:09:39,800 –> 00:09:43,310
نام فعلی واحدی که در
213
00:09:43,310 –> 00:09:45,529
حال اجرا هستیم اگر نام آن برابر با اصلی
214
00:09:45,529 –> 00:09:48,410
است اگر در اینجا وجود داشته باشد. dunder اصلی
215
00:09:48,410 –> 00:09:51,410
dunder ما اساساً این را به عنوان
216
00:09:51,410 –> 00:09:54,140
یک برنامه مستقل اجرا می کنیم، اگر اینطور نیست
217
00:09:54,140 –> 00:09:56,750
، نام در واقع
218
00:09:56,750 –> 00:09:57,980
نام ماژولی است که ما در حال حاضر
219
00:09:57,980 –> 00:10:00,320
در حال اجرا هستیم، بنابراین در واقع این
220
00:10:00,320 –> 00:10:02,330
قسمت از کد را رد می کند، بنابراین مفید است.
221
00:10:02,330 –> 00:10:03,770
یک بار دیگر اگر بخواهیم
222
00:10:03,770 –> 00:10:06,800
کد خاصی را انجام دهیم که اجرای آن فقط
223
00:10:06,800 –> 00:10:09,380
در چارچوب برنامه مستقل
224
00:10:09,380 –> 00:10:11,780
225
00:10:11,780 –> 00:10:16,100
226
00:10:16,100 –> 00:10:20,510
227
00:10:20,510 –> 00:10:23,089
228
00:10:23,089 –> 00:10:24,800
منطقی باشد. گروههایی از عناصر در
229
00:10:24,800 –> 00:10:26,360
برنامه ما که در نهایت به یک
230
00:10:26,360 –> 00:10:28,820
مقدار واحد ارزیابی میشوند، بنابراین بیشتر اوقات وقتی
231
00:10:28,820 –> 00:10:32,480
میخواهیم شرطیها را انجام دهیم، به خوبی
232
00:10:32,480 –> 00:10:34,430
از دستور if استفاده میکنیم و اگر
233
00:10:34,430 –> 00:10:35,780
شرط درست است، اگر
234
00:10:35,780 –> 00:10:36,950
اینطور نیست، کاری را انجام میدهیم. se
235
00:10:36,950 –> 00:10:40,130
این در واقع می تواند به این کاهش یابد
236
00:10:40,130 –> 00:10:42,380
که یک عبارت شرطی است، یک
237
00:10:42,380 –> 00:10:44,209
عبارت واحد است که یک مقدار واحد را برمی گرداند
238
00:10:44,209 –> 00:10:46,190
و سپس می توانید از آن مقدار
239
00:10:46,190 –> 00:10:48,980
در متن دستورات دیگری در
240
00:10:48,980 –> 00:10:51,080
این مورد یک بازگشت استفاده کنید، بنابراین در اینجا ما می پرسیم
241
00:10:51,080 –> 00:10:54,080
که آیا X است کمتر از 5 برگردان 10 اگر
242
00:10:54,080 –> 00:10:56,240
نیست ما 20 را برمی گردانیم شما می توانید آن را به این شکل بازنویسی
243
00:10:56,240 –> 00:10:58,339
کنید ببینید در اینجا ما می گوییم که
244
00:10:58,339 –> 00:11:00,560
اگر X کمتر از 5 باشد باید 10 را برگردانیم
245
00:11:00,560 –> 00:11:02,839
برخی از
246
00:11:02,839 –> 00:11:05,030
زبان های برنامه نویسی دیگر ساختار مشابهی دارند
247
00:11:05,030 –> 00:11:06,200
که معمولاً به آن
248
00:11:06,200 –> 00:11:08,060
عملگر سه تایی می گویند. در زبان های مشتق شده
249
00:11:08,060 –> 00:11:09,920
از C بنابراین شما چیزی شبیه به
250
00:11:09,920 –> 00:11:12,320
این را در جاوا و جاوا اسکریپت و
251
00:11:12,320 –> 00:11:14,750
C شارپ و غیره پیدا خواهید کرد و آنها در واقع از
252
00:11:14,750 –> 00:11:16,700
یک علامت سوال برای نشان دادن
253
00:11:16,700 –> 00:11:19,100
این عملگر سه تایی خاص استفاده می کنند و
254
00:11:19,100 –> 00:11:20,450
آن را Turney می نامند زیرا شما سه
255
00:11:20,450 –> 00:11:22,790
عملوند دارید. یک شرط و یک
256
00:11:22,790 –> 00:11:25,820
نتیجه ممکن در صورت درست بودن و
257
00:11:25,820 –> 00:11:27,850
نتیجه ممکن در صورت نادرست بودن، بنابراین
258
00:11:27,850 –> 00:11:30,890
در اینجا در این مورد ابتدا شرط مورد نظر ما را ارزیابی می
259
00:11:30,890 –> 00:11:32,930
کنیم که کمتر از
260
00:11:32,930 –> 00:11:35,360
5 بازگشت شهر است. n در غیر این صورت
261
00:11:35,360 –> 00:11:36,890
ما داریم 20 ساله می شویم، بنابراین در پایان
262
00:11:36,890 –> 00:11:38,990
شما همان نتیجه ای را خواهید داشت که اینجا دارید، خوب
263
00:11:38,990 –> 00:11:41,930
حالا می دانم که برخی ممکن است بگویند خوب
264
00:11:41,930 –> 00:11:43,460
من در واقع این آخری را کمی
265
00:11:43,460 –> 00:11:45,890
گیج کننده تر می دانم تا آن چیزی
266
00:11:45,890 –> 00:11:47,870
که شما اینجا دارید.
267
00:11:47,870 –> 00:11:50,000
اگر واقعاً این را زیاد دیدهاید، فکر کنید باید کمی با خانواده مرتبط باشد
268
00:11:50,000 –> 00:11:52,640
، به نظر
269
00:11:52,640 –> 00:11:54,860
میرسد که ما چیزهای زیادی را در یک خط قرار دادهایم،
270
00:11:54,860 –> 00:11:57,860
خوب است، بنابراین اگر دوست ندارید از آن استفاده کنید، یک بار دیگر
271
00:11:57,860 –> 00:11:59,210
نیازی به استفاده از آن ندارید.
272
00:11:59,210 –> 00:12:01,640
از آن استفاده کن درست است، این فقط یک اصطلاح رایج است،
273
00:12:01,640 –> 00:12:05,990
اما باید از آن استفاده کنید و مطمئن
274
00:12:05,990 –> 00:12:08,000
شوید که به آن عادت کرده اید تا
275
00:12:08,000 –> 00:12:10,250
آن را آسان و قابل درک ببینید، خوب است،
276
00:12:10,250 –> 00:12:11,960
اما اگر آن را کمی رمزآلود یافتید،
277
00:12:11,960 –> 00:12:13,670
می توانم ادامه دهید با استفاده از این یکی
278
00:12:13,670 –> 00:12:16,670
در اینجا بسیار خوب است، اوم، این راهی است که ما
279
00:12:16,670 –> 00:12:21,800
می توانیم آن را انجام دهیم و سپس در نهایت این
280
00:12:21,800 –> 00:12:23,570
وضعیت را داریم که در نمایه سازی شما در حین تکرار نامیده می شود،
281
00:12:23,570 –> 00:12:26,210
گاهی
282
00:12:26,210 –> 00:12:29,690
اوقات یک لیست یا نوعی میانی داریم که
283
00:12:29,690 –> 00:12:33,290
می خواهیم به صورت متوالی در
284
00:12:33,290 –> 00:12:35,360
تمام موارد طی کنیم. عناصر و ما عناصر را می
285
00:12:35,360 –> 00:12:37,480
خواهیم اما پارتیک را نیز می خواهیم
286
00:12:37,480 –> 00:12:40,610
ایندکس های کلی هر یک از این عناصر
287
00:12:40,610 –> 00:12:42,440
وجود دارد، بنابراین نظرسنجی هایی وجود دارد که می توانید آن را به
288
00:12:42,440 –> 00:12:44,930
خوبی انجام دهید، یک راه خاص وجود دارد که ما
289
00:12:44,930 –> 00:12:46,970
آن را به عنوان پایتون پنوماتیک یا
290
00:12:46,970 –> 00:12:51,530
پایتونیک okay معرفی می کنیم، بنابراین قبل از هر چیز اجازه دهید
291
00:12:51,530 –> 00:12:53,300
چند نمونه ببینیم که چگونه احتمالاً
292
00:12:53,300 –> 00:12:55,610
نباید آن را خوب انجام دهید. شما میخواهید
293
00:12:55,610 –> 00:12:57,290
روی تمام عناصر مجموعه تکرار کنید،
294
00:12:57,290 –> 00:13:00,770
بنابراین از یک استاندارد استفاده میکنید
295
00:13:00,770 –> 00:13:03,920
تا برای هر تکرار، هر
296
00:13:03,920 –> 00:13:05,750
مقدار مجموعه را ارزش گذاری کنید و در اینجا
297
00:13:05,750 –> 00:13:07,370
مقدار فعلی شاخص را چاپ میکنیم
298
00:13:07,370 –> 00:13:09,980
که با صفر شروع میشود و سپس
299
00:13:09,980 –> 00:13:12,860
مقدار فعلی را نیز چاپ میکنیم. مقدار و سپس در
300
00:13:12,860 –> 00:13:16,310
پایان تکرار، یک عدد را به شاخص اضافه میکنیم،
301
00:13:16,310 –> 00:13:17,990
بنابراین در پایان به
302
00:13:17,990 –> 00:13:19,760
افزایش دستی مقدار
303
00:13:19,760 –> 00:13:22,160
ok را ادامه میدهیم، بنابراین یکی از راههایی است که میتوانید آن را انجام دهید، نه
304
00:13:22,160 –> 00:13:25,820
به روش بعدی توصیه نمیشود و
305
00:13:25,820 –> 00:13:28,130
احتمالاً بسیاری از افراد این کار را به این روش انجام میدهند.
306
00:13:28,130 –> 00:13:29,900
مجموعه ای را که برای طول آن درخواست می کنید، دریافت کنید
307
00:13:29,900 –> 00:13:32,630
و سپس آن را در یک محدوده
308
00:13:32,630 –> 00:13:34,850
okay قرار دهید، بنابراین تمام عناصر را
309
00:13:34,850 –> 00:13:37,040
از صفر به بالا تا طول
310
00:13:37,040 –> 00:13:39,440
مجموعه منهای یک اوکی که در آن
311
00:13:39,440 –> 00:13:41,600
ایندکس به پایان می رسد، تولید می کنید و سپس col را دریافت می کنید.
312
00:13:41,600 –> 00:13:43,790
lection با استفاده از پرانتز مربع برای
313
00:13:43,790 –> 00:13:45,830
نمایه سازی مجموعه و حالا
314
00:13:45,830 –> 00:13:47,330
شما شاخص و مقدار دارید و می توانید
315
00:13:47,330 –> 00:13:49,880
آن مقادیر را در آنجا چاپ کنید و البته
316
00:13:49,880 –> 00:13:51,770
می توانید با استفاده از این روش بدترین های هر دو دنیا
317
00:13:51,770 –> 00:13:54,590
را دریافت کنید، بنابراین در اینجا یک
318
00:13:54,590 –> 00:13:56,210
انگلیسی با صفر دارید. با بررسی
319
00:13:56,210 –> 00:13:59,060
طول
320
00:13:59,060 –> 00:14:01,880
مجموعه، مقدار را با استفاده از
321
00:14:01,880 –> 00:14:04,790
نشانگذاری براکتهای مربع نمایهسازی استاندارد دریافت
322
00:14:04,790 –> 00:14:07,400
میکنید، در اینجا شاخصی را که مقدار آن را چاپ میکنید چاپ میکنید
323
00:14:07,400 –> 00:14:10,670
و فراموش نکنید که یکی را به ایندکس اضافه کنید بسیار
324
00:14:10,670 –> 00:14:13,130
خوب و یک بار دیگر اینها
325
00:14:13,130 –> 00:14:14,900
کار میکنند. چیزی که شما
326
00:14:14,900 –> 00:14:17,030
انتظارش را داشتید اما موج ترجیحی یک بار
327
00:14:17,030 –> 00:14:19,580
دیگر اصطلاحی ترین یا
328
00:14:19,580 –> 00:14:21,470
نمادین ترین روش برای انجام آن این است که
329
00:14:21,470 –> 00:14:26,090
با استفاده از تابعی به نام enumerate okay
330
00:14:26,090 –> 00:14:28,790
در این مورد enumerator یک
331
00:14:28,790 –> 00:14:31,700
مجموعه یا هر شی فاصله ای را ارسال
332
00:14:31,700 –> 00:14:33,350
می کنید و در واقع یک تاپل به شما برمی گرداند.
333
00:14:33,350 –> 00:14:35,480
حاوی دو مقدار مقدار
334
00:14:35,480 –> 00:14:38,000
فعلی شاخص است که در واقع صفر است،
335
00:14:38,000 –> 00:14:41,300
می توانید یک پارامتر اضافی را در اینجا مشخص کنید
336
00:14:41,300 –> 00:14:43,730
که از چه شاخصی می خواهید
337
00:14:43,730 –> 00:14:45,110
شروع کنید، اما به طور پیش فرض اگر این کار را انجام ندهید
338
00:14:45,110 –> 00:14:48,050
مشخص کنید که از صفر شروع می شود بسیار خوب و
339
00:14:48,050 –> 00:14:49,790
شما با هر تکرار شاخص فعلی
340
00:14:49,790 –> 00:14:51,320
و مقدار فعلی را دریافت می کنید و
341
00:14:51,320 –> 00:14:52,700
نیازی نیست کار دیگری انجام دهید، نیازی نیست
342
00:14:52,700 –> 00:14:54,890
که یک متغیر کنترلی داشته باشید که در هر یک باید یک متغیر
343
00:14:54,890 –> 00:14:56,840
اضافه کنید. تکرار، شما
344
00:14:56,840 –> 00:14:59,030
فقط مستقیماً از این مقادیر در اینجا استفاده می کنید، بسیار خوب،
345
00:14:59,030 –> 00:15:03,560
بنابراین این یک موقعیت بسیار رایج است
346
00:15:03,560 –> 00:15:05,420
و در واقع ارزش دارد بدانید که چند
347
00:15:05,420 –> 00:15:07,550
نفر از آن در تابع اعداد استفاده کرده اند
348
00:15:07,550 –> 00:15:09,340
قبل از بسیار عالی،
349
00:15:09,340 –> 00:15:15,090
خوب، بنابراین
350
00:15:15,090 –> 00:15:18,100
[Music]
351
00:15:18,100 –> 00:15:23,800
یک بار دیگر به ارائه خود
352
00:15:23,800 –> 00:15:25,240
بازگردید، به یاد داشته باشید که ما خواهیم بود. تمرکز
353
00:15:25,240 –> 00:15:27,760
اینجا در ادامه آموزش روی این مورد
354
00:15:27,760 –> 00:15:30,550
در الگوهایی که همین چند لحظه پیش دیدیم
355
00:15:30,550 –> 00:15:32,260
یا نمونههایی از اصطلاحات
356
00:15:32,260 –> 00:15:33,880
آنها الگو هستند اما الگوهای بسیار سطح پایینی هستند،
357
00:15:33,880 –> 00:15:34,870
خوب
358
00:15:34,870 –> 00:15:37,090
فقط به طور خلاصه اشاره کنید که اینها چیست و
359
00:15:37,090 –> 00:15:41,080
بیایید کمی برویم و برویم عمیقاً در مورد
360
00:15:41,080 –> 00:15:43,360
اینکه الگوهای طراحی چیست و چگونه
361
00:15:43,360 –> 00:15:47,290
از آنها استفاده می کنیم خوب است، بنابراین اجازه دهید
362
00:15:47,290 –> 00:15:50,770
ابتدا کمی در مورد اینکه
363
00:15:50,770 –> 00:15:56,350
چرا داشتن یا استفاده از الگوهای
364
00:15:56,350 –> 00:15:59,050
طراحی مهم است صحبت کنیم.
365
00:15:59,050 –> 00:16:09,400
f اولین مزیت مهمی
366
00:16:09,400 –> 00:16:11,410
که میخواهیم پیدا کنیم و هنگام
367
00:16:11,410 –> 00:16:12,640
استفاده از الگوهای طراحی این است که آنها
368
00:16:12,640 –> 00:16:14,830
سعی میکنند و راهحلها را آزمایش میکنند، همانطور که
369
00:16:14,830 –> 00:16:18,220
قبلاً توضیح دادیم الگوها،
370
00:16:18,220 –> 00:16:20,470
الگوهای طراحی متمرکز هستند و تمرکز بر مشکلات غیر معمولی
371
00:16:20,470 –> 00:16:22,830
هستند که اغلب اتفاق میافتند و
372
00:16:22,830 –> 00:16:26,050
گاهی اوقات واقعاً ارزش امتحان کردن را دارد.
373
00:16:26,050 –> 00:16:28,690
چرخ را دوباره اختراع کنید منظورم این است که گاهی اوقات
374
00:16:28,690 –> 00:16:31,120
ابزار جالبی است که دوباره اختراع می شود، اما
375
00:16:31,120 –> 00:16:32,320
لحظه ای وجود دارد که ما واقعاً
376
00:16:32,320 –> 00:16:36,310
باید ضرب الاجل های خود را به موقع دریافت کنیم و غیره،
377
00:16:36,310 –> 00:16:38,620
بنابراین واقعاً ارزش ندارد
378
00:16:38,620 –> 00:16:40,540
که همه چیز را اختراع کنیم، بنابراین اگر از
379
00:16:40,540 –> 00:16:42,580
ابزار آزمایش شده استفاده کنیم راه حل واقعاً
380
00:16:42,580 –> 00:16:45,250
کارها را ساده می کند، اما احتمالاً یکی از
381
00:16:45,250 –> 00:16:47,500
مهم ترین چیزها است و هر دوی
382
00:16:47,500 –> 00:16:50,500
آنها بسیار مهم هستند، اما من فکر می کنم که
383
00:16:50,500 –> 00:16:52,750
این یکی بسیار مرتبط
384
00:16:52,750 –> 00:16:55,270
است.
385
00:16:55,270 –> 00:16:56,950
386
00:16:56,950 –> 00:16:58,990
توسعه دهندگان
387
00:16:58,990 –> 00:17:03,060
می توانیم در
388
00:17:03,060 –> 00:17:05,439
برقراری ارتباط و توضیح کارهایی که
389
00:17:05,439 –> 00:17:07,900
قصد انجام آن را داریم بسیار کارآمدتر عمل کنیم، بنابراین ما یک ایده کلی از
390
00:17:07,900 –> 00:17:09,670
چه طراحی طراحی داریم. rns وجود دارد که
391
00:17:09,670 –> 00:17:12,910
آنها چه میکنند و در واقع چه مشکلات خاصی
392
00:17:12,910 –> 00:17:16,060
برای حل آن ایجاد میکنند، ما در واقع میتوانیم در کاری که
393
00:17:16,060 –> 00:17:18,160
انجام میدهیم کمی بیشتر احتمال موفقیت داشته
394
00:17:18,160 –> 00:17:20,740
باشیم، بنابراین در اینجا در
395
00:17:20,740 –> 00:17:23,140
شرایط یک زبان مشترک ما
396
00:17:23,140 –> 00:17:29,370
در تصویر کوچک مادی داریم.
397
00:17:32,370 –> 00:17:36,160
بنابراین این در واقع از آنها گرفته شده است،
398
00:17:36,160 –> 00:17:39,880
اولین کتاب الگوهای طراحی سر بسیار خوب است، بنابراین
399
00:17:39,880 –> 00:17:43,150
در اینجا فردی به نام ریک است و می توانید ببینید
400
00:17:43,150 –> 00:17:45,760
که این مبلغ کمی قدیمی
401
00:17:45,760 –> 00:17:47,350
است زیرا آنها هنوز از آنها از
402
00:17:47,350 –> 00:17:51,160
یک مانیتور صفحه نمایش چاق استفاده می کنند.
403
00:17:51,160 –> 00:17:52,990
در اینجا، بنابراین من این کلاس پخش را ایجاد کردم،
404
00:17:52,990 –> 00:17:55,330
تمام اشیایی که به آن گوش می دهند را ردیابی
405
00:17:55,330 –> 00:17:58,090
می کند و هر زمان که یک داده جدید
406
00:17:58,090 –> 00:17:59,679
به همراه می آید، پیامی
407
00:17:59,679 –> 00:18:02,530
به هر شنونده می فرستد.
408
00:18:02,530 –> 00:18:04,390
409
00:18:04,390 –> 00:18:06,309
410
00:18:06,309 –> 00:18:07,900
خودشان واقعاً پویا هستند و
411
00:18:07,900 –> 00:18:11,590
خیلی خوب هستند، بنابراین اینجا
412
00:18:11,590 –> 00:18:14,800
هم تیمی های این مرد ریک هستند و می گویند
413
00:18:14,800 –> 00:18:18,040
ریک چرا فقط نگفتی که
414
00:18:18,040 –> 00:18:20,980
دقیقاً از الگوی مشاهده گر استفاده
415
00:18:20,980 –> 00:18:22,540
می کنی اگر در حال برقراری ارتباط باشی erns و دیگر
416
00:18:22,540 –> 00:18:24,400
توسعه دهندگان فوراً و
417
00:18:24,400 –> 00:18:26,530
دقیقاً طرحی را که توضیح می
418
00:18:26,530 –> 00:18:29,920
دهید می دانند فقط به تب الگو مبتلا نمی شوند
419
00:18:29,920 –> 00:18:32,890
که می دانید وقتی
420
00:18:32,890 –> 00:18:34,900
شروع به استفاده از الگوها برای hello world کردید متوجه خواهید شد که
421
00:18:34,900 –> 00:18:39,670
این مشکلی است که خواهید
422
00:18:39,670 –> 00:18:43,330
دید. درست در لحظه ای که ما در مورد
423
00:18:43,330 –> 00:18:46,080
محدودیت های الگوهای طراحی صحبت می کنیم این است که
424
00:18:46,080 –> 00:18:50,500
تازه کارها به
425
00:18:50,500 –> 00:18:52,120
محض شروع یادگیری الگوهای طراحی، ناگهان بسیار هیجان زده می
426
00:18:52,120 –> 00:18:53,290
شوند، بنابراین می خواهند آنها را
427
00:18:53,290 –> 00:18:55,600
در همه جا به خوبی اعمال کنند و این یک مشکل است
428
00:18:55,600 –> 00:18:57,100
زیرا گاهی اوقات الگوهای طراحی
429
00:18:57,100 –> 00:19:00,100
راه حل مناسبی نیستند، خوب به یاد داشته باشید
430
00:19:00,100 –> 00:19:03,340
الگوهای طراحی واحدهای قابل استفاده مجدد هستند، اما
431
00:19:03,340 –> 00:19:06,010
در این مورد به جای کدهای قابل استفاده مجدد، ما
432
00:19:06,010 –> 00:19:08,350
در مورد طراحی قابل استفاده مجدد صحبت می کنیم، آنها
433
00:19:08,350 –> 00:19:10,120
ایده های بسیار خوبی هستند، اما شما واقعاً باید بدانید
434
00:19:10,120 –> 00:19:12,429
که کجا می خواهید از آنها استفاده کنید و
435
00:19:12,429 –> 00:19:14,260
واقعاً کجا ارزش دارند، زیرا یک بار دیگر
436
00:19:14,260 –> 00:19:16,750
غیر معمول نیست. در واقع
437
00:19:16,750 –> 00:19:19,870
داستان های زیادی از افرادی شنیده ام که ناگهان می گویند
438
00:19:19,870 –> 00:19:22,809
من یک کد 30 خطی دارم که نمی دانم
439
00:19:22,809 –> 00:19:25,000
و این واقعاً جالب است زیرا من
440
00:19:25,000 –> 00:19:27,309
از 15 الگوی طراحی مختلف استفاده می کنم.
441
00:19:27,309 –> 00:19:30,760
مشکلی نیست و منظورم این است
442
00:19:30,760 –> 00:19:33,190
که وقتی واقعاً این کار را انجام میدهید، واقعاً نایت امضا کرده است، بسیار هیجانانگیز به
443
00:19:33,190 –> 00:19:35,350
نظر میرسد، اما مشکل اینجاست که
444
00:19:35,350 –> 00:19:38,530
نرمافزار خود را خیلی پیچیدهتر میکنید، بنابراین ما
445
00:19:38,530 –> 00:19:39,940
باید بسیار مراقب باشیم که هر زمان
446
00:19:39,940 –> 00:19:41,950
که واقعاً از یک الگوی طراحی استفاده
447
00:19:41,950 –> 00:19:43,930
میکنید،
448
00:19:43,930 –> 00:19:46,780
برای هدف بهتر است و اینکه فقط به
449
00:19:46,780 –> 00:19:48,460
خاطر داشتن الگوهای طراحی خوب،
450
00:19:48,460 –> 00:19:50,260
آنها برای حل مشکلات خاصی هستند
451
00:19:50,260 –> 00:19:51,970
و اگر ما از آنها در زمینه درست
452
00:19:51,970 –> 00:19:53,950
استفاده نکنیم، در نهایت یک
453
00:19:53,950 –> 00:19:57,100
قطعه کد بسیار پیچیده تر از آنچه در ابتدا منظورمان بود، خواهیم داشت.
454
00:19:57,100 –> 00:20:00,970
خوب است، بنابراین
455
00:20:00,970 –> 00:20:03,330
محدودیت ها یا معایب
456
00:20:03,330 –> 00:20:13,900
الگوهای طراحی چیست، بنابراین همانطور که چند لحظه پیش اشاره کردم،
457
00:20:13,900 –> 00:20:16,870
ما با این وضعیت روبرو
458
00:20:16,870 –> 00:20:20,410
هستیم که در آن به طور غیر قابل توجیه از آنها استفاده می کنیم، بسیار خوب، یک بار
459
00:20:20,410 –> 00:20:23,020
دیگر این امر برای افراد بی تجربه
460
00:20:23,020 –> 00:20:25,240
که واقعاً در مورد
461
00:20:25,240 –> 00:20:27,460
استفاده از الگوهای طراحی هیجان زده هستند، معمول است. این هیچ یک
462
00:20:27,460 –> 00:20:31,060
از موارد خاص شما نیست، بله،
463
00:20:31,060 –> 00:20:32,380
آنها بسیار جالب هستند، بسیار جالب هستند،
464
00:20:32,380 –> 00:20:34,000
اما شما واقعاً باید بدانید که کجا از
465
00:20:34,000 –> 00:20:35,590
آنها استفاده کنید خوب است و اگر از آنها استفاده می کنید، واقعاً
466
00:20:35,590 –> 00:20:38,080
باید توجیه کنید که در واقع منطقی
467
00:20:38,080 –> 00:20:39,640
468
00:20:39,640 –> 00:20:42,100
است، انتقاد رایج دیگری که
469
00:20:42,100 –> 00:20:43,810
معمولاً برای طراحی الگوها انجام میشود این است که
470
00:20:43,810 –> 00:20:47,500
الگوهای طراحی معمولاً کلاژ برای
471
00:20:47,500 –> 00:20:51,340
زبانهای برنامهنویسی ضعیف هستند به
472
00:20:51,340 –> 00:20:54,130
این معنی که وقتی
473
00:20:54,130 –> 00:20:55,930
کاتالوگ الگوی طراحی اصلی واقعاً
474
00:20:55,930 –> 00:20:59,560
در دهه 1990 ظاهر شد، بسیاری از افراد
475
00:20:59,560 –> 00:21:01,110
بهویژه برای مثال از
476
00:21:01,110 –> 00:21:04,300
جامعه برنامه نویسی عملکردی آنها
477
00:21:04,300 –> 00:21:06,010
اساساً همه آنها را دیدند و
478
00:21:06,010 –> 00:21:07,870
همه این الگوها را به خوبی گفتند و ممکن است
479
00:21:07,870 –> 00:21:09,850
در واقع تعداد زیادی از آنها را نام ببرند اگر
480
00:21:09,850 –> 00:21:12,670
واقعاً از
481
00:21:12,670 –> 00:21:14,800
توابع ناشناس یا توابع درجه بالا یا
482
00:21:14,800 –> 00:21:16,030
هر چیزی که می خواهید آن را نامگذاری کنید پشتیبانی نمی کردید.
483
00:21:16,030 –> 00:21:17,290
به همه این الگوها نیاز دارید،
484
00:21:17,290 –> 00:21:21,520
بنابراین بسیار رایج است که یک
485
00:21:21,520 –> 00:21:23,590
الگوی خاص در واقع Ryze آنقدر
486
00:21:23,590 –> 00:21:25,870
رایج است که زبان های برنامه نویسی مدرن
487
00:21:25,870 –> 00:21:28,870
شروع به تطبیق و پشتیبانی
488
00:21:28,870 –> 00:21:32,380
مستقیم از آن الگوها می کنند، بنابراین برای
489
00:21:32,380 –> 00:21:36,040
مثال این برنامه این الگوی طراحی
490
00:21:36,040 –> 00:21:39,010
به نام استراتژی اساساً می توانید
491
00:21:39,010 –> 00:21:41,290
آن را با یک لامبدا جایگزین کنید. یا یک
492
00:21:41,290 –> 00:21:43,420
تابع animus و اساساً
493
00:21:43,420 –> 00:21:45,400
همان عملکرد را در آنجا دارند پس اینطور نیست
494
00:21:45,400 –> 00:21:48,580
در واقع غیرمعمول است که الگوهای خاصی
495
00:21:48,580 –> 00:21:52,540
واقعاً در
496
00:21:52,540 –> 00:21:54,730
زمینه های برنامه نویسی خاص آنقدر رایج بودند که
497
00:21:54,730 –> 00:21:56,710
طراحان زبان تصمیم می گیرند واقعاً از
498
00:21:56,710 –> 00:21:57,400
499
00:21:57,400 –> 00:21:58,840
زبان برنامه نویسی پشتیبانی مستقیم
500
00:21:58,840 –> 00:22:00,850
501
00:22:00,850 –> 00:22:03,760
502
00:22:03,760 –> 00:22:07,150
کنند.
503
00:22:07,150 –> 00:22:08,890
به یاد داشته باشید که
504
00:22:08,890 –> 00:22:10,870
الگوهای طراحی برای زبانهای برنامهنویسی شیگرا وجود
505
00:22:10,870 –> 00:22:12,820
دارد، اما زبانهای تابع و
506
00:22:12,820 –> 00:22:14,530
انواع دیگر زبانها نیز
507
00:22:14,530 –> 00:22:17,710
برنامهنویسی مخصوص به خود را دارند،
508
00:22:17,710 –> 00:22:19,990
الگوهای طراحی و اصطلاحات خاص خود را دارند، بنابراین یک بار
509
00:22:19,990 –> 00:22:21,070
دیگر لزوماً چیزی
510
00:22:21,070 –> 00:22:23,590
بد نیست، بلکه ممکن است برخی از زبانها دچار
511
00:22:23,590 –> 00:22:26,670
کمبود باشند. برخی مناطق و
512
00:22:26,670 –> 00:22:28,690
برخی از زبانها ممکن است
513
00:22:28,690 –> 00:22:31,450
برای حل انواع خاصی از مسائل کمی مجهزتر باشند، به
514
00:22:31,450 –> 00:22:33,790
عنوان مثال در
515
00:22:33,790 –> 00:22:37,000
مورد پایتون، پایتون از تکرارکنندهها پشتیبانی میکند
516
00:22:37,000 –> 00:22:40,150
که یک الگوی طراحی کلاسیک است،
517
00:22:40,150 –> 00:22:42,700
اما شما واقعاً آن را چنین تصور نمیکنید.
518
00:22:42,700 –> 00:22:44,650
به عنوان یک الگوی طراحی، زیرا در
519
00:22:44,650 –> 00:22:46,990
حال حاضر به خوبی در
520
00:22:46,990 –> 00:22:49,390
زبان پشتیبانی شده است به خودی خود عمل میکند، بنابراین وقتی طولهای
521
00:22:49,390 –> 00:22:52,120
انتقالیافته میتوانید تصور کنید که
522
00:22:52,120 –> 00:22:54,790
بیشتر یک اصطلاح است تا یک
523
00:22:54,790 –> 00:22:59,350
الگوی طراحی سنتی و همچنین برخی از این
524
00:22:59,350 –> 00:23:00,820
راهحلهایی که ما با الگوهای طراحی استفاده میکنیم
525
00:23:00,820 –> 00:23:02,950
ممکن است در نهایت منجر به تولید
526
00:23:02,950 –> 00:23:05,590
راهحلهای ناکارآمد در شرایط یا
527
00:23:05,590 –> 00:23:06,670
موقعیت شوند. که در آن ممکن است
528
00:23:06,670 –> 00:23:09,310
به منابع بیشتری نیاز به حافظه بیشتر پردازش بیشتری داشته باشند
529
00:23:09,310 –> 00:23:11,110
، زیرا
530
00:23:11,110 –> 00:23:14,340
راه حل های پیچیده تری هستند، بنابراین
531
00:23:14,340 –> 00:23:17,260
اگر در حال توسعه
532
00:23:17,260 –> 00:23:19,810
سیستمی هستید که قرار است در
533
00:23:19,810 –> 00:23:21,550
منابع موجود در یک محیط محدود اجرا
534
00:23:21,550 –> 00:23:22,870
شود، به عنوان مثال در
535
00:23:22,870 –> 00:23:24,790
میکروکنترلر یا جایی. این که
536
00:23:24,790 –> 00:23:27,280
الگوهای حافظه زیادی ندارید
537
00:23:27,280 –> 00:23:29,530
ممکن است یک مشکل بیش از حد باشد، بنابراین باید
538
00:23:29,530 –> 00:23:31,510
مراقب باشید که واقعاً منطقی است، بنابراین
539
00:23:31,510 –> 00:23:33,880
اینها ممکن است،
540
00:23:33,880 –> 00:23:36,220
مکان آنها بسیار مهم است تا
541
00:23:36,220 –> 00:23:39,450
در موقعیت نادرست آنها را اشتباه نکنیم،
542
00:23:39,450 –> 00:23:46,890
خوب است. بنابراین کمی از تاریخ در اینجا
543
00:23:46,890 –> 00:23:50,530
در اواسط دهه 1990 این کتاب ظاهر شد
544
00:23:50,530 –> 00:23:52,270
آنچه به نام عناصر الگوهای طراحی
545
00:23:52,270 –> 00:23:55,330
نرم افزار شی گرا قابل استفاده مجدد است
546
00:23:55,330 –> 00:23:59,080
که توسط نوشته شده است. این چهار نفر
547
00:23:59,080 –> 00:24:02,380
که به طور موثر به عنوان Ganga 4 شناخته می شوند،
548
00:24:02,380 –> 00:24:06,280
بنابراین هر زمان که می شنوید کسی در
549
00:24:06,280 –> 00:24:09,280
مورد gof for gough Ganga 4
550
00:24:09,280 –> 00:24:11,140
صحبت می کند، آنها در واقع در مورد این
551
00:24:11,140 –> 00:24:15,040
چهار نفر صحبت می کنند اریش گاما ریچارد هل رالف
552
00:24:15,040 –> 00:24:19,540
جانسون و جان بلیس اوکی بنابراین آنها
553
00:24:19,540 –> 00:24:21,220
به عنوان باند شناخته می شوند. قبل از اینکه آنها
554
00:24:21,220 –> 00:24:24,190
کسانی بودند که این کتاب را نوشتند، این کتابی بود
555
00:24:24,190 –> 00:24:25,780
که در واقع
556
00:24:25,780 –> 00:24:27,820
حرکت الگوی طراحی را در جامعه شی گرا آغاز کرد
557
00:24:27,820 –> 00:24:32,070
و در واقع به
558
00:24:32,070 –> 00:24:33,340
559
00:24:33,340 –> 00:24:36,720
ارائه بیست الگوی طراحی رسیدند که
560
00:24:36,720 –> 00:24:41,559
بسیار مرتبط هستند، به یاد داشته باشید که این کتاب بیش
561
00:24:41,559 –> 00:24:43,750
از بیست سال قدمت دارد. خیلی
562
00:24:43,750 –> 00:24:45,640
چیزها تغییر کرده اند، اما بسیاری از الگوهایی
563
00:24:45,640 –> 00:24:46,990
که در آنجا مستند شده اند هنوز
564
00:24:46,990 –> 00:24:48,309
مرتبط هستند، بنابراین به طور کلی ارزش دانستن آن را دارد
565
00:24:48,309 –> 00:24:51,190
و به طور کلی
566
00:24:51,190 –> 00:24:55,299
منظورم این است که کتاب از نظر محاسباتی
567
00:24:55,299 –> 00:24:57,730
و در صنعت فناوری اطلاعات کتابی است که
568
00:24:57,730 –> 00:24:59,200
در واقع آنقدر دوام می آورد و فکر می کنم. هنوز
569
00:24:59,200 –> 00:25:01,299
مرتبط تلقی می شود، نسبتاً
570
00:25:01,299 –> 00:25:03,250
عجیب است، بنابراین این یکی از آن
571
00:25:03,250 –> 00:25:06,630
کتاب هایی است که با وجود اینکه احساس می کنید
572
00:25:06,630 –> 00:25:08,740
نمی توانید کمی
573
00:25:08,740 –> 00:25:11,140
آن را قدیمی کنید هنوز هم برای بسیاری از افرادی
574
00:25:11,140 –> 00:25:13,090
که توسعه دهندگان حرفه ای در
575
00:25:13,090 –> 00:25:18,130
دنیای شی گرا هستند مرتبط است، بنابراین این 23
576
00:25:18,130 –> 00:25:20,320
الگوی طراحی در واقع بر اساس جوانی آنها طبقه بندی شده
577
00:25:20,320 –> 00:25:21,640
اند، این یک
578
00:25:21,640 –> 00:25:23,410
طبقه بندی دیگر است و این یک طبقه بندی خاص
579
00:25:23,410 –> 00:25:26,470
برای الگوهای طراحی است به یاد داشته باشید که ما
580
00:25:26,470 –> 00:25:28,390
دسته دیگری را دیدیم که دارای برای انجام با
581
00:25:28,390 –> 00:25:30,100
سطوح انتزاع، اما این
582
00:25:30,100 –> 00:25:33,640
یکی برای الگوهای طراحی است و
583
00:25:33,640 –> 00:25:35,169
اینها بیست و سه یا نحوه
584
00:25:35,169 –> 00:25:36,880
طبقه بندی
585
00:25:36,880 –> 00:25:40,210
586
00:25:40,210 –> 00:25:42,640
587
00:25:42,640 –> 00:25:45,669
588
00:25:45,669 –> 00:25:47,559
آنها هستند. با نحوه نمونه سازی
589
00:25:47,559 –> 00:25:53,080
اشیاء چگونه آنها را به گونه ای ایجاد می کنیم
590
00:25:53,080 –> 00:25:57,070
که منعطف باشد و به ما امکان می دهد
591
00:25:57,070 –> 00:26:00,730
کد خود را نه چندان سخت بسازیم، بنابراین
592
00:26:00,730 –> 00:26:02,919
این مفید است، ما یک نمونه از یک الگوی ایجادی را می
593
00:26:02,919 –> 00:26:04,809
بینیم سپس
594
00:26:04,809 –> 00:26:07,150
الگوهای ساختاری داریم. به
595
00:26:07,150 –> 00:26:10,150
ساختار کلی مربوط می شود، ساختار کلی
596
00:26:10,150 –> 00:26:13,799
به نحوه
597
00:26:13,799 –> 00:26:16,660
کنار هم قرار دادن کلاس ها و اشیاء و نحوه
598
00:26:16,660 –> 00:26:18,940
همکاری آنها مربوط می شود. ارتباط بین آنها خوب است و
599
00:26:18,940 –> 00:26:21,059
چگونه ما یک
600
00:26:21,059 –> 00:26:24,130
عملیات پیچیده بسیار پیچیده تر بین آنها ارائه می دهیم
601
00:26:24,130 –> 00:26:26,470
و در نهایت ما این موارد را داریم که به
602
00:26:26,470 –> 00:26:29,950
آنها الگوهای رفتاری می گویند و آنها مربوط
603
00:26:29,950 –> 00:26:33,580
به ارتباط
604
00:26:33,580 –> 00:26:35,440
واگذاری مسئولیت هایی هستند که
605
00:26:35,440 –> 00:26:37,030
بین اجزای مختلف وجود دارد یا بین اجزای مختلف رخ
606
00:26:37,030 –> 00:26:39,910
می دهد. باید نحوه
607
00:26:39,910 –> 00:26:41,500
ایجاد اشیاء را انجام دهد که ساختار باید انجام دهد
608
00:26:41,500 –> 00:26:44,200
که چگونه اشیاء را کنار هم قرار دهیم تا یک ساختار خاص به دست آوریم
609
00:26:44,200 –> 00:26:46,539
و رفتار
610
00:26:46,539 –> 00:26:49,360
باید در مورد نحوه رفتار اجزای مختلف
611
00:26:49,360 –> 00:26:51,850
در زمان اجرا انجام شود، بسیار خوب
612
00:26:51,850 –> 00:26:53,950
، حداقل یک نمونه از هر یک از این موارد را خواهیم دید.
613
00:26:53,950 –> 00:26:58,080
بسیار خوب و ما یکی از آنها را تکرار می کنیم،
614
00:26:58,080 –> 00:27:00,490
فقط فکر می کنم این یک الگوی رفتاری است،
615
00:27:00,490 –> 00:27:02,740
بنابراین شما فرصتی خواهید داشت که عملکرد هر یک
616
00:27:02,740 –> 00:27:06,520
از آنها را ببینید، بنابراین وقتی گروه
617
00:27:06,520 –> 00:27:09,190
چهار نفره تصمیم گرفتند کتاب را بنویسند
618
00:27:09,190 –> 00:27:19,840
و آنها تصمیم گرفتند الگوها را فهرست بندی کنند.
619
00:27:19,840 –> 00:27:21,010
اگر آنها به عنوان
620
00:27:21,010 –> 00:27:24,280
پزشک و متخصص پیدا کرده باشند،
621
00:27:24,280 –> 00:27:26,850
اساساً یک سری از
622
00:27:26,850 –> 00:27:30,400
دستورالعمل ها را ارائه کرده اند که ما آنها را به عنوان اصول طراحی معرفی
623
00:27:30,400 –> 00:27:33,490
می کنیم.
624
00:27:33,490 –> 00:27:36,909
چهار مورد مهمتر را در نظر بگیرید، خوب اولین
625
00:27:36,909 –> 00:27:39,940
چیز خوب است اولین اصل طراحی
626
00:27:39,940 –> 00:27:42,010
این است که ما باید چیزهایی را که
627
00:27:42,010 –> 00:27:43,929
تغییر می کنند را از موارد مشابه جدا کنیم
628
00:27:43,929 –> 00:27:46,780
.
629
00:27:46,780 –> 00:27:48,789
630
00:27:48,789 –> 00:27:52,120
ما باید
631
00:27:52,120 –> 00:27:55,330
چیزهایی را شناسایی کنیم که در
632
00:27:55,330 –> 00:27:56,980
طول تکامل و نگهداری برنامه ما یکسان می مانند
633
00:27:56,980 –> 00:28:00,070
و باید آنها را از هم جدا کنیم و در
634
00:28:00,070 –> 00:28:01,720
جای دیگری با
635
00:28:01,720 –> 00:28:03,940
چیزهایی که دائماً تغییر می کنند کپسول کنیم،
636
00:28:03,940 –> 00:28:05,799
گاهی اوقات این لزوماً آسان نیست
637
00:28:05,799 –> 00:28:07,360
زیرا وقتی شروع به توسعه
638
00:28:07,360 –> 00:28:09,220
نرم افزار می کنیم لزوماً مشخص نیست
639
00:28:09,220 –> 00:28:10,570
که چه چیزهایی
640
00:28:10,570 –> 00:28:12,429
اغلب در حال تغییر هستند، اما هنگامی که ما می توانیم
641
00:28:12,429 –> 00:28:15,030
آن را شناسایی کنیم، انجام این جداسازی واقعا منطقی است،
642
00:28:15,030 –> 00:28:17,590
بنابراین می
643
00:28:17,590 –> 00:28:19,590
توانیم از کپسولاسیون برای جداسازی بین
644
00:28:19,590 –> 00:28:21,940
چیزهایی که یکسان می گویند و چیزهایی که
645
00:28:21,940 –> 00:28:24,370
تغییر می کنند استفاده کنیم. این اولین اصل طراحی ما
646
00:28:24,370 –> 00:28:28,150
است، دومی بین رابط
647
00:28:28,150 –> 00:28:30,880
و نه یک پیاده سازی در اینجا آنچه ما
648
00:28:30,880 –> 00:28:33,340
باید درک کنیم این است که چه زمانی ما در
649
00:28:33,340 –> 00:28:36,490
حال طراحی یک شی هستیم
650
00:28:36,490 –> 00:28:39,039
که شیء دارای این دو چیز است
651
00:28:39,039 –> 00:28:41,320
، یک رابط دارد و یک
652
00:28:41,320 –> 00:28:42,700
پیاده سازی دارد خوب
653
00:28:42,700 –> 00:28:44,710
رابط کاربری چیست، رابط
654
00:28:44,710 –> 00:28:47,710
به نحوه تعامل بقیه جهان
655
00:28:47,710 –> 00:28:49,419
با آن شی ربط دارد که این رابط
656
00:28:49,419 –> 00:28:52,419
مشکلی ندارد، به طور خاص از نظر
657
00:28:52,419 –> 00:28:53,470
برنامه نویسی، ما می توانیم به این فکر کنیم که
658
00:28:53,470 –> 00:28:55,179
رابط چه روش هایی
659
00:28:55,179 –> 00:28:57,249
برای این شی خاص پشتیبانی می شود،
660
00:28:57,249 –> 00:29:01,840
اگر ارتباطی با
661
00:29:01,840 –> 00:29:03,639
اشیاء دیگر و غیره دارد، بسیار خوب است، همه این موارد
662
00:29:03,639 –> 00:29:06,580
بخشی از رابط هستند، اگر
663
00:29:06,580 –> 00:29:10,210
به نحوه استفاده عمومی مشتریان مربوط باشد.
664
00:29:10,210 –> 00:29:12,720
سرایت مربوط به
665
00:29:12,720 –> 00:29:16,179
نحوه کارکرد داخلی شیء است و
666
00:29:16,179 –> 00:29:18,369
معمولاً پیادهسازی چیزی است
667
00:29:18,369 –> 00:29:22,269
که میخواهیم مخفی نگه داریم،
668
00:29:22,269 –> 00:29:26,039
چند نفر با ماشین به اینجا رسیدند، من
669
00:29:26,039 –> 00:29:30,100
میآیم چند نفر رانندگی کردند، نه خیلی خوب، اما
670
00:29:30,100 –> 00:29:32,169
معمولاً حدس میزنم بسیاری از شما ممکن است یک
671
00:29:32,169 –> 00:29:37,179
ماشین به خانه داشته باشید، خوشبختانه برای ما
672
00:29:37,179 –> 00:29:39,669
نیازی نیست که بدانیم یک ماشین چگونه کار می
673
00:29:39,669 –> 00:29:42,700
کند تا از ماشین خوب استفاده کنیم، بنابراین فقط
674
00:29:42,700 –> 00:29:44,529
باید بدانیم که باید کلید را
675
00:29:44,529 –> 00:29:46,509
در igniti قرار دهیم. به
676
00:29:46,509 –> 00:29:50,110
هر حال ماشین ما کار می کند دکمه یا هر چیز دیگری را فشار دهید و سپس
677
00:29:50,110 –> 00:29:52,389
باید بدانیم که من مهارت های اساسی
678
00:29:52,389 –> 00:29:54,580
در رانندگی دارم بسته به
679
00:29:54,580 –> 00:29:57,009
نوع ماشینی که ممکن است
680
00:29:57,009 –> 00:29:58,990
داشته باشیم با گیربکس دستی یا
681
00:29:58,990 –> 00:30:02,590
آنچه می دانیم چگونه با آن کار کنیم.
682
00:30:02,590 –> 00:30:05,740
با استفاده از رابط آن به ماشین اعتراض کنید خوب، ما
683
00:30:05,740 –> 00:30:09,549
باید مهندس مکانیک باشیم یا مهندس ماشین
684
00:30:09,549 –> 00:30:10,869
یا هر چیزی که میخواهید اسمش
685
00:30:10,869 –> 00:30:14,049
را بگذارید تا در واقع بدانیم چگونه ماشین را رانندگی کنیم،
686
00:30:14,049 –> 00:30:16,690
شاید در آغاز، شاید من
687
00:30:16,690 –> 00:30:18,519
نمیدانم صد سال یا بیشتر پیش، زمانی
688
00:30:18,519 –> 00:30:22,299
که اولین خودروهایی که واقعاً بیرون آمدند واقعاً
689
00:30:22,299 –> 00:30:24,159
باید جزئیات بیشتری در مورد نحوه
690
00:30:24,159 –> 00:30:25,659
عملکرد ماشین
691
00:30:25,659 –> 00:30:27,190
بدانند تا بتوانند با موفقیت کار کنند،
692
00:30:27,190 –> 00:30:29,289
اما در طول سال ها
693
00:30:29,289 –> 00:30:31,799
کارکرد واقعی ماشین ها آسان تر شده است و
694
00:30:31,799 –> 00:30:34,659
این به این معنی است که آنها اساساً
695
00:30:34,659 –> 00:30:37,330
رابط خود را ساده کرده اند و
696
00:30:37,330 –> 00:30:39,100
البته معمولاً پیاده سازی
697
00:30:39,100 –> 00:30:41,049
در خودروهایی
698
00:30:41,049 –> 00:30:42,490
که در حال حاضر داریم بسیار پیچیده تر از اتومبیل هایی
699
00:30:42,490 –> 00:30:44,950
است که شاید چند دهه یا چند
700
00:30:44,950 –> 00:30:47,769
قرن پیش داشتیم، بنابراین وقتی در مورد نرم صحبت می کنیم.
701
00:30:47,769 –> 00:30:49,720
ware
702
00:30:49,720 –> 00:30:51,910
هر زمان که میخواهیم از یک شیء خاص استفاده
703
00:30:51,910 –> 00:30:54,130
کنیم، همیشه باید از رابط آن آگاه باشیم،
704
00:30:54,130 –> 00:30:55,810
معمولاً اینترفیس در
705
00:30:55,810 –> 00:30:57,190
جایی سند است و میگوید که دقیقاً
706
00:30:57,190 –> 00:31:00,670
چگونه شیء باید
707
00:31:00,670 –> 00:31:03,610
توسط بخشی از کد ما استفاده شود، خوب است و
708
00:31:03,610 –> 00:31:05,830
بیشتر اوقات ما باید از آن استفاده کنیم. بدون اطلاع
709
00:31:05,830 –> 00:31:08,950
از پیاده سازی، خوب، نیازی
710
00:31:08,950 –> 00:31:11,680
به دانستن دقیق نداریم، فرض کنید که ما
711
00:31:11,680 –> 00:31:15,070
نوعی فرهنگ لغت در پایتون داریم،
712
00:31:15,070 –> 00:31:16,330
لازم نیست بدانیم آیا ditcher
713
00:31:16,330 –> 00:31:19,510
واقعاً با استفاده از درختان باینری پیاده سازی شده است
714
00:31:19,510 –> 00:31:21,190
یا آنها از جدول هش استفاده می کنند. یا
715
00:31:21,190 –> 00:31:22,870
هر چیز دیگری که ما فقط باید
716
00:31:22,870 –> 00:31:24,640
رابط کاربری فرهنگ لغت را بدانیم تا واقعاً
717
00:31:24,640 –> 00:31:27,460
از آن استفاده کنیم، بنابراین معمولاً برنامهنویسی برای
718
00:31:27,460 –> 00:31:29,080
رابطها و در واقع بسیار
719
00:31:29,080 –> 00:31:30,910
منطقی است زیرا بسیاری از پیچیدگیهای مربوط به پیادهسازی را از بین میبرد،
720
00:31:30,910 –> 00:31:32,290
721
00:31:32,290 –> 00:31:35,560
بنابراین باید اطلاعاتی را
722
00:31:35,560 –> 00:31:36,790
که ما داریم حذف کنیم. در مورد پیاده سازی اطلاعات داشته باشید
723
00:31:36,790 –> 00:31:39,040
زیرا جایگزین کردن آن را آسان تر می کند،
724
00:31:39,040 –> 00:31:40,720
بنابراین اگر شیئی داریم که به روش
725
00:31:40,720 –> 00:31:44,470
خاصی کار می کند، اجرای آن بی ربط
726
00:31:44,470 –> 00:31:46,810
است زیرا اگر بتوانم
727
00:31:46,810 –> 00:31:48,370
آن را جایگزین کنم شی دیگری که رابط کاربری مشابهی دارد
728
00:31:48,370 –> 00:31:50,980
میتوانم به راحتی آن را جایگزین کنم، اما اگر
729
00:31:50,980 –> 00:31:52,870
به جزئیات
730
00:31:52,870 –> 00:31:56,230
پیادهسازی وابسته باشم، در نهایت یک
731
00:31:56,230 –> 00:31:58,120
کد مرتبطتر
732
00:31:58,120 –> 00:32:00,370
دارم که سعی میکنیم از آن اجتناب کنیم،
733
00:32:00,370 –> 00:32:03,460
زیرا انجام این جایگزینها
734
00:32:03,460 –> 00:32:05,590
لزوماً آسان نیست. بنابراین ما باید
735
00:32:05,590 –> 00:32:06,940
مراقب آن باشیم و به
736
00:32:06,940 –> 00:32:09,250
همین دلیل است که ما ترجیح میدهیم مستقیماً به یک
737
00:32:09,250 –> 00:32:11,170
رابط برنامهنویسی کنیم، به یاد داشته باشید که در برخی از
738
00:32:11,170 –> 00:32:12,940
زبانهای برنامهنویسی
739
00:32:12,940 –> 00:32:14,610
مفهوم رابط به عنوان یک
740
00:32:14,610 –> 00:32:18,010
ساختار برنامهنویسی متفاوت
741
00:32:18,010 –> 00:32:19,540
وجود دارد، در پایتون چنین چیزی وجود ندارد. چیزهایی
742
00:32:19,540 –> 00:32:21,730
به نام کلاس های پایه انتزاعی به عنوان
743
00:32:21,730 –> 00:32:23,650
واسط در زبان های دیگر کار می کنند، اما در اینجا
744
00:32:23,650 –> 00:32:25,360
ما از این اصطلاح به
745
00:32:25,360 –> 00:32:27,130
روشی بسیار کلی تر استفاده می کنیم، البته این به
746
00:32:27,130 –> 00:32:29,050
قرارداد مربوط به نحوه کار یک شی خاص مربوط می شود
747
00:32:29,050 –> 00:32:31,750
و یک بار دیگر باید واقعاً
748
00:32:31,750 –> 00:32:34,240
فقط با چه چیزی کار کنیم.
749
00:32:34,240 –> 00:32:36,970
با توجه به رابط کاربری آن به طور عمومی شناخته شده و منتشر می شود
750
00:32:36,970 –> 00:32:39,970
و جزئیات پیاده سازی باید
751
00:32:39,970 –> 00:32:42,310
نادیده گرفته شود زیرا
752
00:32:42,310 –> 00:32:44,760
واقعاً برای ما ضروری نیستند یا نباید باشند.
753
00:32:44,760 –> 00:32:46,990
برای درک موفقیت آمیز
754
00:32:46,990 –> 00:32:52,240
هدف ما خوب است، اصل سوم طراحی
755
00:32:52,240 –> 00:32:55,600
این است که ما باید
756
00:32:55,600 –> 00:32:57,970
ترکیب را به ارث بری ترجیح دهیم. ترکیب خوب
757
00:32:57,970 –> 00:32:59,890
و وراثت دو
758
00:32:59,890 –> 00:33:03,600
راهی هستند که از طریق آنها می توانیم از
759
00:33:03,870 –> 00:33:06,850
کد در برنامه نویسی شی گرا استفاده مجدد کنیم
760
00:33:06,850 –> 00:33:08,470
761
00:33:08,470 –> 00:33:11,169
وراثت خوب احتمالا رایج ترین روش است.
762
00:33:11,169 –> 00:33:12,820
این در واقع راهی است که بسیاری از
763
00:33:12,820 –> 00:33:14,530
افراد هنگام استفاده از زبان غیر شی گرا بلافاصله به استفاده مجدد فکر می کنند
764
00:33:14,530 –> 00:33:16,179
765
00:33:16,179 –> 00:33:17,890
و اساساً به این معنی است که
766
00:33:17,890 –> 00:33:21,040
شما یک کلاس پایه دارید و یک
767
00:33:21,040 –> 00:33:23,440
زیر کلاس یا کلاس مشتق شده دیگری دارید که
768
00:33:23,440 –> 00:33:26,290
تمام ویژگی ها را از کلاس پایه اصلی به
769
00:33:26,290 –> 00:33:29,080
ارث می برد. معمولاً
770
00:33:29,080 –> 00:33:31,210
در زبانی مانند پایتون انجام آن بسیار آسان است،
771
00:33:31,210 –> 00:33:34,330
شما فقط یک کلاس را اعلام می کنید و
772
00:33:34,330 –> 00:33:35,830
بعد از نام کلاس
773
00:33:35,830 –> 00:33:38,200
در پرانتز قرار می دهید کلاس چهار
774
00:33:38,200 –> 00:33:40,090
کلاسی که می خواهید از آنها به ارث بری
775
00:33:40,090 –> 00:33:41,559
بسیار ساده و به
776
00:33:41,559 –> 00:33:44,620
طور خودکار تمام عملکردها را در پرانتز قرار دهید.
777
00:33:44,620 –> 00:33:47,530
متدها و غیره ارائه شده توسط
778
00:33:47,530 –> 00:33:49,690
کلاس های پایه اصلی به طور
779
00:33:49,690 –> 00:33:51,280
خودکار به کلاس جدید y اضافه می شود شما دارید
780
00:33:51,280 –> 00:33:52,809
تعریف می کنید بنابراین استفاده از آن بسیار آسان است
781
00:33:52,809 –> 00:33:57,600
و در اکثر
782
00:33:57,660 –> 00:33:59,679
ترکیب بندی شی گرا کمی ظریف تر است
783
00:33:59,679 –> 00:34:05,440
و واقعاً به شما نیاز دارد که اشیاء ایجاد کنید
784
00:34:05,440 –> 00:34:07,960
یا ارجاعاتی به اشیایی
785
00:34:07,960 –> 00:34:10,300
داشته باشید که احتمالاً در زمان اجرا تعیین می شوند
786
00:34:10,300 –> 00:34:13,869
و در این مورد شما یک بسیاری از
787
00:34:13,869 –> 00:34:17,020
مزایای ارث، اما بدون هیچ یک
788
00:34:17,020 –> 00:34:20,020
از مشکلات احتمالی و
789
00:34:20,020 –> 00:34:21,609
این موضوعی است که ما میتوانیم در واقع
790
00:34:21,609 –> 00:34:24,250
یک صحبت کامل داشته باشیم و در واقع
791
00:34:24,250 –> 00:34:26,168
در مورد موضوعات خاص در
792
00:34:26,168 –> 00:34:27,969
این مورد صحبت کنیم و در واقع
793
00:34:27,969 –> 00:34:31,629
شنبه آینده به طور خاص صحبت خواهم کرد و در مورد آنچه
794
00:34:31,629 –> 00:34:33,879
که باید ترجیح دهیم همیشه ترکیب خوب باشد،
795
00:34:33,879 –> 00:34:35,739
نه همیشه، اما بیشتر اوقات به جای
796
00:34:35,739 –> 00:34:38,469
وراثت خوب است، بنابراین اگر میتوانید
797
00:34:38,469 –> 00:34:41,168
در صحبتهای من در اینجا در pykon به من بپیوندید، اگر میخواهید
798
00:34:41,168 –> 00:34:43,389
جزئیات بیشتری ببینید، اما به طور کلی
799
00:34:43,389 –> 00:34:45,030
میبینیم که برخی از مسائل در مورد آن وجود دارد.
800
00:34:45,030 –> 00:34:47,500
وراثت و اگر از
801
00:34:47,500 –> 00:34:49,359
ترکیب استفاده می کنید، در واقع می توانید از آنها اجتناب کنید،
802
00:34:49,359 –> 00:34:50,949
بنابراین ترکیبی که خواهید دید
803
00:34:50,949 –> 00:34:53,080
اساساً به این معنی است که به جای
804
00:34:53,080 –> 00:34:55,330
گسترش کلاس، می توانیم یک
805
00:34:55,330 –> 00:34:58,300
کلاس را حاوی آن در مقداری o نمونه سازی کنیم. موضوعات و
806
00:34:58,300 –> 00:35:00,510
سپس از نکته بعدی که
807
00:35:00,510 –> 00:35:03,730
تفویض اختیار است استفاده کنید تا در واقع از آن
808
00:35:03,730 –> 00:35:05,890
کلاس های ترکیبی استفاده کنید، بنابراین این دو
809
00:35:05,890 –> 00:35:08,290
نقطه سه و چهار را با هم کار می کنند و به
810
00:35:08,290 –> 00:35:11,350
ما اجازه می دهند طراحی بسیار ساده تر و ظریف تر داشته باشیم،
811
00:35:11,350 –> 00:35:13,720
اما شاید نه لزوما به این
812
00:35:13,720 –> 00:35:15,680
سادگی ها، اما احتمالا
813
00:35:15,680 –> 00:35:19,240
محکم تر، خوب است. با مسائل کمتر،
814
00:35:19,240 –> 00:35:21,580
زیرا وقتی در مورد وراثت صحبت می کنیم
815
00:35:21,580 –> 00:35:24,200
، یک جفت بسیار قوی بین
816
00:35:24,200 –> 00:35:26,330
کلاس پایه اصلی و تمام
817
00:35:26,330 –> 00:35:28,340
کلاس های مشتق شده آن وجود دارد و مسئله اصلی این است
818
00:35:28,340 –> 00:35:30,380
که اگر کلاس پایه را تغییر
819
00:35:30,380 –> 00:35:33,640
دهید ممکن است در نهایت بر
820
00:35:33,640 –> 00:35:40,670
کلاس های مشتق شده تأثیر بگذارید، بله، ما
821
00:35:40,670 –> 00:35:42,920
چند لحظه دیگر میتوانم نمونههایی از
822
00:35:42,920 –> 00:35:43,940
انجام این کار را بهطور
823
00:35:43,940 –> 00:35:46,250
خاص ببینم و امیدوارم بهطور
824
00:35:46,250 –> 00:35:48,590
خاص شما را به یاد بیاورم که چه زمانی این
825
00:35:48,590 –> 00:35:54,440
اتفاق بیفتد، پس اوم، بیایید به سرعت
826
00:35:54,440 –> 00:35:57,670
در مورد آناتومی الگوی طراحی صحبت کنیم، خوب
827
00:35:57,670 –> 00:36:00,710
وقتی کتاب اصلی Gang of Four در
828
00:36:00,710 –> 00:36:02,390
واقع منتشر شد، آنها یک
829
00:36:02,390 –> 00:36:04,490
سری عناصر را پیشنهاد کردند که هر
830
00:36:04,490 –> 00:36:06,680
الگوی طراحی یکبار آن را فهرست بندی کردید و
831
00:36:06,680 –> 00:36:08,840
آن را منتشر کردید و برای مردم قرار دادید.
832
00:36:08,840 –> 00:36:10,550
برای مصرف برخی از چیزهایی
833
00:36:10,550 –> 00:36:12,260
که باید به پایان برسند و آنها چندین
834
00:36:12,260 –> 00:36:15,470
نویسنده هستند در واقع چندین مورد را برای مراقبت از آنها پیشنهاد کرده اند
835
00:36:15,470 –> 00:36:17,720
، اما برای این
836
00:36:17,720 –> 00:36:21,860
آموزش
837
00:36:21,860 –> 00:36:25,850
خاص، هر زمان
838
00:36:25,850 –> 00:36:27,680
که یک قلم طراحی را توصیف می کنیم، این عناصر خاص نیرو را خواهیم داشت، بنابراین ابتدا ما
839
00:36:27,680 –> 00:36:29,630
قصد و نیت باید
840
00:36:29,630 –> 00:36:31,400
انجام شود این است که تعریف
841
00:36:31,400 –> 00:36:35,690
کلی یا استفاده کلی از الگوی طراحی
842
00:36:35,690 –> 00:36:39,080
انگیزه چیست که چرا ما به آن نیاز
843
00:36:39,080 –> 00:36:41,120
داریم چرا در چه
844
00:36:41,120 –> 00:36:43,340
شرایطی ممکن است به طور معمول
845
00:36:43,340 –> 00:36:46,790
از آن استفاده کنید مفید است. برای اهداف عملی، سپس
846
00:36:46,790 –> 00:36:50,390
به طور خلاصه به
847
00:36:50,390 –> 00:36:52,580
نمودار کلاس UML این الگوها
848
00:36:52,580 –> 00:36:54,740
نگاه می کنیم تا بتوانیم تمام کلاس هایی که درگیر هستند را مشاهده کنیم
849
00:36:54,740 –> 00:36:57,380
، فقط با ذکر سریع
850
00:36:57,380 –> 00:36:58,970
ساختارهایی که در واقع آن را
851
00:36:58,970 –> 00:37:00,740
از یک صفحه وب گرفته شده است که در واقع زیبایی را توصیف می کند.
852
00:37:00,740 –> 00:37:03,680
جالب است که تمام
853
00:37:03,680 –> 00:37:06,140
الگوهای طراحی مختلف و در واقع
854
00:37:06,140 –> 00:37:08,960
با استفاده از نمادهای احتمالاً توضیح داده شده است که
855
00:37:08,960 –> 00:37:10,670
اگر واقعاً با یک استاتیک معمولی کار می کردید آشناتر بود.
856
00:37:10,670 –> 00:37:12,590
857
00:37:12,590 –> 00:37:15,080
زبان تایپ شده مانند جاوا
858
00:37:15,080 –> 00:37:16,250
اما اطلاعات زیادی وجود دارد که هنوز
859
00:37:16,250 –> 00:37:18,710
برای زبان های پویا مانند
860
00:37:18,710 –> 00:37:20,930
پایتون مرتبط است، بنابراین ما یک نمودار UML را می بینیم که
861
00:37:20,930 –> 00:37:22,310
در واقع ساختار را توصیف می کند و
862
00:37:22,310 –> 00:37:24,470
در نهایت و اینجا جایی است که ما
863
00:37:24,470 –> 00:37:25,940
کمی زمان بیشتری را صرف می کنیم. دوباره
864
00:37:25,940 –> 00:37:28,010
اجرا را خوب نگاه
865
00:37:28,010 –> 00:37:29,570
میکنیم، امیدوارم بتوانیم
866
00:37:29,570 –> 00:37:31,310
همه این الگوها را ببینیم و بپوشانیم
867
00:37:31,310 –> 00:37:38,960
که واقعاً کار میکنند، اولین
868
00:37:38,960 –> 00:37:42,260
الگوی طراحی هستند، خوب من این یکی را انتخاب کردم،
869
00:37:42,260 –> 00:37:44,270
زیرا واقعاً بسیار ساده است،
870
00:37:44,270 –> 00:37:47,060
واقعاً درک آن بسیار آسان است،
871
00:37:47,060 –> 00:37:48,530
کمی بحثبرانگیز است برخی از مردم فکر می کنند که
872
00:37:48,530 –> 00:37:51,170
این الگو در واقع ایده بدی برای
873
00:37:51,170 –> 00:37:53,780
استفاده از آن است، اما اگر شما
874
00:37:53,780 –> 00:37:55,130
آن را دوست دارید یا از آن متنفر هستید، حداقل درک آن بسیار
875
00:37:55,130 –> 00:37:58,880
آسان است و الگوی تک تک
876
00:37:58,880 –> 00:38:03,140
یک الگوی طراحی خلاقانه است،
877
00:38:03,140 –> 00:38:04,940
به یاد داشته باشید که ما در سه نوع الگو طبقه بندی کردیم.
878
00:38:04,940 –> 00:38:09,380
یا انواع الگوها
879
00:38:09,380 –> 00:38:11,030
یا دستهبندیهای الگوها
880
00:38:11,030 –> 00:38:13,700
در مورد خلقت رفتاری و ساختاری صحبت کردیم،
881
00:38:13,700 –> 00:38:16,340
بنابراین این یک الگوی خلقتی است که به
882
00:38:16,340 –> 00:38:18,650
شما امکان میدهد اطمینان حاصل کنید که یک cla ss فقط
883
00:38:18,650 –> 00:38:22,460
یک نمونه خوب است، به همین دلیل است که به آن
884
00:38:22,460 –> 00:38:23,960
singleton می گویند، شما باید فقط یک
885
00:38:23,960 –> 00:38:26,150
نمونه از یک کلاس خاص داشته باشید و
886
00:38:26,150 –> 00:38:29,180
باید مکانیزمی برای دسترسی به
887
00:38:29,180 –> 00:38:34,160
آن به صورت جهانی ارائه دهید، پس چرا
888
00:38:34,160 –> 00:38:37,550
ما می خواهیم فقط یک شی را داشته باشیم
889
00:38:37,550 –> 00:38:39,740
خوب گاهی اوقات دامنه ممکن است واقعاً
890
00:38:39,740 –> 00:38:44,060
به آن نیاز داشته باشد، به عنوان مثال، اگر
891
00:38:44,060 –> 00:38:47,090
ما تعداد زیادی چاپگر در یک
892
00:38:47,090 –> 00:38:49,580
شرکت خاص داریم، اما ممکن است فقط به
893
00:38:49,580 –> 00:38:51,410
یک اسپولر چاپ برای مدیریت
894
00:38:51,410 –> 00:38:53,480
آن نیاز داشته باشیم، به طوری که اسپولر می
895
00:38:53,480 –> 00:38:59,090
تواند قرقره باشد، اگر
896
00:38:59,090 –> 00:39:01,070
ما می توانیم یک اسپولر باشد. سیستم دیگری داریم، به عنوان مثال، در یک
897
00:39:01,070 –> 00:39:03,110
شرکت، ما یک سیستم حقوق و دستمزد داریم که
898
00:39:03,110 –> 00:39:05,150
در واقع وظیفه پرداخت
899
00:39:05,150 –> 00:39:08,150
آن بخش از
900
00:39:08,150 –> 00:39:10,240
سیستم را به کارکنان
901
00:39:10,240 –> 00:39:13,310
ما بر عهده دارد، اگر فقط به یک لحظه از آن کلاس خاص نیاز داشته باشیم
902
00:39:13,310 –> 00:39:16,220
که می تواند تک نفره باشد
903
00:39:16,220 –> 00:39:18,110
و غیره. بسیار خوب،
904
00:39:18,110 –> 00:39:19,610
موقعیتهای زیادی وجود دارد که در آنها
905
00:39:19,610 –> 00:39:22,460
فقط داشتن یک نمونه از یک
906
00:39:22,460 –> 00:39:29,420
کلاس خاص منطقی است، بنابراین ساختار
907
00:39:29,420 –> 00:39:31,700
تکتنه چیزی شبیه به این به نظر میرسد.
908
00:39:31,700 –> 00:39:34,730
کلاینتی که از یک تکتنه استفاده میکند خوب است،
909
00:39:34,730 –> 00:39:36,620
یک بار دیگر به یاد داشته باشید که این نماد
910
00:39:36,620 –> 00:39:37,820
در یک
911
00:39:37,820 –> 00:39:39,890
زبان سنتی تایپشده استاتیک
912
00:39:39,890 –> 00:39:41,950
مانند جاوا یا C++
913
00:39:41,950 –> 00:39:44,260
دارد یا کمی معنادارتر است، در نهایت یک کلامی خواهید داشت که
914
00:39:44,260 –> 00:39:46,540
به نمونه منحصربهفرد شما اشاره میکند،
915
00:39:46,540 –> 00:39:49,360
نوعی سازنده دارید و اگر میدانید
916
00:39:49,360 –> 00:39:50,950
این علامت منهای در واقع به این معنی است که
917
00:39:50,950 –> 00:39:53,350
اینها خصوصی هستند، بنابراین هیچ کس خارج از این
918
00:39:53,350 –> 00:39:55,390
کلاس نمی تواند از آن استفاده کند و سپس
919
00:39:55,390 –> 00:39:57,760
شما یک متد خاص دارید که در اینجا
920
00:39:57,760 –> 00:39:59,920
به عنوان نمونه دریافت نامیده می شود که
921
00:39:59,920 –> 00:40:01,750
singleton فعلی را برمی گرداند، بنابراین هر بار که
922
00:40:01,750 –> 00:40:04,090
مشتری به singleton نیاز دارد از این عملیات استفاده می
923
00:40:04,090 –> 00:40:06,250
کند. برای به دست آوردن
924
00:40:06,250 –> 00:40:08,950
پیاده سازی آن، این نماد UML به
925
00:40:08,950 –> 00:40:10,870
این معنی است که این یک یادداشت است که می توانید ببینید که چگونه
926
00:40:10,870 –> 00:40:13,000
این واقعاً پیاده سازی می شود و می گوید
927
00:40:13,000 –> 00:40:14,650
که اگر نمونه ای که در
928
00:40:14,650 –> 00:40:17,920
اینجا دارید در حال حاضر خیر است،
929
00:40:17,920 –> 00:40:19,930
نمونه منحصر به فرد را ایجاد می کنید و آن را به آن متغیر اختصاص می دهید
930
00:40:19,930 –> 00:40:22,360
در غیر این صورت هیچ کاری انجام ندهید
931
00:40:22,360 –> 00:40:25,480
و در پایان فقط
932
00:40:25,480 –> 00:40:28,300
مقدار آن نمونه را برمی گردانید، بنابراین
933
00:40:28,300 –> 00:40:31,570
یک ضرب المثل رایج در اینجا وجود دارد که می گوید اگر
934
00:40:31,570 –> 00:40:33,670
چند حالت دارید شما باید مراقب باشید
935
00:40:33,670 –> 00:40:34,990
در اینجا باید از نوعی قفل استفاده
936
00:40:34,990 –> 00:40:36,760
کنید، اما برای
937
00:40:36,760 –> 00:40:38,920
طراحی عملی برای سادگی فرض می کنیم که ما
938
00:40:38,920 –> 00:40:40,480
در یک محیط چند رشته ای اجرا نمی کنیم،
939
00:40:40,480 –> 00:40:44,350
خوب است، بنابراین این یک ساختار کلی
940
00:40:44,350 –> 00:40:47,670
از singleton است، پس بیایید نگاه کنیم. و ببینید
941
00:40:47,670 –> 00:40:50,140
که چگونه این در کد خوب
942
00:40:50,140 –> 00:40:53,940
به نظر می رسد، پس بیایید در اجرای آنها به آنها نگاه کنیم،
943
00:40:54,840 –> 00:41:01,890
خوب، اجازه دهید به مطالب خود
944
00:41:01,890 –> 00:41:05,620
برگردیم و ما اینجا بخش 2.4 را داریم، ما
945
00:41:05,620 –> 00:41:08,410
اجرای singleton را داریم،
946
00:41:08,410 –> 00:41:10,720
تمرین 8 را داریم، بسیار خوب، من این
947
00:41:10,720 –> 00:41:15,970
تمرین را با هم انجام می دهیم. شما می توانید برنامه نویسی زندگی را بشنوید،
948
00:41:15,970 –> 00:41:19,780
اما چند تمرین دیگر که
949
00:41:19,780 –> 00:41:21,640
می خواهید به تنهایی انجام دهید، بسیار خوب است، اما
950
00:41:21,640 –> 00:41:23,380
این اولین تمرین است و ساده ترین است،
951
00:41:23,380 –> 00:41:25,360
بنابراین من این کار را انجام می دهم و
952
00:41:25,360 –> 00:41:27,580
آنها را معمولاً پیچیده تر می کنیم.
953
00:41:27,580 –> 00:41:30,640
به عنوان یک مربی تمام وقت
954
00:41:30,640 –> 00:41:33,310
در دانشگاهم، ما یک جوک داریم که به
955
00:41:33,310 –> 00:41:35,350
دانشجویانمان میگویم خوب، ما سه برابر سه
956
00:41:35,350 –> 00:41:38,110
نوع مشکل داریم و به طور کلی
957
00:41:38,110 –> 00:41:39,490
هر زمان که درس خاصی را تدریس میکنیم،
958
00:41:39,490 –> 00:41:41,710
اولینها آسانها هستند،
959
00:41:41,710 –> 00:41:43,390
خوب و آنها مشکل دارند. مشکلاتی را که در کلاس انجام میدهیم بسیار
960
00:41:43,390 –> 00:41:45,310
خوب است، زیرا آسان هستند،
961
00:41:45,310 –> 00:41:47,830
پس ما دارای پیچیدگی متوسطی
962
00:41:47,830 –> 00:41:49,150
از مشکلات هستیم، خوب، آنهایی هستند که
963
00:41:49,150 –> 00:41:52,810
میگذاریم به
964
00:41:52,810 –> 00:41:54,550
دانشآموزانمان اجازه انجام تکالیف را
965
00:41:54,550 –> 00:41:55,690
بدهیم، اما پس از آن مشکل
966
00:41:55,690 –> 00:41:58,060
باشه خیلی سخته یا
967
00:41:58,060 –> 00:42:00,960
غیرممکن فکر میکنی چه زمانی از ما در
968
00:42:00,960 –> 00:42:04,450
تست ها و امتحانات استفاده میکنیم دقیقا خوبه، پس
969
00:42:04,450 –> 00:42:06,280
یکبار دیگه در واقع یک ستاره کوچولو
970
00:42:06,280 –> 00:42:08,170
برای نشان دادن سطح پیچیدگی که در
971
00:42:08,170 –> 00:42:10,810
نظر میگیرم قرار میدم پس در این مورد فقط
972
00:42:10,810 –> 00:42:12,400
یک ستاره داره بنابراین این بدان معناست که بسیار
973
00:42:12,400 –> 00:42:13,270
آسان است، خوب است،
974
00:42:13,270 –> 00:42:15,130
اما در پایان شما باید بتوانید کاری را
975
00:42:15,130 –> 00:42:17,319
انجام دهید که دارای سه ستاره است، اوکی
976
00:42:17,319 –> 00:42:18,700
که کمی پیچیده تر است،
977
00:42:18,700 –> 00:42:23,530
بنابراین فرض کنید ما یک کلاس
978
00:42:23,530 –> 00:42:26,280
در اینجا داریم به نام Tigger okay not tiger Tigger
979
00:42:26,280 –> 00:42:29,380
okay این از این شخصیت از
980
00:42:29,380 –> 00:42:35,200
وینی پو توسط یک میلنز گرفته شده است و
981
00:42:35,200 –> 00:42:37,390
اگر به یاد داشته باشید که همه با
982
00:42:37,390 –> 00:42:40,180
تیگر با این کاراکتر آشنا هستند،
983
00:42:40,180 –> 00:42:44,670
خوب است، ممکن است به یاد داشته باشید که من در واقع
984
00:42:44,670 –> 00:42:47,319
بخشی از دوران کودکی ام را در دهه 1970
985
00:42:47,319 –> 00:42:48,880
ترسیم کردم و به یاد دارم ac واقعاً رفتن
986
00:42:48,880 –> 00:42:51,579
به سینما و فیلم های وین
987
00:42:51,579 –> 00:42:54,160
پو یا فیلم های کوتاه در آن زمان
988
00:42:54,160 –> 00:42:55,720
آنها این شخصیت را داشتند که واقعاً به نظر من
989
00:42:55,720 –> 00:42:58,630
خیلی خنده دار بود که Tigger بود و او
990
00:42:58,630 –> 00:43:00,670
آهنگ واقعاً جالبی خواند و
991
00:43:00,670 –> 00:43:02,079
در نقطه ای از آهنگ اساساً گفت
992
00:43:02,079 –> 00:43:03,579
اگرچه من تنها کسی هستم که
993
00:43:03,579 –> 00:43:04,960
چیز شگفت انگیز در مورد Tiggers این است که
994
00:43:04,960 –> 00:43:07,119
tinker چیزهای فوق العاده ای هستند و
995
00:43:07,119 –> 00:43:08,470
در پایان او چیزی گفت که شبیه من
996
00:43:08,470 –> 00:43:10,180
تنها هستم، بنابراین این کلاسی است که
997
00:43:10,180 –> 00:43:11,560
منطقی به نظر می رسد که واقعاً یک
998
00:43:11,560 –> 00:43:12,670
لحن داشته باشد. چون قرار بود
999
00:43:12,670 –> 00:43:13,960
فقط یک تایگر داشته باشید،
1000
00:43:13,960 –> 00:43:16,540
بنابراین اجرای فعلی
1001
00:43:16,540 –> 00:43:20,890
Tigger بسیار ساده است، فقط دو
1002
00:43:20,890 –> 00:43:25,319
روش دارد: dunder STR dunder که
1003
00:43:25,319 –> 00:43:27,790
در اینجا برمیگردد وقتی شما پرینت میگیرید، در نهایت
1004
00:43:27,790 –> 00:43:32,200
یک نمونه از Tigger را چاپ میکنید و
1005
00:43:32,200 –> 00:43:35,260
شما را برمیگرداند. این رشته و همچنین
1006
00:43:35,260 –> 00:43:37,060
خوب می چرخد، بنابراین اگر می خواهید رول Tigger خود را بسازید،
1007
00:43:37,060 –> 00:43:38,920
فقط این دو را oky صدا کنید،
1008
00:43:38,920 –> 00:43:44,170
بنابراین بیایید این را کپی کنیم، مشکلی در
1009
00:43:44,170 –> 00:43:47,260
کپی کردن آن وجود ندارد و بیایید
1010
00:43:47,260 –> 00:43:52,089
اینجا یک فایل جدید ایجاد کنیم، پیشنهاد می
1011
00:43:52,089 –> 00:43:54,010
کنید قرار دهید. اینها در یک پوشه خاص به طوری
1012
00:43:54,010 –> 00:43:55,900
که همه چیز را با هم داشته باشید، ما
1013
00:43:55,900 –> 00:44:02,250
این فایل را صدا می زنیم Tigger
1014
00:44:02,250 –> 00:44:06,180
dot py اولین فایل
1015
00:44:06,180 –> 00:44:10,740
ما است، بنابراین ما کد را در آنجا قرار می دهیم، خوب این
1016
00:44:10,740 –> 00:44:13,440
همان من از ویرایشگر Spyder استفاده می کنم که
1017
00:44:13,440 –> 00:44:15,869
بخشی از توزیع آناکوندا است. اما
1018
00:44:15,869 –> 00:44:17,849
بسیاری از ویرایشگرها باید کاملاً
1019
00:44:17,849 –> 00:44:24,390
خوب کار کنند، خوب است و بیایید کد زیر
1020
00:44:24,390 –> 00:44:27,809
را از یک فایل دیگر امتحان کنیم و این
1021
00:44:27,809 –> 00:44:29,099
گاهی اوقات ممکن است کمی
1022
00:44:29,099 –> 00:44:30,869
مشکل باشد، اما این تنها لحظه ای است
1023
00:44:30,869 –> 00:44:31,890
که در آن از
1024
00:44:31,890 –> 00:44:33,450
ماژول دیگری استفاده می کنم، بنابراین ما میخواهیم
1025
00:44:33,450 –> 00:44:36,619
فایل دیگری به نام تکنقطه P wine
1026
00:44:36,619 –> 00:44:40,529
با این کد خاص
1027
00:44:40,529 –> 00:44:44,369
ایجاد کنیم، پس بیایید یک فایل نهایی جدید در اینجا ایجاد کنیم
1028
00:44:44,369 –> 00:44:49,880
و این فایل فایل شده باید singleton dot py نامیده شود.
1029
00:44:49,970 –> 00:44:55,470
1030
00:44:55,470 –> 00:44:59,039
1031
00:44:59,039 –> 00:45:02,700
من آن را بزرگتر می
1032
00:45:02,700 –> 00:45:05,760
کنم، اشکالی ندارد که همه می توانند آن را
1033
00:45:05,760 –> 00:45:11,660
خوب ببینند، کمی بزرگتر، مطمئن شوید
1034
00:45:17,280 –> 00:45:22,840
که رنگ متفاوتی می خواهید، خوب به من اجازه دهید تا
1035
00:45:22,840 –> 00:45:27,090
ببینم تغییر رنگ چقدر آسان است،
1036
00:45:29,700 –> 00:45:34,210
معمولا رنگ را تغییر ندهید، بنابراین من
1037
00:45:34,210 –> 00:45:37,680
واقعاً اینطور نیستم مطمئنا w در اینجا فرض بر این است
1038
00:45:38,160 –> 00:45:43,140
که بله، احتمالاً منطقی است، بنابراین
1039
00:45:43,140 –> 00:45:48,460
شما تیره را ترجیح می دهید یا من فکر می کنم شفاف
1040
00:45:48,460 –> 00:45:57,369
بهتر است اکثر آنها
1041
00:45:57,369 –> 00:45:59,400
بهتر
1042
00:46:12,520 –> 00:46:17,380
به
1043
00:46:17,380 –> 00:46:26,650
نظر می رسند.
1044
00:46:26,650 –> 00:46:29,140
1045
00:46:29,140 –> 00:46:31,000
سفید پی شامل تعریف
1046
00:46:31,000 –> 00:46:33,310
کلاس Tigger است و دیگری که من
1047
00:46:33,310 –> 00:46:36,420
آن را ساده تک نقطهای py نامیدم که
1048
00:46:36,420 –> 00:46:40,120
این کد را در اینجا دارد، کلاس جدول را
1049
00:46:40,120 –> 00:46:41,860
از ماژول Tigger وارد میکند، این یکی به
1050
00:46:41,860 –> 00:46:43,990
عنوان یک ماژول استفاده میشود.
1051
00:46:43,990 –> 00:46:47,380
1052
00:46:47,380 –> 00:46:49,180
یک نمونه
1053
00:46:49,180 –> 00:46:50,710
دیگر که توسط متغیر ارجاع داده می شود و یکی دیگر توسط متغیر B ارجاع می شود،
1054
00:46:50,710 –> 00:46:53,070
ما اینجا چاپ می
1055
00:46:53,070 –> 00:46:55,150
کنیم به یاد داشته باشید که ما در اینجا از این رشته های F استفاده می کنیم که
1056
00:46:55,150 –> 00:46:58,180
در واقع در پایتون 3.6 اضافه شده اند،
1057
00:46:58,180 –> 00:47:00,820
بسیار خوب، بنابراین اگر از
1058
00:47:00,820 –> 00:47:02,080
چیزی قدیمی تر از آن استفاده می کنید، شما
1059
00:47:02,080 –> 00:47:03,790
احتمالاً نمیتوان از این یکی در اینجا استفاده کرد، اما
1060
00:47:03,790 –> 00:47:06,460
اگر از 3.6 3.7 استفاده میکنید، باید به
1061
00:47:06,460 –> 00:47:08,830
خوبی کار کند هر چیزی که بعد از رشتههای F
1062
00:47:08,830 –> 00:47:13,840
این فرمت هر چیزی در داخل
1063
00:47:13,840 –> 00:47:15,670
بریسها در اینجا عبارتی است
1064
00:47:15,670 –> 00:47:18,040
که در اینجا ارزیابی شده است، بنابراین در اینجا
1065
00:47:18,040 –> 00:47:20,260
من شناسه a را میپرسم و شناسه هر
1066
00:47:20,260 –> 00:47:24,190
شی در پایتون یک شناسه منحصربهفرد دارد، خوب است
1067
00:47:24,190 –> 00:47:26,140
و اگر ایده متفاوت باشد،
1068
00:47:26,140 –> 00:47:28,540
ما آنها را به عنوان اشیاء متفاوت در نظر میگیریم، اگر شناسه یکسان باشد، اساساً آنها را به عنوان اشیاء متفاوت در نظر میگیریم.
1069
00:47:28,540 –> 00:47:30,760
1070
00:47:30,760 –> 00:47:32,380
نشان می دهد که عبارت
1071
00:47:32,380 –> 00:47:33,970
آن شی نشان دهنده همان شی
1072
00:47:33,970 –> 00:47:36,190
است. دقیقاً همان شی است و در اینجا
1073
00:47:36,190 –> 00:47:38,410
ما نیز از is
1074
00:47:38,410 –> 00:47:40,740
استفاده می کنیم.
1075
00:47:40,740 –> 00:47:43,750
1076
00:47:43,750 –> 00:47:45,250
منظور آنها این است که
1077
00:47:45,250 –> 00:47:46,720
آنها از نظر فیزیکی در حافظه هستند،
1078
00:47:46,720 –> 00:47:49,210
آنها دقیقاً همان شی را نشان می دهند، خوب است،
1079
00:47:49,210 –> 00:47:52,570
به عبارت دیگر آدرس حافظه یکسانی دارند
1080
00:47:52,570 –> 00:47:54,130
زیرا آنها
1081
00:47:54,130 –> 00:47:56,020
دقیقاً همان شیء هستند، اگر
1082
00:47:56,020 –> 00:47:58,180
آدرس یکسانی نداشته باشند، بسیار خوب است
1083
00:47:58,180 –> 00:47:59,950
. همان شی خوب، مکانهای مختلف وجود دارد
1084
00:47:59,950 –> 00:48:01,690
و چیزهای متفاوتی در
1085
00:48:01,690 –> 00:48:06,610
آنجا وجود دارد، بنابراین شناسه احتمالاً از آدرس استفاده میکند
1086
00:48:06,610 –> 00:48:09,130
تا در واقع راهی برای
1087
00:48:09,130 –> 00:48:12,070
ایجاد ضربه در اینجا باشد، بسیار خوب، بنابراین اگر فقط
1088
00:48:12,070 –> 00:48:16,920
این را اجرا کنیم خروجیای که تولید میشود،
1089
00:48:16,920 –> 00:48:20,110
میتوانید دو شناسه را در آنجا ببینید.
1090
00:48:20,110 –> 00:48:23,600
اگر بررسی کنید
1091
00:48:23,600 –> 00:48:25,250
و قسمت کنید، آنها یکسان هستند، بلافاصله خواهید دید
1092
00:48:25,250 –> 00:48:27,140
که یکسان نیست، احتمالاً قسمت اول
1093
00:48:27,140 –> 00:48:29,750
یکسان است، اما ارقام انتهایی
1094
00:48:29,750 –> 00:48:33,020
یکسان نیستند و وقتی میپرسیم که آیا از
1095
00:48:33,020 –> 00:48:35,180
عملیات is استفاده میکنید، آنها یکسان هستند یا خیر.
1096
00:48:35,180 –> 00:48:36,710
به همین دلیل است که ما خطای خوبی دریافت می کنیم،
1097
00:48:36,710 –> 00:48:38,300
بنابراین چیزی که اکنون می بینیم این است که آنها در
1098
00:48:38,300 –> 00:48:39,740
حال حاضر از الگوی تکی استفاده نمی کنند
1099
00:48:39,740 –> 00:48:41,240
زیرا در اینجا من
1100
00:48:41,240 –> 00:48:47,180
در حال حاضر در این احتمال هستم که در
1101
00:48:47,180 –> 00:48:50,060
واقع
1102
00:48:50,060 –> 00:48:52,760
نمونه تکراری داشته باشم، بنابراین Tigger نه
1103
00:48:52,760 –> 00:49:00,860
یک تکه، بنابراین چه کاری باید انجام دهیم،
1104
00:49:00,860 –> 00:49:03,680
به یاد داشته باشید که مقدار دقیق شناسه ممکن است
1105
00:49:03,680 –> 00:49:05,390
بسته به سیستم شما متفاوت باشد، بنابراین
1106
00:49:05,390 –> 00:49:06,800
نگران نباشید اگر یکسان نیستید
1107
00:49:06,800 –> 00:49:08,210
، تنها چیزی که باید توجه داشته باشید این است
1108
00:49:08,210 –> 00:49:13,310
که آنها متفاوت هستند. چه کاری
1109
00:49:13,310 –> 00:49:19,270
باید انجام دهیم تا کلاس Tigger خود را به صورت تکی
1110
00:49:19,270 –> 00:49:21,980
درست کنیم، بنابراین اولین نکته این است که ما
1111
00:49:21,980 –> 00:49:23,900
باید کلاس معلم خصوصی را خصوصی کنیم
1112
00:49:23,900 –> 00:49:25,930
و این کار با
1113
00:49:25,930 –> 00:49:29,060
اضافه کردن یک زیرخط اصلی به آن به عنوان یک پیشوند انجام
1114
00:49:29,060 –> 00:49:32,450
می شود.
1115
00:49:32,450 –> 00:49:35,060
اینجا انجام میدم بازگشت به
1116
00:49:35,060 –> 00:49:40,100
ماژول Tigger Tigger، ما فقط یک زیرخط اضافه می
1117
00:49:40,100 –> 00:49:42,740
کنیم، بسیار خوب، این یک قرارداد است که در پایتون استفاده می شود،
1118
00:49:42,740 –> 00:49:45,860
اساساً به این معنی است که نام هایی در یک ماژول
1119
00:49:45,860 –> 00:49:47,960
که با یک زیرخط شروع می
1120
00:49:47,960 –> 00:49:50,270
شوند، خصوصی برای ماژول در نظر گرفته می شوند، به
1121
00:49:50,270 –> 00:49:52,100
یاد داشته باشید که واقعاً بیشتر یک قرارداد است،
1122
00:49:52,100 –> 00:49:53,510
زیرا اگر دقیقاً بدانید چه چیزی وجود دارد. به آن می
1123
00:49:53,510 –> 00:49:54,980
گویند شما هنوز هم می توانید واقعاً
1124
00:49:54,980 –> 00:49:57,470
از خارج از طریق یک کد مشتری که
1125
00:49:57,470 –> 00:50:00,650
در واقع ماژول را وارد می کند، به آن دسترسی پیدا کنید، همچنین
1126
00:50:00,650 –> 00:50:03,940
اگر از یک ماژول
1127
00:50:03,940 –> 00:50:07,160
از ستاره واردات ماژول وارد کنید، با استفاده از ستاره
1128
00:50:07,160 –> 00:50:09,020
برای وارد کردن همه نمادها، هر نمادی
1129
00:50:09,020 –> 00:50:10,460
که با زیرخط شروع می شود، وارد کنید. به
1130
00:50:10,460 –> 00:50:13,040
طور خودکار وارد نمی شود بسیار خوب، اما
1131
00:50:13,040 –> 00:50:15,440
اگر آن را به صراحت با استفاده از نامش وارد کنید
1132
00:50:15,440 –> 00:50:17,270
و می دانید که با
1133
00:50:17,270 –> 00:50:19,130
زیرخط شروع می شود، می توانید آن را خوب دریافت کنید،
1134
00:50:19,130 –> 00:50:21,140
اما به یاد داشته باشید که پایتون با
1135
00:50:21,140 –> 00:50:23,300
این فرض کار می کند که همه
1136
00:50:23,300 –> 00:50:27,380
ما بزرگسالان را قبول دارند، بنابراین منظور من است. اگر
1137
00:50:27,380 –> 00:50:29,030
میخواهید قسمتهایی از ماژول را انتخاب کنید،
1138
00:50:29,030 –> 00:50:30,890
باید فرض کنید
1139
00:50:30,890 –> 00:50:32,870
که این همان کاری است که میخواهید انجام دهید، خوب هیچکس
1140
00:50:32,870 –> 00:50:35,200
قضاوت شما را نمیکند،
1141
00:50:35,200 –> 00:50:37,510
بنابراین این یک مشکل است. اولین نقطه در اینجا
1142
00:50:37,510 –> 00:50:39,700
نکته دوم ما باید یک
1143
00:50:39,700 –> 00:50:41,650
متغیر دامنه ماژول خصوصی به نام instance ایجاد کنیم و
1144
00:50:41,650 –> 00:50:44,170
آن را با none okay مقداردهی اولیه کنیم، بنابراین به
1145
00:50:44,170 –> 00:50:45,609
چه معناست که اساساً اینجا
1146
00:50:45,609 –> 00:50:49,530
خارج از کلاس okay ما یک
1147
00:50:49,530 –> 00:50:53,530
سطح ماژول در متغیر ایجاد می کنیم okay مانند یک
1148
00:50:53,530 –> 00:50:55,119
کتاب متغیر جهانی است. فقط برای ماژول
1149
00:50:55,119 –> 00:50:57,040
okay ما نیز با یک خط زیر شروع
1150
00:50:57,040 –> 00:50:59,740
کردیم زیرا می خواهیم محدوده آن را
1151
00:50:59,740 –> 00:51:02,829
حداقل در قرارداد به این ماژول محدود
1152
00:51:02,829 –> 00:51:07,690
کنیم و آن را با none okay مقداردهی اولیه می کنیم
1153
00:51:07,690 –> 00:51:10,599
و نکته سوم اینجاست که
1154
00:51:10,599 –> 00:51:12,490
اکنون تابعی به نام tigger notice تعریف می کنیم.
1155
00:51:12,490 –> 00:51:14,049
که ما میخواهیم آن
1156
00:51:14,049 –> 00:51:16,630
تابع را با T بزرگ شروع کنیم و
1157
00:51:16,630 –> 00:51:18,040
در واقع همان نامی است
1158
00:51:18,040 –> 00:51:19,720
که کلاس همین چند لحظه پیش داشت،
1159
00:51:19,720 –> 00:51:22,720
خوب این تابع
1160
00:51:22,720 –> 00:51:25,089
هیچ آرگومانی نمیگیرد و این تابع
1161
00:51:25,089 –> 00:51:27,220
مسئول ایجاد نمونه
1162
00:51:27,220 –> 00:51:30,400
ای از Tigger زمانی که نمونه
1163
00:51:30,400 –> 00:51:32,290
وجود دارد و هنوز وجود ندارد، خوب است و اگر وجود داشته باشد،
1164
00:51:32,290 –> 00:51:34,059
فقط آن مقدار را برمی گردانیم، بنابراین بسیار
1165
00:51:34,059 –> 00:51:37,780
شبیه به بخشی است که در
1166
00:51:37,780 –> 00:51:39,040
اینجا ساختاری که ما در آن هستیم مشاهده کردیم.
1167
00:51:39,040 –> 00:51:43,900
این بخش را در اینجا پیاده سازی می کنم بسیار خوب،
1168
00:51:43,900 –> 00:51:46,859
بنابراین چیزی شبیه این به نظر می
1169
00:51:46,859 –> 00:51:49,299
رسد، این تابعی است که ما تعریف می کنیم
1170
00:51:49,299 –> 00:51:56,349
Tigger okay نامیده می شود و به دلیل اینکه
1171
00:51:56,349 –> 00:51:58,089
مقدار این
1172
00:51:58,089 –> 00:52:00,640
نمونه را تغییر می دهیم که همانطور که قبلاً ذکر کردم به
1173
00:52:00,640 –> 00:52:02,349
نوعی عمل می کند یک متغیر سراسری
1174
00:52:02,349 –> 00:52:06,099
اما در واقع فقط یک متغیر دامنه ماژول است،
1175
00:52:06,099 –> 00:52:08,200
اما ما باید آن را به عنوان یک متغیر جهانی اعلام کنیم
1176
00:52:08,200 –> 00:52:11,500
در اینجا به یاد داشته باشید که این ضروری است
1177
00:52:11,500 –> 00:52:14,099
بنابراین میتوانیم مقدار آن را تغییر دهیم، در غیر
1178
00:52:14,099 –> 00:52:16,809
این صورت سیستم مفسر در واقع
1179
00:52:16,809 –> 00:52:18,520
به این فکر میکند که یک متغیر محلی است،
1180
00:52:18,520 –> 00:52:20,290
بنابراین با این مشکل وجود دارد. ما در واقع به این
1181
00:52:20,290 –> 00:52:22,329
اشاره می کنیم که این تعریفی
1182
00:52:22,329 –> 00:52:24,490
است که خارج از تعریفی که
1183
00:52:24,490 –> 00:52:27,510
می خواهیم برای این
1184
00:52:27,510 –> 00:52:30,190
متغیر جهانی در نظر بگیریم، بسیار خوب است، بنابراین در اینجا می خواهیم بپرسیم که
1185
00:52:30,190 –> 00:52:34,030
آیا واقعاً نمونه برابر با هیچ است یا خیر،
1186
00:52:34,030 –> 00:52:37,210
می توانیم آن را اینگونه بپرسیم آیا هیچ کدام نیست
1187
00:52:37,210 –> 00:52:41,079
و اگر این بدان معناست که ما نیاز
1188
00:52:41,079 –> 00:52:44,760
داریم کلاس خود را نمونه سازی کنیم، بنابراین
1189
00:52:44,760 –> 00:52:47,980
متغیرهای
1190
00:52:47,980 –> 00:52:49,840
نمونه را در اینجا زیر خط زیر متغیر نمونه قرار می دهیم برابر
1191
00:52:49,840 –> 00:52:54,610
با عبارتی که در واقع
1192
00:52:54,610 –> 00:52:56,680
کلاس ما را ایجاد می کند. این یکی در اینجا اشکالی ندارد، بنابراین
1193
00:52:56,680 –> 00:52:58,030
در اینجا ما یک نمونه از Tigger ایجاد می کنیم،
1194
00:52:58,030 –> 00:53:00,280
اما این فقط
1195
00:53:00,280 –> 00:53:00,960
یک بار اتفاق
1196
00:53:00,960 –> 00:53:04,360
می افتد که مقدار اصلی نمونه
1197
00:53:04,360 –> 00:53:06,940
در واقع هیچ مشکلی ندارد، اگر اینطور نیست یا
1198
00:53:06,940 –> 00:53:09,130
پس از انجام این کد، فقط
1199
00:53:09,130 –> 00:53:13,590
مقدار نمونه فعلی را برمی گردانیم. خوب
1200
00:53:13,590 –> 00:53:15,790
توجه کنید که ما از این ترفند استفاده می کنیم
1201
00:53:15,790 –> 00:53:18,220
و این تصور را ایجاد می کنیم که این یک
1202
00:53:18,220 –> 00:53:19,600
کلاس است، اما واقعاً
1203
00:53:19,600 –> 00:53:21,700
یک تابع است و این تابعی است که
1204
00:53:21,700 –> 00:53:25,690
فقط یک بار کلاسی را که
1205
00:53:25,690 –> 00:53:27,730
در اینجا داریم ایجاد می کند، خوب از آنجا به بعد
1206
00:53:27,730 –> 00:53:33,160
ما فقط میخواهیم از
1207
00:53:33,160 –> 00:53:34,990
چیزی که قبلاً ایجاد
1208
00:53:34,990 –> 00:53:39,040
کردهایم استفاده میکنیم، بنابراین در اینجا اکنون به این بخش باز میگردیم،
1209
00:53:39,040 –> 00:53:40,810
فقط یک اشاره سریع بسته به
1210
00:53:40,810 –> 00:53:42,370
محیطی که در حال اجرا هستید،
1211
00:53:42,370 –> 00:53:47,320
ممکن است لازم باشد پوسته خود را تنظیم مجدد کنید
1212
00:53:47,320 –> 00:53:49,870
پایتون پوسته چون قبلاً
1213
00:53:49,870 –> 00:53:52,450
Tigger را وارد کردهاید، بنابراین اگر دوباره آن را وارد
1214
00:53:52,450 –> 00:53:55,600
کنید، محیط پیشفرض
1215
00:53:55,600 –> 00:53:57,400
معمولاً در نظر گرفته میشود این است که شما
1216
00:53:57,400 –> 00:54:00,010
قبلاً یک ماژول در حافظه دارید، بنابراین از ماژولی
1217
00:54:00,010 –> 00:54:01,690
که قبلاً در حافظه پنهان است استفاده نمیکند.
1218
00:54:01,690 –> 00:54:04,900
‘ هیچ تفاوتی
1219
00:54:04,900 –> 00:54:07,930
در خروجی مشاهده نکنید، مطمئن شوید که ترمینال فعلی خود را ببندید،
1220
00:54:07,930 –> 00:54:09,730
پوسته یا پوسته پایتون
1221
00:54:09,730 –> 00:54:11,740
دوباره آن را باز کرده و دوباره اجرا کنید و
1222
00:54:11,740 –> 00:54:14,710
وقتی این کار را انجام دادیم، اگر این به درستی
1223
00:54:14,710 –> 00:54:19,110
اجرا شود،
1224
00:54:19,110 –> 00:54:22,240
در مورد عنکبوت عنکبوتی
1225
00:54:22,240 –> 00:54:24,250
که تشخیص داده شده است، میتوانیم این مشکل را ببینیم. که ماژول ticker در
1226
00:54:24,250 –> 00:54:26,050
واقع اصلاح شده است، بنابراین به طور خودکار آن را
1227
00:54:26,050 –> 00:54:28,690
بارگیری مجدد می کند، اما به یاد داشته باشید که همه سیستم ها
1228
00:54:28,690 –> 00:54:31,270
واقعاً این کار را نمی کنند که ID هر دو Amb
1229
00:54:31,270 –> 00:54:33,520
اکنون باید همان شماره باشد، اوکی است و
1230
00:54:33,520 –> 00:54:36,370
اگر بپرسیم آیا همان شیء است،
1231
00:54:36,370 –> 00:54:39,070
درست است یک بار دیگر توجه کنید که اینجا به
1232
00:54:39,070 –> 00:54:41,410
نظر می رسد که ما در حال نمونه سازی یک
1233
00:54:41,410 –> 00:54:43,750
کلاس هستیم، اما کاری که در واقع انجام می دهیم این است
1234
00:54:43,750 –> 00:54:45,880
که ما این تابع را فراخوانی می کنیم که
1235
00:54:45,880 –> 00:54:48,070
تنها یک بار آن را در ده بار انجام
1236
00:54:48,070 –> 00:54:50,260
1237
00:54:50,260 –> 00:54:52,060
1238
00:54:52,060 –> 00:54:54,850
می دهد. خوب است، بنابراین یک بار دیگر
1239
00:54:54,850 –> 00:54:57,540
در اینجا به خاطر داشته باشید
1240
00:54:58,550 –> 00:55:00,740
که می توانید از هر نمونه ای از این نمونه ها استفاده کنید
1241
00:55:00,740 –> 00:55:03,320
و آنها در واقع دقیقاً
1242
00:55:03,320 –> 00:55:10,580
همانطور که انتظار می رود کار می کنند، بسیار خوب، بنابراین روش STR
1243
00:55:10,580 –> 00:55:13,820
Thunder STR dunder و
1244
00:55:13,820 –> 00:55:17,690
روش roar و remem وجود دارد. از آنجایی که روش dunder STR
1245
00:55:17,690 –> 00:55:20,330
در اینجا به طور خودکار فراخوانی می شود، زمانی که
1246
00:55:20,330 –> 00:55:22,700
ما print oky را صدا می زنیم، اما نقش به
1247
00:55:22,700 –> 00:55:25,220
صراحت باید از آن استفاده کنید خوب است و
1248
00:55:25,220 –> 00:55:27,290
اینها روش هایی هستند که ما در اینجا تعریف کرده ایم،
1249
00:55:27,290 –> 00:55:28,330
1250
00:55:28,330 –> 00:55:31,820
بنابراین اولین الگوی طراحی ما وجود دارد
1251
00:55:31,820 –> 00:55:33,980
که می گوید Milton ما تضمین می کنیم که
1252
00:55:33,980 –> 00:55:45,980
ما فقط یک مثال داریم، بله، یک بار
1253
00:55:45,980 –> 00:55:48,740
دیگر مزیت انجام آن این است که
1254
00:55:48,740 –> 00:55:51,680
بسته به مشکل
1255
00:55:51,680 –> 00:55:53,660
خاصی که در حال حل آن هستید، میخواهید ابتدا
1256
00:55:53,660 –> 00:55:56,450
فقط یک شی خوب داشته باشید، به
1257
00:55:56,450 –> 00:55:58,040
دلایلی که چرا میخواهید آن خوب را داشته
1258
00:55:58,040 –> 00:55:59,570
باشید واقعاً به یک نوع مشکل
1259
00:55:59,570 –> 00:56:02,300
در اینجا به طور خاص یک مثال بسیار ساده و بسیار
1260
00:56:02,300 –> 00:56:05,000
بازیگوش است که ما فقط میخواستیم
1261
00:56:05,000 –> 00:56:06,830
مطمئن شویم که کلاس لایهای که آنجا بودند
1262
00:56:06,830 –> 00:56:09,500
تنها یک مشکل دارند، ممکن است این باشد زیرا
1263
00:56:09,500 –> 00:56:14,470
فقط داشتن یک مورد منطقی است اوه، اوه،
1264
00:56:14,500 –> 00:56:16,880
شما میتوانید این کار را انجام دهید. اگر
1265
00:56:16,880 –> 00:56:18,410
آن را میخواهید، اما باید مراقب باشید که
1266
00:56:18,410 –> 00:56:21,650
در ابتدا به آن مقدار بدهید، در اینجا ما
1267
00:56:21,650 –> 00:56:25,540
از چیزی استفاده میکنیم که به آن
1268
00:56:25,540 –> 00:56:28,910
مقدار دهی اولیه نامیده میشود، مزیت اصلی این است
1269
00:56:28,910 –> 00:56:31,040
که اگر هرگز از آن استفاده نکردید، هرگز
1270
00:56:31,040 –> 00:56:32,630
شی را ایجاد نمیکنید. تصور کنید که شی در
1271
00:56:32,630 –> 00:56:35,000
واقع پیچیده است یا به منابع زیادی نیاز دارد
1272
00:56:35,000 –> 00:56:37,340
تا در واقع ایجاد شود، بنابراین ما
1273
00:56:37,340 –> 00:56:39,560
این کار را با تنبلی انجام می دهیم تا زمانی که واقعاً به آن نیاز داشته
1274
00:56:39,560 –> 00:56:41,990
باشیم، اگر در برنامه ما هرگز واقعاً
1275
00:56:41,990 –> 00:56:44,240
به شیء مراجعه نکنید، هیچ شیئی
1276
00:56:44,240 –> 00:56:46,280
در واقع ایجاد نخواهد شد، بنابراین بله متاسفم
1277
00:56:46,280 –> 00:56:49,640
این است که از مقداردهی اولیه تنبلی استفاده می
1278
00:56:49,640 –> 00:56:51,470
کند تا فقط زمانی آن را ایجاد کند که
1279
00:56:51,470 –> 00:56:54,680
واقعاً مورد نیاز است، بسیار خوب، اگر هرگز نباشد،
1280
00:56:54,680 –> 00:56:56,720
اگر هرگز نیاز به
1281
00:56:56,720 –> 00:56:58,790
ایجاد نداشته باشد، هرگز درست نمی شود، بنابراین شما فقط
1282
00:56:58,790 –> 00:57:02,350
در صورتی این کار را انجام می دهید که واقعاً نیاز باشد بله،
1283
00:57:03,770 –> 00:57:11,600
اوه، شما از روش جدید استفاده می کنید. این
1284
00:57:11,600 –> 00:57:12,890
یکی اجرای بسیار ساده و ساده لوحانه است،
1285
00:57:12,890 –> 00:57:15,440
اگر واقعاً
1286
00:57:15,440 –> 00:57:20,480
dunder new dunder را نادیده بگیرید
1287
00:57:20,480 –> 00:57:22,490
، کنترل زیادی به شما می دهد و در
1288
00:57:22,490 –> 00:57:24,260
واقع ممکن است جایگزین بهتری در نظر گرفته شود،
1289
00:57:24,260 –> 00:57:27,710
خوب این
1290
00:57:27,710 –> 00:57:29,840
یکی ساده تر برای استفاده است، خوب است و من نمی کنم. نیازی
1291
00:57:29,840 –> 00:57:32,270
نیست دقیقاً توضیح دهید که روش جدیدی که
1292
00:57:32,270 –> 00:57:34,880
تحت تمدید شده انجام می شود واقعاً چه
1293
00:57:34,880 –> 00:57:38,119
کارایی دارد، بنابراین مزیت اصلی این کار این است
1294
00:57:38,119 –> 00:57:40,610
که اگر از روش جدید dunder جدید dunder استفاده می کنید، ساده تر است.
1295
00:57:40,610 –> 00:57:43,010
1296
00:57:43,010 –> 00:57:44,480
se Medical به این دلیل است که این
1297
00:57:44,480 –> 00:57:47,180
وضعیت دیگری است که شما ممکن است
1298
00:57:47,180 –> 00:57:49,400
کمی انعطاف پذیری بیشتری داشته باشید، بسیار خوب و
1299
00:57:49,400 –> 00:57:50,990
راه حل کلی ممکن است کمی
1300
00:57:50,990 –> 00:57:53,030
ظریف تر باشد، اما کمی
1301
00:57:53,030 –> 00:57:54,800
پیچیده تر است، بنابراین من واقعاً می
1302
00:57:54,800 –> 00:58:01,190
خواستم اگر شما کمی ساده تر کار
1303
00:58:01,190 –> 00:58:02,590
کنید. اگر واقعاً به
1304
00:58:02,590 –> 00:58:04,250
چند پردازش در اینجا اهمیت میدهید، در واقع
1305
00:58:04,250 –> 00:58:08,240
نیاز دارید که من چندین تهدید دارم
1306
00:58:08,240 –> 00:58:11,390
که اساساً باید از نوعی
1307
00:58:11,390 –> 00:58:13,580
قفل در آنجا استفاده کنید تا مطمئن شوید که
1308
00:58:13,580 –> 00:58:15,680
احتمال مسابقه
1309
00:58:15,680 –> 00:58:19,160
بین بررسیها وجود ندارد. اگر در خط
1310
00:58:19,160 –> 00:58:20,930
سیزده و سپس نمونه مناسب باشد،
1311
00:58:20,930 –> 00:58:22,790
بنابراین معمولاً
1312
00:58:22,790 –> 00:58:25,760
باید یک قفل مشترک قرار دهید تا فقط
1313
00:58:25,760 –> 00:58:27,290
یک رشته در واقع منجر به
1314
00:58:27,290 –> 00:58:29,720
تولید تکتن شود، زیرا
1315
00:58:29,720 –> 00:58:32,420
اگر رشتههای زیادی دارید، اگر واقعاً اجرا را
1316
00:58:32,420 –> 00:58:34,430
بین if و سپس
1317
00:58:34,430 –> 00:58:36,109
در خط قطع کنید. سیزده و چهارده ممکن است در
1318
00:58:36,109 –> 00:58:38,270
نهایت بیش از یک نمونه داشته باشید،
1319
00:58:38,270 –> 00:58:40,550
بنابراین قفل یک راه حل ممکن است
1320
00:58:40,550 –> 00:58:44,359
، خوب دوباره در بیشتر مواقع
1321
00:58:44,359 –> 00:58:45,859
ممکن است این مشکل نباشد. برای
1322
00:58:45,859 –> 00:58:47,960
اینکه از چندین رشته استفاده نمی کنید شکایت کنید، اما اگر
1323
00:58:47,960 –> 00:58:49,640
این یک مورد است، فقط مراقب باشید با
1324
00:58:49,640 –> 00:58:53,090
این موضوع یا دیگری مشتاقانه
1325
00:58:53,090 –> 00:58:54,619
آن را مثال بزنید، بنابراین به جای قرار دادن هیچ کدام در اینجا، می
1326
00:58:54,619 –> 00:58:57,320
توانید مستقیماً همانطور
1327
00:58:57,320 –> 00:58:59,840
که چند لحظه پیش پیشنهاد شد اینجا ایجاد کنید و سپس آن را
1328
00:58:59,840 –> 00:59:02,119
انجام ندهید. باید از این استفاده کنید، اگر و اگر این کار را به این صورت انجام دهید
1329
00:59:02,119 –> 00:59:03,650
، معمولاً نیازی
1330
00:59:03,650 –> 00:59:06,560
به نگرانی در مورد استفاده از چندین رشته نخواهید داشت،
1331
00:59:06,560 –> 00:59:11,830
هر سؤال دیگری، خوب است،
1332
00:59:14,980 –> 00:59:20,060
بنابراین همانطور که چند لحظه پیش ذکر کردم،
1333
00:59:20,060 –> 00:59:22,100
این پیوندی است که در واقع به شما نشان می دهد که
1334
00:59:22,100 –> 00:59:24,110
چگونه یک موضوع ایجاد کنید. تک نوبتی شما
1335
00:59:24,110 –> 00:59:25,730
متاکلاسها کمی
1336
00:59:25,730 –> 00:59:31,220
پیچیدهتر است، بنابراین اگر میخواهید
1337
00:59:31,220 –> 00:59:34,190
1338
00:59:34,190 –> 00:59:35,930
پیادهسازی پیچیدهتری را کمی پیچیدهتر ببینید
1339
00:59:35,930 –> 00:59:39,080
، آن را بررسی کنید، اما اگر از آن استفاده کنید ممکن است مزایایی به شما بدهد.
1340
00:59:39,080 –> 00:59:42,050
1341
00:59:42,050 –> 00:59:43,520
لحظه قبل واقعاً
1342
00:59:43,520 –> 00:59:45,530
ساده است، ما بسیار بسیار ساده هستیم، بسیار
1343
00:59:45,530 –> 00:59:47,110
خوب، واقعاً به
1344
00:59:47,110 –> 00:59:50,600
دانش عمیق زیادی در مورد پایتون نیاز ندارد، پس
1345
00:59:50,600 –> 00:59:56,540
بیایید به الگوی بعدی خود برویم، خوب این یکی به
1346
00:59:56,540 –> 01:00:06,070
نام روش
1347
01:00:06,070 –> 01:00:08,810
الگوی الگو است. متد قالب یک
1348
01:00:08,810 –> 01:00:11,450
الگوی طراحی رفتاری است که در این
1349
01:00:11,450 –> 01:00:15,260
روش اسکلت یک الگوریتم را
1350
01:00:15,260 –> 01:00:16,640
در کلاس پایه تعریف میکند، اما اجازه دهید
1351
01:00:16,640 –> 01:00:19,010
کلاسهای مناسب مراحل خاصی از
1352
01:00:19,010 –> 01:00:21,470
الگوریتم را بدون تغییر ساختار آن
1353
01:00:21,470 –> 01:00:23,870
لغو کنند، بنابراین گاهی اوقات یک الگوریتم کلی داریم
1354
01:00:23,870 –> 01:00:26,510
که میتوان چندین
1355
01:00:26,510 –> 01:00:29,600
بار اعمال کرد. شما می خواهید از ساختار کلی الگوریتم مجددا استفاده کنید،
1356
01:00:29,600 –> 01:00:31,460
اما
1357
01:00:31,460 –> 01:00:33,890
برخی از مراحل خاص باید
1358
01:00:33,890 –> 01:00:36,740
بسته به کاری که دقیقا می خواهید انجام دهید متفاوت باشد،
1359
01:00:36,740 –> 01:00:41,060
بنابراین این چیزی شبیه به این را به ما می دهد
1360
01:00:41,060 –> 01:00:45,080
شما این روش الگوی اصلی را دارید، خوب این روشی
1361
01:00:45,080 –> 01:00:46,520
است که در واقع
1362
01:00:46,520 –> 01:00:48,170
همه چیزهایی را که اتفاق می افتد کنترل می کند. ترتیب
1363
01:00:48,170 –> 01:00:50,570
مراحل مختلف و سپس
1364
01:00:50,570 –> 01:00:53,180
مراحل تقسیمی اینها در واقع
1365
01:00:53,180 –> 01:00:54,890
روشهای انتزاعی هستند، اینها عملیات انتزاعی هستند
1366
01:00:54,890 –> 01:00:57,800
که در واقع توسط
1367
01:00:57,800 –> 01:00:59,600
کلاسهای مشخصی که کلاس انتزاعی را گسترش می دهند، اجرا
1368
01:00:59,600 –> 01:01:03,200
می شوند، بنابراین ما نمونه ای را می بینیم
1369
01:01:03,200 –> 01:01:06,980
که الگوریتم کلی
1370
01:01:06,980 –> 01:01:10,880
قبلاً وجود دارد. به شرطی که زیر کلاس ها
1371
01:01:10,880 –> 01:01:13,400
یا کلاس های مشتق شده باید به خوبی بگویند که
1372
01:01:13,400 –> 01:01:14,900
این مراحل خاص نیاز دارد
1373
01:01:14,900 –> 01:01:17,750
باید با این منطق خاص
1374
01:01:17,750 –> 01:01:19,850
در اینجا انجام شود، اما یک بار دیگر مهم ترین چیزی
1375
01:01:19,850 –> 01:01:21,590
که باید خیلی درک کنید این است که
1376
01:01:21,590 –> 01:01:24,230
این روش، این روش خاص یک
1377
01:01:24,230 –> 01:01:26,060
روش الگو است، این روش را نادیده نگیرید،
1378
01:01:26,060 –> 01:01:27,020
1379
01:01:27,020 –> 01:01:28,670
شما همیشه همان روش را رها کنید.
1380
01:01:28,670 –> 01:01:30,650
در کلاسهای بتن شما به ارث رسیدهاید، شما
1381
01:01:30,650 –> 01:01:34,220
فقط در صورتی مراحل خاص را نادیده میگیرید
1382
01:01:34,220 –> 01:01:39,369
که منطقی باشد، بنابراین
1383
01:01:45,790 –> 01:01:53,290
تمرین ما در اینجا پیادهسازی ما
1384
01:01:53,290 –> 01:01:57,079
اجازه دهید ابتدا چیزی را تعریف کنیم که ما آن را
1385
01:01:57,079 –> 01:02:00,650
یک ماشینحساب متوسط بنامیم خوب است، بن
1386
01:02:00,650 –> 01:02:02,060
براین یک Cal میانگین بعداً یک رن
1387
01:02:02,060 –> 01:02:04,810
متوسط چیست؟ فقط یک شی که
1388
01:02:04,810 –> 01:02:07,190
اساساً دنبالهای از
1389
01:02:07,190 –> 01:02:10,880
اعداد را نشان میدهد و ماشینحساب میانگین
1390
01:02:10,880 –> 01:02:13,849
آنهایی را مصرف میکند که دنبالهای از اعداد را مصرف میکند
1391
01:02:13,849 –> 01:02:15,890
و میانگین خوب را
1392
01:02:15,890 –> 01:02:18,800
کاملاً ساده
1393
01:02:18,800 –> 01:02:20,300
1394
01:02:20,300 –> 01:02:21,290
1395
01:02:21,290 –> 01:02:27,260
محاسبه میکند.
1396
01:02:27,260 –> 01:02:29,990
ABC ABC در
1397
01:02:29,990 –> 01:02:32,920
واقع یک کلاس پایتون خاص است که
1398
01:02:32,920 –> 01:02:35,960
مخفف کلاس
1399
01:02:35,960 –> 01:02:39,020
پایه انتزاعی است و کلاس پایه انتزاعی فقط است. کلاسی که
1400
01:02:39,020 –> 01:02:42,079
به شما امکان می دهد متدهای انتزاعی
1401
01:02:42,079 –> 01:02:44,119
داشته باشید، اگر با متدهای انتزاعی
1402
01:02:44,119 –> 01:02:45,140
و آسپرین که فقط
1403
01:02:45,140 –> 01:02:49,119
زبان های دیگری مانند جاوا یا C یا C++ است
1404
01:02:49,119 –> 01:02:51,770
کار کرده باشید، بسیار خوب است.
1405
01:02:51,770 –> 01:02:53,300
1406
01:02:53,300 –> 01:02:55,790
گفت:
1407
01:02:55,790 –> 01:02:57,819
اینها انتزاعی هستند، زیر کلاس ها
1408
01:02:57,819 –> 01:03:00,290
باید آن را لغو کنند تا عملکرد کامل را ارائه دهند،
1409
01:03:00,290 –> 01:03:03,140
بنابراین در این مورد،
1410
01:03:03,140 –> 01:03:05,030
ما روش قالب کلی را داریم که به
1411
01:03:05,030 –> 01:03:09,859
نام متوسط خوب است در اینجا ما
1412
01:03:09,859 –> 01:03:12,950
BC را گسترش می دهیم، بنابراین این یک کل
1413
01:03:12,950 –> 01:03:15,440
س پایه ستاره است که آنچه APC
1414
01:03:15,440 –> 01:03:18,079
مخفف آن است و ما می توانیم چندین
1415
01:03:18,079 –> 01:03:22,790
روش خود را با استفاده از متد انتزاعی سیگنال دهیم،
1416
01:03:22,790 –> 01:03:24,980
این در واقع یک دکوراتور است
1417
01:03:24,980 –> 01:03:27,170
که متدهای زیر را تزئین
1418
01:03:27,170 –> 01:03:29,630
می کند که نشان می دهد هر کلاس مشتق شده، هر
1419
01:03:29,630 –> 01:03:31,099
کلاسی که از این کلاس به ارث می برد،
1420
01:03:31,099 –> 01:03:32,510
باید پیاده سازی
1421
01:03:32,510 –> 01:03:34,790
آن متدها را ارائه دهد. فراموش کنید که آنها را پیاده سازی
1422
01:03:34,790 –> 01:03:37,339
کنید، هنگامی
1423
01:03:37,339 –> 01:03:40,010
که سعی می کنید آن کلاس را نمونه سازی کنید، به طور خودکار با خطا مواجه می شوید، در
1424
01:03:40,010 –> 01:03:42,470
اکثر مواقع در پایتون ما از چیزی استفاده می
1425
01:03:42,470 –> 01:03:44,150
کنیم که به عنوان تایپ اردک شناخته می شود
1426
01:03:44,150 –> 01:03:46,190
که اساساً به این معنی است که اگر به روش خاصی نیاز دارید،
1427
01:03:46,190 –> 01:03:48,470
فقط آن را
1428
01:03:48,470 –> 01:03:49,820
با نام و امضا
1429
01:03:49,820 –> 01:03:51,260
به درستی تعریف کنید و این همه چیزی است که شما نیاز دارید،
1430
01:03:51,260 –> 01:03:53,060
خوب است، اما نمی توانید از کلاس های مبتنی بر آهنگ خر استفاده کنید
1431
01:03:53,060 –> 01:03:56,420
که اجازه می دهد
1432
01:03:56,420 –> 01:03:58,430
کمی داشته باشید. کنترل بیشتر روی اینکه دقیقاً چه
1433
01:03:58,430 –> 01:04:01,220
اتفاقی می افتد و به طور خاص
1434
01:04:01,220 –> 01:04:03,410
خطاهایی را می گیرد که ممکن است
1435
01:04:03,410 –> 01:04:05,690
فراموش کنید پیاده
1436
01:04:05,690 –> 01:04:07,580
سازی یک روش خاص را در اینجا ارائه دهید، بنابراین
1437
01:04:07,580 –> 01:04:08,450
کمی از
1438
01:04:08,450 –> 01:04:09,890
عملکردی را که ممکن است در
1439
01:04:09,890 –> 01:04:12,980
زبان های دیگر پیدا کنید که به طور بومی از
1440
01:04:12,980 –> 01:04:16,310
این پشتیبانی می کنند به ما می دهد. مفهوم کلاسهای پایه انتزاعی، بنابراین
1441
01:04:16,310 –> 01:04:18,970
در اینجا اجازه دهید نگاهی به روش متوسط بیندازیم، این یک
1442
01:04:18,970 –> 01:04:21,350
وش نمونه است، بنابراین ما
1443
01:04:21,350 –> 01:04:24,320
ود را تأیید میکنیم، بنابراین این راهی است که شم
1444
01:04:24,320 –> 01:04:25,730
معمولاً می
1445
01:04:25,730 –> 01:04:29,830
نگین یک دنباله از اعداد را محاسبه میکنید، اجازه دهید در ای
1446
01:04:29,830 –> 01:04:33,020
جا حساب تعداد کل را شروع کن
1447
01:04:33,020 –> 01:04:34,700
م. از آیتم هایی که تا به حال دیده ایم و
1448
01:04:34,700 –> 01:04:36,980
با صفر شروع می کنیم، سپس مجموع کل
1449
01:04:36,980 –> 01:04:38,810
کارهایی را که تا به حال انجام داده ایم،
1450
01:04:38,810 –> 01:04:40,369
در صفر داریم که چیزی نخوانده
1451
01:04:40,369 –> 01:04:42,680
ایم و سپس این متد را
1452
01:04:42,680 –> 01:04:45,680
به نام hasnext فراخوانی میدهیم که یکی از
1453
01:04:45,680 –> 01:04:48,410
متدهای انتزاعی است که در حال حاضر این کلاس
1454
01:04:48,410 –> 01:04:50,330
نمیداند چگونه ادامه
1455
01:04:50,330 –> 01:04:52,640
دهد، مشکل بعدی است، اما کلاسهای فرعی
1456
01:04:52,640 –> 01:04:54,500
که کلاسهای مشتق شده بودند باید آن عملکرد را ارائه دهند
1457
01:04:54,500 –> 01:04:59,840
که در حالت ایدهآل، کلاس فرعی
1458
01:04:59,840 –> 01:05:02,090
با کلاس مشتقشده است. فقط می پرسم و
1459
01:05:02,090 –> 01:05:03,680
می گوییم خوب آیا اعداد بیشتری دارم،
1460
01:05:03,680 –> 01:05:06,470
اگر اینطور باشد
1461
01:05:06,470 –> 01:05:07,160
، true را برمی گرداند، اگر اینطور نیست، false را برمی گرداند،
1462
01:05:07,160 –> 01:05:10,580
بنابراین اگر Trane نادرست باشد، ما فقط به پایان می رسیم، اما
1463
01:05:10,580 –> 01:05:13,220
اگر این کار را انجام دادیم، به اینجا می رویم و مورد بعدی را دریافت می کنیم،
1464
01:05:13,220 –> 01:05:15,740
به یاد داشته باشید که این یکی می پرسد
1465
01:05:15,740 –> 01:05:18,590
اگر آیتمهای بیشتری داشته باشیم،
1466
01:05:18,590 –> 01:05:22,250
آیتم بعدی را به دست میآوریم اوکی، در مجموع کل
1467
01:05:22,250 –> 01:05:25,820
با استفاده از به علاوه برابر در اینجا جمع میکنیم و یک مورد را به تعداد آیتمها اضافه میکنیم،
1468
01:05:25,820 –> 01:05:28,850
بنابراین همه اینها در
1469
01:05:28,850 –> 01:05:31,940
داخل انجام میشود، در حالی که اگر عناصر بیشتری داشته
1470
01:05:31,940 –> 01:05:33,380
باشم، این کار را ادامه میدهم.
1471
01:05:33,380 –> 01:05:35,869
به طور مکرر تا زمانی که what never has next
1472
01:05:35,869 –> 01:05:40,880
false okay را برمی گرداند و سپس اینجا می پرسیم که
1473
01:05:40,880 –> 01:05:43,130
آیا تعداد کل آیتم ها برابر با
1474
01:05:43,130 –> 01:05:48,080
صفر است، اگر
1475
01:05:48,080 –> 01:05:49,730
اینجا را از صفر شروع کنیم و به صفر رسیدیم به
1476
01:05:49,730 –> 01:05:51,320
چه معنی است. y در
1477
01:05:51,320 –> 01:05:53,859
مورد در حالی
1478
01:05:54,760 –> 01:06:01,340
که چیزی که انجام نمیشود X
1479
01:06:01,340 –> 01:06:02,690
اجرا نمیشود، بدنه while
1480
01:06:02,690 –> 01:06:05,330
اجرا نمیشود حتی یک بار هم درست نیست، بنابراین به این معنی است
1481
01:06:05,330 –> 01:06:07,460
که ما در حال تلاش برای یافتن میانگین
1482
01:06:07,460 –> 01:06:08,990
هیچ عنصری هستیم تا منطقی نباشد.
1483
01:06:08,990 –> 01:06:11,780
بنابراین، ما با خطای زمان اجرا
1484
01:06:11,780 –> 01:06:13,190
مواجه میشویم که نشان میدهد نمیتوانیم
1485
01:06:13,190 –> 01:06:17,600
میانگین اقلام صفر را محاسبه کنیم، اما اگر
1486
01:06:17,600 –> 01:06:21,140
همه چیز به درستی تمام شود، اگر این کار
1487
01:06:21,140 –> 01:06:23,090
را انجام دهیم، تعداد آیتمهای بزرگتر از صفر
1488
01:06:23,090 –> 01:06:25,550
داریم، فقط تعداد مجموع کل را دریافت
1489
01:06:25,550 –> 01:06:27,320
میکنیم و تقسیم میکنیم. با این تعداد آیتم
1490
01:06:27,320 –> 01:06:29,420
خوب است این فقط برای جلوگیری از تقسیم بر
1491
01:06:29,420 –> 01:06:31,580
صفر است که در واقع خطای عجیبی ایجاد
1492
01:06:31,580 –> 01:06:33,380
می کند، بهتر است فقط بگوییم که
1493
01:06:33,380 –> 01:06:35,420
نمی توانیم میانگین اقلام صفر را محاسبه کنیم
1494
01:06:35,420 –> 01:06:37,760
خوب است و در نهایت به یاد داشته باشید که در نهایت این کار
1495
01:06:37,760 –> 01:06:39,830
در واقع انجام می شود همیشه
1496
01:06:39,830 –> 01:06:42,920
در اینجا dispose را بر روی خودش
1497
01:06:42,920 –> 01:06:46,760
فراخوانی میکند و درست مانند hasnext و مورد بعدی
1498
01:06:46,760 –> 01:06:48,560
یک متد است، اما توجه کنید که این
1499
01:06:48,560 –> 01:06:52,310
1500
01:06:52,310 –> 01:06:54,740
روش به عنوان یک متد انتزاعی اعلام نشده است، به این معنی که ما یک
1501
01:06:54,740 –> 01:06:56,690
پیادهسازی پیشفرض برای
1502
01:06:56,690 –> 01:06:58,490
زیر کلاسهای زیر کلاس یا th ارائه میکنیم. کلاسهای مشتقشده
1503
01:06:58,490 –> 01:07:01,070
در واقع میتوانند از کلاس
1504
01:07:01,070 –> 01:07:02,720
ارائهشده استفاده کنند که هیچ کاری انجام نمیدهد
1505
01:07:02,720 –> 01:07:05,780
یا میتوانند آن را لغو
1506
01:07:05,780 –> 01:07:07,100
کنند، اگر منطقی باشد، میتوانند پیادهسازی جدیدی ارائه دهند،
1507
01:07:07,100 –> 01:07:08,600
به عنوان مثال، اگر ما
1508
01:07:08,600 –> 01:07:11,570
از یک
1509
01:07:11,570 –> 01:07:15,619
فایل میخوانیم، میتوانید از آن استفاده کنید. بتوانید
1510
01:07:15,619 –> 01:07:17,630
در واقع
1511
01:07:17,630 –> 01:07:24,890
فایل مربوطه را در آنجا ببندید بله آیا این راه بهتری
1512
01:07:24,890 –> 01:07:27,070
1513
01:07:31,949 –> 01:07:37,900
است در اینجا اما شما میپرسید که
1514
01:07:37,900 –> 01:07:41,079
آیا متاسفم راه بهتری وجود دارد یا مانند
1515
01:07:41,079 –> 01:07:47,890
plus plus یا چیزی یا اوه که
1516
01:07:47,890 –> 01:07:52,920
در این مورد به طور خاص از Ok استفاده نمیکند
1517
01:07:52,920 –> 01:07:55,089
چون این یک
1518
01:07:55,089 –> 01:07:57,819
شی تکرار کننده واقعی نیست، نمی توانید از
1519
01:07:57,819 –> 01:08:00,939
تابع شمارشگر در آنجا استفاده کنید،
1520
01:08:00,939 –> 01:08:04,239
بنابراین نه، نه، ما نمی توانیم این کار را به این صورت انجام دهیم،
1521
01:08:04,239 –> 01:08:08,079
مگر اینکه خود شخص
1522
01:08:08,079 –> 01:08:10,449
واقعاً چیزی شبیه به پروتکل تکرار را پیاده سازی کند،
1523
01:08:10,449 –> 01:08:12,189
خوب است، اما در این
1524
01:08:12,189 –> 01:08:13,749
مرحله من این کار را نکردم. میخواهم از این طریق به آنجا بروم،
1525
01:08:13,749 –> 01:08:15,339
خوب است، اما اینجا منطقی است که سؤال شما اینجا باشد،
1526
01:08:15,339 –> 01:08:17,618
متاسفم، نه خوب، ما باید این کار
1527
01:08:17,618 –> 01:08:18,069
را به صورت دستی انجام دهیم،
1528
01:08:18,069 –> 01:08:25,689
اوه، بله،
1529
01:08:25,689 –> 01:08:27,880
اما در مورد ELSA، بقیه
1530
01:08:27,880 –> 01:08:31,000
همیشه پس از اینکه شرط واقعاً اجرا شد، اجرا
1531
01:08:31,000 –> 01:08:34,770
میشود. دارای نادرست است،
1532
01:08:34,770 –> 01:08:38,020
اما این واقعاً مسائل یا اطلاعات زیادی را به ما نمی دهد
1533
01:08:38,020 –> 01:08:41,439
، در حالی که
1534
01:08:41,439 –> 01:08:42,939
دیگری واقعاً در این مدت مفید است، اگر
1535
01:08:42,939 –> 01:08:44,799
شما نیز از استراحت استفاده می کنید، فقط برای
1536
01:08:44,799 –> 01:08:47,618
تشخیص اینکه آیا با استفاده از استراحت
1537
01:08:47,618 –> 01:08:50,710
بیرون آمده اید یا با استفاده از این شرط، خوب است. بنابراین
1538
01:08:50,710 –> 01:08:52,479
فکر نمیکنم واقعاً کمک زیادی به ما کند
1539
01:08:52,479 –> 01:08:55,029
و در این صورت نه، بله، باید
1540
01:08:55,029 –> 01:08:57,368
این کار را انجام دهیم که به عنوان یک اصطلاح زشت ذکر
1541
01:08:57,368 –> 01:09:00,279
کردیم، اما واقعاً به معنای متعارف آن را تکرار نمیکنیم،
1542
01:09:00,279 –> 01:09:01,839
خوب، بنابراین این
1543
01:09:01,839 –> 01:09:03,488
چیزی است که ما باید اینطوری انجامش بدم خیلی خوبه،
1544
01:09:03,488 –> 01:09:05,859
متاسفم که سعی نمیکنم
1545
01:09:05,859 –> 01:09:07,868
مثال بدی از چیزهایی که
1546
01:09:07,868 –> 01:09:09,908
گفتیم که نباید انجام بدیم بدم، این
1547
01:09:09,908 –> 01:09:12,819
هدف من نیست، خوب، بنابراین
1548
01:09:12,819 –> 01:09:14,948
وقتی
1549
01:09:14,948 –> 01:09:16,420
روش انتزاعی خود را تعریف میکنید، پیادهسازیهای فعلی در اینجا خوب است. شما
1550
01:09:16,420 –> 01:09:18,569
باید یک بدنه بگذارید، بنابراین معمولاً فقط پاس را وارد
1551
01:09:18,569 –> 01:09:20,710
کنید، اما در اینجا برای مثال، این یک
1552
01:09:20,710 –> 01:09:21,880
روش انتزاعی نیست، می توانید
1553
01:09:21,880 –> 01:09:25,210
چیزهای پیچیده تری را در اینجا قرار دهید و
1554
01:09:25,210 –> 01:09:28,509
اگر
1555
01:09:28,509 –> 01:09:30,849
منطقی است آنها را اجرا کنید، اما در غیر این صورت زیر
1556
01:09:30,849 –> 01:09:33,189
کلاس های کلاس های مشتق شده مسئول هستند.
1557
01:09:33,189 –> 01:09:35,349
ارائه حداقل i پیاده سازی
1558
01:09:35,349 –> 01:09:36,639
برای این دو روش بسیار خوب است
1559
01:09:36,639 –> 01:09:39,779
که اتفاقاً بله بسیار سخت است،
1560
01:09:41,670 –> 01:09:44,670
1561
01:10:07,140 –> 01:10:13,180
بله، خیلی خوب، در واقع اگر
1562
01:10:13,180 –> 01:10:15,730
در آن صورت کار دیگری انجام ندهید، زیرا
1563
01:10:15,730 –> 01:10:18,370
در اینجا با مدتی شروع کرده اید و
1564
01:10:18,370 –> 01:10:20,530
این در همان ابتدا نادرست است.
1565
01:10:20,530 –> 01:10:22,750
به طور خودکار
1566
01:10:22,750 –> 01:10:26,560
فوراً به اینجا بروید، بنابراین این آدام
1567
01:10:26,560 –> 01:10:28,390
آتیکا لی شما را مجبور می کند همه این کدها را رد کنید
1568
01:10:28,390 –> 01:10:30,970
و مستقیماً به سراغ شرطی
1569
01:10:30,970 –> 01:10:33,130
و اجرای آن بروید، در واقع هیچ
1570
01:10:33,130 –> 01:10:40,360
راهی ندارید که بتوانید به آن فکر کنید، به این ترتیب
1571
01:10:40,360 –> 01:10:42,570
اساساً فقط آن را به خاطر بسپارید و ما
1572
01:10:42,570 –> 01:10:45,460
اطمینان حاصل کنید که اگر ما اصلاً هیچ
1573
01:10:45,460 –> 01:10:48,130
عنصری نداشتیم، تعداد موارد در
1574
01:10:48,130 –> 01:10:50,440
این مورد صفر است،
1575
01:10:50,440 –> 01:10:52,270
ما افزایش پیدا نکردهایم، بنابراین
1576
01:10:52,270 –> 01:10:55,780
اگر فرصتی داشتیم بدانیم چگونه میتوانیم آن را در پایان بررسی کنید.
1577
01:10:55,780 –> 01:10:57,430
بسیاری از عناصری
1578
01:10:57,430 –> 01:11:00,070
که انتظارش را داشتیم شاید بتوانیم
1579
01:11:00,070 –> 01:11:03,790
ابتدا شرطی را انجام دهیم، اما روشی
1580
01:11:03,790 –> 01:11:07,450
که در واقع کار میکند این است که ما فقط
1581
01:11:07,450 –> 01:11:09,670
میتوانیم عنصر بعدی را بخواهیم، نمیدانیم چن
1582
01:11:09,670 –> 01:11:11,770
عنصر وجود دارد، میدانیم اگر عنصر دی
1583
01:11:11,770 –> 01:11:13,990
ری داریم و میتوانیم آن را
1584
01:11:13,990 –> 01:11:16,000
دریافت کنید اولاً، اما اساساً این همه این
1585
01:11:16,000 –> 01:11:22,660
انتزاع است که اکنون به ما اجازه می دهد تا آنها
1586
01:11:22,660 –> 01:11:25,960
را به خوبی انجام دهیم، دقیقاً بیان کنیم که آنها
1587
01:11:25,960 –> 01:11:28,090
یکسان نیستند، زیرا بعداً اگر این
1588
01:11:28,090 –> 01:11:29,890
واقعاً و در نقطه ای به درستی باز می گردد،
1589
01:11:29,890 –> 01:11:32,110
بارها و بارها در نهایت
1590
01:11:32,110 –> 01:11:36,370
موارد جدید را چندین بار اضافه می کنید. به عنوان
1591
01:11:36,370 –> 01:11:39,580
مواردی که در نهایت به دنبال آنها هستید خوب هستند، بنابراین
1592
01:11:39,580 –> 01:11:42,790
در اینجا اگر نه، x من برابر با صفر است،
1593
01:11:42,790 –> 01:11:44,320
تنها چیزی که میپرسیم این است
1594
01:11:44,320 –> 01:11:46,270
که اگر این برنامه حداقل یک بار این کار را حداقل یک بار در بدنه این برنامه انجام دادهاید، چند مورد است.
1595
01:11:46,270 –> 01:11:50,050
1596
01:11:50,050 –> 01:11:53,050
اتفاقاً اینطور نیست، پس
1597
01:11:53,050 –> 01:11:54,580
میدانید که هیچ عنصری برای مصرف وجود ندارد،
1598
01:11:54,580 –> 01:11:56,800
بنابراین فقط میگویید من نمیتوانم
1599
01:11:56,800 –> 01:12:01,570
میانگین یک دنباله خالی را محاسبه کنم، خوب، اگر بخواهید بعداً
1600
01:12:01,570 –> 01:12:03,360
میتوانیم آن را با کمی جزئیات بیشتر بحث کنیم.
1601
01:12:03,360 –> 01:12:05,560
اما
1602
01:12:05,560 –> 01:12:07,920
اجازه دهید
1603
01:12:30,310 –> 01:12:38,000
اوه-هه، بله، بله منطقی است،
1604
01:12:38,000 –> 01:12:39,680
اما یک بار دیگر از این موضوع که این
1605
01:12:39,680 –> 01:12:41,690
شی طراحی شده است، آن اطلاعات را نمی
1606
01:12:41,690 –> 01:12:43,280
دانید تا زمانی که واقعاً
1607
01:12:43,280 –> 01:12:45,140
قادر به مصرف همه عناصر
1608
01:12:45,140 –> 01:12:46,690
نباشید، به همین دلیل است که باید بپرسید آخر
1609
01:12:46,690 –> 01:12:50,180
باشه خوش
1610
01:12:50,180 –> 01:12:56,570
اومدی خب پس بیایید ج این را در فایلی به نام
1611
01:12:56,570 –> 01:13:02,270
camp later dot P wipe اصلاح کنید، بنابراین ما
1612
01:13:02,270 –> 01:13:06,890
باید یک فایل جدید جدید در اینجا ایجاد کنیم و آن را
1613
01:13:06,890 –> 01:13:08,060
calc
1614
01:13:08,060 –> 01:13:18,500
cute later dot py می نامیم، بنابراین کدی که
1615
01:13:18,500 –> 01:13:25,000
چند لحظه پیش دیدیم اینجا
1616
01:13:28,120 –> 01:13:31,220
است، روش انتزاعی بسیار خوب نشان می دهد که این
1617
01:13:31,220 –> 01:13:33,920
متد خاص یا متدهایی که
1618
01:13:33,920 –> 01:13:36,140
در اینجا نشان می دهید انتزاعی هستند و
1619
01:13:36,140 –> 01:13:38,810
اساساً به این معنی است که
1620
01:13:38,810 –> 01:13:40,400
کلاس مشتق شده مسئول
1621
01:13:40,400 –> 01:13:42,650
اجرای آن کلاس است اگر آن
1622
01:13:42,650 –> 01:13:44,480
را ارائه نکنید هنگام ایجاد
1623
01:13:44,480 –> 01:13:46,250
نمونه ای از کلاس با خطا مواجه می شوید.
1624
01:13:46,250 –> 01:13:49,060
بنابراین این روشی است برای گفتن اینکه مطمئن شوید که
1625
01:13:49,060 –> 01:13:52,010
کلاس من، اشیاء
1626
01:13:52,010 –> 01:13:53,870
کلاسی هستند که تعریف می کنم
1627
01:13:53,870 –> 01:13:56,000
، اگر فراموش کردم
1628
01:13:56,000 –> 01:13:58,070
آنها را بگذارم و زمانی مسابقه
1629
01:13:58,070 –> 01:14:00,110
وجود دارد و به من می گویند که شما
1630
01:14:00,110 –> 01:14:02,450
آن را اجرا نکرده اید، آن روش ها را توضیح دهید. این روشها بسیار خوب است،
1631
01:14:02,450 –> 01:14:05,830
بنابراین اگر هرگز این را ندیدهاید، یک بار دیگر
1632
01:14:05,830 –> 01:14:08,180
به شما بگویم که زبان دیگری
1633
01:14:08,180 –> 01:14:10,460
این روش بسیار رایج برای برخورد
1634
01:14:10,460 –> 01:14:13,160
با کلاسهای انتزاعی است، خوب است که
1635
01:14:13,160 –> 01:14:15,470
متدهای انتزاعی خود را در اینجا داشته باشید و یک بار دیگر
1636
01:14:15,470 –> 01:14:17,870
این برای آوی است.
1637
01:14:17,870 –> 01:14:19,880
ممکن است به طور تصادفی اجرای آن متدهای خاص را فراموش کنید،
1638
01:14:19,880 –> 01:14:22,100
1639
01:14:22,100 –> 01:14:24,350
بنابراین بیایید یک پیاده سازی ممکن را ببینیم
1640
01:14:24,350 –> 01:14:26,500
1641
01:14:30,340 –> 01:14:33,220
درست است، بنابراین در اینجا ما این کلاس به نام
1642
01:14:33,220 –> 01:14:37,340
محاسبهگر میانگین فایل را داریم
1643
01:14:37,340 –> 01:14:43,850
و آن را در انتهای کلاس خود،
1644
01:14:43,850 –> 01:14:45,230
انتهای فایل قرار میدهیم. ببخشید پایان
1645
01:14:45,230 –> 01:14:48,470
فایل خوب است، بنابراین ما ابتدا میانگین
1646
01:14:48,470 –> 01:14:50,240
سلامتی را بعداً داریم و در زیر آن،
1647
01:14:50,240 –> 01:14:53,180
ما حسابگر میانگین فایل را داریم، بنابراین این
1648
01:14:53,180 –> 01:14:54,890
یکی از کلاسی که در اینجا تعریف کردیم، ارث می برد،
1649
01:14:54,890 –> 01:14:59,570
بسیار خوب، بنابراین چون
1650
01:14:59,570 –> 01:15:02,000
به ارث برده است، همه روش هایی را دارد که ما به آن ها می پردازیم.
1651
01:15:02,000 –> 01:15:03,650
در اینجا دارای میانگین متد
1652
01:15:03,650 –> 01:15:06,260
ارثی است که این روشها ارثی هستند اما
1653
01:15:06,260 –> 01:15:08,720
در واقع مسئولیت ارائه آنها را به ارث می برند
1654
01:15:08,720 –> 01:15:10,190
اجرای
1655
01:15:10,190 –> 01:15:15,170
آن روشها خوب است و در مورد
1656
01:15:15,170 –> 01:15:17,390
hasn بعدی و بعدی باید
1657
01:15:17,390 –> 01:15:20,030
آن پیاده سازی را ارائه دهیم dispose اختیاری است
1658
01:15:20,030 –> 01:15:21,740
اما اینجا منطقی است فایلی که
1659
01:15:21,740 –> 01:15:24,560
در واقع فراخوانی روش بسته را داشته باشد،
1660
01:15:24,560 –> 01:15:26,900
بنابراین به این صورت است که
1661
01:15:26,9