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
Forwarded from Deleted Account
قوی ترین گروه فناوری فعلی در تلگرام. سریع تر از سایت ها و خبر گذاری ها،خبر ها و بررسی هارا دریافت کنید. لینک گروه @ITvera
با سلام مقاری هستم با جلسه چهارم اندروید در خدمت شما هستم

خب جلسه پیش یه تمرین دادم . این جلسه میخوام اونو حل کنم براتون و یه سری نکات مهم و مفاهیم جدید رو باهاش آشنا شیم.
تا اینجا رفتیم که یک layout ساختیم و یه عکس گذاشتیم توش
حالا به شما گفتم که هر layout باید توسط یک کلاس کنترل بشود. چرا؟ خب دیدیم که در layout ها فقط دیزاین میکنیم صفحه را. اما باید طوری بگیم مثلا یک دکمه زده شد چه اتفاقی بیفتد. اینکارها در کلاس هایی به نام اکتیویتی انجام میشود.
خب برای ساخت اکتیویتی گفتم مثل کلاسها عمل کنید. وارد پوشه src بشوید. بعدپوشه com.example.myapp و حالا میبینید یک اکتیویتی آنجا دارید. که در اصل اکتیویتی صفحه اصلی هست.
پس روی پوشه com.example.myapp راست کلیک کرده و بزنید new و سپس بزنید Java class
حالا اسم کلاس را بدید مثلا بدید SecondActivity.
تا الان یک کلاس ساختید فقط. چجچطور به آن نوع اکتیویتی بودن را نسبت دهیم؟ توجه کنید کلاس یک موجودیت هست(مثال انسان را به یاد بیارید) حالا میخوایم به آن بگیم تو موجودیتی باش مثل اکتیویتی ها. اکتیویتی در اصل ساختار اصلیه برنامه¬های اندروید هست. که layout ها فقط به صفحات ظاهر میدهند اما اصله برنامه های اندرویدی روی اکتیویتی ها بنا شده.
خب برگردیم سر سوالم. چطور بگیم که تو اکتیویتی هستی؟ از راه ارث بردن. فقط اشاره کنم ارث بردن در زبانهای برنامه نویسی چی هست... دقیقا همان مفهوم ارث بردن خودمان هست. یک فرزند از پدرش ارث میبرد یعنی خصوصیاتی را از پدرش میگیرد. مثلا رنگ چشم، اخلاق و...
حالا برگردیم به برنامه. متد oncreate .... من میخواهم کلاسی که ساختم هم onCreate داشته باشد. چون که این متد برای کلاسهای عادی نیست. برای Activity ها هست. خب کافی هست به کلاسم بگم که از Activity ارث ببر.
ارث بردن در جاوا چطور هست؟ با کلمه extend.
پس جلوی اسم کلاستون در بالا مثل من بزنید:
بازهم تاکید میکنم (و احتمالا برای آخرین بار) کد را کامل ننویسید. هرجا منوی راهنمای autocomplete باز شد، از آن انتخاب کرده و enter بزنید. دلیل هم دارد. بطور مثال عکس من را ببینید. بالاش نوشته شده import Activity. کلا import در برنامه نویسی یعنی یه کلاس دیگه را به پروژتان اضافه کنید. مثلا اینجا Activity آماده بود ما اوردیمش در کلاسمان یعنی import کردیم.
حالا اگه خود شما Activity را کامل تا اخر بنویسید آن را نمیشناسد و اتفاق زیر میفتد:
که باید خودتون دستی در بالا import را بنویسید.
اما اگه از لیست انتخابش کنید با زدن enter خودش import را هم انجام میدهد.
خب حالا گام بعدی. ساختن متد oncreate که اگر یادتان باشد بحث bundle و همچنین وصل کردن Activity به layout را روی آن مطرح کرده بودم.
برای این که کامل متوجه بشید دوباره یک پروژه جاوا همانطور که جلسه پیش گفتم بسازیم. پس در file ، new را بزنید بعد project
بعد اولین گزینه java را انتخاب کرده و بدون تغییری و انتخاب چیز دیگه، پروژتان را بسازید.
خب مثل جلسه قبل یک کلاس بسازید اسمش را مثلا بدید A.
حالا بریم داخل A و همانطور که یادتان دادم یک متد تعریف کنید مثلا به اسم Printing:
کلمه کلیدی public را جلسه بعد میگم چ هست. شما فقط بنویسیدش. Void که گفتم ینی تابع خروجی نداره.
داخل تابعم دستور چاپ را نوشتم. حالا یک کلاس بسازید به اسم B. و با کلمه extend بگید از A ارث ببرد . بعد داخل کلاس بنویسید
@Override
که با O بزرگ هست.
این یعنی چی؟ وقتی که از یک کلاس ارث میبرید و کلاس شما یک سری متد دارد لازم نیست عینا آن متد اجرا شود. میتوانید اصلا عوضش کنید. و فقط متد را اسم و ورودیش را داشته باشید و محتوای آن را تغییر بدهید. مثلا کلاس حیوانات همه یک متد دارند به اسم خوردن. حالا همه ی حیوانات از جمله شیر و گوزن از این ارث میبرند پس یکی خوردنش مثلا سبزیخواره یکی گوشت خوار!
الان اینجا میخواهم همان متد printing داخل A را استفاده کنم اما به جای آن چاپ کنم hi I am B
خب زیر این Override که نوشتید دقیقا همان متد داخل A را بنویسید. یا کپی کنید. و فقط متن چیزی که چاپ میشود را تغییر بدهید.
فقط اگر اشتباه بنویسید مثلا نام کلاس را، Override به شما خطا میگیرد. میتوانیم متد را تست کنیم. گفته بودم که برای اجرای کد به متدی بنام main احتیاج داریم. آن را پس بنویسید تا تابعمان را فراخوانی کنیم.
پس کد کلاستون الان اینطور هست:
public class B extends A {


@Override
public void printing(){
System.out.print("hi i am B");
}

public static void main(String args[]){

}
}
داخل main میخواهم الان کلاسم را صدا بزنم. یادتان باشد یک مثال انسان زدم گفتم نمیتونم بگم انسان بیا. باید بگم فلانی که انسان هستی بیا.
اینجا هم نمیشود الان کلاسم را بهش بگم متدت را اجرا کن . بلکه یه نمونه ازش میگیرم. میگم حالا فلانی که از نوع B هستی متدت را اجرا کن. برای نمونه گرفتن کد زیر را داخل main بنویسید:
B myb = new B();