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

Podobne dokumenty