Amir_B
Amir_B
خواندن ۲۱ دقیقه·۳ سال پیش

جلسه دهم >>ioc3

گفته از کانتر یعنی از این جایی که هست یعنی آخری ، بیا شروع کن تا زمانی که بیاد و برسه به این اندیس دو

اول i+1 رو یعنی خط 58 (مورد چهارم ) که به علاوه یک که میشه میاد یه خط پایین تر یعنی خط 59 وقتی میگه برابر با شیپ ای قرار بده یعنی بیارش خط 59

خب الان چهار منهای یک شده و شده 3 حالا 3 به علاوه یک میشه چهارمیگه توی شیپ چهارشیپ ای رو قرار بده

یعنی به این صورت وبعد برای شماره دو هم همین کار رو میکنیم

حالا اندیسمون چنده ؟ اندیسمون دو بوده اندیس bbb رو توی دو ذخیره اش کن . .

خب بذاریه بار امتحانش کنیم من الان میام از این استفاده میکنم یه نمونه از شیپ ارری لیست در مین به اندازه 15 تایی میسازم چون متد گرو ندارم و بعد متد ادد استفاده میکنم و :

یه چهار تا دیگه هم اضافه میکنم

خب حالا میخوام یک دانه اینسرت کنم و میگم تو اندیس دو یه دونه مستطیل اضافه کن

بعد از اینکه این ها انجام شدن کانترت رو باید یه دونه اضافه کنی چون یه دونه دانشجو بهش اضافه شده

خب الان من این رو یه لحظه اجراش میکنم ببینیم واقعا شیفتش میده یا چ : خب این الان ساخته شده نگاهش هم میکنیم هنوز هیچی توش نیست :

این رو اضافه میکنه یه دونه

دو تا سه تا و چهار تا خب الان این چهار تا اضافه شدن

چهار تا دایره اضافه شدن توی این خانه ها . . .

حالا میگه اینزرت کن میرم داخلش ببینم چه اتفاقی میفته

میرم داخل ایندکسم ، ایندکسی که ازم میخاد چیه ؟ خونه دوم اندیس دوم این مستطیل رو قرار بده کوچیک تر از کانتره ؟ اره درسته

پس میاد داخل

میگه از کانتر شروع کن تا زمانی که i که الان شده چهار

تا زمانی که بزرگتر از اندیسه اس یعنی تا زمانی که بزرگتر از دو هست . ای رو یکی یکی کم کن

خب میگه ای به اضافه یک که میگه بیا خونه پنجم الان اگگه شیپ رو نگاه کنیم یه لحظه

خونه چهارم نداره ای چنده ؟


اها کانتر رو باید یکی کمش کنیم

کانتر سایزمونه یه دونه کمش کنیم میشه 3+1 که درسته . .

خب بزار از اول اجراش کنم . .

چون کانتر یه دونه داره اضافه میشماره وقتی . .. میکنی تهش یه دونه اضافه میکنه

خب ببینید الان شیپ رو نگاه کنید :

الان من گفتم توی خونه دوم باید بیاد رگتنگل رو برای من قرار بده خونه دوم اینجاست دیگه :

یعنی الان این و پایینیش باید یه دونه برن پایین

خب میگه از کانتر منهای یک شروع کن یعنی از 3

ای از 3 شروع میکنه

میگه ای به علاوه یک یعنی خانه چهارمش که وجود نداره هنوز میگه این رو برابر با شیپ ای قرار بده



شیپ ای مون چنده ؟ این دایره است با شعاع چهار میگه اون آخری رو یکی ببر جلو خب الان ببینیم رفت ججلو یا ن :

خب یه دونه رفت جلو

یعنی اینه دیگه این یعنی اینجا هم کپی شد الان خونه شماره دو رو هم باید بیارم ججای سومی خب یکی ازش کم کرده

مساوی قبلل از ایندکس رو هم نذاشتم که باید میذاشتم پس دوباره اجراش کنیم . چون خود اندیسم باید یکی ببره جلو دیگه چند تا چیزه دیگه ، یه سری منها و مساوی این جور چیزا رو باید درست بذارین

خب این الان دیگه باید درست باشه

