در برنامههای خود، اغلب اشیای متعددی از یک نوع خواهید دید. ممکن است هزاران دوچرخه دیگر وجود داشته باشد، همه از یک مدل و برند. هر دوچرخه از همان مجموعه نقشهها ساخته شده و شامل همان قطعات است. در اصطلاح شیگرا، دوچرخه شما یک نمونه (Instance) از کلاس اشیا به نام دوچرخهها است. کلاس (Class) نقشهراهی است که اشیای منفرد از آن ساخته میشوند.
کلاس Bicycle زیر یک پیادهسازی ممکن از دوچرخه است:
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
IO.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
نحوه زبان جاوا ممکن است برایتان جدید به نظر برسد، اما طراحی این کلاس بر اساس بحث قبلی درباره اشیای دوچرخه است. فیلدها cadence، speed و gear وضعیت شی را نمایش میدهند و متدها (changeCadence()، changeGear()، speedUp() و غیره) تعامل آن با دنیای بیرون را تعریف میکنند.
ممکن است متوجه شده باشید کلاس Bicycle حاوی متد main() نیست. دلیلش این است که برنامه کاملی نیست؛ فقط نقشهراه دوچرخههایی است که ممکن است در یک برنامه استفاده شوند. مسئولیت ایجاد و استفاده از اشیای Bicycle جدید بر عهده کلاس دیگری در برنامه شماست.
کلاس BicycleDemo زیر دو شی Bicycle جداگانه ایجاد و متدهای آنها را فراخوانی میکند:
class BicycleDemo {
public static void main(String[] args) {
// ایجاد دو شی Bicycle
// متفاوت
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// فراخوانی متدها روی
// آن اشیا
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
خروجی این تست سرعت پدال نهایی، سرعت و دنده دو دوچرخه را چاپ میکند:
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/