www.itiran.4umer.com
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

dars 4

اذهب الى الأسفل

dars 4 Empty dars 4

پست  Admin الأحد نوفمبر 18, 2007 6:50 am

درس هفدهم

ایجاد متغییرها

خصوصیات یک شیء مشخص کننده کایه متغییرهایی هستند که این شیء برای عملکرد خود بدانها نیازمند است . این متغییرها می توانند انواع داده ای ساده ای از قبیل String یا Graphics باشند.متغییرهای یک شیء را در تمامی برنامه مربوط به آن ، یعنی در تمامی متدهای آن شیء، می توان مورد استفاده قرار داد. این متغییرها بلافاصله پس از جمله class مربوط به شیء و قبل از کلیه متدهای آن تعریف می شوند.

یکی از چیزهای مورد نیاز برای یک شیءVirus ، روشی است برای دانستن اینکه آیا یک فایل قبلاً آلوده شده است یا نه . برخی از ویروسهای کامپیوتری برای این منظور، محتویات فیلدی از فایل را که زمان آخرین تغییر آن فایل را نگهداری می کند، تغییر می دهند.

برای مثال یک ویروس ممکن است زمان فوق را از 13:41:20 به 13:41:61 تغییر می دهد . از آنجایی که هیچ فایلی در شرایط عادی در ثانیه 61 تغییر نمی یابد ، این زمان می تواند تعیین کننده آلودگی فایل باشد .

شیء Virus فیلد ثانیه از زمان تغییر فایل را به عدد 86 تغییر می دهد(علت انتخاب این عدد ، اصطلاح عامیانه ای است در زبان انگلیسی که در آن ، این عدد به معنای دور انداختن و طرد کردن به کار می رود). این مقدار در یک متغییر صحیح به نام newSeconds ذخیره خواهد شد.

جملات زیر ، تعریف کلاس به نام Virus را با یک خصوصیت به نام newSeconds و دو خصوصیت دیگر آغاز می کنند :



