Persian Software Engineers – Telegram
Persian Software Engineers
1.9K subscribers
353 photos
14 videos
84 files
303 links
تجربیات شخصی یک مهندس نرم افزار در آلمان‌.
کانال یوتیوب:
https://www.youtube.com/@Dev_Germany
ادمین کانال :
@mohamad_germany
Download Telegram
خب بنظر شما بی معنی نیست؟ هربار بیایم ازین کلاس نمونه بگیریم؟؟ مسلما کار جالبی نی!
اما چکار کنیم که جای نمونه گرفتن یک myMath.Sum که بزنیم قابل استفاده باشد؟ اگر الان این را بزنید میبینید که اصلا نمیخونه کد شما را.
برید داخل کلاس ریاضیتان و متدی که نوشتید را استاتیک کنید. اینطوری:
public static int Sum(int Input1, int Input2){

int TheSum = Input1+Input2;

return TheSum;

}
خب تمام. حالا برید توی اونیکی کلاس و خیلی راحت بصورت زیر متدتان را صدا بزنید:
int result = myMath.Sum(4,5);

System.out.print(result);
این هم از مفهوام استاتیک برای توابع.
این مفهوم برای متغیرها هم صدق میکند. اما چطور و به چه معنا.
فک کنید در یک کلاسی یک متغیری دارید که توی کلاسهای مختلفی باید صدا بزنیدش و تغییرش بدید. خب هربار برای استفاده از متغیرتان باید بیاید از کلاستان نمونه بگیرید. اما این باعث میشود که خراب شود متغیرتان. یعنی چی؟ خب تست کنید.
متغیر زیر را در کلاس myMath تعریف کنید (توی خوده کلاس نه داخل متد)
public int MyInt;
حالا برید داخل کلاس دیگری که ساختید. بیاید یه تست کوچیک بگیریم. همینجا در main بیاید دوبار از کلاسمان نمونه بگیریم و متغیرمان را تغییر بدیم. ببینیم آیا تغییرات ما توی آن ذخیره میشود یا نه
myMath m = new myMath();

m.MyInt = 4;

System.out.print(m.MyInt + "\n");


myMath m2 = new myMath();

System.out.print(m2.MyInt);
خب اجرا بگیرید. این کد دقیقا عین این هست که توی دوتا کلاس مختلف بیاید از myMath نمونه بگیرید و فرقی ندارد. (علامت \n در عمل پرینت نقش enter زدن را دارد و عمل + در متن چاپی برای متصل کردن دوتا فرمان چاپ به هم دیگر استفاده میشود)
وقتی چاپ کنید میبینید که اولش متغیرتان همان 4 شده مقدارش اما بعدش که دوباره کلاس را نمونه گرفتید شده 0. که البته لازم به ذکر هست این صفر برای این است که مقدار int در جاوا وقتی متغیری از جنسش تعریف میکنید بصورت پیشفرض صفر در نظر گرفته میشود....
حالا چرا اینطوری شد؟ ..... خب اصلا واضح هم هست! این عین همین هست که بگید یک انسانی گشنه اش بوده و چیزی خورده یکی دیگه سیر شده! خنده دار هست. چون m و m2 دوتا موجوده جدا هستند. با یکی کار کنید نمیشه روی دیگری هم اجرا شود کارتون!
خب حالا تکلیف چی هست؟ چکار کنیم که یک متغیری از یک کلاسو بتونیم در طول برناممون هی استفادش کنیم؟ و تغییر هم نکند؟ و از هرجای برنامه و هر کلاسی که داریم مقدارشو تغییر دادیم داخلش ذخیره شود برای همه؟
*کافی هست static تعریفش کنید.*
public static int MyInt;
خب خودتان برید و تست کنیدش. مثلا در کلاسی که ساختید دوتا متد تعریف کنید. داخل یکی بیاید مقداره این متغیر را با استفاده از myMath.MyInt و بدون نمونه گرفتن مثلا بکنید 8.
در یک متد دیگه سه تا بهش اضافه کنید.
در آخر داخل main بیاید متدهاتونو فراخوانی کنید که عملیات را انجام بدهند و اخر هم چاپ کنید MyInt را. میبینید که مقدارها درست داخلش ذخیره شده.
خودتان تست کنید این رو تا مجبور شید دست به کد شید
چون من بگم احتمالا کسی انجام نخواهد داد 😐
⛔️خب بسه! بریم دوباره سراغ اندروید...📱☺️
برنامه همیشگی مان را باز کنید. میخواهم یک سری نکته جدید راجع به دیزاین به شما بگم.
layout main را بیارید.
با دوتا layout اشنا شدید. همان linearLayout بگذارید باشه. میخواهم چنین دیزاینی باهاش انجام بدهم:
و البته با کد.
خب سه تا دکمه توی کد بگذارید پشت هم. مسلما چنین چیزی را نخواهید داشت! چون دکمه های شما زیر هم قرار میگیرند. چطوری بیایم این فاصله¬های غیر یکسان را ایجاد کنیم؟
خب دوستان برای ایجاد فاصله بین ابزارها از margin استفاده میکنیم که میتواند از بالا یا پایین یا راست و چپ تعریف بشود. مقدار margin میتواند بر اساس px یا dp تعیین شود. مثل زیر:
android:layout_marginTop="190dp"
اما حالا چطوری؟ دکمه اولی رو که انداختید چطوری بیاد وسط؟
با gravity که اشنا شدید. کافیه بذاریدش روی center. بصورت زیر