PDA

View Full Version : تعریف متغیر اصولی تر



saed2006
پنج شنبه 12 فروردین 1389, 09:42 صبح
با سلام
در طول اجرای برنامه چند متد باید از یک arraylist استفاده کنند
حال برای اینکه arraylist رو پاس بدیم به متد مورد نظر بهتر هست که به عنوان پارامتر بفرستیم یا بهتره که arraylist رو یک متغیر عمومی در سطح کلاس تعریف کنیم و از ان استفاده کنیم
کدام بهتز و اصولی تر است؟

Salar Ashgi
پنج شنبه 12 فروردین 1389, 11:18 صبح
فکر کنم اونقدر دلیل منطقی وجود داره که ما کمتر از Array List استفاده کرده و بیشتر از Generic ها استفاده

کنیم .

ولی خوب اگه میخواین تو حالتی که گفتین ، استفاده کنین ، بهتره بعنوان یک Data Member کلاس تون

تعریف کنین .

موفق باشید .

اَرژنگ
شنبه 14 فروردین 1389, 04:53 صبح
با سلام
در طول اجرای برنامه چند متد باید از یک arraylist استفاده کنند
حال برای اینکه arraylist رو پاس بدیم به متد مورد نظر بهتر هست که به عنوان پارامتر بفرستیم یا بهتره که arraylist رو یک متغیر عمومی در سطح کلاس تعریف کنیم و از ان استفاده کنیم
کدام بهتز و اصولی تر است؟
قبل از اینکه به جواب اینکه کدام روش بهتر است باید اول در زمینه درست سوال را مطرح کنیم:
۱. استفاده از array list لیست و یا کلاسهایه ژنریک سوال اصلی در این زمینه نیست،
۲.هر کلاسی وظیفه‌هایه بخصوصی را در خودش نگه میدارد، متاسفانه روشهایه رایج اشتباه این هستند که هر چی متد را که لازم است بریزند در یک کلاس و یک کلاس خدا (God Class) ایجاد کنند و از هر جایه برنامه این متدها را فراخوانی کنند
روش درست این است که به جایه اینکه به array list تمرکز کنید، به مفهومی که لازم است تمرکز و الوویت داده بشه، بعد از اینکه این مفهوم را در یک کلاس مورد نظر پیاده کنید array list و یا هر چیزی دیگری را به شکل private استفاده میکنید.
اشکال سوالی که بیان شد این بود که روش َاصولی را برایه پیاده‌ریزی یک طرز تفکر اشتباه پرسیده بود. باید سوال را به این شکل مطرح کنید :
برایه پیاده ریزی مفهوم X و استفاده‌اش در سطح برنامه احتیاج به استفاده از یک Y
(array list) هست، حالا این Y را در داخل این کلاس به چه شکل (پرایوت، پاس دادنی، پابلیک)استفاده کنم؟
لطفاً X, Y را در پاراگراف بالا با مختصات سوالتان جایگزینی کنید و بفرستید.

saed2006
شنبه 14 فروردین 1389, 08:50 صبح
برایه پیاده ریزی مفهوم X و استفاده‌اش در سطح برنامه احتیاج به استفاده از یک Y
(array list) هست، حالا این Y را در داخل این کلاس به چه شکل (پرایوت، پاس دادنی، پابلیک)استفاده کنم؟

اَرژنگ
شنبه 14 فروردین 1389, 10:33 صبح
برایه پیاده ریزی مفهوم X و استفاده‌اش در سطح برنامه احتیاج به استفاده از یک Y
(array list) هست، حالا این Y را در داخل این کلاس به چه شکل (پرایوت، پاس دادنی، پابلیک)استفاده کنم؟

بر اصل انکپسولیشن، تا جایی که ممکن است دید اشیایه داخلی در یک کلاس باید از خارج از آن کلاس محدود باشد.
حالا در داخل اون کلاس میتوانید با پرایوی و یا پروتکتت پیاده‌اش کنید، اگر احتیاجی است که کلاسهایه مشتق از این کلاس پیاده‌سازی بشند و نحوه کارشان به اشیا در این کلاس پدر لزوم دارد از پروتکتت استفاده کنید، و گرنه اگر کلاسی از ایون کلاس ارث بری نمیکنه و احتیاجی به اشیا درون این کلاس ندارد پرایوت استفاده کنید.
برایه مشخص بودن جهت عملیات در کلاس از پاس دادن استفاده کنید، داشتن یک متغییر در یک کلاس معمولا باید از پرایوت شروع بشد، اگر احتیاج بود به پروتکتت و پابلیک ارتقا داده میشه.
به شکل خلاصه :
پاس دادن متغییر به فهمیدن پله‌هایه مربوط به انجام عملیات را صراحتاً اعلان میکند، و معمولاً اصولیتر است ولی :
در برنامه‌نویسی شیگرا از کلاسها برایه جمع نگهداشتن پیاده‌کردن مفاهیم استفاده میشه. در کلاسها متغییرها برایه استفاده داخلی استفاده میشند و فقط برایه استفاده خارجی از پروپرتی و یا متدهایه پابلیک استفاده میشه.
به شکل کلی، از پابلیک کردن متغییرها بپرهیزید.

Saber_Fatholahi
شنبه 14 فروردین 1389, 15:50 عصر
دوست عزیز به عنوان پارامتر پاس بده چون آدرس آرایه کپی می شه نه خودش پس سرباری نداره
موفق باشی

اَرژنگ
سه شنبه 17 فروردین 1389, 05:45 صبح
دوست عزیز به عنوان پارامتر پاس بده چون آدرس آرایه کپی می شه نه خودش پس سرباری نداره
موفق باشی

داخل یک کلاس استفاده به شکل تعریف متغییر خصوصی در سطح کلاس آرایه را کپی میکنه؟