PDA

View Full Version : کلاس abstract چیست؟



vahidak64
یک شنبه 24 آذر 1392, 09:49 صبح
وقتی یک کلاس ابسترکت میشه چه اتفاقی میفته؟

rubiks.kde
یک شنبه 24 آذر 1392, 10:14 صبح
یک کلاس وقتی به صورت abstract تعریف بشه دیگه نمیشه ازش شی ساخت و تنها برای استفاده و مشتق در subclass استفاده میشه.
و توابعی هم که در درون اون به صورت abstract تعریف میشن ، تنها تعریف میشن و بدنه ندارند.ولی زمانی که که یک کلاس از کلاس abstract مشتق بشه اون توابع رو پیاده کنه

vahidak64
یک شنبه 24 آذر 1392, 10:31 صبح
یک کلاس وقتی به صورت abstract تعریف بشه دیگه نمیشه ازش شی ساخت و تنها برای استفاده و مشتق در subclass استفاده میشه.
و توابعی هم که در درون اون تعریف میشن به صورت abstract هستند و تنها تعریف میشن و بدنه ندارند.ولی زمانی که که یک کلاس از کلاس abstract مشتق بشه
باید اون توابع رو پیاده کنه

ممنون
حالا مسیله مهمتر اینه که این کار به چه دردی میخوره؟
تو فروم جاوا رفتم یه چیزایی خوندم ولی خیلی مفهوم نبود برام
ظاهرا مسیله خیلی مهم و پیچیده ای باید باشه قضیه ابسترکت و اینترفیس و وراثت چندگانه

rubiks.kde
یک شنبه 24 آذر 1392, 11:52 صبح
بله توی جاوا مفهوم هایی مثل ابسترک ، اینترفیس و ... برای پیاده سازی بهتر شی گرایی و Polymorphism مورد استفاده قرار میگیرن.
حالا هرکدوم میتونه به جای خود در طراحی برنامه مفید واقع بشه

spiderman200700
یک شنبه 24 آذر 1392, 21:52 عصر
و توابعی هم که در درون اون تعریف میشن به صورت abstract هستند و تنها تعریف میشن و بدنه ندارند.ولی زمانی که که یک کلاس از کلاس abstract مشتق بشه
باید اون توابع رو پیاده کنه
با احترام.
باید توجه داشت که تنها متدهایی از کلاس abstract الزام به پیاده سازی دارن که صریحا کلمه abstract در تعریف اون متد ذکر شده باشه.
در واقعه همین متد ها هم الزامی به پیاده سازی ندارن. یعنی میشه در subclass هم به صورت abstract ذکر بشن. البته به شرطی که subclass هم به صورت abstract تعریف شده باشه.
در ضمن کلاس abstract میتونه متد های ساده یا غیر abstract هم داشته باشه. همونطور که میدونید متد های غیر abstract باید بدنه داشته باشن و نیازی به پیاده سازی ندارن.
پس کلاس abstract هم میتونه متد هایی داشته باشه که باید پیاده سازی بشن هم متد هایی داشته باشه که لازم نباشه پیاده سازی بشن.

jafaripur
سه شنبه 26 آذر 1392, 03:28 صبح
یک کلاس وقتی به صورت abstract تعریف بشه دیگه نمیشه ازش شی ساخت و تنها برای استفاده و مشتق در subclass استفاده میشه.
و توابعی هم که در درون اون تعریف میشن به صورت abstract هستند و تنها تعریف میشن و بدنه ندارند.ولی زمانی که که یک کلاس از کلاس abstract مشتق بشه
باید اون توابع رو پیاده کنه

کلمه کلیدی Abstract برای کلاس برای جلوگیری از نمونه سازی هستش و فقط موقعی می شه ازش استفاده کرد که ازش ارث ببریم.
این فرمایش شما غلط می باشد که کلاس Abstract توابعش بدنه ندارد !
کلاس های Interface توابعش بدنه ندارد و فقط تعریف می شود برای الزام به تعریف توابع موجود در کلاس Interface در کلاسی که Implement می کنیم از کلاس Interface.

jafaripur
سه شنبه 26 آذر 1392, 03:32 صبح
ممنون
حالا مسیله مهمتر اینه که این کار به چه دردی میخوره؟
تو فروم جاوا رفتم یه چیزایی خوندم ولی خیلی مفهوم نبود برام
ظاهرا مسیله خیلی مهم و پیچیده ای باید باشه قضیه ابسترکت و اینترفیس و وراثت چندگانه

به درد برنامه نویسی شی گرا و طراجی الگو.
برنامه نویسی که به صورت فله ای برنامه بنویسه, برنامه نویس نیست...!
و این تکنیک ها به جاوا ربطی ندارد و در همه زبان های برنامه نویسی سطح بالا مثل C#, PHP, ... مطرح هستش.
نوشتن برنامه های بزرگ و حرفه ای حساب و کتاب داره و بدون این گونه تکنیک ها نه اینکه طراحی نمی شود ولی به سختی طراحی می شود که در آینده هم به مشکل برخورد خواهد کرد بنا به دلایلی!

rubiks.kde
سه شنبه 26 آذر 1392, 12:42 عصر
این فرمایش شما غلط می باشد که کلاس Abstract توابعش بدنه ندارد !

نه دوست عزیز توی کلاس های abstract ، توابعی که abstract تعریف میشن نیاز به پیاده سازی ندارن.

jafaripur
سه شنبه 26 آذر 1392, 13:42 عصر
نه دوست عزیز توی کلاس های abstract ، توابعی که abstract تعریف میشن نیاز به پیاده سازی ندارن.
بله توابع به این صورت می باشد.