Повертаємося до масивів

У главі 9 програма ScoreWriter створювала масив обєктів String і зберігала імена і окуляри гравців у файл Настав час дізнатися, як використовувати масиви для зберігання будь-яких обектовВ цей раз для подання рахунку у грі ми створимо обєкт Цей обєкт буде містити такі атрибути, як імя та прізвище гравця, рахунок і останню дату ігриНіже представлений клас Score Він містить спеціальні методи для читання (getter) І запису (setter) Кожного з свого атрибутів, який оголошений з модифікатором доступуprivate Напевно, може здатися неочевидним, чому викликає клас просто не встановлює значення атрибуту безпосередньо, наприклад, так: Scorescore = 250

Замість цього він це робить так:

ScoresetScore(250)

А що, якщо пізніше ми вирішимо, що наша програма повинна програвати мелодію тоді, коли гравець досягає рахунки в 500 очок Якщо в класі Score є метод setScore (), все що потрібно зробити, це змінити тільки цей метод Потрібно додати в нього код, який перевіряє кількість очок і при необхідності програє мелодію Зухвалий клас продовжить викликати музичну версію методаsetScore () точно таким же чином Якщо викликає клас буде встановлювати рахунок безпосередньо, то все «музичні» зміни потрібно буде реалізувати в зухвалій класі А якщо буде потрібно використовувати клас у двох різних ігрових програмах У разі прямого зміни значень атрибутів буде потрібно реалізувати ці зміни у двох викликають класах Але, якби у вас був setter – метод, то зміни були б інкапсульовані в ньому і викликають класи міняти не потрібно було бimport javautilDate

public class Score {

private String firstName private String lastName private int score

private Date playDate

public String getFirstName(){

return firstName

}

public void setFirstName(String firstName){

thisfirstName = firstName

}

public String getLastName(){

return lastName

}

public void setLastName(String lastName){

thislastName = lastName

}

public int getScore(){

return score

}

public void setScore(int score){

thisscore=score

}

public Date getPlayDate(){

return playDate

}

public void setPlayDate(Date playDate){

thisplayDate=playDate

}

/ / Обєднуємо всі атрибути в рядок (String)

/ / І в кінці додаємо символ перекладу на новий рядок

/ / Цей метод зручно використовувати, якщо викликає клас

/ / Хоче за один раз роздрукувати всі значення, наприклад

// Systemoutprintln(myScoretoString())

public String toString(){

String scoreString = firstName + &quot &quot +

lastName + &quot &quot +  score + &quot &quot + playDate + SystemgetProperty(&quotlineseparator&quot)

return scoreString

}

}

Програма ScoreWriter2 створить екземпляри обєкта Score і призначить значення атрибутам цих примірниківimport javaioFileWriter import javaioBufferedWriter import javaioIOException import javautilDate

public class ScoreWriter2 {

/ ** Метод main виконує наступні дії:

1 Створює екземпляр масиву

2 Створює обєкти Score і заповнює ними масив

3 Записує рахунок гри в файл

*/

public static void main(String[] args) { FileWriter myFile = null

BufferedWriter buff = null

Date today = new Date()

Score scores[] = new Score[3]

// The player #1 scores[0]=new Score () scores [0] setFirstName (Микола) scores [0] setLastName (Смирнов) scores [0] setScore (250) scores [0] setPlayDate (today)

// The player #2 scores[1]=new Score () scores [1] setFirstName (Анна) scores [1] setLastName (Єгорова) scores [1] setScore (300) scores [1] setPlayDate (today)

// The player #3 scores[2]=new Score()

scores [2] setFirstName (Сергій)

scores [2] setLastName (Данилов) scores [2] setScore (190) scores [2] setPlayDate (today)

try {

myFile = new FileWriter(&quotc:\\scores2txt&quot)

buff = new BufferedWriter(myFile)

for (int i=0 i &lt scoreslength i++) {

/ / Перетворює кожний рахунок в обєкт String

/ / І записує його в scores2txt buffwrite (scores [i] ToString ()) Systemoutprintln (Запис +

scores[i]getLastName() )

}

Systemoutprintln (Запис файлу завершена)

}catch (IOException e){

eprintStackTrace()

} finally {

try{

buffflush() buffclose() myFileclose()

}catch(IOException e1){

e1printStackTrace()

}

}

}

}

Якщо програма намагається звернутися до елементу масиву, який знаходиться за його межами,

Джерело: Java Programming for Kids, Parents and Grandparents by Yakov Fain

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*