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