Public class Virus {

Public int newSeconds = 86;

Public String author = “Sam Snett”;

Int maxFileSize = 30000;

هر سه متغییر newSeconds و maxFileSize و author جزو خصوصیات این کلاس می باشند . قرار دادن جملاتی مانند public را در معرفی یک متغییر ، کنترل دسترسی (access control) می نامیم . چرا که این جملات چگونگی دسترسی سایر کلاسها به این متغییر را مشخص می سازند .

متغییر newSeconds دارای مقدار اولیه 86 است و جمله ای که آن را ایجاد می کند ، با public شروع می شود . public کردن به این معنا است که هر برنامه ای که از اشیای Virus استفاده می کند، می تواند این متغییر را تغییر دهد . مثلاً اگر عدد 92 برای این برنامه حائز اهمیت باشد ، می تواند مقدار newSeconds را به این عدد تغییر دهد. فرض کنید که برنامه ای یک شی Virus به نام influenza ایجاد کند. این برنامه می تواند مقدار متغییر newSeconds این شیء را توسط جمله زیر تنظیم کند :



influenza.newSeconds=92;

در کلاس Virus، متغییر author نیز public است و لذا برنامه های دیگر می توانند آزادانه مقدار آن را تغییر دهند. لیکن متغییر maxFileSize تنها در درون خود این کلاس قابل استفاده است .

با public کردن یک متغییر از یک کلاس ، این کلاس کنترل خود را روی چگونگی استفاده از آن متغییر، توسط برنامه های دیگر از دست می دهد. در بسیاری از موارد ، این امر مساله خاصی ایجاد نخواهد کرد. برای مثال ، متغییر author می تواند مساوی هر نام یا لقبی که مو لف ویروس را مشخص کند ، قرار گیرد.

محدود کردن دسترسی به یک متغییر باعث جلوگیری از خطاهایی می شود که ممکن است در اثر تخصیص مقادیر نادرست به آن متغییر رخ دهد. در مورد کلاس Virus، اگر متغییر newSeconds برابر عدد 60 یا عددی کوچکتر از آن قرار داده شود ، دیگر این کلاس به طور صحیح قادر به تعیین آلودگی فایلها نخواهد بود ، چرا که برخی از فایلها که بدون دخالت ویروس ، در همان ثانیه تغییر یافته اند ، از نظر این کلاس به عنوان فایلهای آلوده شناسایی خواهند شد . اگر کلاس Virus بخواهد از این مساله اجتناب کند، باید دو عمل زیر انجام پذیرد :

· متغییر newSeconds را از حالت public به حالت protected یا private تبدیل کنید. این جملات دسترسی به متغییر را محدودتر می سازند.

· رفتارهای لازم را برای تغییر مقدار این متغییر و گزارش کردن مقدار آن به دیگر برنامه ها به ابن کلاس بیفزایید.

یک متغییر protected فقط توسط خود کلاس ، کلیه زیر کلاسهای آن و کلیه کلاسهای موجود در همان بسته (package) قابل استفاده می باشد، بسته گروهی از کلاسهای مرتبط است که هدف مشترک را تعقیب می کنند.

یک متغییر private از نظر دسترسی، حتی از متغییر protected نیز محدودتر است و فقط توسط خود کلاس قابل استفاده می باشد . بهتر است که متغییر ها را عموماً به صورت protected یا private تعریف کنید . مگر در مواردی که بدانید تغییر یک متغییر توسط برنامه های دیگر، خللی به عملکرد کلاس مربوطه وارد نخواهد کرد .

جمله زیر newSecond را به یک متغییر private تبدیل می کند:

private int newSeconds=86;

نوع دیگری از کنترل دسترسی نیز وجود دارد که عبارت است از عدم استفاده از هیچ یک از جملات public,private,protected هنگام ایجاد متغییر .

وقتی یک متغییر بدون استفاده از جملات کنترل دسترسی را اغلب دسترسی پیش فرض(default access) یا دسترسی بسته (package access) می نامند ، هر چند جمله خاصی برای آن در نظر گرفته نشده است .




درس هیجدهم

ایجاد متغیرهای کلاس

هر شیء به محض ایجاد ، شامل یک کپی مخصوص به خود ، از کلیه متغییرهایی است که بخشی از کلاس مربوط به آن شیء می باشند. به عنوان مثال ، هر شیء ایجاد شده از کلاس Virus شامل نسخهای مربوط به خود ، از متغییرهای newSeconds,maxFileSize,author می باشد . اگر یکی از این متغییرها را در یک شی ء تغییر دهید، تاثیری روی همان متغییر از شیء Virus دیگر نخواهد داشت .

گاهی یک خصوصیت بیش از آنکه مربوط به یک شیء خاص باشد، مربوط به خود کلاس است.

متغییرهایی که تاکنون برای اشیاء ایجاد می کردیم متغییرهای شیء (object variables) نامیده می شوند، چرا که وابسته به یک شیء خاص می باشند . متغییرهای کلاس(class variables) ، متغییرهایی هستند که وابسته اند به یک کلاس از اشیا و نه به یک شیء خاص .

هر دو نوع این متغیرها به یک شکل ایجاد می شوند و مورد استفاده قرار می گیرند ، با این تفاوت که متغییرهای کلاس با استفاده از جمله static ایجاد می شوند. مثال زیر ، یک متغیر کلاس را برای کلاس Virus ایجاد می کند :



Static int virusCount=0;



نحوه تغییر مقدار یک متغییر کلاس ، تفاوتی با چگونگی تغییر یک متغیر شیء ندارد. اگر یک شیء Virus به نام tuberculosis داشته باشید ، می توانید کلاس virusCount را با استفاده از جمله زیر تغییر دهید:



Tuberculosis.virusCount++;



ولی از آنجایی که متغیرهای کلاس با کل کلاس ارتباط دارند و نه به یک شیء خاص، می توانید به جای نام شیء ، از نام کلاس استفاده کنید :



Virus.virusCount++;



هر دو جمله فوق عمل یکسانی انجام می دهند، لیکن استفاده از نام کلاس ، هنگام کار با متغیرهای کلاس بهتر است ، چرا که بلافاصله مشخص می کند که متغیر مورد نظر ، یک شیء نیست ، بلکه یک متغیر کلاس است . اگر هنگام کار با متغیرهای کلاس ، همواره از اسامی اشیا استفاده کنید، فهمیدن اینکه آیا یک متغیر کلاس است یا نه ، بدون بررسی دقیق کد مربوط به کلاس ، امکان پذیر نخواهد بود .


درس نوزدهم

ایجاد رفتار با استفاده از متدها

خصوصیات هر کلاس، نگاهدارنده اطلاعات مربوط به آن کلاس می باشند، لیکن درعمل ، قادر به انجام هیچ کاری نیستند . برای اینکه یک کلاس بتواند کارهایی را که برای انجام آنها به وجود آمده ، انجام دهد ،باید رفتار لازم را برایش ایجاد کنید .

رفتار عبارت است از کلیه بخشهایی از یک کلاس که وظیفه معینی را انجام می دهند. هر یک از این بخشها را یک متد(method) می نامیم.

متدها نیز مانند متغییرها، در ارتباط با یک شیء یا یک کلاس به کار می روند. به نام متد، همراه با یک نقطه به دنبال نام شیء یا کلاس قرار می گیرد. مانند screen.drowString() یا Integer.parselnt() .




درس بیستم


معرفی یک متد

جمله ای که متدها توسط آن ایجاد می شوند، شبیه جمله ای است که یک کلاس را آغاز می کند. هر دو بین پرانتزهایی که پس از نامشان قرار می گیرد، قادر به دریافت آرگومان بوده ، هر دو از علائم { و } برای مشخص کردن شروع و پایان خود استفاده می کنند .

تفاوت اصلی آن است که متدها قادر به بازگرداندن یک مقدار می باشند . این مقدار می تواند یکی از انواع ساده، مانند اعداد صحیح یا مقادیر Boolean و یا یک کلاس می باشد. برای تعریف متدی که مقداری را برنمی گرداند، از جمله void استفاده می کنیم .

نمونه زیر ، مثالی است از متدی که کلاس Virus می تواند برای آلوده کردن فایلها از آن استفاده کند:

Public Boolean intectFile(string filename) {

Boolean success = false;

// file-infecting statements would be here

return success;

}



متد infectFile( ) برای افزودن ویروس به یک فایل به کار می رود . این متد فقط یک آرگومان می گیرد که متغیری است از نوع رشته به نام filename و مشخص کننده فایلی است که باید مورد حمله قرار گیرد .

affraid
Admin
Admin
Admin

تعداد پستها : 63
Registration date : 2007-11-08

https://itiran.4umer.com

بازگشت به بالاي صفحه اذهب الى الأسفل

بازگشت به بالاي صفحه

- مواضيع مماثلة
» 1 dars
» dars 2
» dars 3
» dars 5
» dars 6

 
صلاحيات هذا المنتدى:
شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد