Browse Source

ready to use

master
esoe 2 years ago
parent
commit
03ef109544
  1. 217
      book/src/main/java/ru/molokoin/Book.java
  2. 9
      book/src/main/java/ru/molokoin/Publisher.java
  3. BIN
      book/target/classes/ru/molokoin/Book.class
  4. BIN
      book/target/classes/ru/molokoin/Publisher.class

217
book/src/main/java/ru/molokoin/Book.java

@ -5,21 +5,25 @@ public class Book {
private Publisher publisher; private Publisher publisher;
private int year; private int year;
private String[] authors; private String[] authors;
private Publisher[] publishers = Publisher.getDefaultArray();
Book(){} Book(){}
Book(String name, int year, Publisher publisher){} Book(String name, int year, Publisher publisher){}
Book(String name, String author, int year, Publisher publisher){ Book(String name, String author, int year, Publisher publisher){
this(name, year, publisher); this(name, year, publisher);
setAuthors(uppendAuthors((String)author)); uppendAuthors(author);
} }
Book(String name, String[] authors, int year, Publisher publisher){ Book(String name, String[] authors, int year, Publisher publisher){
this(name, year, publisher); this(name, year, publisher);
String[] a = (String[]) authors; String[] a = authors;
setAuthors(a); setAuthors(a);
} }
/**
* Создаем массив книг, заполняем книги данными по умолчанию
* и возвращаем массив книг
* @return
*/
public static Book[] getDefaultArray(){ public static Book[] getDefaultArray(){
Book[] books = new Book[2]; Book[] books = new Book[5];
//book 1 //book 1
String name = "Computer Science: основы программирования на Java, ООП, алгоритмы и структуры данных"; String name = "Computer Science: основы программирования на Java, ООП, алгоритмы и структуры данных";
@ -38,84 +42,191 @@ public class Book {
books[1].setPublisher(Publisher.getPublisherByName(Publisher.getDefaultArray(), "БХВ")); books[1].setPublisher(Publisher.getPublisherByName(Publisher.getDefaultArray(), "БХВ"));
books[1].setYear(2019); books[1].setYear(2019);
//book 3
name = "Java. Полное руководство, 10-е издание";
books[2] = new Book();
books[2].setName(name);
books[2].uppendAuthors("Шилдт Гербертт");
books[2].setPublisher(Publisher.getPublisherByName(Publisher.getDefaultArray(), "Диалектика"));
books[2].setYear(2018);
//book 4
name = "C/C++. Процедурное программирование";
books[3] = new Book();
books[3].setName(name);
books[3].uppendAuthors("Полубенцева М.И.");
books[3].setPublisher(Publisher.getPublisherByName(Publisher.getDefaultArray(), "БХВ"));
books[3].setYear(2017);
//book 5
name = "Конституция РФ";
books[4] = new Book();
books[4].setName(name);
books[4].setPublisher(Publisher.getPublisherByName(Publisher.getDefaultArray(), "Проспект"));
books[4].setYear(2020);
return books; return books;
} }
/**
* Печатть данных о книге в консоль
*/
public void print(){ public void print(){
System.out.println("-------------------------------"); System.out.println("-------------------------------");
System.out.println(toString());
System.out.println("Наименование книги (name) :: " + name); System.out.println("Наименование книги (name) :: " + name);
getPublisher().print(); getPublisher().print();
System.out.println("Год издания (year) :: " + year); System.out.println("Год издания (year) :: " + year);
System.out.println("Авторы:"); System.out.println("Авторы: " + getAuthorsCount(authors) + " человек ...");
int i = 0; int i = 0;
while (i < getAuthorsCount()){ while (i < getAuthorsCount(authors)){
System.out.println((i + 1) + ". " + getAuthors()[i]); System.out.println((i + 1) + ". " + getAuthors()[i]);
i++; i++;
} }
System.out.println("-------------------------------"); System.out.println("-------------------------------");
} }
//TODO добавляем список авторов /**
public String[] uppendAuthors(String author){ * Добавляем авторов книги
* @param author
*/
public void uppendAuthors(String author){
String[] result; String[] result;
try { /**
if (getAuthors() == null)throw new NullPointerException("Перечень авторов пока пуст ..."); * в случае, если массив authors еще не создан и писать нового автора некуда,
} catch (NullPointerException e) { * создаем пустой массив, пишем в него данные нового автора
e.printStackTrace(); */
result = new String[1]; if (getAuthors() == null){
result[0] = author; try {
} finally { throw new NullPointerException("в случае, если массив authors еще не создан и писать нового автора некуда, создаем пустой массив, пишем в него данные нового автора ...");
result = new String[getAuthorsCount() +1]; } catch (NullPointerException e) {
//e.printStackTrace();
System.out.println(e);
result = new String[1];
result[0] = author;
setAuthors(result);
}
}
/**
* Если массив авторов книги уже существует, создаем новый массив с увеличенным на единицу
* количеством полей и переписываем в него данные старого массива,
* после чего добавляем в него новую запись.
*/
else{
int count = getAuthorsCount(authors);
result = new String[count +1];
//переписываем данные старого массива
int i = 0; int i = 0;
while (i < getAuthorsCount()){ while (i < count){
result[i] = getAuthorByIndex(i); result[i] = getAuthors()[i];
i++; i++;
} }
//добавляем нового автора
result[count] = author;
setAuthors(result);
} }
return result;
} }
/**
* Возвращает данные поля author, по индексу поля в массиве
* индексы нумеруются с нуля и не могут быть отрицательными.
* @param index
* @return
*/
public String getAuthorByIndex(int index){ public String getAuthorByIndex(int index){
//при получении отрицательного индекса, меняем его значение на ноль, сообщаем пользователю о проведеных изменениях
if (index < 0){
try {
throw new IllegalArgumentException("В метод public String getAuthorByIndex(int index) передано значение меньше нуля, массив не может содержать отрицательное количество полей. Значение индекса исправлено на значение по умолчанию: 0 ...");
} catch (Exception e) {
e.printStackTrace();
index = 0;
}
}
String author = getAuthors()[index]; String author = getAuthors()[index];
return author; return author;
} }
//количество авторов книги /**
public int getAuthorsCount(){ * возвращает количество авторов книги
* @param authors
* @return
*/
public static int getAuthorsCount(String[] authors){
//проверяем, имеется ли записи в перечне авторов
int count = 0; int count = 0;
try { try {
if (getAuthors() == null) throw new NullPointerException("авторы еще не добавлены в список ..."); if (authors == null) throw new NullPointerException ("Авторы книги не установлены ...");
} catch (NullPointerException e) { } catch (Exception e) {
//e.printStackTrace();
count = 0; count = 0;
} finally {
count = getAuthors().length;
} }
if (authors != null) count = authors.length;
return count; return count;
} }
/** /**
* Устанавливаем название книги
* @param name the name to set * @param name the name to set
*/ */
public void setName(String name) { public void setName(String name) {
//TODO название книги не должно быть пустой ссылкой; // название книги не должно быть пустой ссылкой
this.name = name; if (name == null){
try {
throw new NullPointerException("В качестве названия книги передана пустая ссылка, полю установлено значение по умолчанию {noname book}");
} catch (NullPointerException e) {
System.out.println("Ошибка: " + e);
e.printStackTrace();
this.name = "noname book";
}
}else {
this.name = name;
}
} }
/** /**
* Устанавливаем данные об издательстве.
* издательство не должно быть пустой ссылкой
* @param publisher the publisher to set * @param publisher the publisher to set
*/ */
public void setPublisher(Publisher publisher) { public void setPublisher(Publisher publisher) {
//TODO издательство не должно быть пустой ссылкой; if (publisher == null){
this.publisher = publisher; try {
throw new NullPointerException("Передана пустая ссылка, при внесении данных об издательстве, что недопустимо. Установлено знаение издательства по умолчанию.");
} catch (NullPointerException e) {
e.printStackTrace();
System.out.println("Ошибка: " + e);
this.publisher = new Publisher();
}
}else{
this.publisher = publisher;
}
} }
/** /**
* устанавливаем год издания книги
* - год издания должен быть строго больше нуля
* @param year the year to set * @param year the year to set
*/ */
public void setYear(int year) { public void setYear(int year) {
//TODO год издания должен быть строго больше нуля if (year < 0){
this.year = year; try{
throw new IllegalArgumentException("В качестве года издания книги указан значение еньше нуля. Значение заменен на значение по умолчанию {1800}");
} catch (IllegalArgumentException e){
e.printStackTrace();
System.out.println("Ошибка: " + e);
year = 1800;
}
}else {
this.year = year;
}
} }
/** /**
* Устанавливаем перечень авторов книги
* @param author the author to set * @param author the author to set
*/ */
public void setAuthors(String[] authors) { public void setAuthors(String[] authors) {
//TODO массив не должен содержать пустых ссылок try {
this.authors = authors; if (authors == null) throw new NullPointerException("setAuthors() ... передан пустой список авторов");
} catch (NullPointerException e) {
e.printStackTrace();
this.authors = new String[0];
} finally {
this.authors = authors;
}
} }
/** /**
* @return the name * @return the name
@ -139,25 +250,39 @@ public class Book {
* @return the author * @return the author
*/ */
public String[] getAuthors() { public String[] getAuthors() {
String[] result = new String[0]; return this.authors;
try {
if (authors == null) throw new NullPointerException("Авторы еще не заносились в список ...");
} catch (NullPointerException e) {
// TODO: handle exception
e.printStackTrace();
result = new String[0];
} finally {
result = authors;
}
return result;
} }
public static void main(String[] args) { public static void main(String[] args) {
Book[] books = Book.getDefaultArray(); Book[] books = Book.getDefaultArray();
//Вывод данных по умолчанию
int i = 0; int i = 0;
while (i < books.length){ while (i < books.length){
books[i].print(); books[i].print();
i++; i++;
} }
}
//исправляем данные о городе издательства БХВ
String wrightSity = "Санкт-Петербург";
String wrongSity = "Санкт-Петебург";
i = 0;
while (i < books.length){
if (books[i].getPublisher().getSity() == wrongSity){
books[i].getPublisher().setSity(wrightSity);
}
i++;
}
//пояснения пользователю
System.out.println("#############################################");
System.out.println("Вывод изменился для всех книг, изданных издательством \"БХВ\".");
System.out.println("Устранена опечатка в наименовании города. \"Санкт-Петебург\" заменено на \"Санкт-Петербург\". " + "Была пропущена буква: \"Б\".");
System.out.println("#############################################");
//Вывод исправленных данных
i = 0;
while (i < books.length){
books[i].print();
i++;
}
}
} }

9
book/src/main/java/ru/molokoin/Publisher.java

@ -19,11 +19,13 @@ public class Publisher {
Publisher[] defaultPublishers = new Publisher[4]; Publisher[] defaultPublishers = new Publisher[4];
defaultPublishers[0] = new Publisher("Проспект", "Москва"); defaultPublishers[0] = new Publisher("Проспект", "Москва");
defaultPublishers[1] = new Publisher("Питер", "Санкт-Петербург"); defaultPublishers[1] = new Publisher("Питер", "Санкт-Петербург");
defaultPublishers[2] = new Publisher("БХВ", "Санкт-Петербург"); defaultPublishers[2] = new Publisher("БХВ", "Санкт-Петебург");
defaultPublishers[3] = new Publisher("Диалектика", "Киев"); defaultPublishers[3] = new Publisher("Диалектика", "Киев");
return defaultPublishers; return defaultPublishers;
} }
//выводим в консоль данные Издательства /**
* выводим в консоль данные Издательства
*/
public void print(){ public void print(){
System.out.println("Издательство: " + getName() + " ----> " + "город: " + getSity()); System.out.println("Издательство: " + getName() + " ----> " + "город: " + getSity());
} }
@ -42,8 +44,9 @@ public class Publisher {
} }
} }
/** /**
* Устанавливаем наименование города - где находится издательство
* Наименование города издания не должно быть пустой ссылкой
* @param sity the sity to set * @param sity the sity to set
* TODO: Наименование города издания не должно быть пустой ссылкой
*/ */
public void setSity(String sity) { public void setSity(String sity) {
String defaultSity = "noname sity"; String defaultSity = "noname sity";

BIN
book/target/classes/ru/molokoin/Book.class

Binary file not shown.

BIN
book/target/classes/ru/molokoin/Publisher.class

Binary file not shown.
Loading…
Cancel
Save