Skip to content

Instantly share code, notes, and snippets.

@Maxomax
Created April 2, 2018 14:59
Show Gist options
  • Save Maxomax/5de79464a20d5319dc96fd6f2681237e to your computer and use it in GitHub Desktop.
Save Maxomax/5de79464a20d5319dc96fd6f2681237e to your computer and use it in GitHub Desktop.
package com.javarush.task.task15.task1504;
import java.util.LinkedList;
import java.util.List;
/*
ООП - книги
1. Создайте public static класс MarkTwainBook, который наследуется от Book. Имя автора [Mark Twain].
Параметр конструктора - название книги (title).
2. В классе MarkTwainBook реализуйте все абстрактные методы.
3. Для метода getBook измените тип возвращаемого значения на более подходящий.
4. Создайте по аналогии AgathaChristieBook. Имя автора [Agatha Christie].
5. В классе Book реализуйте тело метода getOutputByBookType так, чтобы он возвращал:
5.1. agathaChristieOutput для книг Агаты Кристи;
5.2. markTwainOutput для книг Марка Твена.
*/
public class Solution {
public static void main(String[] args) {
List<Book> books = new LinkedList<Book>();
books.add(new MarkTwainBook("Tom Sawyer"));
books.add(new AgathaChristieBook("Hercule Poirot"));
System.out.println(books);
}
abstract static class Book {
private String author;
public Book(String author) {
this.author = author;
}
public abstract Book getBook();
public abstract String getTitle();
private String getOutputByBookType() {
String agathaChristieOutput = author + ", " + getBook().getTitle() + " is a detective";
String markTwainOutput = getBook().getTitle() + " book was written by " + author;
String output = "output";
//Add your code here
if (this instanceof MarkTwainBook) output = markTwainOutput;
else output = agathaChristieOutput;
return output;
}
public String toString() {
return getOutputByBookType();
}
}
public static class MarkTwainBook extends Book {
public String title;
public MarkTwainBook(String title) {
super("Mark Twain");
this.title = title;
}
@Override
public MarkTwainBook getBook() {
return this;
}
@Override
public String getTitle() {
return title;
}
}
public static class AgathaChristieBook extends Book {
public String title;
public AgathaChristieBook(String title) {
super("Agatha Christie");
this.title = title;
}
@Override
public AgathaChristieBook getBook() {
return this;
}
@Override
public String getTitle() {
return title;
}
}
}
/*Требования:
1. Класс Solution должен содержать public static класс MarkTwainBook.
2. Класс MarkTwainBook должен быть потомком класса Book.
3. В классе MarkTwainBook должен быть корректно реализован конструктор с одним параметром типа String(название книги).
4. Конструктор класса MarkTwainBook должен вызывать конструктор класса предка(Book) с параметром "Mark Twain"..
5. Метод getBook в классе MarkTwainBook должен иметь тип возвращаемого значения MarkTwainBook и возвращать текущий объект.
6. Класс Solution должен содержать public static класс AgathaChristieBook.
7. Класс AgathaChristieBook должен быть потомком класса Book.
8. В классе AgathaChristieBook должен быть корректно реализован конструктор с одним параметром типа String(название книги).
9. Конструктор класса AgathaChristieBook должен вызывать конструктор класса предка(Book) с параметром "Agatha Christie".
10. Метод getBook в классе AgathaChristieBook должен иметь тип возвращаемого значения AgathaChristieBook и возвращать текущий объект.
11. Метод getTitle в классах AgathaChristieBook и MarkTwainBook должен возвращать название конкретной книги.
12. Метод getOutputByBookType должен возвращать корректную строку для объектов типа AgathaChristieBook.
13. Метод getOutputByBookType должен возвращать корректную строку для объектов типа MarkTwainBook.
14. В классе MarkTwainBook должно быть создано поле title типа String(название книги).
15. В классе AgathaChristieBook должно быть создано поле title типа String(название книги).*/
@azazar
Copy link

azazar commented Jan 29, 2022

Кому-то не хватило воображения нормальное задание придумать

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment