dars 6
صفحه 1 از 1
dars 6
درس بیست سوم
متدهای کلاس
متدهای کلاس نیز مانند متغیرهای کلاس، روشی هستند برای ایجاد کارکردهایی که با کل یک کلاس در ارتباطند، نه با شیء خاص از آن کلاس.
اگر متدی یک شیء خاص از کلاس را تحت تاثیر قرار ندهد، باید به صورت متد کلاس تعریف شود .مانند متد parseInt() از کلاس Integer . این متد برای تبدیل یک رشته به متغییری از نوع int به کار می رود مانند:
Int time=integer.parsInt(timetext);
برای تبدیل یک متد به متد کلاس، قبل از نام آن از static استفاده کنید ، مانند زیر :
Static void showVirusCount() {
System.out.println(“there are”+virusCount+”viruses.”);
}
متد showVirusCount( ) یک متد کلاس است که مقدار این متغییر را نمایش می دهد و باید آن را توسط جمله ای به صورت زیر فراخوانی کنید:
Virus. showVirusCount( );
درس بیست چهارم
حوزه دید متغیرها درون یک متد
وقتی یک متغیر یا شیء را درون یکی از متدهای یک کلاس ایجاد می کنید، فقط درون همان متد می توانید از آن استفاده کنید. علت این امر، مفهومی است به نام حوزه دید متغیر (variable scope) .
حوزه دید ، بخشی از برنامه است که یک متغیر در آن وجود دارد. با خروج از این بخش ، دیگر نمی توان از آن متغییر استفاده کرد.
محدوده یک متغیر در برنامه با علائم { و } تعریف می شود. متغیری که بین این دو علامت ایجاد شده ، خارج از آنها نمی تواند مورد استفاده قرار گیرد .برای مثال جملات زیر را در نظر بگیرید:
If (numfile<1) {
String warning=”no files remaining.”;
}
system.out.println(warning);
این مثال عملکرد صحیحی نخواهد داشت، چرا که متغیر warning درون آکلادهای مربوط به جمله بلوک if تعریف شده است که حوزه دید آن را مشخص می سازند. این متغیر خارج از آکلادها وجود ندارد و لذا متد system.out.println( ) نمی تواند از آن به عنوان یک آرگومان استفاده کند.
درس بیست پنجم
قرار دادن یک کلاس درون کلاس دیگر
اگر چه هر برنامه جاوا معمولاً به عنوان یک کلاس در نظر گرفته می شود، در بسیاری از موارد ، یک برنامه ممکن است برای انجام کار خود به بیش از یک کلاس احتیاج داشته باشد. برنامه های جند کلاسه (multiclass) از یک کلاس اصلی و چندین کلاس کمکی (helper class) تشکیل می یابند.
به عنوان مثال می توان یک اپلت جاوا را در نظر گرفت که در بخشی از رابط کاربر گرافیکی خود، عنوان متحرکی را نمایش می دهد.
برای تعریف کلاسهای کمکی در برنامه ای که به چندین کلاس تقسیم شده است، دو روش وجود دارد ، روش اول آن است که هر کلاس به صورا جداگانه تعریف می شود، مانند:
Public class wreakHavoc {
String author=”Ignoto”;
Public void infectfile( ) {
virusCode vic=new virusCode(1024);
}
}
class virusCode {
int vsize;
virusCode(int size) {
vsize=size;
}
}
در این مثال virusCode به عنوان یک کلاس کمکی برای wreakHavoc به کار رفته است . کلاسهای کمکی اغلب در همان فایل مبدا .java که کلاس اصلی در آن واقع است ، تعریف می شوند. با کامپایل کردن این فایل مبدا، چندین فایل کلاس تولید خواهد شد .
روش دیگر برای تعریف کلاسهای کمکی آن است که آنها را درون کلاس اصلی قرار دهیم . در این حالت، کلاس کمکی یک کلاس درونی (inner class) نامیده می شود.
کلاس درونی ، بین آکلاد باز و بسته یک کلاس دیگر تعریف می شود، مانند:
Public class wreakMoreHavoc {
String author=”Ignoto”;
Public void infectFile( ) {
virusCode vic=new virusCode(1024);
}
class virusCode {
int vsize;
virusCode(int size) {
vsize=size;
}
}
}
کلاسهای درونی را می توان مشابه سایر کلاسهای کمکی مورد استفاده قرار داد. تنها اختلاف آن است که کلاسهای درونی پس از کامپایل شدن، نام جدیدی دریافت می کنند که شامل نام کلاس اصلی آنها نیز می باشد
درس بیست ششم
استفاده از کلمه کلیدی this
با توجه به اینکه درون یک کلاس می توان به متغییرها ومتدهای همان کلاس و کلاسهای دیگر رجوع کرد، در برخی شرایط متغیری که به آن رجوع می شود، ممکن است باعث ابهام وسردرگمی شود. یک روش برای کاستن از این گونه ابهامات ، استفاده از جمله this می باشد. با استفاده از این جمله، یک برنامه می تواند به شیء مربوط به خود رجوع کند.
هنگام استفاده از متدها یا متغیرهای یک شیء شما نام آن شیء را همراه بایک علامت نقطه، پیش از نام متد یا متغیر قرار می دهید.
مثال:
Virus chichenpox=new Virus( );
Chichenpox.name=”LoveHandles”;
Chichenpox.setSeconds(75);
جملات فوق یک شیء جدید Virus به نام chickenpox ایجاد کرده ، متغیر name از chickenpox را مقداردهی می کنند و سپس متد setSeconds( ) از chickenpox را فرامی خوانند .
گاهی در یک برنامه لازم است که به شیء جاری یا به عبارت دیگر، به شیء مربوط به خود برنامه رجوع کنید.
برای مثال ، درون کلاس Virus ممکن است متدی داشته باشیم که دارای متغیری به نام author باشد :
Void public checkAuthor( ) {
String athor=null;
}
متغیر author فقط در حوزه دید متد checkAuthor( ) وجود دارد و با متغیر شیء author متفاوت است . اگر بخواهید درون این متد به متغیر author از شیء جاری رجوع کنید، ناچار به استفاده از جمله this خواهید بود :
system.out.println(this.author);
با استفاده از this مشخص می کنید که به کدام متغیر یا متد رجوع کرده اید هر جایی از یک کلاس که امکان رجوع به یک شیء توسط نام آن وجود داشته باشد، می توانید از this استفاده کنید . می توانید از جمله به شکل زیر استفاده کنید :
verifyData(this);
درس بیست هفتم
به ارث بردن رفتارها و خصوصیات
رفتارها و خصوصیات هر کلاس ، ترکیبی هستند از دو چیز : رفتارها و خصوصیات خود آن کلاس و رفتارها و خصوصیاتی که از کلاسهای ارشد خود به ارث می برد.
برخی از رفتارها و خصوصیات Applet از این قرارند:
متدequals( ) معین می کند که آیا شیء Applet دارای مقداری برابر با شیء دیگر هست یا نه .
متد setBackground( ) رنگ زمینه پنجره اپلت را تنظیم می کند .
متد add( ) برای افزودن عناصر رابط کاربر از قبیل دکمه ها و فیلدهای متنی به اپلت به کار می رود.
متد showStatus( ) سطری از متن را درون نوار وضعیت مرورگر وب نمایش می دهد.
کلاس Applet می تواند از کلیه این متدها استفاده کند، گرچه تنها متدی که از کلاسهای دیگر به ارث نبرده showStatus( ) است . متد equals( ) در Object ، متد SetBackground( ) در Component( ) و متد add( ) در Container تعریف شده است .
درس بیست هشتم
دوباره نویسی متدها
برخی از متدهای تعریف شده در کلاس Applet، در یکی از کلاسهای ارشد آن نیز تعریف شده اند. مثلاً متد resize( ) هم در کلاس Applet وهم در کلاس Component تعریف شده است . این متد برای تغییر اندازه یک عنصر روی یک رابط کاربر گرافیکی به کار می رود. اگر متدی هم در زیرکلاس و هم در کلاس ارشد آن تعریف شده باشد، متد تعریف شده در زیرکلاس، مورد استفاده قرار می گیرد. این امر ، زیرکلاس را قادر می سازد که برخی از رفتارها و خصوصیات کلاسهای ارشد خود را تغییر دهد، جایگزین کند و یا به کلی از بین ببرد.
ایجاد یک متد جدید در یک زیر کلاس، به منظور تغییر رفتار به ارث برده شده از یک کلاس ارشد را دوباره نویسی (overriding) متد می نامند. در مواردی که رفتار به ارث برده شده، ممکن است منجر به نتایج نامطلوب شود، باید متد مربوطه را دوباره نویسی کنید.
درس بیست نهم
برقراری ارث بری
برای قرار دادن یک کلاس به عنوان زیرکلاس کلاسی دیگر، از جمله extends استفاده می کنیم. مانند :
Class Animatedlogo extends java.applet.JApplet {
// behavior and attributes go here
}
در اینجا جمله extends ،کلاس AnimatedLogo را به عنوان زیر کلاس Japplet قرار می دهد. کلیه اپلتهای جاوا 2 باید زیرکلاسی از Japplet باشند، چرا که برای اجرا روی وب جهانی به کارکرد این کلاس نیازمندند.
برای دوباره نویسی یک متد، باید آن را به همان شکلی که در کلاس ارشد مربوطه آغاز می گردد، آغاز کنید . یک متد public بایدpublic باقی بماند، مقدار بازگردانده شده توسط متد باید یکسان باشد و تعداد و نوع آرگومانهای ارسالی به متد نیز نباید تغییر یابد.
درس سی ام
استفاده از this و super در یک زیر کلاس
دو کلمه کلیدی بسیار مفید جهت استفاده در زیرکلاسها عبارتند از this و super . کلمه کلیدی this برای رجوع به شی ء جاری به کار می رود .هنگامی که کلاسی ایجاد می کنید و ناچار به رجوع به شی ء خاصی از این کلاس هستید می توانید از this استفاده کنید ، مانند جمله زیر :
This.title=”Cagney”;
این جمله متغییر title از این شی ء را برابر Cagney قرار می دهد.
کلمه کلیدی super نیز کاربرد مشابهی دارد و به کلاس ارشد مستقیم آن شی ء رجوع می نماید. Super را می توان به چندین روش مورد استفاده قرار داد :
برای رجوع به یک متد سازنده از کلاس ارشد ، مانند super(“Adam”,12) .
برای رجوع به متغییری از کلاس ارشد، مانند super.Hawaii=50 .
برای رجوع به یک متد از کلاس ارشد ، مانند super.dragNet() .
یکی از کاربردهای کلمه کلیدی super در متد سازنده ، مربوط به یک زیر کلاس می باشد . از آنجایی که هر زیرکلاس کلیه رفتارها و خصوصیات کلاس ارشد خود را به ارث می برد ، شما باید هر متد سازنده از زیر کلاس را با یک متد سازنده از کلاس ارشد آن همراه کنید . در غیر اینصورت برخی از رفتارها و خصوصیات به درستی تنظیم نخواهد شد و زیر کلاس عملکرد صحیحی نخواهد داشت .
جهت حصول اطمینان از فراخوانی متد سازنده کلاس ارشد ، باید این متد را در اولین جمله از سازنه زیر کلاس فرا خوانی کنید و برای این منظور باید از کلمه کلیدی super استفاده کنید ، مانند جملات زیر :
Publiv ReadFile(String name,int length){
Super(name,length);
}
مثال فوق ، متد سازنده ای است از یک زیر کلاس که با استفاده از super(name,lenth) متد سازنده متناظر از ارشد خود را فرا می خواند.
متدهای کلاس
متدهای کلاس نیز مانند متغیرهای کلاس، روشی هستند برای ایجاد کارکردهایی که با کل یک کلاس در ارتباطند، نه با شیء خاص از آن کلاس.
اگر متدی یک شیء خاص از کلاس را تحت تاثیر قرار ندهد، باید به صورت متد کلاس تعریف شود .مانند متد parseInt() از کلاس Integer . این متد برای تبدیل یک رشته به متغییری از نوع int به کار می رود مانند:
Int time=integer.parsInt(timetext);
برای تبدیل یک متد به متد کلاس، قبل از نام آن از static استفاده کنید ، مانند زیر :
Static void showVirusCount() {
System.out.println(“there are”+virusCount+”viruses.”);
}
متد showVirusCount( ) یک متد کلاس است که مقدار این متغییر را نمایش می دهد و باید آن را توسط جمله ای به صورت زیر فراخوانی کنید:
Virus. showVirusCount( );
درس بیست چهارم
حوزه دید متغیرها درون یک متد
وقتی یک متغیر یا شیء را درون یکی از متدهای یک کلاس ایجاد می کنید، فقط درون همان متد می توانید از آن استفاده کنید. علت این امر، مفهومی است به نام حوزه دید متغیر (variable scope) .
حوزه دید ، بخشی از برنامه است که یک متغیر در آن وجود دارد. با خروج از این بخش ، دیگر نمی توان از آن متغییر استفاده کرد.
محدوده یک متغیر در برنامه با علائم { و } تعریف می شود. متغیری که بین این دو علامت ایجاد شده ، خارج از آنها نمی تواند مورد استفاده قرار گیرد .برای مثال جملات زیر را در نظر بگیرید:
If (numfile<1) {
String warning=”no files remaining.”;
}
system.out.println(warning);
این مثال عملکرد صحیحی نخواهد داشت، چرا که متغیر warning درون آکلادهای مربوط به جمله بلوک if تعریف شده است که حوزه دید آن را مشخص می سازند. این متغیر خارج از آکلادها وجود ندارد و لذا متد system.out.println( ) نمی تواند از آن به عنوان یک آرگومان استفاده کند.
درس بیست پنجم
قرار دادن یک کلاس درون کلاس دیگر
اگر چه هر برنامه جاوا معمولاً به عنوان یک کلاس در نظر گرفته می شود، در بسیاری از موارد ، یک برنامه ممکن است برای انجام کار خود به بیش از یک کلاس احتیاج داشته باشد. برنامه های جند کلاسه (multiclass) از یک کلاس اصلی و چندین کلاس کمکی (helper class) تشکیل می یابند.
به عنوان مثال می توان یک اپلت جاوا را در نظر گرفت که در بخشی از رابط کاربر گرافیکی خود، عنوان متحرکی را نمایش می دهد.
برای تعریف کلاسهای کمکی در برنامه ای که به چندین کلاس تقسیم شده است، دو روش وجود دارد ، روش اول آن است که هر کلاس به صورا جداگانه تعریف می شود، مانند:
Public class wreakHavoc {
String author=”Ignoto”;
Public void infectfile( ) {
virusCode vic=new virusCode(1024);
}
}
class virusCode {
int vsize;
virusCode(int size) {
vsize=size;
}
}
در این مثال virusCode به عنوان یک کلاس کمکی برای wreakHavoc به کار رفته است . کلاسهای کمکی اغلب در همان فایل مبدا .java که کلاس اصلی در آن واقع است ، تعریف می شوند. با کامپایل کردن این فایل مبدا، چندین فایل کلاس تولید خواهد شد .
روش دیگر برای تعریف کلاسهای کمکی آن است که آنها را درون کلاس اصلی قرار دهیم . در این حالت، کلاس کمکی یک کلاس درونی (inner class) نامیده می شود.
کلاس درونی ، بین آکلاد باز و بسته یک کلاس دیگر تعریف می شود، مانند:
Public class wreakMoreHavoc {
String author=”Ignoto”;
Public void infectFile( ) {
virusCode vic=new virusCode(1024);
}
class virusCode {
int vsize;
virusCode(int size) {
vsize=size;
}
}
}
کلاسهای درونی را می توان مشابه سایر کلاسهای کمکی مورد استفاده قرار داد. تنها اختلاف آن است که کلاسهای درونی پس از کامپایل شدن، نام جدیدی دریافت می کنند که شامل نام کلاس اصلی آنها نیز می باشد
درس بیست ششم
استفاده از کلمه کلیدی this
با توجه به اینکه درون یک کلاس می توان به متغییرها ومتدهای همان کلاس و کلاسهای دیگر رجوع کرد، در برخی شرایط متغیری که به آن رجوع می شود، ممکن است باعث ابهام وسردرگمی شود. یک روش برای کاستن از این گونه ابهامات ، استفاده از جمله this می باشد. با استفاده از این جمله، یک برنامه می تواند به شیء مربوط به خود رجوع کند.
هنگام استفاده از متدها یا متغیرهای یک شیء شما نام آن شیء را همراه بایک علامت نقطه، پیش از نام متد یا متغیر قرار می دهید.
مثال:
Virus chichenpox=new Virus( );
Chichenpox.name=”LoveHandles”;
Chichenpox.setSeconds(75);
جملات فوق یک شیء جدید Virus به نام chickenpox ایجاد کرده ، متغیر name از chickenpox را مقداردهی می کنند و سپس متد setSeconds( ) از chickenpox را فرامی خوانند .
گاهی در یک برنامه لازم است که به شیء جاری یا به عبارت دیگر، به شیء مربوط به خود برنامه رجوع کنید.
برای مثال ، درون کلاس Virus ممکن است متدی داشته باشیم که دارای متغیری به نام author باشد :
Void public checkAuthor( ) {
String athor=null;
}
متغیر author فقط در حوزه دید متد checkAuthor( ) وجود دارد و با متغیر شیء author متفاوت است . اگر بخواهید درون این متد به متغیر author از شیء جاری رجوع کنید، ناچار به استفاده از جمله this خواهید بود :
system.out.println(this.author);
با استفاده از this مشخص می کنید که به کدام متغیر یا متد رجوع کرده اید هر جایی از یک کلاس که امکان رجوع به یک شیء توسط نام آن وجود داشته باشد، می توانید از this استفاده کنید . می توانید از جمله به شکل زیر استفاده کنید :
verifyData(this);
درس بیست هفتم
به ارث بردن رفتارها و خصوصیات
رفتارها و خصوصیات هر کلاس ، ترکیبی هستند از دو چیز : رفتارها و خصوصیات خود آن کلاس و رفتارها و خصوصیاتی که از کلاسهای ارشد خود به ارث می برد.
برخی از رفتارها و خصوصیات Applet از این قرارند:
متدequals( ) معین می کند که آیا شیء Applet دارای مقداری برابر با شیء دیگر هست یا نه .
متد setBackground( ) رنگ زمینه پنجره اپلت را تنظیم می کند .
متد add( ) برای افزودن عناصر رابط کاربر از قبیل دکمه ها و فیلدهای متنی به اپلت به کار می رود.
متد showStatus( ) سطری از متن را درون نوار وضعیت مرورگر وب نمایش می دهد.
کلاس Applet می تواند از کلیه این متدها استفاده کند، گرچه تنها متدی که از کلاسهای دیگر به ارث نبرده showStatus( ) است . متد equals( ) در Object ، متد SetBackground( ) در Component( ) و متد add( ) در Container تعریف شده است .
درس بیست هشتم
دوباره نویسی متدها
برخی از متدهای تعریف شده در کلاس Applet، در یکی از کلاسهای ارشد آن نیز تعریف شده اند. مثلاً متد resize( ) هم در کلاس Applet وهم در کلاس Component تعریف شده است . این متد برای تغییر اندازه یک عنصر روی یک رابط کاربر گرافیکی به کار می رود. اگر متدی هم در زیرکلاس و هم در کلاس ارشد آن تعریف شده باشد، متد تعریف شده در زیرکلاس، مورد استفاده قرار می گیرد. این امر ، زیرکلاس را قادر می سازد که برخی از رفتارها و خصوصیات کلاسهای ارشد خود را تغییر دهد، جایگزین کند و یا به کلی از بین ببرد.
ایجاد یک متد جدید در یک زیر کلاس، به منظور تغییر رفتار به ارث برده شده از یک کلاس ارشد را دوباره نویسی (overriding) متد می نامند. در مواردی که رفتار به ارث برده شده، ممکن است منجر به نتایج نامطلوب شود، باید متد مربوطه را دوباره نویسی کنید.
درس بیست نهم
برقراری ارث بری
برای قرار دادن یک کلاس به عنوان زیرکلاس کلاسی دیگر، از جمله extends استفاده می کنیم. مانند :
Class Animatedlogo extends java.applet.JApplet {
// behavior and attributes go here
}
در اینجا جمله extends ،کلاس AnimatedLogo را به عنوان زیر کلاس Japplet قرار می دهد. کلیه اپلتهای جاوا 2 باید زیرکلاسی از Japplet باشند، چرا که برای اجرا روی وب جهانی به کارکرد این کلاس نیازمندند.
برای دوباره نویسی یک متد، باید آن را به همان شکلی که در کلاس ارشد مربوطه آغاز می گردد، آغاز کنید . یک متد public بایدpublic باقی بماند، مقدار بازگردانده شده توسط متد باید یکسان باشد و تعداد و نوع آرگومانهای ارسالی به متد نیز نباید تغییر یابد.
درس سی ام
استفاده از this و super در یک زیر کلاس
دو کلمه کلیدی بسیار مفید جهت استفاده در زیرکلاسها عبارتند از this و super . کلمه کلیدی this برای رجوع به شی ء جاری به کار می رود .هنگامی که کلاسی ایجاد می کنید و ناچار به رجوع به شی ء خاصی از این کلاس هستید می توانید از this استفاده کنید ، مانند جمله زیر :
This.title=”Cagney”;
این جمله متغییر title از این شی ء را برابر Cagney قرار می دهد.
کلمه کلیدی super نیز کاربرد مشابهی دارد و به کلاس ارشد مستقیم آن شی ء رجوع می نماید. Super را می توان به چندین روش مورد استفاده قرار داد :
برای رجوع به یک متد سازنده از کلاس ارشد ، مانند super(“Adam”,12) .
برای رجوع به متغییری از کلاس ارشد، مانند super.Hawaii=50 .
برای رجوع به یک متد از کلاس ارشد ، مانند super.dragNet() .
یکی از کاربردهای کلمه کلیدی super در متد سازنده ، مربوط به یک زیر کلاس می باشد . از آنجایی که هر زیرکلاس کلیه رفتارها و خصوصیات کلاس ارشد خود را به ارث می برد ، شما باید هر متد سازنده از زیر کلاس را با یک متد سازنده از کلاس ارشد آن همراه کنید . در غیر اینصورت برخی از رفتارها و خصوصیات به درستی تنظیم نخواهد شد و زیر کلاس عملکرد صحیحی نخواهد داشت .
جهت حصول اطمینان از فراخوانی متد سازنده کلاس ارشد ، باید این متد را در اولین جمله از سازنه زیر کلاس فرا خوانی کنید و برای این منظور باید از کلمه کلیدی super استفاده کنید ، مانند جملات زیر :
Publiv ReadFile(String name,int length){
Super(name,length);
}
مثال فوق ، متد سازنده ای است از یک زیر کلاس که با استفاده از super(name,lenth) متد سازنده متناظر از ارشد خود را فرا می خواند.
صفحه 1 از 1
صلاحيات هذا المنتدى:
شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد