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

در اين بخش مي‌توانيد در مباحث مربوط به برنامه نويسي جاوا به بحث بپردازيد

مدیران انجمن: athlon64x2, abbas.m.k, شوراي نظارت

ارسال پست
Rookie Poster
Rookie Poster
پست: 42
تاریخ عضویت: چهار شنبه 17 آذر 1389, 1:03 pm
سپاس‌های ارسالی: 49 بار
سپاس‌های دریافتی: 15 بار

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

پست توسط stronomy » یک شنبه 27 آذر 1390, 10:00 am

سلام دوستان تصویر

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

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

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

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

Major I
Major I
پست: 235
تاریخ عضویت: یک شنبه 25 بهمن 1388, 5:06 am
سپاس‌های ارسالی: 977 بار
سپاس‌های دریافتی: 988 بار

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

پست توسط HS368 » یک شنبه 27 آذر 1390, 12:22 pm

کلمه 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 ارجاع داده بشه و در صورت استفاده از اون با ارور کمپایلر مواجه میشید.
خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی

Rookie Poster
Rookie Poster
پست: 42
تاریخ عضویت: چهار شنبه 17 آذر 1389, 1:03 pm
سپاس‌های ارسالی: 49 بار
سپاس‌های دریافتی: 15 بار

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

پست توسط stronomy » یک شنبه 27 آذر 1390, 2:02 pm

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

Major I
Major I
پست: 235
تاریخ عضویت: یک شنبه 25 بهمن 1388, 5:06 am
سپاس‌های ارسالی: 977 بار
سپاس‌های دریافتی: 988 بار

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

پست توسط HS368 » یک شنبه 27 آذر 1390, 8:24 pm

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]
خوشبختی ما در سه جمله است ... تجربه از دیروز , استفاده از امروز , امید به فردا ... ولی ما با سه جمله دیگر زندگی مان را تباه میکنیم حسرت دیروز , اتلاف امروز , ترس از فردا ... دکتر علی شریعتی

ارسال پست

بازگشت به “Java Programming”