يكشنبه, ۳۱ فروردين ۱۳۹۳، ۱۰:۳۳ ق.ظ
سلام دوستان
اشکال های خود را در قسمت نظرات این مطلب بپرسید.
توجه: مطلب مربوط به پروژه پایانی را دوباره ببینید.
موفق باشید.
پاسخ:
سلام ممنون
متاسفانه من چند وقتی هست که با nb کار نکردم و جدیداً از IntelliJ استفاده میکنم.
سالم و موفق باشید
پاسخ:
سلام
من با این روش کار نکرده ام ولی فکر می کنم نکات زیر به شما کمک می کند.
- کلاس FileOutputStream سازنده ای ندارد که شی ای از کلاس URI بگیرد.
- شما می خواهید اطلاعات رو در فایل StorageInformation.ser ذخیره کنید و چون این فایل در ابتدا وجود ندارد خطا می دهد.
- روش گفته شده سر کلاس رو اگر استفاده کنید کار مورد نظر رو انجام می دهد. فقط مسیری به فایل ندهید:
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("StorageInformation.ser"));
موفق باشید.
پاسخ:
سلام
این از اون سوال هاست
آیا
GUI is-a Database?!
دیتابیس باید فیلدی در GUI باشه. پروژه ی address-book-v1g را در فصل 12 ببینید.
موفق باشید.
پاسخ:
سلام ممنون
نه.
در کلاس GUI با زدن دکمه از اطلاعات داده شده شی بسازید و به کلاس دیتابیس اضافه کنید. (با فراخوانی متدی از کلاس دیتابیس)
در دیتابیس هیچ مولفه گرافیکی نباشد.
موفق باشید.
پاسخ:
سلام
ظاهراً نیازی نیست.
مگر اینکه بخواهید اشیاء زیر کلاس ها را جداگانه مرتب کنید. (بر اساس فیلدهای غیر مشترک)
موفق باشید.
پاسخ:
سلام
برای حذف فایل از کلاس File استفاده کنید.
موفق باشید.
پاسخ:
سلام
کاربر هر چه بنویسید String است. حتی 123.
اگر می خواهید عدد نباشد یک راه این است که حرف به حرف چک کنید.
راه دیگر این است که تبدیلش کنید به عدد. اگر تبدیل موفقیت آمیز بودحتماً عدد بوده است.
موفق باشید.
پاسخ:
سلام
باید همینطور باشد که شما گفتید.
موفق باشید.
پاسخ:
سلام
بله.
موفق باشید.
پاسخ:
سلام
مثلاً در JTable یا JTextArea نمایش داده شود.
موفق باشید.
پاسخ:
سلام ممنون
سوالتون مبهمه.
حضوری مراجعه کنید.
موفق باشید.
پاسخ:
سلام
ظاهراً آخرین مهلت 8 تیر است.
پاسخ:
سلام
پکیج های third party برای این کار هست.
در وب جستجو کنید.
موفق باشید.
پاسخ:
سلام
یک بار کافیه.
ادغام کنید.
موفق باشید.
پاسخ:
سلام
فعلاً چنین تصمیمی ندارم.
ولی تلاشتون رو بکنید.
موفق باشید.
پاسخ:
سلام
حذف کردن زمانی انجام می شود که کاربر (فروشنده، انبار دار) کلایی را می فروشد. مثلاً خریدار کالای مشخصی را می خرد.
پس حالت دوم درست است.
موفق باشید.
پاسخ:
سلام
در ترمینال کار می کند. اما ظاهراً در GUI کار نمی کند.
یک راه حل استفاده از HTML است:
String s = "<html><pre>Hi\tbye!</html></pre>";
System.out.println(s);
JOptionPane.showMessageDialog(null, s);
منظور چه نوع چارتی است؟
موفق باشید.
پاسخ:
سلام
اطلاعات رو بگیرید و بررسی کنید. اگر درست نبود با دیالوگ (مثلاً دیالوگ های استاندارد JOption) پیغام بدهید که درست وارد کند.
موفق باشید.
پاسخ:
سلام
چیزی که تدریس نشده در امتحان نمی آید.
موفق باشید.
پاسخ:
سلام
شاید.
موفق باشید.
پاسخ:
سلام ممنون
راهی ندارد!
موفق باشید.
پاسخ:
سلام
هفته ی بعد!
جزئیاتش بعداً.
موفق باشید.
پاسخ:
سلام
اگر اشتباه نکنم برنامه ش توی اسلاید بعد است.
میگه نمی توان شی ای از کلاس Pond رو با روش serialized ذخیره کرد اگر فیلدی از کلاس Duck داشته باشد و Duck اینترفیس Serializable رو implement نکرده باشد.
موفق باشید.
پاسخ:
سلام
assertion برای چک کردن درست بودن برنامه به کار می رود و در صورت فعال شدن نشان دهنده وجود اشکال (bug) در برنامه می باشد.
برای استفاده، جلوی دستور assert یک عبارت منطقی که از نظر ما باید درست باشد می نویسیم. اگر در زمان اجرا مقدار عبارت منطقی true نباشد، خطای assertion می دهد.
موفق باشید.
پاسخ:
سلام
منظورتون کدوم قسمت است؟
پاسخ:
سلام
در نت بینز به مسیر زیر بروید
Run -> Set Project Configuration -> Customize
و در قسمت VM Options عبارت ae- را بنویسید.
موفق باشید.
پاسخ:
سلام
گرافیک در امتحان نیست.
موفق باشید.
پاسخ:
سلام
کارهای معمول.
در برنامه پشتیبانی فنی (technichal support) به جای اینکه پاسخ پیش فرض را در برنامه بنویسیم، می توان آنها را در یک فایل قرار داد.
متد بالا فایل رو باز کرده و جملات رو تا آخر فایل می خواند و در defaultResponses قرار می دهد.
شرط آخر هم برای این است که اگر هیچ جمله ای در فایل نبود و یا فایل به هر دلیلی باز نشد، یک پاسخ پیش فرض داشته باشیم.
متد خوبی است!
موفق باشید.
پاسخ:
سلام
Collection اینترفیس است نه کلاس. کلاکشن های مختلف از جمله ArrayList اون رو implement کرده اند.
موفق باشید.
پاسخ:
سلام
"
یا باید throw کنیم" درست نیست.
شما در
متد خودتان از یک
متد استفاده می کند. این
متد مستعد خطاست.
- یا try-catch می کنید که به این کار مدیریت استثناء (exception handling) گوییم.
- یا try-catch نمی کنید و در header متد اعلان می کنید که این متد استثناء پرتاب می کند (دقت کنید استثائی را که متد پرتاب می کند، خودش ایجاد نکرده بلکه متد ایجاد کرده است.) به این کار انتشار استثناء گوییم (propagating exception).
در هیچ حالتی خود متد استثناء پرتاب نمی کند.
موفق باشید.
پاسخ:
سلام
Comparable : خود شی خودش را با بقیه مقایسه می کند (با متد compareTo). خودش Comparable است.
Comparator: یک شی دیگر که Comparator است اشیاء رو مقایسه می کند (با متد compare).
مثال های سر کلاس رو مرور کنید.
موفق باشید.
پاسخ:
سلام
50 درصد کار همین جاست!
وقتی a مدیر b است، مسلماً b کارمند a است.
کد بالا قسمت دوم عبارت بالاست. داره کارمند یعنی this رو به لیست کارمندان manager اضافه می کند.
موفق باشید.
پاسخ:
سلام
گرافیک در امتحان نیست.
به پروژه ی روباه و خرگوش فکر کنید. آیا متد انتزاعی act منجر به حذف کد تکراری شد یا نه؟
در کد بالا برخلاف معمول که iterator رو با while استفاده می کردیم، از for استفاده کرده. ساده است. شرط خروج از حلقه.
موفق باشید.
پاسخ:
سلام
میگه
- استثاء هایی که توسط کمپایلر چک می شوند، زیر کلاسی از کلاس Exception هستند و برای خطاهای پیش بینی شده استفاده می شوند (یعنی جایی که احتمال خطا هست مثل کار با فایل) و زمانی که رفع کردن خطا ممکن است.
- استثاء هایی که توسط کمپایلر چک نمی شوند، زیر کلاسی از کلاس RuntimeException هستند و برای خطاهای غیر قابل پیش بینی به کار می روند یعنی زمانی که رفع خطا غیر محتمل است.
موفق باشید.
پاسخ:
سلام ممنون
درصورتی که object شی ای از همین کلاس باشد این کار امکان پذیر است.
دلیلش هم اینه که object شی ای از همین کلاس است!
به عبارت دیگر شما علاوه بر فیلدهای this به فیلدهای هر شی دیگری از این کلاس که در کلاس قابل دسترسی باشد (مثل پارامتر other) دسترسی دارید.
موفق باشید.
پاسخ:
سلام.
هر روشی که می دانید. فقط باید اجرا شود و درست کار کند.
موفق باشید.
پاسخ:
سلام
مثال های اسلاید زیر و کتاب را مطالعه کنید. سوال داشتید بپرسید.
اسلایدموفق باشید.
پاسخ:
سلام
کد 12.20 صفحه ی 451 کتاب.
موفق باشید.
پاسخ:
سلام
بله.
فایل ها از لحاظ نحوه ی ذخیره اطلاعات به دو دسته اصلی تقسیم می شوند:
- فایل های متنی
- فایل های باینری
فایل
سریال در واقع فایلی باینری است که اشیاء در آن به نحو خاصی ذخیره شده
اند. به این صورت که ابتدا حالت شی (state) به جریانی از بایت ها(Byte
stream) تبدیل شده و سپس در فایل ذخیره می شود.
عکس این عمل
deserialization نام دارد و در طی آن جریان بایت ها به شی تبدیل می گردد. به
بیان دقیق تر یک شی بدون اجرا شدن سازنده ی آن ایجاد شده و سپس فیلدها با
مقادیری که در فایل ذخیره شده است مقدار دهی می گردد.
Serialization دخیره ی و بازیافت اشیاء در فایل را آسان می کند.
موفق باشید.
پاسخ:
سلام
بله.
شی ای از BufferedReader که به شی ای از FileReader «وصل» شده است.
بله. معمولاً زمانی که فایل هم ساختار مشخصی دارد.
همه ی موارد بالا را با برنامه های ساده امتحان کنید تا کاملاً مسلط شوید.
موفق باشید.
پاسخ:
سلام
1) java test اسم پوشه است و مسلماً پسوند نمی خواهد.
2) بله.
دقت کنید دو روش برای ایجاد فایل وجود دارد. یکی با این دستور که یک فایل خالی ایجاد می کند. این کار شبیه محیط my computer است.
روش دوم با ایجاد فایل به قصد نوشتن (چه متنی، چه باینری) با کلاس های FileWriter یا ObjectOutputStream.
موفق باشید.
پاسخ:
سلام
جواب سوال اول بعداً.
جواب سوال دوم:
شما یا باید تک تک نقاط را ذخیره کنید یا لیست نقاط را یک باره.
ولی اینکه کلاسی که لیست داخلش هست رو ذخیره کنید کار درستی نیست.
دلیل اول این است که چیزهای بی ربطی رو ممکنه ذخیره کنید و فضای بیشتری روی حافظه جانبی اشغال کنید.
دوم که مهمتر است اینه که کلاس دیگری رو درگیر خواندن شی ای از این کلاس (یعنی کار با IO) می کنید.
موفق باشید.
پاسخ:
سلام
جالب بود!
موفق باشید.
پاسخ:
سلام
اسلاید فایل های سریالی را از لینک زیر دریافت کنید.fileProcessingدر ضمن "بذارید" نه "بزارید"!
موفق باشید.
پاسخ:
سلام ممنون
باید از کلاس های بی نام استفاده شود.
موفق باشید.
پاسخ:
سلام
منظورتون رو متوجه نمی شوم.
بیشتر توضیح دهید یا عکسی از اون بفرستید.
موفق باشید.
پاسخ:
سلام ممنون
انجام شد.
موفق باشید.
پاسخ:
سلام
به طور عام مسیر یک فایل یا پوشه است. مانند
c:\windows\system32\explorer.exe
ولی Path اینترفیسی است که برای مشخص کردن یک فایل یا پوشه استفاده می شود.
موفق باشید.
پاسخ:
سلام ممنون
چون این کار منطقی نیست. چرا که در صورت گذاشتن این عبارت در header متد، کلاینت رو مجبور می کنیم فراخوانی متد رو در بلاک try قرار دهد (exception رو handle کند).
حال فلسفه ی وجودی handle کردن exception برطرف کردن خطا است. ولی RuntimeException ها اصولاً قابل برطرف شدن نیستند چرا که اشکال از خود برنامه است.
موفق باشید.
پاسخ:
سلام
ان شاء الله جلسه پنج شنبه.
موفق باشید.
پاسخ:
سلام
تا دقایقی دیگر!
موفق باشید.
پاسخ:
سلام
برنامه کار با استثناء رو از لینک زیر دریافت کنید.exceptionTestموفق باشید.
پاسخ:
سلام
درست متوجه نشده اید.
یعنی شی ای از این کلاس رو با شی ای که از کلاس ContactDetails است مقایسه می کند. که معمولاً همیشه همان کلاس است.
Interface Comparable<T>
Type Parameters:
T - the type of objects that this object may be compared to
موفق باشید.
پاسخ:
سلام
ان شاء الله.
موفق باشید.
پاسخ:
سلام
باز هم ان شاء الله.
موفق باشید.
پاسخ:
سلام ممنون
ان شاء الله.
موفق باشید.
پاسخ:
سلام
ان شاء الله قبل از 7 خرداد ماه.
موفق باشید.
پاسخ:
از ما حرکت از خدا برکت!
موفق باشید.
پاسخ:
سلام
آفرین!
موفق باشید.
پاسخ:
سلام
کی گفته؟!
![](http://bayanbox.ir/id/517295650285138123?view)
موفق باشید.
پاسخ:
سلام ممنون
توضیح داده ام.
بله. همیشه باید همه ی متدهای اینترفیس رو پیاده سازی کنید.
حتی اگر استفاده نشود.
راستی شما چند نفرید؟!
موفق باشید.
پاسخ:
سلام
برای درک جایگاه متد hashCode آزمایش زیر را انجام دهید.
در یک کلاس equals را پیاده کنید ولی hashCode رو پیاده سازی نکنید و بعد تعدادی شی از اون کلاس رو در یک HashSet بریزید و ببینید آیا تکراری ها رو حذف می کنه یا نه.
در مورد نحوه نوشتن متد hashCode بیشتر دقت کنید. مقدار result در هر دستور به result دستور قبل وابسته است.
موفق باشید.
پاسخ:
سلام
برای چک کردن یکسان بودن دو شی ( از نظر محتوا) باید این دو متد را در کلاس مربوطه رونویسی (override) کنیم.
موفق باشید.
پاسخ:
سلام
نظر لطف شماست.
موفق باشید.
پاسخ:
سلام
معمولاً وقتی یک متد رو override می کنیم، نوع برگشتی متد override کننده با متد override شده یکسان است.
با این حال متد override کننده می تواند به جای همان نوع برگشتی، زیرنوعی از آن را برگرداند که به آن covariant return type گفته می شود.
مثلاً اگر متدی Animal برمی گرداند، متد override کننده آن یا باید Animal برگرداند یا زیرنوعی از آن مثل Fox.
موفق باشید.
پاسخ:
سلام ممنون
لطفاً سوال ها تون رو تک تک ارسال کنید.
درسته. مثال خوبی زدید. در کلاسی که از JFrame مشتق می شه، نمی نویسیم super.setSize بلکه فقط می نویسیم setSize. دلیلش هم همان است که گفته شد. یعنی setSize که متعلق به
JFrame است به کلاس ما به ارث رسید و مانند یک متد داخلی فراخوانی می شود.
هر شی (مثلاً myObject) در جاوا متعلق به یک کلاس (مثلاً MyClass) است و یک شی از کلاس Class متناظر با آن وجود دارد که با متد myObject.getClass به دست می آید و شامل اطلاعاتی در مورد کلاس MyClass است که در زمان اجرا قابل دسترسی و استفاده است. برای امتحان همان چیزی که در کتاب گفته شده کافی است ولی برای اطلاعات بیشتر به لینک زیر مراجعه کنید.
http://docs.oracle.com/javase/tutorial/reflect/index.htmlسوال آخر را یکبار دیگر ارسال کنید. اما مشخص کنید کدام قسمت را متوجه نشدید.
موفق باشید.
پاسخ:
سلام
سوال مهمیه!
فرض کنیم سوپر کلاس متدی به نام foo داشته باشد و بخواهیم در زیرکلاس آن را فراخوانی کنیم. اگر متد foo در زیرکلاس رونویسی (override) شده باشد، برای فراخوانی متد fooی سوپر کلاس باید از روشی که گفته اید استفاده کنیم.
ولی اگر متد موردنظر رونویسی نشده باشد، به طور معمول به زیرکلاس به ارث می رسید و مانند یک متد داخلی می توان آن را فراخوانی کرد.
البته در هر دو حالت متد fooی سوپر کلاس باید دارای سطح دسترسی public یا protected باشد.
موفق باشید.
پاسخ:
سلام ممنون
اسلاید فصل 10 را از اینجا دریافت کنید.موفق باشید.
پاسخ:
سلام ممنون
برنامه مرتب کردن لیست دانشجویان را از اینجا دریافت کنید.موفق باشید.
پاسخ:
سلام ممنون
موفق باشید
پاسخ:
سلام ممنون
موفق باشید
پاسخ:
سلام ممنون
اول بریم سراغ کلاینت.
شما به رستوران مراجعه می کنید و از گارسون می خواهید برای شما غذا بیاورد. پس شما مشتری (Client) هستید و گارسون خدمتگزار (Server). در OOP هم همین مفهوم رو داریم:
کلاس Simulator از کلاس SimulatorView استفاده کرده. پس قاعدتاً کلاس SimulatorView باید کاری برای Simulator انجام دهد. Simulator مشتری است و SimulatorViews سرور.
اما interface
interface در مفهوم کلی یعنی خدماتی که یک شی می تواند انجام دهد. دقیقتر: خدماتی که شی "متعهد می شود" که انجام دهد.
که همان متدهای public می باشد.
اما interface به معنایی که در فصل 10 داریم همان مفهوم قبل رو به صورتی دقیقتر در بر دارد: با لیست کردن header متدهایی که همه ی اشیای کلاس implement کننده ی آن متعهد می شوند انجام دهند.
کمپایلر این تعهد را چک می کند. اگر کلاسی ادعا کرده است که فلان interface رو implement کرده، باید همه ی متد های لیست شده در آن interface را پیاده سازی کند.
نحوه به کار بردن
مثلاً در API وقتی کلاسی ادعا کرده که interface خاصی را پیاده سازی کرده، می توان به آن interface مراجعه کرده و لیست کارها را دید. ما این کار را قبلاً انجام دادیم (در فصل 4) زمانی که Iterator
را بررسی کردیم.
فرق نمی کند این Iterator
مربوط به ArrayList باشد یا HashSet. چون Iterator
است باید (به عبارت دقیقتر متعهد شده) که سه متد next، hashNext و remove را داشته باشد.
کاربرد: ان شاء الله جلسه فردا.
موفق باشید.
پاسخ:
سلام
خب همان که می خواهیم تبدیلش کنیم باید قبلش چک کنیم ببینیم هست یا نه. چون اگر از نوع MassagePost نباشد تبدیل غیر ممکن است و خطا می دهد.
پس می گیم اگر obj از نوع MassagePost هست،
تبدیلش کن به MassagePost.
موفق باشید.
پاسخ:
سلام
چیز عجیبی نیست.
علاوه بر نوع های primitive، هر کلاس یک data type جدید ایجاد می کند. مثل نوع String، Student و غیره.
موفق باشید.
پاسخ:
سلام ممنون
ان شاء الله.
هدفتان باید یادگیری باشد نه نمره.
سعی من این است که کسانی که این درس را می گذرانند (پاس می کنند) به این هدف نائل شده باشند.
موفق باشید.
پاسخ:
سلام ممنون
مانند همیشه اولین مرجع برای پاسخ به اینگونه سوال ها Java API documentation است.
java.sql.Time: A thin wrapper around the java.util.Date
class that allows the JDBC
API to identify this as an SQL TIME
value.
کاربردش در پایگاه داده است.
javax.swing.Timer: Fires one or more ActionEvent
s at specified
intervals. An example use is an animation object that uses a
Timer
as the trigger for drawing its frames.
java.util.Timer: A facility for threads to schedule tasks for future execution in a
background thread. Tasks may be scheduled for one-time execution, or for
repeated execution at regular intervals.
javax.management.timer.Timer: Provides the implementation of the timer MBean.
The timer MBean sends out an alarm at a specified time
that wakes up all the listeners registered to receive timer notifications.
موفق باشید.
پاسخ:
سلام
دقت نکردید چی شد!
وقتی یک کلاس abstract شد دیگه نمی شه از اون شی ساخت.
موفق باشید.
پاسخ:
سلام
در پروژه ی network چون کلاس Post رو abstract تعریف نکرده ایم، می تونیم ازش شی بسازیم. ولی اگر دقت کنید می بینید یک شی از این کلاس نه message دارد و نه photo. و فقط فیلدهای مشترک رو دارد. در دنیای واقعی یک شی از کلاس Post باید شامل اطلاعات مفیدی باشد.
مثلاً تصور کنید من یک مطلب بنویسم که شامل هیچ متنی و تصویری نباشد(!) و شما آن را لایک کنید و درباره اش نظر بدهید (!!).
خب این چنین مطلبی که اصلاً مطلب نیست.
کلاس Post هم همین طور است. اگر یک شی ازش بسازیم، چنین شی ای شیء مفیدی نیست و به هیچ کاری نمی آید چون ناقص است. حال برای اینکه جلوی ایجاد چنین شی پوچی را بگیریم کلاس Post را abstract می کنیم تا نتوانیم از آن شی بسازیم.
موفق باشید.
پاسخ:
سلام
برای چک کردن این که خانه ای null به این متد داده شده است.
دستور assert برای تایید درستی برنامه کاربرد دارد و در فصل مربوطه در کلاس بیان می گردد.
موفق باشید.
پاسخ:
سلام
این متد می خواهد یکی از خانه های مجاور را به طور تصادفی برگرداند.
adjacent لیستی از خانه های مجاور است. و اولین خانه (با اندیس صفر) برگردانده می شود.
سوال: تصادفی بودن کجا اعمال می شود؟
موفق باشید.
پاسخ:
سلام
متد getRandom از کلاس Randomizer را فراخوانی می کند.
این متد را بررسی کنید اگر ابهامی بود سوال کنید.
احتمال زاد و ولد رویاه و یا خرگوش است. یعنی یک خرگوش خاص (یا روباه خاص) هر بار به احتمال 8 درصد فرزند می آورد.
موفق باشید.
پاسخ:
سلام
یعنی کلاس مورد نظر آنقدر انتزاعی (خیالی) هست که نمی توان تجسمی واقعی ازش داشت. مثلاً آیا "حیوان" شاخ دارد یا نه؟!
یا اینکه چه صدایی دارد؟
موفق باشید.
پاسخ:
سلام ممنون
1) با یک جستجوی ساده در کلاس Math می توانید پیداش کنید.
2) دو کار می شه کرد:
همان خط را با رنگ زمینه دوباره رسم کنید.
یا
یک مربع یا مستطیل روی Panel با رنگ زمینه رسم کنید تا همه چیز را پاک کند؛ سپس خطوط مورد نظر را دوباره رسم کنید.
موفق باشید.
پاسخ:
سلام ممنون
متد hashCode توی اسلاید فصل 9 هست. ولی معمولاً این متد را توسط نت بینز ایجاد می کنیم. همان طور که سر کلاس دیدید.
از آنجا که هر primitive به گونه خاصی باید در hashCode سهیم بشه و روش خاصی داره، بهتره این کار رو با خود نت بینز انجام دهید.
موفق باشید.
پاسخ:
سلام.
متد hashCode را با خود نت بینز ایجاد کنید. همانطور که در کلاس دیدید.
موفق باشید.
پاسخ:
سلام
اگر منظورتون در GUI است می توان به طریق زیر عمل کرد:
JButton button = new JButton("<html><u>" + "OK"+ "</u></html>");
موفق باشید.
پاسخ:
سلام
هنوز نه.
ان شاء الله یکشنبه.
موفق باشید.
پاسخ:
سلام
به هیج طریق.
موفق باشید.
پاسخ:
سلام
شبیه subString عمل می کنه ولی به جای رشته
CharSequence بر می گرداند.
index کاراکتر مورد نظر را بر می گرداند.
موفق باشید
پاسخ:
سلام
جالب بود!
این همان چند ریختی است که در فصل 9 بحث شد.
البته یک کم تفاوت داره که در فصل 10 بیان می شود.
موفق باشید.
پاسخ:
سلام
به اینها متد کمکی هم می گویند. معمولاً قسمتی از کار یک یا چند متد دیگر را انجام میدهند.
در نتیجه از بیرون نباید فراخوانی شوند. پس private.
موفق.
پاسخ:
سلام
متدی است که در کلاس Object نوشته شده است و در نتیجه همه ی اشیاء در جاوا اون رو به ارث می برند.
در یک کلاس اینکه یک متد داشته باشیم که کارش نمایش اطلاعات بر روی terminal باشد ایده جالبی نیست. چون شاید caller بخواهد اطلاعات رو بگیره و مثلاً در GUI نمایش بده یا در فایل ذخیره کنه و ...
پس بهتره است متدی داشته باشیم که متن رو تولید کرده و برگرداند (چاپ نکند.) این کار بر عهده ی toString گذاشته شده.
اما از آنجا که هر کلاسی می نویسیم اطلاعات یه جور خاص باید تولید کند، باید در کلاس هایی که می نویسیم toString رو رونویسی (override) کنیم.
موفق باشید.
پاسخ:
سلام
همون فلش هایی که سر کلاس می کشیم.
متغیری از نوع کلاس که اگر null نباشه آدرس یک شی رو ذخیره کرده یا به عبارت دیگه به یک شی اشاره می کند.
موفق باشید.
پاسخ:
سلام
سوال من رو از خودم می پرسید؟!!
نت بینز که دم دستتون هست، چک کنید.
موفق باشید.
پاسخ:
سلام
گذاشته ام!
موفق باشید.
پاسخ:
سلام
برنامه رو از اینجا دریافت کنید.موفق باشید.
پاسخ:
سلام
tokenizer از نوع Scanner است که به رشته ی inputLine "وصل شده".
کارش اینه که به طور پبش فرض رشته رو از محل کاراکترهای سفید (whitespace) می شکند. البته می توان محل قطع را با متدی تغییر داد.
با متد next هر قطعه را که اصطلاحاً به آن token گویند بر می گرداند. اگر هنوز در رشته token دیگری باشد، hasNext مقدار true بر می گرداند.
برای اطلاعات بیشتر و دیدن چند مثال به
اینجا مراجعه کنید.
موفق باشید.
پاسخ:
سلام
در امتحان از هر آنچه سر کلاس گفته شده ممکن است سوال بیاد.
هم سوال مفهومی و هم پیاده سازی.
همان طور که اول ترم گفته شد اگر تمرین ها رو انجام داده باشید و مباحث رو فهمیده باشید، ان شاء الله پنج شنبه خوشحال از جلسه امتحان بیرون می روید.
موفق باشید.
پاسخ:
سلام
باشه، به شرط اینکه حواستون جمع باشه!
موفق باشید.
پاسخ:
سلام
جوابش رو هم گفتیم!
فراخوانی متد display کلاس Post در متد display زیرکلاس ها که با استفاده از دستور زیر انجام می شود.
()super.display
موفق باشید.
پاسخ:
سلام
اسلاید فصل 9 را از اینجا دریافت کنید.بله ان شاء الله.
موفق باشید.
پاسخ:
سلام
صبر کنید لطفاً
ان شاء الله به موقع اعلام می شود.
موفق باشید.
پاسخ:
سلام
کلاس abstract کلاسی است مثل Animal که خیلی کلی است. به همین دلیل جلسه قبل متد makeNoise آنرا خالی گذاشتیم.
ان شاء الله در فصل 10 به این مبحث می رسیم.
موفق باشید.
پاسخ:
سلام
درسته.
یک راه اینه که چند space پشت سر هم را تبدیل به یک space کنید و بعد split نمایید.
موفق باشید.
پاسخ:
سلام
خروجی برنامه درسته.
کارکرد متدهای مذکور را
اینجا ببینید.
موفق باشید.
پاسخ:
سلام ممنون
اشتباه کد این نیست که از autoboxing یا unboxing استفاده کرده است.
اشتباهش اینه که بدون ایجاد شی می خواد unboxش کنه. یعنی در واقع متد intVlaue رو روی integer (به طور ضمنی) اعمال کرده. و چون integer مقدارش null است منجر به exception می شود.
موفق باشید.
پاسخ:
سلام
همانطور که در API نوشته یک آرایه رو گرفته و یک لیست با عناصر اون آرایه بر می گرداند.
البته دقت شود اندازه لیستی که بر می گرداند ثابت است یعنی نمی توان چیزی به آن اضافه کرد.
موفق باشید.
پاسخ:
سلام ممنون
بله درسته.
با مراجعه به API می توان فهمید.
موفق باشید.
پاسخ:
سلام.
همه ی مباحثی که سر کلاس مطرح شده است.
موفق باشید.
پاسخ:
سلام
اسلاید فصل 8 رو از اینجا دریافت کنید.بله ان شاء الله.
موفق باشید.
پاسخ:
سلام
مطالعه شما جزئی بوده!
ابتدا یک کلاس به صورت زیر و با متد زیر (اسم متد مهم است) تعریف می کنیم.
public class MyDrawPanel extends JPanel{
public void paintComponent(Graphics g){
g.setColor(Color.red);
g.drawLine(10, 10, 100, 100);
}
}
سپس طبق کد زیر یک شی از کلاس بالا بر روی JFrame قرار می دهیم.
public static void main(String[] args) {
// TODO code application logic here
MyDrawPanel panel = new MyDrawPanel();
JFrame frame = new JFrame();
frame.getContentPane().add(panel);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
موفق باشید.
پاسخ:
سلام ممنون
درست نیست.
دیاگرام شی تصویری است از چگونگی ارتباط اشیاء با هم در یک لحظه از زمان.
در آن لحظه ی خاص از زمان فرض می شود هیچ متدی در حال اجرا نیست.
اگر رفتار یک متد و چگونگی تاثیر آن بر دیاگرام شی رو بخواهیم بدونیم، باید قبل و بعد از اجرای متد دیاگرام ها را رسم کرده و مقایسه کنیم.
مانند تمرینی که در این زمینه داده شد.
موفق باشید.
پاسخ:
سلام ممنون
برای این کار می توان از متد drawLine کلاس Graphics استفاده کرد.
برای اطلاعات بیشتر در مورد گرافیک به لینک زیر مراجعه کنید.
Lesson: Getting Started with Graphics
همچنین می توانید اسلایدهای غیر درس را در ftp ببینید.
موفق باشید.
پاسخ:
سلام
1- دستور return بدون مقدار برگشتی فقط در متدهایی که void هستند کاربرد دارد.
در متدهای غیر void باید جلوی return مقدار یا عبارتی از نوع متد نوشته شود.
2- این طور نیست.
به این دو نکته دقت کنید:
- دستور return آخرین دستوری است که در متد اجرا می شود.
-
در متد غیر void حتماً باید دستور return اجرا شود.
طبق اولین نکته اگر یک بار دستور return داخل بلاک if اجرا شود، اجرای متد تمام می شود و دیگر به return آخر نمی رسیم. یعنی در این حالت false بر نمی گرداند.
طبق نکته دوم اگر هیچ وقت شرط if درست (true) نگردد، دستور return در بلاک if اصلاً اجرا نمی شود. پس باید یک return آخر متد باشد.
کمپایلر همه ی حالات رو چک می کند. باید در هر حالت return ی برای اجرا وجود داشته باشد.
موفق باشید.
پاسخ:
سلام، سوال خوبیه!
متد isUnknown در کلاس Command است نه در CommandWord !
برای درک این متد باید
متد getCommand از کلاس Parser، متد getCommandWord از کلاس CommandWords
و سازنده ی کلاس command رو بررسی کنید.
در متد getCommand برای ساختن و برگرداندن command از دستور زیر استفاده
return new Command(commands.getCommandWord(word1), word2);
اولین
پارامتر سازنده ی کلاس Command از نوع شمارشی یعنی CommandWord است.
برای به دست آورد مقدار مناسب از متد getCommandWord کلاس CommandWords
استفاده شده است.
با بررسی این متد مشخص می شود در صورتی دستور معتبر نباشد این متد مقدار شمارشی UNKNOWN را بر می گرداند.
حال پاسخ سوال شما:
متد
isUnknown چک می کند آیا دستور معتبر است یا نه. برای این کار فیلد
commandWord رو که از نوع شمارشی است با CommandWord.UNKNOWN مقایسه می
کند.
نقش UNKNOWN هم که مشخص شد.
موفق باشید.
پاسخ:
سلام
لینک زیر رو مطالعه کنید.
اگر باز نیاز به توضیح داشتید بپرسید.
enumsموفق باشید.
پاسخ:
سلام ممنون
احتمالاً در یک متد static می خواستید به یک فیلد غیر استاتیک دسترسی داشته باشید که امکان پذیر نیست.
معمولاً این اتفاق زمانی می افتد که شما در متد main یک کلاس می خواهید با فیلدهای همان کلاس کار کنید.
اگر همینطور است، باید ابتدا در main یک شی از کلاس بسازید و سپس با آن شی کار کنید.
موفق باشید.
پاسخ:
سلام ممنون
دستور که نه ولی کدهایی برای این کار وجود دارد که احتمالاً در اسلایدهای داخل ftp باشد.
البته در این روش باید نت موسیقی مورد نظر را بدونید.
روش دیگر (و شاید بهتر) این است که از کلاس MusicPlayer پروژه ی music-organizer-v5 فصل 4 استفاده کنید.
موفق باشید.
پاسخ:
سلام ممنون
ArrayList یک List است. یعنی هر متدی که در List است در ArrayList هم هست.
فلسفه ی وجود List نیازمند یادگیری مبحث وراث و اینترفیس است که ان شاء الله در آینده نزدیک گفته می شود.
پس فعلاً هر جا List رو دیدید فرض کنید ArrayList است.
موفق باشید.
پاسخ:
سلام ممنون
بله.
برای رفع اشکال می تونید از ساعت 11 تا 12:30 مراجعه کنید.
موفق باشید.
پاسخ:
سلام
این هفته کلاس تشکیل نمی شود.
موفق باشید
پاسخ:
سلام
Zuul-better
تمرین اول از شما می خواد object diagram پروژه رو رسم کنید.
در تمرین دوم شما فرض کنید با دستور go به یک مکان جدید وارد شدید، حال دوباره object diagram رو رسم کنید.
موفق باشید.
پاسخ:
سلام ممنون
همانطور که سر کلاس گفته شد، شما فقط باید به فیلدها توجه کنید.
چون object diagram وضعیت یا state اشیاء رو در یک لحظه نشان می دهد.
موفق باشید
پاسخ:
سلام
برای دریافت اسلاید فصل 6 کتاب اینجا کلیک کنید.فراخوانی یک متد در متد دیگر کاری طبیعی و متداول است.
مثلاً شما در برنامه خودتون یک متد مثلاً به نام Test دارید که در آن یک شی از کلاس ArrayList می سازید و متد add آن را فراخوانی می کنید.
پس در متد Test متد add کلاس دیگر فراخوانی شده است.
امیدوارم که سوال شما را درست متوجه شده باشم.
موفق باشید
پاسخ:
سلام ممنون
بله.
چهارشنبه طرف صبح 9 به بعد در آزمایشگاه آقای دکتر حسن پور هستم.
می توانید مراجعه کنید.
موفق باشید.
پاسخ:
سلام
منظورتون از commander چیه؟
برای دیباگ می توانید حضوری مراجعه کنید.
موفق باشید.
پاسخ:
سلام، شما هم!
در زمانی مناسب در موردش بحث خواهد شد.
در حال حاضر هر تمرینی که انجام می دهید شما را در انجام پروژه کمک می کند.
موفق باشید.
پاسخ:
سلام
بله. از هر قسمت که سوال دارید.
موفق باشید.
سلام وقت به خیر
توی netbeans من وقتی میخوام وارد قسمت SOURCE بشم وارد نمیشه یعنی روی دستور (GO TO SOURCE (CTRL+SHIFT+B کلیک که میکنم وارد نمیشه
من به تازگی تیم نت بینرم رو عوض کردم متونه مشکل از اون قسمت باشه؟؟