عملية printCard
عندما تنشئ صنفاً جديداً، فإن الخطوة الأولى هي التصريح عن متغيرات الحالة وكتابة العمليات البانية. الخطوة الثانية هي كتابة العمليات القياسية التي يجب أن يملكها كل كائن، بما فيها عملية لطباعة الكائن، وواحدة أخرى أو اثنتين للمقارنة بين الكائنات. دعنا نبدأ مع العملية printCard.
لطباعة كائنات Card بطريقة يقدر البشر على قراءتها بسهولة، علينا عمل خريطة تربط بين الرموز العددية وما يقابلها من كلمات. إحدى الطرق الطبيعية لعمل ذلك هي استعمال مصفوفة سلاسل محرفية. يمكنك إنشاء مصفوفة سلاسل محرفية بنفس الطريقة التي تنشئ فيها مصفوفة لأحد الأنواع البسيطة:
كود:
String[] suits = new String [4];
ثم نصبح قادرين على ضبط قيم عناصر المصفوفة.
كود:
suits[0] = "Clubs";
suits[1] = "Diamonds";
suits[2] = "Hearts";
suits[3] = "Spades";
إن إنشاء مصفوفة وتهيئة عناصرها بالقيم هي عملية شائعة لدرجة أن Java توفر تعليمة خاصة لها:
كود:
String[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
تكافئ هذه التعليمة إلى التصريح عن المصفوفة بشكل منفصل، وحجز مكان لها في الذاكرة، وتعليمات الإسناد. يبدو مخطط الحالة لهذ المصفوفة كما يلي:
http://file.topmaxtech.net/images/ph...3961869081.jpg
عناصر هذه المصفوفة ليست سلاسلاً محرفية، بل هي مرجعيات (references) للسلاسل المحرفية الفعلية.
سنحتاج الآن لمصفوفة سلاسل محرفية أخرى لفك تشفير الرتب:
كود:
String[] ranks = { "narf", "Ace", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "Jack", "Queen", "King" };
إن سبب وجود "narf" هو حفظ مكان العنصر الصفري من المصفوفة، الذي لن نستعمله أبداً (أو لا يفترض بنا أن نستعمله). الرتب الصالحة هي من 1 حتى 13. كان من الممكن أن نبدأ من الصفر لتجنب هذا العنصر المهدور، لكن الخريطة ستبدو أكثر منطقية لو رمزنا 2 ب2، و3 ب3، الخ.
باستخدام هذه المصفوفات، يمكننا الوصول إلى السلاسل المحرفية المناسبة باستخدام suit وrank كأدلة. في العملية printCard
كود:
public static void printCard(Card c) {
String[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] ranks = { "narf", "Ace", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "Jack", "Queen", "King" };
System.out.println(ranks[c.rank] + " of " + suits[c.suit]);
}
تعني العبارة suits[c.suit] "استخدم متغير الحالة suit من الكائن c كدليل للمصفوفة المدعوة باسم suits، واختر السلسلة المحرفية المناسبة". خرج هذه الشفرة
كود:
Card card = new Card(1, 11);
printCard(card);
هو Jack of Diamonds.