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