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

جلسه نهم >> ioc2.2 و شروع مبحث اینترفیس ها

ادامه ioc2.2 و ورود به مبحث اینتر فیس ها

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

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

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

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

منظور خط 23 است .

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

تایمری که الان داریم اینطوری نیست یه تسک بهش میدی تو اون بازه زمانی ای که بهش میدی همون تسک رو برات مشخص میکنه

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

این که در خط 23 نوشتم این قابلیت رو نداره یه دونه تسک میگیره و یک ثانیه یک بار اجراش میکنه ولی من میخوام این رو بهش اضافه کنم . خب برای اینکه این کار رو انجام بدیم

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


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

الان دیگه من در داخلش تایمر ندارم چرا ؟ چون خودش تایمره اصن حالا میخوام .

الان اسکیژول تایمر رو بزنم خودش اسکیژول داره این همون ویرچوال کلاکه بود الان چون ارث بری کرده

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

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

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

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

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

اگه یه لحظه برم تو تایمر و برم ببینم چی داخلشه یه سری چیزا داخلشه و یه سری سازنده داره و متد هایی مثل اسکیژول

مثلا این و منم الان یکی می خوام عین همین باشه که الان کپیشم میکنم درونش رو همه رو حذف میکنم

خط 17 ام همونه

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

که تاخیر داره و دوره زمانی

الان اگه دقت کنین شده 5 تا که 4 تاش مال جاواست و یکیش مال منه که همون اولیه

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

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

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

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

خط24

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

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

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

مثلا این ها همش توی تایمر هستن اما این الان فرزندشه . .

مثلا تسک دیگه

الان ببینید تسک مگه این نیست من الان متد ران و تایم استمپ دارم اینجا دیگه و تو اسکژول چون این رو به ارث برده میتونم اون بیام بگم : گت تایم استمپ :

و صداش بزنم

اینم همینه چون من الان ارث بردم از تایمر تمام متد هایی که هستن رو الان اینجا من میتونم ببینمشون

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

اینی که من اینجا نوشتم دو تاست اما اسکیژول داخل متد همونی هستش که در داخل کلاس تایمره شما میتونید از اون ها استفاده کنین

یعنی از این چهار تای بالا میتونین استفاده کنین اینا مربوط به خود تایمر هستن

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

درسته؟ خیلی هم عالی

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

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

و دیگه باید نوعش فرق داشته باشه و بجای اینکه تسک بگیرم اینت میگیرم یا اصن دو تایی میگیرم ، تسک رو میگیرم یه دونه دیگه هم میگیرم

میتونی چند تا بنویسی حالت های مختلف ریجستر . .

اینم الان همون طوریه

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

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

این قسمت

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

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

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

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

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

رخداد یعنی چی مثلا اگر اومد خط 24 این یه رخداده دیگه اگر اومد داخل این یه رخداد اتفاق افتتاده

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

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

اینی هستش که اونجا نوشتمش چی داخلشه ؟

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

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

یعنی بیاد اینجا شرطم برقرار بود تسکم اومد اجرا شد و امد اینجا . میخوام وقت تسکم اجرا شد یه کاری هم اینجا اجرا بشه

یه اتفاقی اینجا هندل بشه میام یه دونه دیگه هم فیلد تعریف میکنم مثلا همه متغیر هایی که تا الان تعریف میکردیم اسمش رو میذارم ان تسک فینیش

در لحظه تمام شدن تسک یه دونه اهم میخوام اصن کاری به این نداشته باشم

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

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

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

هرجا میخوام اجرا بشه میام مینویسم

من اینطوری تعریفش کردم که ساعته رو هم بفرستم به عنوان ورودی ساعته رو هم بهش بدم

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

بعد از اینکه وظیفه این قسمت هم تمام شد

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

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

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

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

مثلا باید بیام اینجا و بسازم کلاس پرینت کلاک رو بعد این رو بیام چیکار کنم؟

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

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

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

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

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

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

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

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

دقیقا ارث بریه رو داره انجام میده و یا اون اینپلمنته قسمت پایینش هم که همنو اووراید کردنش

این الان دقیقا از خط 24 براکتش تا خط 30

دقیقا همین چیزی هستش که اینجاست دقیقا مث هم هستن

فقط برای اینکه این پابلیک کلاس و ایمپلمنت و اینا رو نیام بنویسم کل این ها خلاصه شده توی این :

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

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

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

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

این الان پرکلاک اومدم یه نمونه ساختم این داخلشه میاد داخل اسکیژولبل تایمر

رییت شده هندلش

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

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

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

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

تسک رو اجرا کرد سند ایمیل کرد

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

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



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