ورود

View Full Version : سوال: شئ گرایی



prince4prodigy
چهارشنبه 09 اسفند 1391, 17:26 عصر
سلام
من دارم شئ گرایی به زبان جاوا کار میکنم و تو کتابی که از روش میخونم به یک مشکل برخوردم.

تو کد زیر کلاس تعریف شده برای بازی پاستور هست.
مشکلم اینجاست که نمیدونم به چه منظور اعدادی به DEAMONDS, HEARTS, SPADES, CLUBS نسبت داده شدن و چه دلیلی وجود داره. همینطور اعدادی که به JACK, QUEEN, KING , ACE نسبت داده شدن.....

به جز اینا کلمه final به چه منظوری استفاده شده؟

public class Card {

private int rank;
private int suit;
private boolean face_up;

// constants used to instantiate
// suits
public static final int DIAMONDS = 4;
public static final int HEARTS = 3;
public static final int SPADES = 6;
public static final int CLUBS = 5;
// values
public static final int TWO = 2;
public static final int THREE = 3;
public static final int FOUR = 4;
public static final int FIVE = 5;
public static final int SIX = 6;
public static final int SEVEN = 7;
public static final int EIGHT = 8;
public static final int NINE = 9;
public static final int TEN = 10;
public static final int JACK = 74;
public static final int QUEEN = 81;
public static final int KING = 75;
public static final int ACE = 65;

// creates a new card - only use the constants to initialize
public Card( int suit, int rank ) {
// In a real program you would need to do validation on the arguments.

this.suit = suit;
this.rank = rank;
}

public int getSuit() {
return suit;
}

public int getRank() {
return rank;
}

public void faceUp() {
face_up = true;
}

public void faceDown() {
face_up = false;
}

public boolean isFaceUp() {
return face_up;
}

public String display() {
String display;

if( rank > 10 ) {
display = String.valueOf( (char) rank );
} else {
display = String.valueOf( rank );
}

switch ( suit ) {
case DIAMONDS:
return display + String.valueOf( (char) DIAMONDS );
case HEARTS:
return display + String.valueOf( (char) HEARTS );
case SPADES:
return display + String.valueOf( (char) SPADES );
default:
return display + String.valueOf( (char) CLUBS );
}
}
}

L u k e
چهارشنبه 09 اسفند 1391, 22:24 عصر
من نمی دونم تحیلیش چی بوده
ولی تو برنامه می یان ثابت هایی که تغییر نمی کند تو طول برنامه رو final تعریف می کنن همون Const ه تو زبان های دیگه

abdoullah.aberi
پنج شنبه 10 اسفند 1391, 02:21 صبح
سلام دوست عزیز همین طور که دوستمون گفت final همون const در زبان های دیگه .
وقتی شما تو جاوا می خواین یه نمونه ثایت هایی رو داشته باشین که توی کل برنامه تغییر نکنه میاین جلوی تعریف متغیر از final استفاده می کنین سینتکسشم اینه :

final (Data Type) name motaghaier;

prince4prodigy
پنج شنبه 10 اسفند 1391, 12:48 عصر
در مورد این قسمت :
public String display() {
String display;

if( rank > 10 ) {
display = String.valueOf( (char) rank );
} else {
display = String.valueOf( rank );
}

switch ( suit ) {
case DIAMONDS:
return display + String.valueOf( (char) DIAMONDS );
case HEARTS:
return display + String.valueOf( (char) HEARTS );
case SPADES:
return display + String.valueOf( (char) SPADES );
default:
return display + String.valueOf( (char) CLUBS );
}
}

و مخصوصا کد زیر میشه یه توضیح بدید.
display = String.valueOf( (char) rank );

pro_mvb
پنج شنبه 10 اسفند 1391, 15:56 عصر
valueOf میاد یه آرایه رو مقادیرشو به Strign تبدیل میکنه
اون خطم که دادی همینطور هست با این تفاوت که اول rank رو به char کست میکنه یعنی تبدیل می کنه بعد مقدارو به صورت String در میاره توسط valueOf

spiderman200700
جمعه 11 اسفند 1391, 13:59 عصر
با valueOf تقریبا میتونی هر نوع داده ای رو به String تبدیل کنی.