اون اولی رو برد حالا دومی دومی رو هم باید ببره پایین یه لحظه نگاه میکنم ببینم چه اتفاقی افتاده چهار امده اینجا هفتم اومده اینجا

حالا تو خانه دوم باید مستطیل رو قرار بدم :

خونه دوم یعنی اندیس دو رگتنگل و قرار میدم

شیپ اینا رگتنگل

دایره دایره مستطیل دایره دایره و قشنگ اینزرتش کرد بین اون ها یکی هم باید به کانتر اضافه کنم دیگه

چون یه دونه آیتم جدید اینزرت شده درسته ؟

فقط اون شرط گرو کردنش رو هم باید بذارید دیگه چون اگه جا نداشته باشه ارور میده ایندکس اوت اف باند میزنه یا اوت اف رنج

خب امروز میخوام یه چیز بیش از اندازه مهم رو یعنی خیلی خیلی خیلی مهم رو یاد بگیریم یکی از زیبا ترین و قدرتمند ترین ابزار هایی که توی شی گرایی باهاش کار میکنیم و به شدت جالب و عالیه در واقع تکمیل کننده تمام چیز هایی هستش که تا الان یاد گرفتین اما خب خیلی چیز جالبیه خیلی به شدت کاربردیه و توی خیلی از برنامه هاتون میتونید ازش استفاده کنید .

چیز هایی که بتهتون میگم وابستگی به جاوا نداره من فقط دارم با جاوا میگمش چون جاوا خیلی زبان جذابیه آدم خیلی راحت میتونه باهاش کار انجام بده ادم خیلی چیز های حرفه ای و و مثلا ابزار ها و امکانات جالبی داره و سبک کد نویسیش مرتب و منظم هستش . اما این مطالب که بهتون میگم به هیچ عنوان وابستگی به جاوا نداره . این چیزا که درباره ioc و اینجور چیز ها دارم بهتون میگم اتفاقا خیلی خیلی بیشتر توی طراحی وب سایت ها ازش استفاده میکنن مخصوصا اون هایی که asp.net اگر اشنایی داشته باشن این واژه ها رو خیلی شن یدن اگر اشنایی داشته باشن دپندنسی اینژکشن و .. برین یه فیلم اموزشی خارجیش رو نگاه کنین ببینین درمورد چی داره حرف میزنه .. .همش درباره همین مفاهیم هستش . .

خب بریم برای ioc3 چه ابزار هایی دارم برای تعریف مسئله تا اینجا چی رو یاد گرفتیم شما به من بگین تا اینجا برای تعریف کردن یه موجودیت چی رو داریم؟که بعدا در قابل ioc1 و ioc2 و اینا معرفیش کردیم ؟

انتزاع حالت کلیشه دو تا چیز بهتون گفتم وقتی میخای یه چیزی رو تعریف کنیم چی میگیم با اون واژه های مفهومی که بهتون گفتم

جواب : has a و is a این عمومی سازی و اینجور چیز ها این ها چیز هایی هستن که هدف ما هستن اما برای تعریف یک موجودیت دو تا چیز خیلی مهم داشتیم یا اینکه یه سری ویژگی داره یا یه سری ویژگی دیگه رو از یکی به ارث میبره یه سری ویژگی رو خودش داره که میشه has a یه سری ویژگی رو به ارث میبره میشه is a مثلا میخای بگی تلویزیون چیه میگی تلوزیون فلان ویژگی ها رو خودش داره و یه سری چیز های دیگه هم از طریق is a به ارث میبره مثلا میگیم تلوزیون یک وسیله الکترونیکی است ، این میشه اون is a اش نمیای دیگه جزییاتش رو بگی خازن داره مقاومت داره و . . و هزار چیز ریز داخلش رو بگی میگی تلوزیون is a وسلیه الکترونیکی و has a یه سری ویژگی های خاص خودش این چیزیه که ما توی دنیای واقعی مون داریم علاوه بر این یه چیز دیگه هم داریم و واسط یا همان اینترفیس پس یکی اینکه یه سری ویژگی ها رو داره یه سری ها هم is a داره میگیره یه جاهایی واسط داره بین دو موجودیت از چه لحاظ ؟یکیشون باید یه گذرگگاه بذاره و اون یکی از طریق اون واسط به این ارتباط برقرار میکنه مثال دنیای واقعیش چیه ؟ مثال دنیای واقعیش گوشی ها و وسیله های برقی که داریم درسته ؟ تلفنتون مثلا

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

