تالار گفتمان مانشت
دومین سری ویدئوهای آموزشی جاوا - نسخه‌ی قابل چاپ

صفحه‌ها: ۱ ۲
RE: دومین سری ویدئوهای آموزشی جاوا از پروفکس - shamim_70 - 05 اسفند ۱۳۹۲ ۰۸:۳۱ ب.ظ

(۰۵ اسفند ۱۳۹۲ ۱۲:۴۹ ب.ظ)mohsen@profex.ir نوشته شده توسط:  
(05 اسفند ۱۳۹۲ ۱۲:۱۳ ب.ظ)shamim_70 نوشته شده توسط:  سلام دوباره

بازم تشکر ویژه از اقا محسن

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

اینجور که من متوجه شدم(البته شایدم اشتبا فهمیدم دیSmileکه interfaseدرواقع یک متد هست ک یک سری objectرو با دنیای بیرون مرتبط میکنه!درسته؟

حالا تو این مثال شما اشیا و متدهایی که تو کلاسmashinنوشته بودین در کلاسی که شامل متدinterfaseبود هم آوورده شده بود!!..این ی چیزی شبیه به ارث بری نیس؟؟بعد الان چ ارتباطی با خارج داره؟؟اینکه داره از همون متدا استفاده میکنه چیز جدید نیس!!Confused

با تشکر
سلام
ببینید Interface یک مفهوم کلی (عام) داره یعنی رابط
مثلا یک دکمه خاموش و روشن تلویزیون یک رابط است.
USB port کامپیوتر شما هم یک رابط است.
آبجکت شما هم می تواند از یک متد به عنوان رابط استفاده کند تا مقدار یک فیلد را تغییر دهد.
اما اینها همش بحث های مفهومی است.
حالا برویم سراغ پیاده سازی در زبان جاوا!
در زبان جاوا، ما یک کلاس داریم که می تواند فیلد و متدهایی داشته باشد.
یک Intrface هم داریم که فقط می تواند متدهای بدون بدنه داشته باشد (البته این تعریف بعدا کامل تر می شود!)
حالا ما می توانیم چند کلاس مختلف داشته باشیم که یک Interface را پیاده سازی (Implement) می کنند.
یعنی هر کدام از کلاس ها به شکل دلخواه خود متدهای Interface را پیاده سازی می کنند.
البته در ادامه آموزش ها بطور مفصل به بحث شئ گرایی می پردازیم
اما فقط این توضیح را دادم که این مفهوم را با بالایی اشتباه نگیرید.

(۰۵ اسفند ۱۳۹۲ ۱۲:۳۲ ب.ظ)Morris نوشته شده توسط:  با اجازه استاد عزیز، به این سوال پاسخ می دم چون مفاهیمش دست مثل دات نته (الان من اینجا در نقش TA ظاهر می شم Big Grin).
سلام
خیلی لطف می کنی جناب Morris که به دوستان کمک می کنی! Smile
ما هم خیلی مدل استاد و این حرف ها رو نداریم!
استاد به دکتر طوسیان شاندیز می گن!


ممنون اقا محسن و اقای morris.

ی سوال دیگه هم دارم:برای interfaseها بحث وراثت مطرح میشه؟؟؟؟اگه میشه چجوریه؟؟

تشکرHeart

RE: دومین سری ویدئوهای آموزشی جاوا از پروفکس - mohsen@profex.ir - 05 اسفند ۱۳۹۲ ۰۹:۱۹ ب.ظ

(۰۵ اسفند ۱۳۹۲ ۰۸:۳۱ ب.ظ)shamim_70 نوشته شده توسط:  ممنون اقا محسن و اقای morris.
ی سوال دیگه هم دارم:برای interfaseها بحث وراثت مطرح میشه؟؟؟؟اگه میشه چجوریه؟؟
تشکرHeart
سلام
بله Interface ها هم می توانند از هم ارث ببرند. دقیقا مثل کلاس هاست با کلمه extends،
و تمام متدهای Interface پدر به فرزند ارث می رسد.

دومین سری ویدئوهای آموزشی جاوا از پروفکس - radrad - 08 اسفند ۱۳۹۲ ۰۵:۴۷ ب.ظ

استاد مرسیییییییییSmile

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

تو قبلی با عینک مامان بزرگمم نگاه میکردم اصن نمیشد بفهمی کدی که نوشتین چیه RolleyesBig Grin

RE: دومین سری ویدئوهای آموزشی جاوا از پروفکس - shamim_70 - 10 اسفند ۱۳۹۲ ۰۹:۵۸ ب.ظ

سلام

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

subclassها می تونن به attributeها داخل کلاس اصلی دسترسی داشته باشن.حالا اگه این دسترسی مستقیم باشه هر وقت این attributeها تغییر کنن باید در subclassهم تغییراتی بدیم!..حالا من جایی شنیدم اگه این دسترسی رو غیر مستقیمش کن یعنی میان یک متد درکلاس اصلی تعریف میکنن تا این وابستگی غیر مستقیم بشه!!(حالا من نمفهمم اولا این متد دقیقا چجور کار میکنه؟؟چجوری تعریف میشه؟)


شما باااین روش کار کردین؟(ببخشین اگ نتونستم منظورم واضحتر بیان کنم اخه خودمم نمیدونم دقیق چیه..استادمون گفت)Big Grin

RE: دومین سری ویدئوهای آموزشی جاوا از پروفکس - mohsen@profex.ir - 11 اسفند ۱۳۹۲ ۱۰:۱۵ ق.ظ

(۱۰ اسفند ۱۳۹۲ ۰۹:۵۸ ب.ظ)shamim_70 نوشته شده توسط:  سلام
من ی سوال از ارث بری داشتم با اجازه:
subclassها می تونن به attributeها داخل کلاس اصلی دسترسی داشته باشن.حالا اگه این دسترسی مستقیم باشه هر وقت این attributeها تغییر کنن باید در subclassهم تغییراتی بدیم!..حالا من جایی شنیدم اگه این دسترسی رو غیر مستقیمش کن یعنی میان یک متد درکلاس اصلی تعریف میکنن تا این وابستگی غیر مستقیم بشه!!(حالا من نمفهمم اولا این متد دقیقا چجور کار میکنه؟؟چجوری تعریف میشه؟)
شما باااین روش کار کردین؟(ببخشین اگ نتونستم منظورم واضحتر بیان کنم اخه خودمم نمیدونم دقیق چیه..استادمون گفت)Big Grin
سلام
این کد را ببینید :
کد:
public class Shekl{
        private String rang = "Sabz";
        public String taghireRang (String rangeJadid){
            return this.rang = rangeJadid;
        }
    }
    public class Dayere extends Shekl{
        public String taghireBeRanghayeMojaz (String rangeJadid){
            if (rangeJadid == "Abi" || rangeJadid == "Zard")
                this.taghireRang(rangeJadid);
        }
    }
    public class Keshidan {
        public static void main(String[] args) {
            Dayere dayere = new Dayere();
            System.out.println(dayere.taghireBeRanghayeMojaz("Abi"));
        }
    }
هر کلاس را در یک فایل جداگانه قرار دهید.
این هم ایده ای است ولی باید ببینیم در کجا بدرد می خورد؟

دومین سری ویدئوهای آموزشی جاوا از پروفکس - shamim_70 - 11 اسفند ۱۳۹۲ ۱۰:۲۳ ق.ظ

(۱۰ اسفند ۱۳۹۲ ۰۹:۵۸ ب.ظ)shamim_70 نوشته شده توسط:  سلام

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

subclassها می تونن به attributeها داخل کلاس اصلی دسترسی داشته باشن.حالا اگه این دسترسی مستقیم باشه هر وقت این attributeها تغییر کنن باید در subclassهم تغییراتی بدیم!..حالا من جایی شنیدم اگه این دسترسی رو غیر مستقیمش کن یعنی میان یک متد درکلاس اصلی تعریف میکنن تا این وابستگی غیر مستقیم بشه!!(حالا من نمفهمم اولا این متد دقیقا چجور کار میکنه؟؟چجوری تعریف میشه؟)


شما باااین روش کار کردین؟(ببخشین اگ نتونستم منظورم واضحتر بیان کنم اخه خودمم نمیدونم دقیق چیه..استادمون گفت)Big Grin

من ی سوال دیگه هم دارمSadخیلی سوال میپرسماااااااادیSmile

برنامه ای ک واسه interfaseنوشتین منم نوشتمش...باید متدها تو کلاس Mashinروpublicتعریف کنیم؟؟چرا؟

چون اولش که واسه ی Mashinکلاس نوشتین متدها publicنبودن...بعد ک implementکه میکنیم خطا میده رو متدها..فهمیدم که شما publicگذاشتین!!

متد بدون publicبصورت پیش فرضprivateهست؟




یعنی اگر اون متد تغییر رنگ نباشه..نمیتونیم رنگ رو عوض کنیم بزاریم آبی؟؟

(بعد این الان از نظر کد نویسی درسته یا شبه کد نوشتین؟؟)میشه بیشتر توضیح بدین!(از نظر مفهومی فهمیدم چه اتفاقی می افته ولی از نظر کد نویسی درک نمیکنم)

RE: دومین سری ویدئوهای آموزشی جاوا از پروفکس - mohsen@profex.ir - 11 اسفند ۱۳۹۲ ۱۰:۴۷ ق.ظ

(۱۱ اسفند ۱۳۹۲ ۱۰:۲۳ ق.ظ)shamim_70 نوشته شده توسط:  من ی سوال دیگه هم دارمSadخیلی سوال میپرسماااااااادیSmile

برنامه ای ک واسه interfaseنوشتین منم نوشتمش...باید متدها تو کلاس Mashinروpublicتعریف کنیم؟؟چرا؟

چون اولش که واسه ی Mashinکلاس نوشتین متدها publicنبودن...بعد ک implementکه میکنیم خطا میده رو متدها..فهمیدم که شما publicگذاشتین!!

متد بدون publicبصورت پیش فرضprivateهست؟
بله متدهای کلاسی که یک Interface را Impelement می کند باید public باشد که در هر جایی قابل دسترسی باشد.
اگر هیچ چیزی ننویسیم، فقط در داخل همان package خودش قابل دسترسی است.

(۱۱ اسفند ۱۳۹۲ ۱۰:۱۵ ق.ظ)mohsen@profex.ir نوشته شده توسط:  یعنی اگر اون متد تغییر رنگ نباشه..نمیتونیم رنگ رو عوض کنیم بزاریم آبی؟؟

(بعد این الان از نظر کد نویسی درسته یا شبه کد نوشتین؟؟)میشه بیشتر توضیح بدین!(از نظر مفهومی فهمیدم چه اتفاقی می افته ولی از نظر کد نویسی درک نمیکنم)
چرا! من در کلاس دایره از دو روش استفده کردم دیگه!
یکی روش مقدار دهی مستقیم به فیلد رنگ
و دیگری مقداردهی از طریق متد تغییر رنگ.

دومین سری ویدئوهای آموزشی جاوا از پروفکس - shamim_70 - 11 اسفند ۱۳۹۲ ۱۱:۰۲ ق.ظ

(۱۱ اسفند ۱۳۹۲ ۱۰:۴۷ ق.ظ)mohsen@profex.ir نوشته شده توسط:  
(11 اسفند ۱۳۹۲ ۱۰:۲۳ ق.ظ)shamim_70 نوشته شده توسط:  من ی سوال دیگه هم دارمSadخیلی سوال میپرسماااااااادیSmile

برنامه ای ک واسه interfaseنوشتین منم نوشتمش...باید متدها تو کلاس Mashinروpublicتعریف کنیم؟؟چرا؟

چون اولش که واسه ی Mashinکلاس نوشتین متدها publicنبودن...بعد ک implementکه میکنیم خطا میده رو متدها..فهمیدم که شما publicگذاشتین!!

متد بدون publicبصورت پیش فرضprivateهست؟
بله متدهای کلاسی که یک Interface را Impelement می کند باید public باشد که در هر جایی قابل دسترسی باشد.
اگر هیچ چیزی ننویسیم، فقط در داخل همان package خودش قابل دسترسی است.

(۱۱ اسفند ۱۳۹۲ ۱۰:۱۵ ق.ظ)mohsen@profex.ir نوشته شده توسط:  یعنی اگر اون متد تغییر رنگ نباشه..نمیتونیم رنگ رو عوض کنیم بزاریم آبی؟؟

(بعد این الان از نظر کد نویسی درسته یا شبه کد نوشتین؟؟)میشه بیشتر توضیح بدین!(از نظر مفهومی فهمیدم چه اتفاقی می افته ولی از نظر کد نویسی درک نمیکنم)
چرا! من در کلاس دایره از دو روش استفده کردم دیگه!
یکی روش مقدار دهی مستقیم به فیلد رنگ
و دیگری مقداردهی از طریق متد تغییر رنگ.

من چنین چیزی تو برنامه می نویسم خطا میده!!

واسه مستقیم تو subclassمتغیر رنگو رو نمیشناسه!!..به طور مستقیم هم خطا میده!!میگه نمیشناسه!!

RE: دومین سری ویدئوهای آموزشی جاوا از پروفکس - mohsen@profex.ir - 11 اسفند ۱۳۹۲ ۱۱:۵۵ ق.ظ

(۱۱ اسفند ۱۳۹۲ ۱۱:۰۲ ق.ظ)shamim_70 نوشته شده توسط:  من چنین چیزی تو برنامه می نویسم خطا میده!!

واسه مستقیم تو subclassمتغیر رنگو رو نمیشناسه!!..به طور مستقیم هم خطا میده!!میگه نمیشناسه!!
کد بالا را اصلاح کردم ببینید.