1
00:00.140 --> 00:00.830
دوباره خوش آمدید.

2
00:00.830 --> 00:08.690
در این ویدیو قراره ببینیم چطور می‌تونیم از **complex objects** (اشیاء پیچیده) در **list**ها استفاده کنیم و از **list**ها برای مدیریت **complex objects** استفاده کنیم.

3
00:08.690 --> 00:12.020
بنابراین من قراره یک **class** جدید ایجاد کنم.

4
00:12.020 --> 00:14.090
من قراره مستقیماً از **namespace ListApp** استفاده کنم.

5
00:14.090 --> 00:16.370
پس یک فایل جداگانه ایجاد نمی‌کنم.

6
00:16.370 --> 00:21.860
شما می‌تونید **class**ها رو داخل یک فایل و چندین **class** ایجاد کنید.

7
00:21.860 --> 00:26.180
هر چند، این روش خیلی خوبی نیست، بنابراین بهتره که فایل‌های جداگانه داشته باشید.

8
00:26.180 --> 00:28.160
فقط می‌خواستم این رو بگم.

9
00:28.160 --> 00:33.380
اما برای این مثال خاص که فقط دارم ایده‌های پشت اون رو به شما نشون می‌دم، کاملاً خوبه.

10
03:33.380 --> 00:34.820
پس همچنان کار خواهد کرد.

11
00:34.820 --> 00:38.720
پس من یک **class** خواهم داشت که اون رو **Product** (محصول) می‌نامم.

12
00:38.720 --> 00:47.180
و حالا در بدنه **Product**، یک **Name** (نام) و همچنین، مثلاً یک **Price** (قیمت) خواهم داشت.

13
00:47.180 --> 00:47.900
اوکی.

14
00:47.900 --> 00:51.860
پس ما فقط دو **property** (ویژگی) برای **Product** خودمون خواهیم داشت.

15
00:51.860 --> 00:53.960
خب واضحاً این می‌تونه خیلی بیشتر باشه.

16
00:53.960 --> 00:55.880
می‌تونستیم 15، 20 و هر چی داشته باشیم.

17
00:55.880 --> 00:57.440
اما من اون رو خیلی ساده نگه می‌دارم.

18
00:57.440 --> 01:00.260
من فقط این دو جزئیات رو در مورد یک **Product** خواهم داشت.

19
01:00.260 --> 01:06.650
حالا ما از **main method** خودمون اینجا استفاده خواهیم کرد تا یک **list** از **Product**ها رو ایجاد کنیم.

20
01:06.650 --> 01:10.820
پس اینجا ما داریم یک **products list** از نوع **Product** ایجاد می‌کنیم.

21
01:10.820 --> 01:13.100
می‌بینید، ما نمی‌تونیم فقط از **string**ها و **int**ها استفاده کنیم.

22
01:13.100 --> 01:16.640
ما می‌تونیم از انواع داده‌ای استفاده کنیم که خودمون تعریف کردیم.

23
01:16.640 --> 01:20.420
پس این **class Product** کوچک خودمون هست که داریم ازش استفاده می‌کنیم.

24
01:20.420 --> 01:23.210
و حالا می‌تونیم **object**هایی از اون **class** ایجاد کنیم.

25
01:23.210 --> 01:27.050
و ما قراره یک **list** از اون نوع داده پیچیده ایجاد کنیم.

26
01:27.050 --> 01:34.340
حالا قضیه اینه که واضحاً می‌تونم جلو برم و بگم **products.Add** و بعد یک **new Product** اضافه کنم.

27
01:34.340 --> 01:35.690
و من این کار رو خواهم کرد.

28
01:35.690 --> 01:47.000
پس من به **Product**، مثلاً **Berries** (توت) و یک **Price** (قیمت) 2.99 دلار رو خواهم داد، اوکی؟

29
01:47.150 --> 01:49.220
و این باید یک نقطه باشه.

30
01:49.250 --> 01:50.150
بفرمایید.

31
01:50.150 --> 01:56.270
پس این **Product** جدید ما خواهد بود و داریم اون رو به **products** خودمون اینجا اضافه می‌کنیم.

32
01:56.270 --> 02:03.740
با این حال، می‌تونم از **curly brackets** (آکولاد) هم استفاده کنم و **products list** خودمون رو مستقیماً با آیتم‌های **Product** مقداردهی اولیه کنم.

33
02:03.740 --> 02:06.260
پس می‌تونم جلو برم و بگم **new Product**.

34
02:06.260 --> 02:12.740
و بعد داخل پرانتزهای خودم، می‌تونم تعریف کنم که نام یک **Product** چی قراره باشه.

35
02:12.740 --> 02:16.640
پس **Apple** (سیب) و قیمت قراره چی باشه.

36
02:16.640 --> 02:22.460
پس **Price** قراره مثلاً **0.80 دلار** برای یک سیب باشه.

37
02:22.460 --> 02:23.270
اوکی.

38
02:23.270 --> 02:29.630
و اینطور می‌تونید مستقیماً یک **object** از **class** خودمون ایجاد کنید.

39
02:29.630 --> 02:35.900
پس می‌بینید، با آنچه در گذشته دیدیم متفاوته، جایی که اگه یک **Product** ایجاد می‌کردیم، **Product**...