اگر این قوانین رو داشتی دیگه به من ربطی نداره که از کججای دنیا داری میای اصن نیازی ندارم بدونم که از کجا میای حالا من میخوام داخل کامپیوترم وبین آبجکت های شی گراییم همچین رابطه ای برقرار کنم همچین واسطی برقرار کنم یه همچین چیزی داشتیم تقریبا درسته ؟داخل مثلا اسکیژولر بود دیگه

اینجا من الان یه تتسک اینجا گذاشتم

میتونم هزاران شکل مختلف تسک رو بفرستم داخل و یه سری قوانین روش تعریف کردم باید حتما این گت تایم استمپ رو که داره باید حتما ران خودشون رو پیاده سازی کنن

حق ندارن از خود نوع تسک نمونه بفرستن تو این قوانین رو تعریف کردم گفتم ولی باید زیرمجموعه تسک باشه اما کسی حق نداره از خود تسک نمونه بسازه ابسترکتش کردم و و حتما باید ران رو هم خودشون پیاده سازی کنن مشکلش چیه این یه همچین چیزی انگار هست اون واسطی که میگیم انگار هست

مشکلش اینه که به اندازه کافی عمومی نیست باید حتما حتما زیر مجموعه تسک باشن یعنی باید تسک باشن

یعنی باید حتما حتما این ویژگی ها رو هم به ارث ببرن یه کلاس باید باشه یعنی یه آبجکت یه نوع داده هست در واقع یعنی باید حتما زیرمجموعه این کلاسه باشن پس به اندازه کافی عمومی نیست برای من و از لحاظ مفهومی هم درست نیست من میخوام یه مرحله این رو عمومی ترش کنم

اما قوانین هم داشته باشم . عمومی تر باشه اما قوانین روش تعریف شده باشه مثلا فرض کن توش دانشگاه رازی فقط استودنت ها میتونن برن توش ازمایشگاه درسته؟باید حتما ااستودنت باشن اما یه سری قوانین هم روشون تعریف میشه مثلا سر کلاس پیشرفته باید استودنت های رشته کامپیوتر وارد بشن ما به این میگیم استودنت هایی که حالا قوانین هم روشون تعریف شده باید حتما کامپیوتری باشن اما استودنت باشن یا مثلا فرض کن سالن مطالعه سالن مطالعه فقط میگیم استودنت ها بیان دیگه فرقی نداره که استودنت کدام رشته باشه . . قوانینی نداره مث همون ioc2.1 هستش اما مثلا فرض کن میگم چی فرض کن خیابان ها رو در نظر بگیریم میگیم توی این خیابان ها هم انسان ها میتونن حرکت کنن هم ماشین ها اما قوانین وجود داره باید قوانین شهری رو رعایت کنن مثلا یکی از قوانین ما این است که توی خیابان اشغال نریزیم ولی قوانینه دیگه امافرقی نداره که از کدام نوع است یه مکان عمومی تره اما قوانین هم روش تعریف شده دانشگاه یه مکان نیمه عمومی بود و باید حتما یه زیرمجموعه کلاس خاصی ورود پیدا میکرد اما اینجا اینطوری نیست همه کس میتونن رفت و امد کنن ماشین میتونه بیاد موتور میتونه بیاد ادم میتونه بیاد حالا یه سری قوانین هم در نظر گرفته میشه

برگردیم به مثال برق مییگم تو این پریز برق فقط و فقط کافیه که دوشاخه داشته باشه دیگه از اون ور وصلش میکنی به خودت وصلش میکنی به کامپیوترت وصلش میکنی به گوشیت یا یخچالت به من ربطی نداره واسط رو رعایت کن دیگه هر کاری میخای باهاش بکن دو شاخه داشته باشن حالا تو خودت رو بزن به برق برق بگیردت به من ربطی نداره

اما کجا به یه همچین چیزی نیاز دارم ؟من داخل اسکیژولبل تایمر من میخوام تسک بیاد داخل واقعا نمیخام که هرچی بیاد داخل پس کاری به این نداریم .

بجای میخام یه مثال دیگه بزنم مثال دیگه ام چیه ؟ میخوام مرتب سازی عمومی بنویسم مربت سازی عمومی یعنی چی ؟یعنی هرچی که بهش بدی میتونه مرتب کنه پکیج سورت رو براش در نظر میگیرم و میام یک کلاس براش مینویسم به اسم سورت خب حالا سورت میخاد چی رو مرتب کن ؟ وقتی که میاید سورت رو بررسی میکنید میبینید که ... فرقی داره که تو میخای لیوان مرتب کنی یا مثلا خودکار ها رو مرتب کنی بر اساس رنگ یا بر اساس جنس یا لیوان ها رو بر اساس اندازه انسان ها رو مثلا بر اساس معدل دانشگاهیشون نمیدونم بر اساس سنشون سگ ها رو بر اساس نژادشون فرقی داره که بر اساس چی میخای مرتب کنی ؟ هیچ فرقی نداره اینجا پس نباید بیام زیرمجموعه کلاس خاص رو در نظر بیگرم اگه اون طوری بود خب کلاس آبجکت رو میذاشتم و میگفتم بیا اما ابجکت به شدت عمومی هست هیچ قوانینی براش تعریف نشده اینی که الان میخوایم در نظر بگیریم یه جورایی ابجکته اس اما قوانین روش میذاریم میگیم هرکی باید عیب نداره مشکلی نداره اما یه سری قوانین باید داشته باشه قانونی که برای مرتب کردن نیاز داریم به نظر شما چیه جنس و نوع و ایناش رو که گفتیم اصن ربطی نداره من میخوام دایره باشه مانیتور باشه حیوان باشه انسان باشه هیچ فرقی نداره نوع و جنسش هیچ فرقی نداره يه چيزي كه ميخوام تو اين آبجكت ها ميخوام مقايسه شون كنم بايد وجود داشته باشه قانونش به نظر شما چيه كه من بتونم يه چيزي رو مرتب كنم

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

حالا اینجا باید چی انجام بدم ؟ مرتب سازی رو باید انجام بدم دیگه قبلا مرتب سازی رو چطوری انجام میدادیم ؟

فرض کنیم میخوام از نوع استودنت میخوام اننجامش بدم

خب پس الان من باید یه ستر براش بذارم و یک گتر و سازنده هم براش بزنم که لیست رو بگیره دیگه بعد میخواستم مرتبش کنم یه همچین کدی مینوشتم و یه حلقه ساده مینوشتیم . و یه دونه دیگه دوباره حلقه میخوام خب بعدش شرط میذارم اگر آیتم های i ام کوچیکترشون پیدا شد توی آیتم های j ام بر اساس یک پارامتری الان میایم و مینویسیمش بیاد چیکار کنه؟ تمپ رو برابر با آیتم آی ام قرار بده آیتم آی ام رو برابر با آِتم جی ام قرار بده و ایتم جی ام رو هم برابر با تمپ قرار بده بر اساس چی ؟

اینش مهمه مثلا من اینجا میگم بر اساس اوریجشون

مشکلاتش رو بیایم با هم بررسی کنیم ببینیم که واقعا چقدر مهمه که بتونم از یه گذرگاه عمومی تر استفاده کنم مشکلاتی که داره چیه وابستگی سورت چیه به نوع داده وابسته است یک و مشکل پارامتر مقایهس ای داره

یعنی اگه بخوام بر اساس یه چیز دیگه ای مرتب سازی انجام بدم مثلا:

اگه بالایی پرفورم بای اوریج باشه و پایینی پرفورم ای دی باشه یعنی برای هر کدام از پارامتر ها م باید بیام و یه متد بنویسم که بر اساس پارامتر های مختلف بیاد برای من مقایسه انجام بده که این سخته که بیام این ها رو تغییر بدم ولی این ها یه دونه نوع داده است اگه کلی نوع داده مختلف داشتم اون موقع چیکارش میکردم اون موقع بر اساس چی این ها رو مقایسه میکردم یا اگه چیزی باهش اضافه میکردم باید کلی اینجا تغییرات انجام میدادم پس یه چیز اشتباهه پس الان وابستگی یکی نوع داده اشه و یکی هم پارامتر مقایسه ایمه خب برای حلش چیکار میکنیم ؟ برای حلش از کلاس انتزاعی استفاده میکنیم این راه حل اول مون بجای اینکه بیایم از این ها استفاده کنیم

یه کلاسی هم تعریف میکنم به اسم پرسون مثلا خب وقتی پرسون رو تعریف کنم یکمی حل میشه تا اندازه خوبی وابستگی اش از بین میره اما خب بازم مشکلاتی هنوز دارم مثلا اگه بخوام دایره تعریف کنم چی استودنت و دایره رو چطوری زیر مجموعه یه کلاس بذارم اصلا کلاس مشتری نمیتونم براشون در نظر بگیرم مگه مثلا بذارم آبجکت و آبجکت هم دیگه خیلی خیلی عمومیه و به کارمون نمیاد پس نمیتونم از سطج 2.2 استفاده کنم به چیز بهتر احتیاج دارم به این نیاز دارم که کلاس هام رو به نوع وابسته نکنم وابسته به این نکنم که از چه نوعی داره میاد داخل فقط قانونه برام مهم باشه قانونم چی باشه؟ این آیتم هایی که میاد داخل قابل مقایسه باشن قابل مقایسه بودنشون یعنی چی یعنی من

بجای اینکه این طوری بنویسمش و بگم مقایسه کن این ها رو نمیتونم به نظرتون این طوری بنویسمش به نظرتون ؟ بگم که داخل این آیتمه یه متدی وجود داشته باشه به اسم کمپیربگم این آِیتم آِی مثلا فکر کن ترو فالس به من پس بده

اینی که اینجاست همین کار رو برای من انجام میده و این رو ببریم داخل متد و بجای اینکه گت اوریج و گت آی دی و گت چیز های مختلف داشته باشیم اینطوری نباشه و یه دونه متد مشترک براش در نظر بگیرم به اسم کامپیر داخل اون کامپیره بیام و بگم بر اساس اوریج انجام بشه یا چیز های دیگه مثلا بیام اینطوری بنویسمش :

بعد بیام

اینی که الان اینجا نوشته بودم رو بیارم داخل متد و بگم اس یک رو بر اساس اوریج و اس دو رو هم بر اساس اوریجج و بعد این ها رو ریتورن کن

و یعد دویازه برم در داخل شرط و بگم کمپیر کن ایتم ای رو و ایتم جی رو درسته؟ میتونم این رو هم بنیوسم دیگه


میتونم این متد رو بذارم و بعد این کار رو انجام بدم یه کار دگیه هم میتونم انجام بدم بجای اینکه متد کمپیر رو تعریفش کنم بگم ایتم هایی که میان داخل خودشون کامپیر داشته باشن دیگه تو الان میتونی بنویسی در داخل متد گت ای دی یا گت هرچی و بجای اینکه اینطوری بنویسمش میگم ایتم خودش کمپیر داشته باشه که مقایسه بشه با یه نوع کمپیر دیگه و این رو اینطوری

نداشته باشه مثلا خب اینطوری بنویسمش که بگم این ایتم هایی که میان داخل کمپیر داشته باشن الان چی رو حذف کردم ؟پارامتر مقایسه ای رو در داخل سورت حذف کردم کجا منتقلش کردم ؟به خود ایتم ها منتقلش کردم به همین سادگی اما چطوری حالا بیام بگم که باید هرکی وارد این سورت ها میشه کاری ندارم که نوعش چیه فقط کمپیر داشته باشه . .. .

میام به صورت اینترفیس مینویسمش میام اینجا راست کلیک میزنم و نیو و جاوا کلاس

اینترفیس رو انتخاب میکنم و اسمش رو میذارم کمپیربل ، قابل مقایسه به من ربطی نداره کلاس چیه هر نوعی که هست این رو مینویسم قانونم چیه ؟ قانونم اینه که باید حتما کمپیر داشته باشم و بولین پس بدن

و یه ورودی از خود کمپیربل هم بگیرن میگم باید کمپیربل باشه بولین پس بده یه دونه کمپیربل هم بگیره چرا چون این رو میخام دیگه

