آموزش زبان های برنامه نویسی

آموزش زبان های برنامه نویسی

آموزش زبان های برنامه نویسی

آموزش زبان های برنامه نویسی

آشنایی با جاوا

Volume is 162

بنیادهای کلاس 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

ادامه در یادداشت بعدی ...

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد