1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

بنیادهای کلاس java

شروع موضوع توسط minaaa ‏21/10/11 در انجمن Java Script

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    کلاسهای تولید شده در بحثهای گذشته فقط برای کپسول سازی روش ()main استفاده
    می شد ، که برای نشان دادن اصول دستور زبان جاوا مناسب بودند . شاید بهترین
    چیزی که باید درباره یک کلاس بدانید این است که کلاس یک نوع جدید داده را تعریف
    می کند . هربار که این نوع تعریف شود ، می توان از آن برای ایجاد اشیائی از
    همان نوع استفاده نمود . بنابراین ، یک کلاس قالبی (template) برای یک شی ئ است
    و یک شی ئ نمونه ای (instance) از یک کلاس است . چون شی ئ یک نمونه از یک کلاس است
    غالبا” کلمات شی ئ (object) و نمونه (instance) را بصورت مترادف بکار می بریم .
     
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : بنیادهای کلاس java

    شکل عمومی یک کلاس
    هنگامیکه یک کلاس را تعریف می کنید ، در حقیقت شکل و طبیعت دقیق آن کلاس را
    اعلان می کنید . ابتکار را با توصیف داده های موجود در آن کلاس و کدهایی که روی
    آن داده ها عمل می کنند ، انجام می دهید . در حالیکه کلاسها ممکن است خیلی ساده
    فقط شامل داده یا فقط کد باشند، اکثر کلاسهای واقعی هردو موضوع را دربرمیگیرند.
    بعدا” خواهید دید که کد یک کلاس ، رابط آن به داده های همان کلاس را توصیف میکند.
    یک کلاس را با واژه کلیدی class اعلان می کنند . کلاسهایی که تا بحال استفاده
    شده اند ، نوع بسیار محدود از شکل کامل کلاسها بوده اند . خواهید دید که کلاسها
    می توانند ( و معمولا” هم ) بسیار پیچیده تر باشند . شکل عمومی توصیف یک کلاس به
    شرح زیر است :

    type methodname2(parameter-list ){
    // body of method
    }
    //…
    type methodnameN(parameter-list ){
    // body of method
    }
    }​
     
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : بنیادهای کلاس java

    داده یا متغیرهایی که داخل یک کلاس تعریف شده اند را متغیرهای نمونه 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;
    + }​
     
  4. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : بنیادهای کلاس java

    قبلا” هم گفتیم که یک کلاس نوع جدیدی از داده را توصیف می کند . در این مثال
    نوع جدید داده را Box نامیده ایم . از این نام برای اعلان اشیائ از نوع Box
    استفاده می کنید . نکته مهم این است که اعلان یک کلاس فقط یک الگو یا قالب را
    ایجاد می کند ، اما یک شی ئ واقعی بوجود نمی آورد . بنابراین ، کد قبلی ، شیئی
    از نوع Box را بوجود نمی آورد .
    برای اینکه واقعا” یک شی ئ Box را بوجود آورید ، باید از دستوری نظیر مورد
    زیر استفاده نمایید :

    + Box mybox = new Box)(; // create a Box object called mybox​
     
  5. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : بنیادهای کلاس java

    پس از اجرای این دستور ، mybox نمونه ای از Box خواهد بود. و بدین ترتیب این
    شی ئ وجود فیزیکی و واقعی پیدا می کند .
    مجددا” بیاد داشته باشید که هر بار یک نمونه از کلاسی ایجاد می کنید ، شیئی
    ایجاد کرده اید که دربرگیرنده کپی ( نسخه خاص ) خود از هر متغیر نمونه تعریف
    شده توسط کلاس خواهد بود . بدین ترتیب ، هر شی ئ Box دربرگیرنده کپی های خود از
    متغیرهای نمونه width، heidht،و depthو می باشد . برای دسترسی به این متغیرها
    از عملگر نقطه (.) استفاده می کنید . عملگر نقطه ای ، نام یک شی ئ را با نام یک
    متغیر نمونه پیوند می دهد . بعنوان مثال ، برای منتسب کردن مقدار ۱۰۰ به متغیر width
    در myboxر ، از دستور زیر استفاده نمایید :

    + mybox.width = 100;​
     
  6. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : بنیادهای کلاس java

    این دستور به کامپایلر می گوید که کپی width که داخل شی ئ mybox قرار گرفته
    را معادل عدد ۱۰۰ قرار دهد . بطور کلی ، از عملگر نقطه ای برای دسترسی هم به
    متغیرهای نمونه و هم به روشهای موجود در یک شی ئ استفاده می شود .
    دراینجا یک برنامه کامل را مشاهده میکنید که از کلاس 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);
    + }
    + }​
     
  7. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : بنیادهای کلاس java

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

    Volume is 3000
     
  8. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : بنیادهای کلاس java

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