صفحه 5 از 5 نخستنخست 12345
نمایش نتایج: از شماره 41 تا 44 , از مجموع 44

موضوع: Java

  1. #41
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180
    سپاس ها
    19
    سپاس شده 582 در 473 پست

    Post do-while

    گفتيم اگر عبارت شرطي كنترل كننده يك حلقه while در ابتدا ناصحيح باشد آنگاه بدنه حلقه اصلا" اجرا نمي شود . اما گاهي مايليم در چنين شرايطي ، بدنه حلقه حداقل يكبار اجرا شود . بعبارت ديگر، در حالات خاصي مايليد تا عبارت پايان دهنده در انتهاي حلقه را آزمايش كنيد. خوشبختانه ، جاوا حلقه اي را عرضه مي كند
    كه دقيقا" همين كار را انجام مي دهد : do-while . حلقه do-while همواره حداقل يكبار بدنه خود را اجرا مي كند، زيرا عبارت شرطي آن در انتهاي حلقه قرار گرفته است . شكل كلي آن بصورت زير است :

    do{
    // body of loop
    } while(condition);

    هر تكرار از حلقه do-while ابتدا بدنه حلقه را اجرا نموده ، سپس به ارزيابي عبارت شرطي خود مي پردازد . اگر اين عبارت صحيح (true) باشد ، حلقه اجرا خواهد شد . در غير اينصورت حلقه پايان مي گيرد . نظير كليه حلقه هاي جاوا ، شرط بايد يك عبارت بولي باشد .
    اينجا يك روايت ديگر از برنامه (tick) وجود دارد كه حلقه do-while را نشان مي دهد . خروجي اين برنامه مشابه برنامه قبلي خواهد بود :

    + // Demonstrate the do-while loop.
    + class DoWhile {
    + public static void main(String args[] ){
    + int n = 10;
    +
    + do {
    + System.out.println("tick" + n);
    + n--;
    + } while(n > 0);
    + }
    + }

    حلقه موجود در برنامه قبلي ، اگر چه از نظر تكنيكي صحيح است ، اما مي توان آن را به شكل كاراتري بصورت زير دوباره نويسي نمود :

    + do {
    + System.out.println("tick " + n);
    + } while--(n > 0);

    در اين مثال ، عبارت (0>n) عمل كاهش n و آزمايش براي صفر را در يك عبارت گنجانده است . عملكرد آن بقرار بعدي است . ابتدا دستور n اجرا مي شود و n را كاهش داده و مقدار جديد را به n برمي گرداند . اين مقدار سپس با صفر مقايسه مي شود . اگر بزرگتر از صفر باشد ، حلقه ادامه مي يابد . در غير اينصورت حلقه
    پايان مي گيرد .

    حلقه do-while بويژه هنگام پردازش انتخاب منو بسيار سودمند است ، زيرا معمولا" مايليد تا بدنه يك حلقه منو حداقل يكبار اجرا شود . برنامه بعدي را كه يك سيستم Help ساده را براي دستورات تكرار و انتخاب در جاوا پياده سازي مي كند در نظر بگيريد :

    + // Using a do-while to process a menu selection -- a simple help system.
    + class Menu {
    + public static void main(String args[])
    + throws java.io.IOException {
    + char choice;
    +
    + do {
    + System.out.prinln("Help on:");
    + System.out.prinln(" 1 .if");
    + System.out.prinln(" 2 .switch");
    + System.out.prinln(" 3 .while");
    + System.out.prinln(" 4 .do-while");
    + System.out.prinln(" 5 .for\n");
    + System.out.prinln("Choose one:");
    + choice =( char )System.in.read)(;
    + } while(choice < '1' || choice > '5');
    +
    + System.out.println("\n");
    + switch(choice ){
    + case '1':
    + System.out.println("The if:\n");
    + System.out.println("if(condition )statement;");
    + System.out.println("else statement;");
    + break;
    + case '2':
    +
    + System.out.println("The switch:\n");
    + System.out.println("switch(expression ){");
    + System.out.println(" case constant:");
    + System.out.println(" statement sequence");
    + System.out.println(" break;");
    + System.out.println(" //... ");
    + System.out.println("}");
    + break;
    + case '3':
    + System.out.println("The switch:\n");
    + System.out.println(while(condition )statement;");
    + break;
    + case '4':
    + System.out.println("The do-while:\n");
    + System.out.println("do {");
    + System.out.println(" statement;");
    + System.out.println("} while( condition);");
    + break;
    + case '5':
    + System.out.println("The for:\n");
    + System.out.print("for(init; condition; iteration)");
    + System.out.println(" statement;");
    + break;
    + }
    + }
    + }

    اكنون يك اجراي نمونه توليد شده توسط اين برنامه را مشاهده مي كنيد :

    Help on:
    1 .if
    2 .switch
    3 .while
    4 .do-while
    5 .for
    Choos one:
    4

    The do-while:

    do {
    statement;
    } while( condition);

    در برنامه ، از حلقه do-while براي تصديق اينكه كاربر يك گزينه معتبر را وارد كرده باشد ، استفاده مي شود . در غير اينصورت ، به كاربر مجددا" اعلان خواهد شد . از آنجاييكه منو بايد حداقل يكبار بنمايش درآيد ، do-while حلقه
    كاملي براي انجام اين مقصود است .

    چند نكته ديگر درباره اين مثال : دقت كنيد كه كاراكترهااز صفحه كليد بوسيله فراخواني ()system.in.read خوانده مي شوند . اين يكي از توابع ورودي كنسول در جاوا است .

    اگر چه بررسي تفصيلي روشهاي l/o جاوا به بحثهاي بعدي موكول شده ، اما از ()system.in.read در اينجا براي بدست آوردن گزينه كاربر استفاده شده است . اين تابع كاراكترها را از ورودي استاندارد مي خواند ( كه بعنوان عدد صحيح برگردان شد ، اين دليلي است كه چرا مقدار برگردان از طريق تبديل (cast) به char تبديل شده است ). بصورت پيش فرض ، ورودي استاندارد، بافر شده خطي است (line buffered) بنابراين قبل از اينكه كاراكترهايي را كه تايپ كرده ايد به برنامه اتان ارسال كنيد ، بايد كليد ENTER را فشار دهيد . ( اين حالت مشابه C++/C است و احتمالا" از قبل با آن آشنايي داريد ) .

    ورودي كنسول در جاوا كاملا" محدود شده و كار با آن بسيار مشكل است . بعلاوه اكثر برنامه و ريز برنامه هاي واقعي نوشته شده با جاوا گرافيكي و پنجره اي هستند. از سوي ديگر : چون از ()system.in.read استفاده شده ، برنامه بايد جمله throwsjava.io.loException را كاملا" توصيف نمايد . اين خط براي مديريت خطاهاي ورودي ضروري است . اين بخشي از جنبه هاي مختلف اداره استثنائ در جاوا است كه بعدا" بررسي خواهد شد .

    خواهيد ديد كه حلقه for يك ساختار قدرتمند و بسيار روان است .شكل كلي دستور for
    بصورت زير است :

    for(initialization; condition; iteration; ){
    // body
    }

    اگر فقط يك دستور بايد تكرار شود ، نيازي به ابروها نيست .
    عملكرد حلقه for بشرح بعدي است . وقتي كه حلقه براي اولين بار شروع مي شود بخض مقدار دهي اوليه در حلقه اجرا مي شود . معمولا" ، اين بخش يك عبارت است كه مقدار متغير كنترل حلقه را تعيين مي كند ، كه بعنوان يك شمارشگر ، كنترل حلقه را انجام خواهد داد . مهم است بدانيم كه عبارت مقدار دهي اوليه فقط يكبار اجرا مي شود . سپس شرط مورد ارزيابي قرار مي گيرد . اين شرط بايد يك عبارت بولي باشد . اين بخش معمولا" مقدار متغير كنترل حلقه را با مقدار هدف مقايسه مي كند.

    اگر عبارت صحيح (true) باشد، آنگاه بدنه حلقه اجرا خواهد شد . اگر ناصحيح باشد حلقه پايان مي گيرد . بعد، بخش تكرار (iteration) حلقه اجرا مي شود . اين بخش معمولا" عبارتي است كه مقدار متغير كنترل را افزايش يا كاهش مي دهد. آنگاه حلقه تكرار خواهد شد ، ابتدا عبارت شرطي را ارزيابي مي كند ، سپس بدنه حلقه را اجرا
    مي كند و سرانجام عبارت تكرار را در هر گذر (pass) اجرا ميكند. اين روال آنقدر دادمه مي يابد تا عبارت شرطي ناصحيح (false) گردد .

    در زير روايت جديدي از برنامه "tick" را مي بينيد كه از يك حلقه for استفاده
    كرده است :

    + // Demonstrate the for loop.
    + class ForTick {
    + public static void main(String args[] ){
    + int n;
    + for(n=10; n>0; n)--
    + System.out.println("tick" + n);
    + }
    + }

    اعلان متغيرهاي كنترل حلقه داخل حلقه for
    غالبا" متغيري كه يك حلقه for را كنترل مي كند ، فقط براي همان حلقه مورد نياز بوده و كاربري ديگري ندارد . در چنين حالتي ، مي توان آن متغير را داخل بخش مقدار دهي اوليه حلقه for اعلان نمود . بعنوان مثال در اينجا همان برنامه قبلي را مشاهده مي كنيد كه متغير كنترل حلقه يعني n بعنوان يك int در داخل حلقه for اعلان شده است .

    + // Declare a loop control variable inside the for.
    + class ForTick {
    + public static void main(String args[] ){
    +
    + // here/ n is declared inside of the for loop
    + for(int n=10; n>0; n)--
    + System.out.println("tick" + n);
    + }
    + }

    هنگاميكه يك متغير را داخل يك حلقه for اعلان مي كنيد ، يك نكته مهم را بايد بياد داشته باشيد : قلمرو آن متغير هنگاميكه دستور for انجام مي شود ، پايان مي يابد . ( يعني قلمرو متغير محدود به حلقه for است . ) خارج از حلقه for حيات آن متغير متوقف مي شود . اگر بخواهيد از اين متغير كنترل حلقه در جاي ديگري از برنامه اتان استفاده كنيد ، نبايد آن متغير را داخل حلقه for اعلان نماييد .

    درشرايطي كه متغير كنترل حلقه جاي ديگري موردنياز نباشد، اكثر برنامه نويسان جاوا آن متغير را داخل for اعلان مي كنند . بعنوان مثال ، در اينجا يك برنامه ساده را مشاهده مي كنيد كه بدنبال اعداد اول مي گردد. دقت كنيد كه متغير كنترل حلقه ، چون جاي ديگري مورد نياز نيست ، داخل for اعلان شده است .

    + // Test for primes.
    + class FindPrime {
    + public static void main(String args[] ){
    + int num;
    + boolean isPrime = true;
    +
    + num = 14;
    + for(int i=2; i < num/2; i++ ){
    + if((num % i )== 0 ){
    + isPrime = false;
    + break;
    + }
    + }
    + if(isPrime )System.out.println("Prime");
    + else System.out.println("Not Prime");
    + }
    + }

  2. #42
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180
    سپاس ها
    19
    سپاس شده 582 در 473 پست

    Post استفاده از كاما Comma

    استفاده از كاما Comma
    شرايطي پيش مي آيد كه مايليد بيش از يك دستور در بخش مقدار دهي اوليه (initalization) و تكرار (iteration) بگنجانيد . بعنوان مثال ، حلقه موجود در برنامه بعدي را در نظر بگيريد :

    + class Sample {
    + public static void main(String args[] ){
    + int a/ b;
    +
    + b = 4;
    + for(a=1; a
    + System.out.println("a = " + a);
    + System.out.println("b = " + b);
    + b--;
    + }
    + }
    + }

    همانطوريكه مي بينيد ، حلقه توسط ارتباط متقابل دو متغير كنترل مي شود . از آنجاييكه حلقه توسط دو متغير اداره مي شود ، بجاي اينكه b را بصورت دستي اداره كنيم ، بهتر است تا هر دو را در دستور for بگنجانيم . خوشبختانه جاوا راهي براي اينكار دارد . براي اينكه دو يا چند متغير بتوانند يك حلقه for را كنترل كنند ، جاوا به شما امكان مي دهد تا چندين دستور را در بخشهاي مقدار دهي اوليه و تكرار حلقه for قرار دهيد . هر دستور را بوسيله يك كاما از دستور بعدي جدا مي كنيم . حلقه for قبلي را با استفاده از كاما ، خيلي كاراتر از قبل مي توان بصورت
    زير كد بندي نمود :

    + // Using the comma.
    + class Comma {
    + public static void main(String args[] ){
    + int a/ b;
    +
    + for(a=1/ b=4; a
    + System.out.println("a = " + a);
    + System.out.println("b = " + b);
    + }
    + }
    + }

    در اين مثال ، بخش مقدار دهي اوليه ، مقادير aو bو را تعيين مي كند . هربار كه حلقه تكرار مي شود ، دو دستور جدا شده توسط كاما در بخش تكرار (itration) اجرا خواهند شد . خروجي اين برنامه بقرار زير مي باشد :

    a=1
    b=4
    a=2
    b=3

    نكته : اگر با C++/C آشنايي داريد ، حتما" مي دانيد كه در اين زبانها ، علامت كاما يك عملگر است كه در هر عبارت معتبري قابل استفاده است . اما در جاوا اينطور نيست . در جاوا ، علامت كاما يك جدا كننده است كه فقط در حلقه for قابل اعمال مي باشد .

    برخي گوناگونيهاي حلقه for
    حلقه for از تعدادي گوناگونيها پشتيباني مي كند كه قدرت و كاربري آن را افزايش مي دهند . دليل انعطاف پذيري آن است كه لزومي ندارد كه سه بخش مقداردهي اوليه ، آزمون شرط و تكرار ، فقط براي همان اهداف مورد استفاده قرار گيرند .

    در حقيقت ، سه بخش حلقه for براي هر هدف مورد نظر شما قابل استفاده هستند . به چند مثال توجه فرمائيد .
    يكي از رايجترين گوناگونيها مربوط به عبارت شرطي است . بطور مشخص ، لزومي ندارد اين عبارت ، متغير كنترل حلقه را با برخي مقادير هدف آزمايش نمايد . در حقيقت ، شرط كنترل كننده حلقه for ممكن است هر نوع عبارت بولي باشد . بعنوان مثال ، قطعه زير را در نظر بگيريد :

    + boolean done = false;
    +
    + for(int i=1; !done; i++ ){
    + //...
    + if(intettupted ))(done = true;
    + }

    در اين مثال ، حلقه for تا زمانيكه متغير بولي done معادل true بشود ، اجرا را ادامه خواهد داد . اين مثال مقدار i را بررسي نمي كند . اكنون يكي ديگر از گوناگونيهاي جالب حلقه for را مشاهده مي كنيد. ممكن است يكي يا هر دو عبارت مقدار دهي اوليه و تكرار غايت باشند ، نظير برنامه بعدي :

    + // Parts of the for loop can be empty.
    + class ForVar {
    + public static void main(String args[] ){
    + int i;
    + boolean done = false;
    +
    + i = 0;
    + for (; !done; ) {
    + System.out.println("i is" + i);
    + if(i == 10 )done = true;
    + i++;
    + }
    + }
    + }

    در اينجا عبارتهاي مقدار دهي اوليه و تكرار به خارج ازfor انتقال يافته اند.
    برخي از بخشهاي حلقه for تهي هستند . اگر چه در اين مثال ساده چنين حالتي هيچ ارزشي ندارد ، اما در حقيقت شرايطي وجود دارد كه اين روش بسيار كارا و سودمند خواهد بود. بعنوان مثال ، اگر شرط اوليه بصورت يك عبارت پيچيده و در جاي ديگري از برنامه قرار گرفته باشد و يا تغييرات متغير كنترل حلقه بصورت غير ترتيبي و توسط اعمال اتفاق افتاده در داخل بدنه حلقه تعيين شود ، پس بهتر است كه اين بخشها را در حلقه for تهي بگذاريم .
    اكنون يكي ديگر از گوناگونيهاي حلقه for را مشاهده مي كنيد. اگر هر سه بخش حلقه for را تهي بگذاريد ، آنگاه بعمد يك حلقه نامحدود ( حلقه اي كه هرگز پايان نمي گيرد ) ايجاد كرده ايد . بعنوان مثال :

    + for (; ; ) {
    + //...
    + }

    اين حلقه تا ابد ادامه خواهد يافت ، زيرا هيچ شرطي براي پايان گرفتن آن تعبيه نشده است . اگر چه برخي برنامه ها نظير پردازشهاي فرمان سيستم عامل مستلزم يك حلقه نامحدود هستند ، اما اكثر حلقه هاي نامحدود در واقع حلقه هايي هستند كه ملزومات پايان گيري ويژه اي دارند . بزودي خواهيد ديد ، راهي براي پايان دادن به يك حلقه حتي يك حلقه نامحدود نظير مثال قبلي وجود دارد كه از عبارت شرطي معمولي حلقه استفاده نمي كند .

  3. #43
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180
    سپاس ها
    19
    سپاس شده 582 در 473 پست

    Post حلقه هاي تودرتو

    حلقه هاي تودرتو
    نظير كليه زبانهاي برنامه نويسي ، جاوا نيز امكان تودرتو كردن حلقه ها را دارد . يعني يك حلقه داخل حلقه ديگري قرار خواهد گرفت . بعنوان مثال ، در برنامه بعدي حلقه هاي for تودرتو نشده اند :

    + // Loops may be nested.
    + class Nested {
    + public static void main(String args[] ){
    + int i/ j;
    +
    + for(i=0; i<10; i++ ){
    + for(j=i; j<10; j++)
    + System.out.print(".");
    + System.out.println)(;
    + }
    + }
    + }

  4. #44
    مدیر بازنشسته
    تاریخ عضویت
    2008/10/14
    سن
    36
    نوشته ها
    3,180
    سپاس ها
    19
    سپاس شده 582 در 473 پست

    Post بنيادهاي كلاس java

    بنيادهاي كلاس java

    كلاسهاي توليد شده در بحثهاي گذشته فقط براي كپسول سازي روش ()main استفاده مي شد ، كه براي نشان دادن اصول دستور زبان جاوا مناسب بودند . شايد بهترين چيزي كه بايد درباره يك كلاس بدانيد اين است كه كلاس يك نوع جديد داده را تعريف مي كند . هربار كه اين نوع تعريف شود ، مي توان از آن براي ايجاد اشيائي از همان نوع استفاده نمود . بنابراين ، يك كلاس قالبي (template) براي يك شي ئ است و يك شي ئ نمونه اي (instance) از يك كلاس است . چون شي ئ يك نمونه از يك كلاس است غالبا" كلمات شي ئ (object) و نمونه (instance) را بصورت مترادف بكار مي بريم .

    شكل عمومي يك كلاس
    هنگاميكه يك كلاس را تعريف مي كنيد ، در حقيقت شكل و طبيعت دقيق آن كلاس را اعلان مي كنيد . ابتكار را با توصيف داده هاي موجود در آن كلاس و كدهايي كه روي آن داده ها عمل مي كنند ، انجام مي دهيد . در حاليكه كلاسها ممكن است خيلي ساده فقط شامل داده يا فقط كد باشند، اكثر كلاسهاي واقعي هردو موضوع را دربرميگيرند.

    بعدا" خواهيد ديد كه كد يك كلاس ، رابط آن به داده هاي همان كلاس را توصيف ميكند.

    يك كلاس را با واژه كليدي class اعلان مي كنند . كلاسهايي كه تا بحال استفاده شده اند ، نوع بسيار محدود از شكل كامل كلاسها بوده اند . خواهيد ديد كه كلاسها مي توانند ( و معمولا" هم ) بسيار پيچيده تر باشند . شكل عمومي توصيف يك كلاس به شرح زير است :

    type methodname2(parameter-list ){
    // body of method
    }
    //...
    type methodnameN(parameter-list ){
    // body of method
    }
    }

    داده يا متغيرهايي كه داخل يك كلاس تعريف شده اند را متغيرهاي نمونه instance) (variables مي نامند . كدها ، داخل روشها (methods) قرار مي گيرند . روشها و متغيرهاي تعريف شده داخل يك كلاس را اعضائ (members) يك كلاس مي نامند . در اكثر كلاسها ، متغيرهاي نمونه يا روي روشهاي تعريف شده براي آن كلاس عمل كرده يا توسط اين روشها مورد دسترسي قرار مي گيرند . بنابراين ، روشها تعيين كننده چگونگي استفاده از داده هاي يك كلاس هستند .

    متغيرهاي تعريف شده داخل يك كلاس ، متغيرهاي نمونه خوانده شده زيرا هر نمونه از كلاس ( يعني هر شي ئ يك كلاس ) شامل كپي خاص خودش از اين متغيرهاست . بنابراين داده مربوط به يك شي ئ ، جدا و منحصر بفرد از داده مربوط به شي ئ ديگري است . ما بزودي اين نكته را بررسي خواهيم نمود ، اما فعلا" بايد اين نكته بسيار مهم را بياد داشته باشيد .

    كليه روشها نظير()main همان شكل عمومي را دارند كه تاكنون استفاده كرده ايم .
    اما ، اكثر روشها را بعنوان staticيا publicا توصيف نمي كنند . توجه داشته باشيد كه شكل عمومي يك كلاس ، يك روش ()main را توصيف نمي كند . كلاسهاي جاوا لزومي ندارد كه يك روش ()main داشته باشند . فقط اگر كلاس ، نقطه شروع برنامه شما باشد ، بايد يك روش ()main را توصيف نماييد . علاوه بر اين ، ريز برنامه ها
    (applets) اصولا" نيازي به روش ()main ندارند .

    نكته : برنامه نويسان C++ آگاه باشند كه اعلان كلاس و پياده سازي روشها در يك مكان ذخيره شده و بصورت جداگانه تعريف نمي شوند. اين حالت گاهي فايلهاي خيلي بزرگ java ايجاد مي كند ، زيرا هر كلاس بايد كاملا" در يك فايل منبع تكي تعريف شود . اين طرح در جاوا رعايت شد زيرا احساس مي شد كه در بلند مدت ، در اختيار داشتن مشخصات ، اعلانها و پياده سازي در يك مكان ، امكان دسترسي آسانتر كد را بوجود مي آورد .

    يك كلاس ساده
    بررسي خود را با يك نمونه ساده از كلاسها شروع مي كنيم . در اينجا كلاسي تحت غنوان Box وجود دارد كه سه متغير نمونه را تعريف مي كند : width، height، و depth و فعلا" ، كلاس Box دربرگيرنده روشها نيست .

    + class Box {
    + double width;
    + double height;
    + double depth;
    + }

    قبلا" هم گفتيم كه يك كلاس نوع جديدي از داده را توصيف مي كند . در اين مثال نوع جديد داده را Box ناميده ايم . از اين نام براي اعلان اشيائ از نوع Box استفاده مي كنيد . نكته مهم اين است كه اعلان يك كلاس فقط يك الگو يا قالب را ايجاد مي كند ، اما يك شي ئ واقعي بوجود نمي آورد . بنابراين ، كد قبلي ، شيئي از نوع Box را بوجود نمي آورد .

    براي اينكه واقعا" يك شي ئ Box را بوجود آوريد ، بايد از دستوري نظير مورد زير استفاده نماييد :

    + Box mybox = new Box)(; // create a Box object called mybox

    پس از اجراي اين دستور ، mybox نمونه اي از Box خواهد بود. و بدين ترتيب اين شي ئ وجود فيزيكي و واقعي پيدا مي كند .

    مجددا" بياد داشته باشيد كه هر بار يك نمونه از كلاسي ايجاد مي كنيد ، شيئي ايجاد كرده ايد كه دربرگيرنده كپي ( نسخه خاص ) خود از هر متغير نمونه تعريف شده توسط كلاس خواهد بود . بدين ترتيب ، هر شي ئ Box دربرگيرنده كپي هاي خود از متغيرهاي نمونه width، heidht،و depthو مي باشد . براي دسترسي به اين متغيرها
    از عملگر نقطه (.) استفاده مي كنيد . عملگر نقطه اي ، نام يك شي ئ را با نام يك متغير نمونه پيوند مي دهد . بعنوان مثال ، براي منتسب كردن مقدار 100 به متغير width در myboxر ، از دستور زير استفاده نماييد :

    + mybox.width = 100;

    اين دستور به كامپايلر مي گويد كه كپي width كه داخل شي ئ mybox قرار گرفته را معادل عدد 100 قرار دهد . بطور كلي ، از عملگر نقطه اي براي دسترسي هم به متغيرهاي نمونه و هم به روشهاي موجود در يك شي ئ استفاده مي شود .

    دراينجا يك برنامه كامل را مشاهده ميكنيد كه از كلاس Box استفاده كرده است :

    + /* A program that uses the Box class.
    +
    + Call this file BoxDemo.java
    + /*
    + class Box {
    + double width;
    + double height;
    + double depth;
    + }
    +
    + // This class declares an object of type Box.
    + class BoxDemo {
    + public static void main(String args[] ){
    + Box mybox = new Box)(;
    + double vol;
    +
    + // assign values to mybox's instance variables
    + mybox.width = 10;
    + mybox.height = 20;
    + mybox.depth = 15;
    +
    + // compute volume of box
    + vol = mybox.width * mybox.height * mybox.depth;
    +
    + System.out.println("Volume is " + vol);
    + }
    + }



    فايلي را كه دربرگيرنده اين برنامه است بايد با نام BoxDemo.java بخوانيد زيرا روش ()main در كلاس BoxDemo و نه در كلاس Box قرار گرفته است . هنگاميكه اين برنامه را كامپايل مي كنيد ، مي بينيد كه دو فايل class. ايجاد شده اند ، يكي براي Box و ديگري براي BoxDemo . كامپايلر جاوا بطور خودكار هر كلاس را در فايل class
    . مربوط به خودش قرار مي دهد . ضرورتي ندارد كه كلاس Boxو BoxDemoو هر دو در يك فايل منبع قرار گيرند . مي توانيد هر كلاس را در فايل خاص خودش گذاشته و آنها را بترتيب Box.javaو BoxDemo.javaو بناميد .
    براي اجراي اين برنامه بايد BoxDemo.class را اجرا كنيد . پس از اينكار حاصل زير را بدست مي آوريد :

    Volume is 3000

    قبلا" هم گفتيم كه هر شي ئ داراي كپي هاي خاص خودش از متغيرهاي نمونه است .
    يعني اگر دو شي ئ Box داشته باشيد، هركدام بتنهايي كپي ( يا نسخه اي ) از lenght widthو heightو خواهند داشت . مهم است بدانيد كه تغييرات در متغيرهاي نمونه يك شي ئ تاثيري روي متغيرهاي نمونه كلاس ديگر نخواهد داشت . بعنوان مثال ، برنامه بعدي دو شي ئ Box را اعلان مي كند :

    + // This program declares two Box objects.
    +
    + class Box {
    + double width;
    + double height;
    + double depth;
    + }
    +
    + class BoxDemo2 {
    + public static void main(String args[] ){
    +
    + Box mybox1 = new Box)(;
    + Box mybox2 = new Box)(;
    + double vol;
    +
    + // assign values to mybox1's instance variables
    + mybox1.width = 10;
    + mybox1.height = 20;
    + mybox1.depth = 15;
    +
    + /* assign different values to mybox2's
    + instance variables */
    + mybox2.width = 3;
    + mybox2.height = 6;
    + mybox2.depth = 9;
    +
    + // compute volume of first box
    + vol = mybox1.width * mybox1.height * mybox1.depth;
    + System.out.println("Volume is " + vol);
    +
    + // compute volume of second box
    + vol = mybox2.width * mybox2.height * mybox2.depth;
    + System.out.println("Volume is " + vol);
    + }
    + }



    خروجي توليد شده توسط اين برنامه بقرار زير مي باشد :
    Volume is 3000
    Volume is 162

صفحه 5 از 5 نخستنخست 12345

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •