yosof

کلاسabstrac:اگر می شود توضیه دهید لطفا کامل باشد و مفهوم ممنون.

yosof ۱۳۹۶/۰۴/۰۱ 88 زبان برنامه‌نویسی جاوا

کلاسabstrac:اگر می شود توضیه دهید لطفا کامل باشد و مفهوم ممنون.

پاسخ‌ها به این تاپیک
علی ورزشی
علی ورزشی
۱۳۹۶/۰۵/۱۷
سلام
اگه بخوایم یه مثال از این بخش ارایه بدیم در واقع مثالش میشه انسان . یعنی تو دنیای واقعی انسان یه کلاس Abstract هست . خب این یعنی چی حالا ؟ ببین کلا هر چیزی رو که شما از داری نمونه میسازی و خودش قادر به ارث بری نیست تو این حوزه قرار میگیره . وقتی شما وارد شرکتی میشید یا مثلا وارد محل کار یا هر جایی با انسان هایی در ارتباطی که یا مرد هستن یا زن . یعنی مثلا وقتی با کسی کاری داشته باشی میپرسی اقای رحیمی کیه و کجا می تونم پیداش کنم ... مسلما نمی پرسی انسان رحیمی کیه و ... که البته خیلی حال میده یه بار این کارو کنی :D
پس در واقعیت انسان یه مفهموم انتزاعی هست . چیزی که ما با نمونه هاش سروکار داریم نه با خودش . حالا این نمونه ها در واقع رفتار هایی رو از این کلاس میان به ارث میبرن . مثلا اقای رحیمی می تونه راه بره . غذا بخوره . بخنده . رانندگی کنه و خانم احمدی هم می تونه همه این کارو ها رو انجام بده ولی تو موقع موقع رانندگی با پارک دوبل مشکل داره . در واقع هم اون اقا و هم این خانم داستان ما شی هایی از کلاس انسان هستن که این قابلیت براشون هست که این متد های کلاس انسان رو به ارث ببرن در ثانی طبق میل خودشون پیاده سازی کنن و ثالثا حتی بهبودش بدن .

بزار یه مثال دیگه بزنم . مثلا فرض کن داری کانتر بازی می کنی و اسلحه ایی رو داری انتخاب می کنی . خب وقتی شروع می کنی به بازی و تیر اندازی در واقع با نمونه هایی از این کلاس اسلحه داری کار می کنی و ادم ها رو میکشی و امتیاز میگیری . اسلحه الان یه مفهوم هست که یه سری قابلیت ها داره . بهتره بگیم رفتار داره . حالا یه سری از این نمونه ها مثل کلت ها مثل شاتگان ها مثل اسناپیر اینا دارن این رفتار کلاس اسلحه رو در واقع با میل خودشون پیاده سازی می کنن . هر اسلجه ایی یه صدایی داره . یه قدرت تخریب داره یه ظرفیتی برای خشاباش داره . می تونه این قابلیت رو داشته باشه که مثلا دوربین دار باشه یا این که خشابش به نحوه خاصی داره عوض میشه . پس در واقع شما رفتار رو تو نمونه ها داری عوض می کنی و کلاس اسلحه تا ابد یه سری رفتار ثابت داره که بقیه دارن ازش نمونه سازی می کنن و مطابق با میل خودشون دارن پیاده سازی می کنن این رفتار ها رو . امیدوارم که رسونده باشم بطن قضیه رو . به نظرم هر چی مفاهیم رو بیارری تو دنیای بازی سازی خیلی قشنگ تر درک می کنی و خیلی قشنگ تر هم می تونی قسمت های مختلف یه پروژه رو تحلیل کنی . موفق و موید باشی دوست گلم .
علی ورزشی
علی ورزشی
۱۳۹۶/۰۵/۱۷
البته ببخشید یه چایی از صجبتم رو اشتباه گفتم . این که گفتم خودش قابل ارق بری نیست رو اشتباه گفتم . منظورم این بود که نمیشه ازش نمونه ساخت . بلکه از کسایی که دارن از این کلاس ارث بری میکنن نمونه سازی میشه و استفاده میشه . وگر نه میشه مثلا از چند تا Interface ارث بری کرد که مثلا هر Interface یه سری رفتار هایی مشابه و یکسانی هست هک بین موجودات مختلف ممکنه باشه . مثل حیوانات و انسان ها که تو بعضی از موارد حیوان ها توابع خودشون رو جوری پیاده سازی می کنن که برای بقیه یه نفعی داشته باشه و سعی کنن محترمانه با هم برخورد کنن .

در پاسخ به

محمدعلی بحرینی
محمدعلی بحرینی
۱۳۹۶/۰۵/۰۴
سلام و وقت بخیر کاربر گرامی، بنده به صورت کلی و مختصر برای شما توضیح میدم.
هدف تعریف یک کلاس abstract، فراهم کردن یه اینترفیس عمومی برای کلاس های مشتق از این کلاس هست.
به زبان ساده تر وقتی یک کلاس abstract تعریف میکنید، باقی کلاس هایی که از این کلاس ارث بری میکنند، حتما باید ساختار این کلاس رو درون خودشون پیاده سازی کنند.
یه جورایی مثل یه بخشنامه که در یک اداره، کارمندان را موظف میکنه در قالب خاصی کاری انجام بدن.
نکته ای که باید در نظر گرفت اینه که خود کلاس abstract پیاده سازی نداره، همون مثال بخشنامه رو در نظر بگیرید، خود بخشنامه کاری انجام نمیده و فقط کارمندان رو موظف میکنه که به شخل خاص و تعریف شده ای کارشون رو انجام بدن.