خودش کمپیر داشته باشه و یکی هم از خودش بیاد داخل که بتونه مقایسه اش کنه همین . این میشه یه اینتر فیس داخل اینتر فیس یه سری شرط و قوانین وجود داره نمیتونی فیلد تعریف کنی نمیتونی دسترسی پرایوت و پابلیک و این چیزا براش در نظر بگیری پابلیک اصن بذاری فرقی نداره پرایویت و این جور چیزا توت یه شرایط خاصی میشه ما کاری به این چیزاش نداریم تو اینترفیس های کلاسیکی که وجود داره تو شی گرایی نمیشه تعریف کرد اما تو جاوا میتونی یه سری چیزا رو پرایویت و استاتیک و اینجور چیزا تعریف کنی من فعلا بحثم اون کلاسیکه اس بعدا حالا میتونین پیشرفته تر خودتون یه سری چیز هاش رو یاد بگیرین

این کلاس نیست واسطه هیچی نمیخواد براش بذاری هیچ چیزی براش نمیذاری و فقط همین جوری مینویسیش نمی تونی داخلش فیلد تعریف کنی نمیتونی متغیر تعریف کنی این جور چیزا رو نداریم داخل اینترفیس ها توی حالت کلاسیکش دارم صحبت میکنم حالا توی جاوا یه سری چیز های اضافه براش در نظر گرفتن من اون حالت کلاسیکش رو میگم

الان این هیچ نوع خاصی نیست چرا نمی تونی اون فیلد و اون چیزا رو تعریف کنی؟ الان بهتون میگم که چرا اصن نباید تعریف بشه

خب الان من این رو اینطوری تعریفش کردم پس میتونم در داخل سورتم بیام و بگم اینا استودنت نباشن کمپریبل باشن

پس صدرصد مطمیئنم همشون کمپیر دارن به من ربطی نداره که چه آبجکتی هست فقط کافیه که کمپیربل باشه و کامپیر داره و این مرتبش میکنه برای من و دیکگه نمیخاد avg باشه

این شد گذرگاهم حالا از اون طرف

این هم همان دانشگاه اس دیگه یه ابزاری که که میخاد به نوع داده اولیه ام مثل استودنت یا بقیه داده هام کار کنه این اون ابزاره اس این اون دانشگاهه اس یا اون خیابونه یا اون دنیای برق و الکتریسیته

واسط براش در نظر گرفته واسطش چیه ؟ کمپیربل ، کمپیربل همون پریز برقه اس برای من فرقی نداره از کدام دنیا چی میاد داخل فقط کافیه دو شاخه داشته باشه یا کمپیر داشته باشه همین برای من کافیه چظوری ازش استفاده میکن م؟ میام تو استودنت

میخام از نوع سورتت یک کلاس تعریف کنم بگم سورت مساوی با نیو سورت مثلا یه لیستی از دانشجو ها رو داشته باشم و استودنت رو از نوع ارایه تعریفش میکنم و نمونه سازیش میکنم و مقدار ده بهش میدم و یه حلقه میزنم و چند نمونه از استودنت رو میسازم .

خب این الان دانشجو هامه حالا من میخوام چیکار کنم ؟میخام این رو بدم به سوت و بگم برای من مرتبش کن اما این الان قبولش نمیکنه

اما این مرتب نمینکنه چرا چون استودنت ها براش قابل مقایسه نیستن میگه تو برام بگو اینا چطوری قابل مقایسه ان من باید بیام داخل استودنت و بگم

به این شکل که در پایین میگویم قابل مقایسه است مثلا میدونید که بر اساس معدل قابل مقایسه اند اما کامپیوتر که فهم نداره من باید بهش بگم که بر اساس چی قابل مقایسه است میگم استودنت ایمپلمنت نمیگم اکستند ها قبلا میگفتم اکستند اینجا باید بگیم ایمپلمنت کمپیربل وقتی کمپیربلش میکنه خب تو وقتی کمپیربل هستی باید حتما کمپیر داشته باشی باید ایمپلمنت متد بزنم و این رو کمپیر کنم

خب بعد میگه خب تو اگه کامپیربل هستی باید حتما کمپیر داشته باشی


باید ایمپلمنت متد بزنم و این رو کمپیر کنم

