جلسه یازدهم >>ادامه ioc3

ادامه ای او سی سطح 3پرفورم میگه به من ربطی نداره که چه داده ای امده داخل . وابستگی به نوع داده وجود نداره دیگه فقط این برای من مهم است که باید حتمااون نوع داده ای که اصلا برای من مهم نیست چیه حتما متد کمپیر داشته باشه . همین داشته باشه برای من کافیهپس ای او سی سطح یک چی بود ؟ وابستگی به نمونه ای از یک داده خاص رو حذف میکرد .ای او سی سطح دو و یک چی بود ؟ علاوه بر نمونه ای از یک داده وابستگی به یک نوع داده خاص رو هم حذف میکرد . و وابستگی به یک نوع داده عمومی تر رو ایجاد میکرد .ای او سی سطح دو دو چیکار میکرد ؟ وابستگی به نوع داده خصوصی رو حذف میکرد .و به نوع داده عمومی وابستگی ایجاد میکرد و یه سری قوانین رو هم تعریف میکرد . یعنی میگفت این قوانین رو هم باید داشته باشه .حالا ای او سی سطح دوم وابستگی به نوع داده رو کامل حذف میکنه میگه اصلا برای من این ینست بگی این عمومی تره خاص تره یا هر چیزی نوع داده خاص و عمومی و این چیزا رو ما نداریماینجا میگه فقط فقط برای من مهمه که تو کامپیر داشته باشی . هر نوع داده ای هستی مشکلی نداره اگه کمپیر داشته باشی میتونی وارد این بشی و من عملیات مرتب سازی رو انجام میدمدو جلسه قبل ترم هم یه نمونه از این انجام دادیم امدیم داخل اسکیژوبل تایم رازش استفاده کردیم برای ایونت هندلر ها ازش استفاده کردیم .چطوری ازش استفاده کردیم؟امدیم داخل اسکیژوبل تایمر و سه تا متغیر تعریف کردیم از نوع ایونت هندلر ها و ستر گتر هاشون رو هم براشون قرار دادیم .اینا چی به من میگن ؟ میگن اصلا برای من مهم نیست که چه کاری رو میفرستی داخل از چه کلاسی یا از چه نوع داده ایه ، هر نوع داده ای میتونه باشهفقط باید کار رو در غالب چیزی به اسم هندلر تعریفش کنه اگه کار رو در غالب متدی به اسم هندلر تعریف کردی من میتونم اینجا پرکلاکش رو اجرا کنم یا ان تسک رو انجام بدم یا افتر کلاکش رو اجرا کنم متناسب با اون چیزی که ست میکنم برای این ها پس اینم همون اینترفیس هاست . حالا من ایونت هندلر رو اینجا استفاده کردم .باید بدونید که کجا از کلاس های ابسترکت استفاده کنم کجا از اینترفیس ها استفاده کنم کلاس های اابسترکت هم تقریبا همچین کاری برای من انجام میداد امروز میخوایم فرقشون رو بیشتر با هم بررسی کنیم ببینیم که چطوریه فرقشونچرا من اینجا اومدم از کلاس تسک استفاده کردم ، از کلاس تسک ابسترکت و داخل آن هم متد ران رو دارم چرا اینجا این رو تعریف کردمو چرا در اسکیژوبل تایمر ایونت هندلر ها رو نیومدم در کلاس قبل تعریف کنم . کسی میدونه ؟دلیل های مختلفی دارهیکی از دلیل هاش اینه که مفهومش اینه دقیقا من نیاز ندارم هر نوع داده ای رو به عنوان تتسکم بپذیرم فقط بگم ران اگه داشته باشی دیگه کافیته من این رو نمیخوام من میخوام کسایی وارد اینبشن که زیرمجموعه تسک باشن زیر مجموعه تسک بودن فقط به این معنی نیست که متد ران داشته باشی به این معنیه که علاوه بر متد ران یه چیزای دیگه هم داشته باشه مثلا من فیلد تایم استپ براش گذاشتم حالا من خیلی ساده انجامش دادم ممکنه کلی چیزای دیگه هم اینجا وجود داشته باشهمن فقط یه چیز کوچیک ازش انجام دادم گفتم یه تایم استمپی داره این رو نمیتونم تو اینترفیس بنویسم چرا ؟چون تو اینترفیس ها نمیتونی متغیر و این جور چیزا تعریف کنی یا کار های از پیش تعریف شده انجام بدی مثلا من میگم این تسکه و بعد امدم ست کردن و ایناش رو اینجا نوشتم یه متد دیگه هم اینجا براش مینویسم حالا هرچی که باشه مثلا من اینجا اسمش رو میذارم تست .کلی کار داره انجام میشه کلی چیزای مختلف دارم انجام میدم در اصل پیاده سازی دارم میگم تسک بودن به این معنی نیست که یه چیزی ران داشته باشه باید ااین ها رو هم به ارث ببره تایم استمپ داشته باشه ستر و گتر هاش وجود داشته باشه فرض کن هزار خط کد داره انجام میشهمتد تست رو به ارث ببره این ها رو که به ارث برد ران رو هم خودش پیاده سازی کنه به صورت یک اینترفیس این در واقع همون اینترفیس هستش به این دلیل اینجا ای ای سبز رنگ رو میزنهدقیقا همین ای سبز رنگ اینترفیس هاستس وقتی یک متدی رو داخل یک کلاس ابسترکتش میکنیم این در واقع مثل همون اینترفیسه برات رفتار میکنه اما فرقش با اینترفیس اصلیمون اینه اینترفیس به طور محض فقط یک متد براش مهمه اما توی کلاس ابسترکت یه سری چیز های دیگه هم به ارث میبره پیاده سازی دارن متد هایی که پیاده سازی ندارن چیز هایی که دارن به صورت اینترفیس در نظر گرفته اند رو میتونی توش استسفاده کنی اماا باید یه سری چیز های دیگه هم توش داشته باشی تایم استمپه یه سری کار های از پیش تعریف شده است اینا رو هم باید به ارث ببره که من به یکی از اون تسک ها بگم تسکه اما تو اینترفیس ها همچین چیزی نیست تو اینترفیس ها فقط و فقط متد داریم تو اینترفیس های کلاسسیکی که داریم توی جاوا یه سری چیز ها بهش اضاف شده حالا ما کاری به اون نداریم ما اینترفیس کلاسسیک رو داریم میگیم .پس فقط میتونیم متد تعریف کنیم هیچ چیز دیگه ای نمیتونیم تعریف کنیم این به طرو مححض فقط قوانین رو تعریف میکنهاما اون یکی یه سری چیز های دگه هم داره یه سری کار های دیگه هم میتونی انجام بدی داخل کلاس شیپ بود داشتیم که من دارم این ها رو مینویسم به صورت ابسترکتمثلا ببینید اینجا مثلا متد تو استرینگ داره کالر داره کوردینت داره کلی چیز های دگه متغیر داره دیگه شیپ بودن به این معنینیستس که تو فقط یه اریا دااشته باشی باید این ها رو هم به ارث ببری و بعد اریا هم به صورت یک واسسط تعریفش کنی خب الان سیرکل شیپ رو به ارث برده ایمپلمنت کرده کمپیربل رومن میتونم برای اینترفیس ها چندین اینترفیس پشت سر هم با کاما بنیوسم مثلا یکی از اینترفیس های داخل خود جاوابه این صورت که باید متد هاشون رو هم پیاده سازی کنیم پس میتونی چند تا اینترفیس روپشت هم بنویسی و اینا رو ایمپلمنت کنی اما کلاس ها رو نمیشه انجام داد چرا نمیشه انجام داد ؟ الان میخوام در موردش صحبت کنم خیلی با دفقت گوش کنید مشکلی که سی پی پی داشت و میتونستی ارث بری چند گانه داشته باشی ارث بری چند گانه که در سی پی پی داشتیم مشکلات اساسی داشت چون ابهام به وجود می اورد و ابهام دشمن مهندسی است همه ما هم این رو میدونیم مثلا من تو این شیپ میام یه کلاس دیگه تعریف میکنماین سیرکله دیگه من سیرکل رو از شیپ ارث بری کردم میخوام از یه چیز دیگه هم ارث بریش کنم یه کلاسی به اسم تست مثلا میام مینویسمداخل شیپ متدی به اسم ایریا داشتیمحالا ففرض میکنیم که این متد رو که الان هم نوشتیم وجود داره و تست هم همین رو داره من که نمی دونم سیرکل کی رو به ارث برده که مثلا ران داره نداره ران هم اینجا داره از کلاس های مختلف از شرکت های مختلف فرض کن یه کتابخانه از اینتنرنت گرفتم یه کتابخانه هم خودم نوشتم و از کلاس های جاوا استفاده کردم هر دو متد ران رو دارن بعد پیاده سازی هم میکنن مثلا الان داخل لشیپ این پیاده سازی داره مثلا فرض کن کلی کد اینجا نوشته شدهداخل تستش هم همینطور فرض ضکنیم ارث بری چند گانه میتونه انجام بده و تست رو اینجا به ارث میبردفرض کنیم ارث بری چند گانه رو مثل سی پی پی میتونم انجام بدم اولا ارور بهم میده که نمیتونم اکسستند کنی یعنی چند تایی نمیتونی انجام بدی چرا نمیذاره انجام بدم ؟کسی متوجه مشکلش شد ؟که چه مشکلی داره چرا این الان مشکل داره و جاوا نمیذاره این کار رو انجام بدم وسی پلاس پلاس ساین رو داره و همه میگن این یکی از مشکلات سی پی پی هستش هر چند یه جاهایی هم مثلاخیلی به درد بخوره توی سی پی پی ولی خب اینجا ن چون اونچا چیزی به اسسم مسستقیم اینترفیس نداریم اگه بخوای اینترفیس تو سی پی پی تعریف کنیم باید یه کلاس انتراعی محض تعریف کنیم یعنی بیای فقط اینجا فقط متد های ابسترکت توش تعریف کنی اونجا باید داشته باشه همچین چیزی ابهام داره افرین نمیدونه که کدوم رو باید الاان به ارث ببره الان ران شیپ رو به ارث ببره یا ران تست رو به ارث بببره ما قبلا میگفتیم اگر ران داخل خود سابکلاستم بنویسی رانی که داخل خود سابکلاست هست رو میاد و اور راید میکنی داخل اون یکی اما اینجا اصن من رانی ندارم یه دونه ران از شیپ داره میاد یه دونه ران هم از تست داره میاد کدامش رو به ارث ببره اونی که داخل شیپه به ارث ببره یا اونی که داخل تسته اجراش کنه پس ابهام داره یه ابهام فوق العاده مهمه حل این ابهام بااعث شد کلاس های انتزاعی که داخل سی پی پی هستن به دو تیکه قسمت بشن کلاس های انتزاعی محض و کلاس هایی که اینجا داریم اسسم کلاس سهای انتزاعی محض عوض شد و شد اینترفیس یعنی اینترفیس های دقیقا همونن یعنی اون ابهامه رو اومدن رفع کردن توی سی پی پی میتونستی این کار رو انجام بدی ولی موقع اجرا مشکل ساز بود برات کدام رو به ارث ببره این یا اون یکی پس ابهام دشمن مهندسیمونه خب به همین دلیل اجازه نمیده جاوا ارث بری چند گانه انجام بدیم برای اون قسمت چند گانه اش تو اگه میخوای این کار رو انجام بدی با استفاده از اینترفیس ها انجام بده اما خب ممکنه بگی اینترفیس هم همین مشکل رو داره ایمپلمنت میکنم کامپیربل روو میام اینجا و این کلاس تست رو تبدیلش میکنم به اینترفیس و اون متد کمپیری که اون ور بود مثلا این متد ران اصنمیتونم این متد ران رو بزنم یا این متد کمپیری که هست .فرض کنیم متدی کمپیر دقیقا به همون شکل داره الان هم کامپیربل هم تست دقیقا یک چیز رو دارن من اینجا اگه بنویسم کمپیربل یا بنویسم تست چرا باید چرا اوکیه ؟مگه این همون مشکل نیست ؟الان درسته که هر دو کمپیر دارن اما پیاده سازی ای وجود نداره فقط اینترفیسسشه گفته اینترفیسش اینطوری باشه حالا اصن ارث نمیبره اینترففیس این اصن پیاده سازی نداره وقتی میام میگم ایمپلمنت در واقع داره هر دو تاشون ایمپلمنت میشهپیاده سازی اینجاست .فقط اسمشون رو داره از اون میگیره حالا اسمش رو چه از اون بگیره چه از هزار تای دیگه اینترفیس بگیره مگه فرقی داره ؟ چیز داخلشون نیست که فرفی داشته باشه همون کلاس ها .توی کلاس ها من اگه این کلاس بود و توی شیپم از یه کلاس دیگه ران مینوشتم توشون کد مینوشتم کد پر توش بود من نمی دونستم کدوم کد رو باید اجرا کنم اما الان این کد نیست داخلش حالا این اسمه عنوانش هستحالا از این بیاد یا از اینترفیفس دیگه هیچ فرقی نداره به این دلیل من میتونم اینترفیس ها رو چند گانه ایمپلمنت کنم کلاس ها رو نمیتونمخب این سورتی که اینجا نوشیم یه خورده مشکلات داره خب خیلیل مشکلاتش رو حل کردیم اما هنوز یه سرسی مشکلات داره مشکل اصلیمون چیه ؟سسورتی که من اینجا نوشتم و داره استودنت ها رو مرتب میکنه اگر من بخوام همین سورته استودنت ها رو بر اساسس سیه پارامتر دیگه برای من مرتب کنه همه لیست هایی که بر اساس استودنت هستن صدرصد بر اساس اوریج مرتب میشناگر این رو تغییر بدم توی صد جای مختلف استسفاده کرده باشم همشان بر اساساگه این جا رو تغییر بدم همه جاهایی که ازش استفاده کردمتبدیل میشن از اوریج به چیز مد نظرمون مثلا ای دی اما من مثل همین چیزی که توی ویندوز هست داخل خود ویندوز هم داریم دیگه مثلا من میام بر اساسس تاریخ مرتب میکنم بر اساس ای دی بر اساس اسم . آفرین دیتیلز بزنی بر اساس سچیز های مختلف میتونی مرتب سازی انجام بدی اینجا من نمیتونم استودنت رو بر اساس چیز های مختلف بررسی کنم همیشه باید یه جور مرتب کنم ولی خب من همچین چیزی که نمینخوام میخوام بر اساس چیز های مختلف مرتبش کنم و این یه نکته و نکته دیگه اینکه چه نیازی هست که اصن از سورت بیام و نمونه بسازم شاید بگین خب چون استیت داره و یه استیت از ورودی میگیره من میتونممن میتونم یه سریس از کلاس ها رو بدون استسیت هم بنیوسمش الان این با استیتهمیتونم همین رو بدون استسیت هم بنیوسم دیگه چطوری؟فرقی داره که من این رو اینجا میذاشتمفرقی داره به نظر شما ؟ ببینید اینطوری بود اول یه استیت براش گذاشتمببینید اینطوری بود اول یه استیت براش گذاشتم به عنوان ورودی گرفتم و بعد ستر و گتر براش گذاشتم خب چه فرفقی داره خب من همین رو اینجا میذاشتم و هیچ کدام از این ها رو هم لازم نبودالان من این رو بدون استیتش کردم کلاس های بدون استیت رو گفتم میتونیم چطوری بنویسیمشون؟ اصن نیازی به نمونه سازی ندارن استاتیکشون میکنیم و اجازه نمنونه سازی رو هم ازش بر میداریم دو تا روش برا ی اینکه اجازه نمونه سازی به یک کلاس ندیم وجود داره یکی کلاس های انتزاعی هستش یکی هم اینکه سازنده اش رو پریویوت کنم سازنده هر کلاسی رو پرایویت تکنی دیگه کسی نمیتونه ازش از بیرون نمونه بسازه از داخل میتونی ازش نمونه بسازی اما از بیرون نه اما کلاس های انتزاعی فرقی نداره چه داخل چه بیرون هر جایی باشه اصن نمیتونی ازش نمونه بسازی و این رو ما میدونیم کلاس های انتزاعی کلی ویژگی های خاص دارن میتونی متد های انتزاعی توشون تعریف کفنی یا مثلا به عنوان گذرگاه عمومی ازشون استفادفه کنی و کلی کار های دیگه اما اگر سازنده این رو من پرایویتش کنم از بیرون دیگه هیچکسی نمیتونه این رو نمونه سازی کنهچطوری ازش استفاده کنم ؟دیگه لازم نیست این کار ها رو انجحام بدمکافیه که فقط بیام اینجا نمونه اش رو بردارم و بنیوسمسورت دات پروفم استی لیستدیدی چقدر قشنگ شد ؟ اصن نمونه سازی نمیخواد الان همین رو مرتب میکنه برای اینکه یه خورده جالب تر باشه اسمش رو هم تغییر میدیم اسم این کلاسه رو تغییر میدم اسم این کلاس رو میذارم . یعنی ابزار هایی که برای لیست استفاده میکنی و داخل اینکه بخوام پرفورم بنیوسم اسمش رو میذارم سورت و برای ااینکه همه جا اتفاق بیفته فبا شیفت و اف شیش این کار رو انجام میدم .دقیقا مث مث ، مث هم پراایویت هستالان ببین چقدر قشنگ شدمیگم لیست یوتیلیتی انگار جعبه ابزارتو داری صدا میزنی که این جعبه ابزار آچر فرانسه بیاد این کار رو انجام بده لیست یوتیلیتی ابزار های لیست سورت کن برام استی لیست رواما اون مشکل دومیه رو باید چیکارش کنیم؟مشکل دوممون این بود من باید حتما از کمپیر استفاده کنم خب وقتی یه چیزی وابسته میشه خب الان وابستگی ایجاد شده الان کلاس استودنت وابسته شده به متد کمپیر اگه به یه چیزی وابستگی ایجاد بشه باید چیکار کنم ؟باید وابستگی رو از توش بیرون بیارم دیگه وابستگی رو باید از توش بیرون بیارم چطوری این کار رو انجام میدم ؟برای اینکه وابستگی رو بیبرون بیارم به مفاهیم دوباره فکر میکن م ببینید این چیزی که من اینجا نوشتم از لحاظ مفهفومی به یه شکل دیگه هم میتونم بنویسمشاگر شما مفاهیم یه پدیده یا موجودیت رو در دنیای واقعیتون درست درکش کنید میتونید کلی کد های حرفه ای و کللی کار های حرفه ای انجام بدین مثلا چی من میخوام مرتب سازی رو از دو دیدگاه بررسیش کنم دیدگاه اولم اینه که استودنت ها قابل مقایسه اند میگم استودنت ها قابل مقاییسه اند خودشون قابل مقایسه اند میگم استودنت یک مقایسه شه با استودنت دو مثل این میمونه مثلا فر ض کن من بیام این کار رو انجام بدم یعنی این چیزی که من الان تو سورت نوشتم اینطوریه میگم فرض کن ده تا دانشجو پای تخته جمع شده بر اساس معدل میخوام این ها رو مرتب کنم بعد من که خودم الگوریتم مرتب سازی ام میگم دانشجو یک مقایسه شو با دانشجوی دوو در صورتی که بر اساس پارامتری که بر اساس اون معدله میدونید جاتون رو عوض کنید بعد میگم دانشجوی یک مقایسه بشه با دانشجوی 3 با چهار با پنج با شش و بعد میام میگم دومی با این ها یعنی میگم خودت مقایسه شو اما یه کار دگیه هم میتونم انجام بدم بگم فرض کن ده نفر پای تخته هستند و بعد من یکی دیگه ام بیارم بگم تو مقایسه کننده این هایی یه للیست بهش میدم میگم بر اساس این لیست بیا این مقایسه ها رو برای من انجام بده به اون نفر واسط این رو میگم که این دانشجوی یک و دو رو برای من مقایسه کن و یک دو و یک و سه و یک و چهار و تا یک وهفته و . . دو سه و دو چهارو . . . همه این ها رو به اون میدم مقایسه کنه به خود دانشجو ها نمیدم دانشجو ها اصن نیازی نیست بدوننن که الان چطوری خودشون رو جابه جا کنن درستش اینه میگم این لیست رو نگاه کن بر اساس این لیست اینها رو مقایسه کن نتیجه رو به من بده که من اجراشون کنم پس دو حالتل میتونیم انجام بدیم .یکی اینکه خود دانشجو ها خودشون رو مقایهس کنن یکی اینکه یه واسطی در نظر بگیریم و اون واسطه بیاد برای من این مقایسه ها رو انجام بده یه شخص واسط کهب ه اون شخص میگیم کمپریتور مقایسه کننده و دو تا دو تا دانشجو ها رو بهش میدم میگم اینا رو با هم مقایسه کن پس دیگه دانشجو ها خودشون درگیر این نمیشن که چی رو با چی مقایسه کنند بر اساس چه پاراامرتی پس اصن این درست نیست که بیام بگم تو قابل مقایسه ای اینا رو از اینجا باید اصن بردارم نباید خودش اصن قابل مقایسه باشهیکی رو باید بیارمکه اون مقایهس ها رو انجاما بده وقتی این قابلیت رو داشته باشم که بتونم یه نفر رو بیارم که این مقایسه ها رو برای من انجام بده نمیتونم ده نفر دگیه هم بیارم که بر اساس ده تا پارامتر دیگه برای من مقایسه انجام بدن؟ دانشجو ها بر اساس محدودیت های کد نویسی که داریم یه دونه میتونن (فک کنم پاسخ به سوال یکی از دانشجو ها بود ) یا میتونه بر اساس معدل باشه یا بر اساس چیز های دیگه نمیتونم بر اساس چیز های مختلف این کار رو انجاما بد م اما مقایسه کننده های مختلف میتونم بیارم که این کار ها رو برای من انجاما بده پس به جای اینکه کمپیر باشم یه چیزی تعریف مینم به اسمکمپریتور و اینترفیسو اینجا باید چیکار کنم بولین رو مینیوسم دوباره و متد مقایسه اش رو هم مینویسم اما یه دونه نمیگیره دو تا میگیره دو تا از چه نوعی میگیره فعلا فعلا من از نوع استودنت مینویسمش اشتباهه ها ولی باید بریم به ای او سی چهار که کاملش کنیم فعلا من باید اینطوری بنویسمش اس یک و اس دو فعلا هاااا بعدا این رو درستش میکنیمدرستش اینه که از جنریک ها استفاده کنیم و بجای استودنت تی بزارم حالا بعدا این رو درستش مکینم خب بعد از اینکه این کار رو انجام دادم من فقط میخواموقتی این کار رو انجام بدم این عکس باللایی رو نمیخاد بنویسیاین رو هم نیخواد دیگه ایمپلمنت کنی دیگه پس حالا چطوری از این استفاده کنم وقتی که میخوام داخل مترب سازیم لیست دانشجو ها رو بیگرم فعلا اینو میگم که استودنت میخوام مرتب کنم لیست یوتایله فقط استودنت مرتب میکنه بعدا درستش مکینم میگم لیست ااستودنت ها رو بیگر یه کمکی هم بیگر کمکیتو از نوع کمپریتور بگیرو بعد نگو این خودش رو با اون مقایسه کنه همین حرفی که زدیم رو بگوبگیم مقایسه کننده مقایسه کن اولی و دومی روپس یک کمکی رو هم گرفتم از اینجا حالا موقعی که میخوام ازش استفاده کنم حالا من فعلا دایره ها رو بر میدارم نمیشه دیگه دایره ها رو مقایسه کنیم فعللا وقتی که میخوام مرتبش کنم کاری که انجام میدم اینطوریه میگم این لیست استودنت ها رو بگیر از یک کلاس ناشناس برای مقایسه کننده اش استفاده میکنم میگم اینطوری هم مقایسه اش کن میگم اس یک دات اوریجش با اس دو دات اوریجشاین یه دونه حالا میخواام یه بار دیگه استودنت ها رو بر اساس ای دی مرتب کنم میگم این رو بگیر با یه کامپریتور جدید گت ای دی گت ای دی وابستگی حذف شد . ببینید چقدر کد ها جالب و حرفه ای میشن وقتی بنیاد این چیز ها رو بدونید چطوریهقبلا نمیتونیستیم اما الان مرتب سازی کن بر اساس هزار تا کمپریتور مختلف خب حالا میگم الاان مشکلاتی داره بعدا کاملش میکنیم این یه مثال دیگه از اینترفیس ها فرقش چی بود با اون یکی ؟قبلیه به عنوان یه گذرگاهی اینجا در نظرش میگیرفتمی و خود اون نوع داده ای که میخواستی باهاش کار کنی با اون از طریق اون وارد میشداما اینجا اینطوری نیست نوع داده ات رو جدا میگیری و دومی رو به عنوان یه ابزار میگیریش قبلیه به عنوانا یه ابزار نبود قبلیه داخلش خودش بود اما این به عنوان یه ابزاره مثل اینه مثلا فرض کن من بهت میگم این لیوانه رو بگیر با این قاشقه بعد اون قاشقهرو میای اون لیوانه که چیزی داخلش هست رو همه میزنی قبلیه اینطوری بود که خوود لیوانه یه همزنی داخلش باشه از این لیوان حرفه ای ها هست یه همزنی داخلش هست برای قهوه است نمیدونم چیه ?ولی این یکی جداست ابزارش رو جدا میگیری میگی این ابزاره بیا برای من این کار رو اانجام بده که مرتبش میکنه برات یه بار این میاد بر اساس استودنت اوریج مرتب میکنه یه بار هم میاد بر اساس ای دی ها مرتب میکنه و دفعه بعدی ممکنه قبلیه رو به هم بریزه من میتونم این کار رو حالا حرفه ای تر هم انجام بدم برای اینکهبخهوام بر اساس پارامتر های پیچیده تر انجام بد مبیام اینجا بگم اگه این مثلا بزرگ تر هاین کار رو انجام بدهاما اگه مساوی هستن بیا مثلا فرض کن بر اساس ای دی انجام بده اگر ای دیش فلانه بیا بر اساس نام انجامش اول این رو اجرا میکنه مرتب میکنه بعد میاد اینجا بر اساا س ای دی مرتبش میکنهبرای اینکه یه لحظه هم ببینیمش من اینجا یه سیستم دات اوت االکی بنویسم ببینیم چه اتفاقی میفته ببینیم واقعا این کار رو برامون انجام میده یا ن ولی خب میگماین الان فقط استونتن رو برای من مرتب میکنه بریم به ای او سی چهار سیرکل رو هم مربت میکنه البته اگه همینجا هم ابجکت بزنم میتونه اون کار رو انجام بده ولی خب باید یه کستینگی انجان بدیم