40
02:35.930 --> 02:49.490
**new Product**، بعد جلو می‌رفتیم و جزئیاتی مثل **properties** رو شاید مستقیماً به **constructor** اضافه می‌کردیم، اما می‌تونیم مستقیماً با استفاده از **curly brackets** به **properties** دسترسی داشته باشیم چون **public** هستن.

41
02:49.490 --> 02:53.810
می‌تونیم مستقیماً با استفاده از **curly brackets** به این شکل بهشون دسترسی داشته باشیم.

42
02:53.810 --> 03:01.880
پس هنگام ایجاد یک **new Product**، می‌تونیم فقط از **curly brackets** اینجا استفاده کنیم و بعد مقادیر رو به **properties**های مجزا اختصاص بدیم.

43
03:01.880 --> 03:06.050
پس حالا می‌تونیم جلو بریم و هر طور که می‌خوایم **new Product** ایجاد کنیم.

44
03:06.050 --> 03:08.060
پس بیایید دو تا دیگه ایجاد کنیم.

45
03:08.060 --> 03:13.130
پس ما سیب، موز و مثلاً گیلاس داریم.

46
03:13.130 --> 03:15.170
و حالا بیایید قیمت رو تغییر بدیم.

47
03:15.170 --> 03:18.650
پس موز، مثلاً یک موز 0.30 دلار هست.

48
03:18.650 --> 03:28.580
و خب یک پوند گیلاس، مثلاً 5 دلار یا یک پوندش مثلاً 3.80 دلار یا همچین چیزی باشه. اوکی.

49
03:28.580 --> 03:30.680
پس حالا **list** **Product**های خودمون رو داریم.

50
03:30.680 --> 03:33.620
و شما یک روش متفاوت برای ایجاد **Product**ها دیدید، درسته.

51
03:33.620 --> 03:38.180
یا انواع داده پیچیده از **class** خودمون که ایجاد کردیم.

52
03:38.180 --> 03:44.390
حالا بیایید جلو بریم و آیتم‌های مجزایی رو که داخل **products** خودمون داریم، نمایش بدیم.

53
03:44.390 --> 03:49.760
پس من می‌گم **"Available Products:"** (محصولات موجود:) دو نقطه.

54
03:49.760 --> 03:54.140
و بعد از یک **foreach loop** استفاده می‌کنم تا از طریق تمام **Product**ها **iterate** (تکرار) کنم.

55
03:54.140 --> 03:57.350
پس اینجا می‌تونید ببینید **product product in products**.

56
03:57.350 --> 04:03.020
و بعد می‌تونم **product name** و **product price** رو بنویسم.

57
04:03.020 --> 04:05.180
با این حال، قراره کمی متفاوت این کار رو انجام بدم.

58
04:05.180 --> 04:08.510
من قراره از یک **string** اینجا با علامت **dollar** استفاده کنم.

59
04:08.510 --> 04:12.140
پس **"Product Name"**، نام **Product**.

60
04:12.140 --> 04:22.100
و اینجا باید از **curly brackets** دور **product name** استفاده کنیم چون این کد هست. و بعد قراره **product price** رو نمایش بدم.

61
04:22.100 --> 04:28.550
پس اینجا دوباره از **product.price** استفاده خواهیم کرد، اوکی.

62
04:28.550 --> 04:30.620
پس خط به این شکل خواهد بود.

63
04:30.620 --> 04:33.740
و این حالا به من اجازه می‌ده تمام آیتم‌ها رو نمایش بدم.

64
04:33.740 --> 04:39.020
یعنی تمام **Product**هایی که داخل **products list** من هستن.

65
04:39.020 --> 04:40.460
پس بیایید این رو اجرا کنیم.

66
04:40.460 --> 04:42.440
و بفرمایید، **"Available Products"** (محصولات موجود).

67
04:42.440 --> 04:48.170
نام **Product** سیب با 0.80 دلار، 0.3 و الی آخر.

68
04:48.170 --> 04:57.290
پس اینجا دیدیم چطور می‌تونیم یک **list** از یک نوع داده پیچیده ایجاد کنیم، چطور می‌تونیم آیتم‌ها رو به **list** انواع داده پیچیده اضافه کنیم و چطور می‌تونیم دسترسی داشته باشیم...

69
04:57.290 --> 05:05.210
به محتوای انواع داده پیچیده، همه اونها از یک **list**.

70
05:05.210 --> 05:08.750
و این تقریباً همه چیز برای این ویدیو هست.

71
05:08.750 --> 05:11.540
پس یک سلاح دیگه برای زرادخانه شما.

72
05:11.540 --> 05:16.910
در ویدیوی بعدی، قراره ببینیم چطور می‌تونیم آیتم‌ها رو از **project** خودمون فیلتر کنیم.

73
05:16.910 --> 05:22.220
و در ویدیوی بعدی قراره ببینیم چطور می‌تونیم آیتم‌ها رو با استفاده از **LINQ** فیلتر کنیم.

74
05:22.220 --> 05:24.710
اما قراره واقعاً سریع به **LINQ** بپردازیم.

75
05:24.710 --> 05:39.560
ما قراره با جزئیات بیشتری در فصل **LINQ** وارد عمق بشیم، اما هنوز فکر می‌کنم واقعاً خوبه که کمی ایده به شما بدم که چطور می‌تونید **list** محصولات پیچیده‌تر خودتون رو در ویدیوی بعدی فیلتر کنید، پس اونجا می‌بینمتون.