صفحه 1 از 1

کمک برای درک بعضی مفاهیم

ارسال شده: یک‌شنبه ۲۷ آذر ۱۳۹۰, ۱۰:۰۰ ق.ظ
توسط stronomy
سلام دوستان تصویر

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

کلمه static ، چرا در بعضی توابع از این کلمه استفاده می کند و در بعضی نه ؟ چه موقع باید این کلمه را در برنامه نویسی بکار ببریم ؟

کلمه void ؟ میشه گفت که اگه تابعی این کلمه را دارد یعنی مقدار برگشتی ندارد و فقط آن تابع برای انجام یکسری عملیات محاسبه بکار میرود ؟

ممنون میشم اگه من رو در این ضمینه کمک کنید .

Re: کمک برای درک بعضی مفاهیم

ارسال شده: یک‌شنبه ۲۷ آذر ۱۳۹۰, ۱۲:۲۲ ب.ظ
توسط HS368
کلمه void یعنی تابع خروجی نداره مثل زبان c و میشه معادل procedure در زبان دلفی یا پاسکال.

اما در مورد static:
ما دو تا روش برای ایجاد تابع یا متغیر در class داریم.
1- Instance methods :
وقتی یه متغیر جدید تعریف میکنی و کلاس مورد نظر خودتو از طریق دستور new توی اون ایجاد میکنی در حقیقت یه کلاس با instance جدید برای اون متغیر تعریف کردی. یعنی یه رشته از حافظه که به اندازه حجم اطلاعات اون کلاس مورد نظر هست allocate میشه و متغیرهای اختصاصی اون کلاس مقدار دهی اولیه میشند. آدرس ابتدایی این رشته حافظه میشه همون instance کلاس جدید.
بذار مثال بزنم واست. یه سری توابع هستند که به هم ربط دارند مثلا یه کلاس stream که برای خوندن فایل هست رو در نظر بگیر، یه تابع میاد اسم فایل رو میگیره و اونو باز میکنه و یه تابع دیگه میاد محتوای اونو در اختیارت میذاره، بنابراین این توابع باید حافظه هایی(همون متغیر) داشته باشند که هر دو بهش دسترسی داشته باشند (مثل اسم فایل). از طرفی ممکنه در آن واحد بخوای 4 تا فایل رو باز کنی و همزمان هم بخونی، اگه این حافظه از یک مکان باشند با هم تداخل ایجاد میکنند. برای رفع مشکل از روش instance استفاده میشه. یعنی هر کلاس جدید اطلاعات مربوط به خودشو در instance جدید ذخیره میکنه و با فراخوان توابع اون کلاس، توابع به متغیر های مربوط به instance کلاس خود دسترسی پیدا میکنند.
2- Static methods :
این توایع یا متغیر ها نیازی به instance ندارند و فقط یه بار اون هم زمان بالا اومدن فایل اجرایی allocate میشند و در کل برنامه یه مکان حافظه در اختیار دارند یعنی مقدار متغیر static در همه جای برنامه یکی هست. قابل پاک کردن از حافظه نیستند. به محض این که کلاس مورد نظرتو import کنی حافظه مورد نظر برای متغیرهای static ایجاد میشه. بدون ایجاد object جدید برای کلاس مورد نظر قابل دسترسی هست و نیازی به ایجاد object جدید نیست. توابع static هم نمیتونند از متغیرها و توابع instance استفاده کنند و حتما باید از static استفاده کنند. تابع static نمیتونه به this یا super ارجاع داده بشه و در صورت استفاده از اون با ارور کمپایلر مواجه میشید.

Re: کمک برای درک بعضی مفاهیم

ارسال شده: یک‌شنبه ۲۷ آذر ۱۳۹۰, ۲:۰۲ ب.ظ
توسط stronomy
توضیحاتتون کامل بود ولی اگه لطف کنید یه مثال بزنید برام ( کد کوچولو ) ممنون میشم در واقع تفاوت حالتی که استاتیک داره با حالتی که نداره .

Re: کمک برای درک بعضی مفاهیم

ارسال شده: یک‌شنبه ۲۷ آذر ۱۳۹۰, ۸:۲۴ ب.ظ
توسط HS368
[External Link Removed for Guests]