Katalog książek – cz. 1
Transkrypt
Katalog książek – cz. 1
Integracja aplikacji Ćwiczenie 1 Katalog książek – cz. 1 Przygotowanie klas modelu dziedzinowego 1) Uruchom Netbeans, stwórz nowy projekt typu Java Application. W drugim kroku kreatora zaznacz utworzenie klasy głównej – nadaj klasie nazwę Main, umieść ją w pakiecie books (Create Main Class, pełna nazwa klasy: books.Main). 2) W kolejnych krokach przygotujemy klasy na potrzeby systemu katalogowania książek: o klasa Book – przechowująca informacje o pojedynczej książce; o klasa BookManager – przechowująca listę książek oraz udostępniająca metody do przeszukiwania tej listy. 3) Tworzenie klasy Book o Stwórz klasę o nazwie Book w pakiecie book (prawy klawisz na nazwie projektu -> New… -> Java Class; w oknie dialogowym podaj nazwę klasy i wybierz z listy pakiet). o W klasie Book umieścimy następujące pola: id, title, author, isbn, year (pole year – typ całkowity Integer; pozostałe – typ String) Strona 1 Integracja aplikacji Ćwiczenie 1 Pełny kod klasy: package books; public class Book { private private private private private String id; String title; String author; String isbn; Integer year; } o Klasa Book powinna spełniać wytyczne JavaBean, czyli posiadać: bezargumentowy konstruktor, prywatne pola, dla każdego z pól metody getXXX/setXXX – np. dla pola title metody getTitle()/setTitle()) Dodajmy konstruktor bezargumentowy: public Book() { } Dodajmy także drugi konstruktor, inicjujący wszystkie pola wartościami przekazanymi jako argumenty: public Book(String id, String title, String author, String isbn, Integer year) { this.id = id; this.title = title; this.author = author; this.isbn = isbn; this.year = year; } Strona 2 Integracja aplikacji o Ćwiczenie 1 Metody getXXX/setXXX powinny mieć następującą postać (na przykładzie pola title): public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } Metody get/set dla pozostałych pól możemy wygenerować automatycznie: kliknij prawym klawiszem w obszarze edytora kodu; z menu kontekstowego wybierz Insert Code -> Getter and Setter; w okienku dialogowym zaznacz pola, dla których chcesz wygenerować metody dostępowe get/set (w tym przypadku – wszystkie pola). Strona 3 Integracja aplikacji Ćwiczenie 1 4) Tworzenie klasy BookManager o Stwórz klasę o nazwie BookManager w pakiecie book. o W klasie BookManager umieścimy tylko jedno pole, przechowujące listę książek: package books; import java.util.List; public class BookManager { private List<Book> books; } o Konstruktor powinien przyjmować jako argument listę książek: public BookManager(List<Book> books) { this.books = books; } o W klasie BookManager umieścimy trzy metody wyszukujące książki: searchByTitle – wyszukiwanie po tytule; zwraca listę książek, których tytuły zawierają podane słowo; sygnatura metody będzie następująca: public List<Book> searchByTitle(String title) searchByAuthor – wyszukiwanie po autorze; zwraca listę książek, których autorem jest podana osoba; sygnatura metody będzie następująca: public List<Book> searchByAuthor(String author) searchByISBN - wyszukiwanie po numerze ISBN; zwraca pojedynczą książkę o podanym numerze ISBN; sygnatura metody będzie następująca:. public Book searchByISBN(String isbn) o Metoda wyszukująca książki po tytule będzie przebiegać następująco: zainicjuj pustą listę wyników; przejdź w pętli po wszystkich książkach, dla każdej z nich sprawdź, czy tytuł zawiera tekst podany jako argument; jeśli tak, dodaj książkę do listy wyników; zwróć listę wyników. Strona 4 Integracja aplikacji Ćwiczenie 1 Pełny kod metody: public List<Book> searchByTitle(String title) { List<Book> result = new ArrayList<>(); for(Book b: books) { if(b.getTitle().contains(title)) { result.add(b); } } return result; } 5) W klasie Main, w metodzie main() przetestuj utworzone klasy: o stwórz 3-4 przykładowe książki, dodaj je do listy; o stwórz obiekt klasy BookManager, w konstruktorze podając listę książek; o przetestuj metody wyszukujące, wynik wyświetl na ekranie. Przykładowy kod: public static void main(String[] args) { Book b1 = new Book("b1", "Koparka dla opornych", "Zdzisław Maliniak", "123456789", 2000); Book b2 = new Book("b2", "Java rulez", "James Gosling", "2244668800", 1998); Book b3 = new Book("b3", "Sadownictwo dla początkujących", "Steve Jobs", "13579135", 1990); List<Book> ksiazki = new ArrayList<>(); ksiazki.add(b1); ksiazki.add(b2); ksiazki.add(b3); BookManager bm = new BookManager(ksiazki); List<Book> w = bm.searchByTitle("Java"); System.out.println(w); } Strona 5 Integracja aplikacji Ćwiczenie 1 Zadanie 1 Dodaj do klasy Book pola: publisher – typu String; pages – typu Integer. Dodaj także odpowiednie metody get/set oraz zmodyfikuj konstruktor, tak żeby poprawnie inicjalizował także dwa nowododane pola. Zadanie 2 Dodaj do klasy BookManager pozostałe dwie metody wyszukujące: searchByAuthor oraz searchByISBN. Zwróć uwagę, że wyszukiwanie po tytule i autorze zwraca listę książek, zaś wyszukiwanie po numerze ISBN – dokładnie jedną książkę. Strona 6