بعد حالا این جا باید بیام بهش بگم که چطوری مقایسه کن خب الان داخل استودنت ام اصلا ربطی به سورت ندارم داخل استودنت هر تغییری بدم داخل خود ابجکتمه میام میگم این ها رو بیا دیس دات گت اوریج رو مقایسه کن با اون کامپیربله چون از یک نوع هستن

چون ایتم هام ارایه ان دیگه

اگر من ارایه فرستاده باشم داخل هردوتاشون از یک نوع اند حالا البته اینجا یک مشکلاتی داره ها باید این رو محدودش کنم

الان ممکنه یه ججاهایی اشتباه هایی باشه مثلا من یه لیستی از استودنت و سیرکل داشته باشم و بفرستم تو یه اروری بهم میده فعلا اون مشکلش رو حالا در نظر نگیریم باید یه گام بریم جلو تر که اون رو هم حلش کنیم ولی فعلا حالا اونطوری در نظرش میگیریم فرض میکنیم کاملا مشکلی نداره و درسته

و این خب کستش میکنم سی رو کست میکنم به استودنت که بتونم به فیلد هاش دسترسی داشته باشم یادتونه بهتون گفتم

سی رو کست میکنیم به استودنت

و گت اوریجش میگم استودنت اینطوری قابل مقایسه است بهش میگم میگم اینطوری قابل مقایسه است ربطی به استودنت نداره ها

ربطی به استودنت نداره ها این استودنتمه

ولی اینطوری قابل مقایسه است .اصن ربطی بهش نداره حالا این جا ارورش رفع میشه به همین سادگی و زیبایی الان اگر اجراش کنم به راحتی اجراش میکنه

اگه همین رو اینطوری برای دایره ها بنویسمش

حالا میخوام این ها رو مرتب کنم بعد از اینکه این کار رو انجام دادم بعد از اینکه این کار رو انجام دادم برام استودنت رو مرتب کرده میگه سورت دات ست کن آیتم هات رو عوضشون کن و سی لیست رو بگیر و بعد دوباره سورت دات پرفورم

حالا میرم سیرکل رو هم کامپیر بل میکنم میگم

الان این قسمتش جالبته من یک اکستند دارم میتونم اینمپمنت هم انجام بدم میگم اینپلمنت کن کمپیربلاگر کمپیربل هستی باید حتما کمپیر داشته باشی خب کمپیر رو هم اضافه کن و میاد اینجا

میگم بر اساس مساحخت برام مرتبش کن

میگم سرکلمم اینطوری قابل مقایسه اس و حل میشه حالا یه سورته که هم استودنت برای من مرتب میکنه هم سیرکل برای من مرتب میکنه هم هرچیز دیگه ای که کمپیربل باشه میتونه مرتب کنه نکته های مهمش رو جلسه بعد خیلی کامل تر میایم و بررسیش میکنیم فعلا تا اینجاش رو تو ذهنتون داشته باشین و یه خورده باهاش کار کنین ججزیات کمپیربل اینکه چه چیز هایی رو باید در نظر بگیریم چطوری من میتونم با کلاس های انتزاعی مشترکش کنم

مثلا مثل اینجا چرا نمی تونم یه کلاس شیپ انتزاعی بیشتر درست کنم اما در کنارش هرچقدر که میخوایم اینترفیس رو ایمپلمنت کنیم شما میتونید ده تا اینترفیس ایمپلمنت کنید اما یه دونه کلاس میتونی اکستند کنی این ها رو میتونی روز چهارشنبه با جزیات کامل بررسی کنیم و کلی مثال حل کنیم روز چهارشنبه کلی مثال در مورد اینترفیس ها حل میکنیم فعلا تا اینجا رو تو ذهنتون داشته باشید این فوق العاده مهمه خیلی مهمه و حتما خیلی خوب یادش بگیرید کلی کار ها رو میتونید باهاش انجام بدین من هیچی دیگه تغییر نمیدم اینجا من هیچی تغییر نمیدم اینجا دیگه الان میخوای استودنت رو تغییر بدی میای تو استودنت و پارامترش رو عوض میکنی

هرچند هنوز مشکلاتی دارهاینم بهتون بگم هنوز مشکلاتی داره






اینترفیسواسطioc3interfaceآموزش شی گرایی با جاوا
دانشجوی کارشناسی کامپیوتر
شاید از این پست‌ها خوشتان بیاید