PDA

View Full Version : سوال: معایب متدهای استاتیک چیه ؟



man_iran
سه شنبه 17 شهریور 1388, 11:53 صبح
اگر تمام متدهای برنامه را استاتیک معرفی کنیم به برنامه ضرر میرسونه ؟
اصلا معایت متد ایتاتیک چیه ؟ (فضای حافظه - سرعت و...)
وقتی یه متدی د کلاس داریم بهتره استاتیک باشه یا پابلیک ؟

SMRAH1
سه شنبه 17 شهریور 1388, 11:59 صبح
سلام

در واقع متد استاتیک،یکی از قابلیت هایی است که در برنامه نویسی شی گرا وجود دارد.سئوال شما در مورد فضا،سرعت ،اصلا موضوعیت نداره.در واقع با آشنایی با برنامه نویسی شی گرا (که با استفاده از اصول آن می توان برنامه هایی با توزیع پذیری - استفاده چند باره - و همچنین تقسیم کار مناسب و ... تولید کرد) و استفاده مناسب هر قابلیت،شما را برای رسیدن به هدفتان یاری می کند.
در مورد آخرین نکته هم یاد آور می شود که یک متد می تواند هم Public باشد و هم Static .

موفق باشید

man_iran
سه شنبه 17 شهریور 1388, 12:14 عصر
مطالب شما کاملا درستند ولی کسی به من گفته بود که بهتره کمتر از استاتیک استفاده کنی حالا علت! نمی دونم!
می خواستم ببینم آیا چنین گفته ای درست است ؟

alireza_tavakol
سه شنبه 17 شهریور 1388, 12:25 عصر
اگر همه اصول شی گرا را رعایت کنی هیچ وقت نمی تونی همه متد ها رو استاتیک تعریف نکی ولی اگه همه متد های یک کلاس رو استاتیک تعریف کردی منطقا" باید کلاس رو استاتیک بکنی و در نظر داشته باش که کلاس استاتیک نمی تونه از هیچ کلاسی ارث بری داشته باشه و همچنین هیچ کلاسی ازش مشتق نمی شه

ولی به نظر تا اونجایی که ممکنه باید متد های کلاس رو استاتیک تعریف کرد چون متد های استاتیک OverHead کمتری داره و باعث صرفه جویی در حافظه نیز میشود

در بعضی موارد باید متد استاتیک تعریف شود تا بتوان بین همه اشیا نمونه سازی شده هماهنگی به وجود آورد

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

موفق باشید

vcldeveloper
سه شنبه 17 شهریور 1388, 14:21 عصر
کسی به من گفته بود که بهتره کمتر از استاتیک استفاده کنی حالا علت! نمی دونم!

علتش اینه که برای افرادی که با اصول شی گرایی چندان آشنا نیستند، static میتونه راه فراری باشه تا برنامه ایی ظاهرا شی گرا، و باطنا procedural بنویسند.

یک متد static متدی هست که بجای آنکه در فضای اختصاص داده شده به یک نمونه شی نگهداری شود، و روی آن شی خاص کاری انجام دهد، در فضای اختصاص داده شده به یک کلاس نگهداری می شود، و بر روی کلاس، یا نمونه شی های ساخته شده از آن کار انجام می دهد.
یک متد static به خصوصیان شی دسترسی نداره، و برای آن this تعریف نشده. این عمده محدودیت static هست.

alireza_tavakol
سه شنبه 17 شهریور 1388, 14:31 عصر
ولی به نظر من یکی از معایبی که وجود داره و من هنوز هم به دلیل قانع کننده اش پی نبردم اینکه : چرا یک کلاس static نمی تونه از کلاس های Static دیگه ارث بردی داشته باشه!:متفکر: