Laboratorium Podstaw Programowania
Laboratorium IV: Biblioteka
1
Cel
W tym zadaniu nauczysz się tworzyć obiekty wchodzące ze sobą w interakcje. Poznasz podstawowe zastosowania dzedzi-
czenia i polimorfizmu w języku Java.
Przeczytaj uważnie całą treść zadania nim zaczniesz je rozwiązywać.
2
Wprowadzenie
Biblioteki w Bajtocji potrzebują elektronicznego systemu wypożyczania książek. Twoim zadaniem jest go zbudować. W
Bajtocji znajdują się dwie biblioteki. W każdej z nich można znaleźć różne książki. Klienci mogą chcieć uzyskać dostęp
do list katalogowych, wypożyczać oraz zwracać książki. Wszystkie biblioteki są czynne w tych samych godzinach.
3
Zadanie
Otrzymasz szablon dwóch klas, Ksiazka oraz Biblioteka. Twoim zadaniem jest zaimplementować ciała metod, które są
puste, tak aby klasy te dostarczały oczekiwaną funkcjonalność. W kolejnym kroku należy stworzyć kilka klas dziedziczących
po klasie Ksiazka, np. KsiazkaFantastyczna, Kryminal, Powiesc, Epopeja, KsiazkaNaukowa. Każda z tych klas powinna
mieć wasną implementację metod String dajRodzaj() oraz String dajOpis() zwracające odpowiednie komunikaty.
4
Sposób postępowania
4.1
Implementacja książki
Dla klasy Ksiazka wszystkie potrzebne metody są zdefiniowane, jednak ich ciało jest puste. Skopiuj kod klasy do swojego
programu a następnie zobacz jak działa. Zwrócisz uwagę, iż wartości wypisywane na ekran przez metodę main() różnią
się od tych oczekiwanych. Twoje zadanie polega na implementacji wszystkich metod, tak aby metoda main() wyświetlała
poprawny wynik. Kiedy skończysz ten etap, wynik wypisywany przez metodę main powinien wyglądać następująco:
Tytul: (powinno byc Pan Tadeusz) Pan Tadeusz
Czy wypozyczona (powinno byc false)? false
Czy wypozyczona (powinno byc true)? true
Czy wypozyczona (powinno byc false)? false
4.2
Implementacja biblioteki
W tym przypadku dysponujesz tylko metodą main(). Twoje zadanie polega na zorientowaniu się jakie metody powinny
zostać dodane aby klasa się kompilowała. W następnym kroku należy zaimplementować ciała tych metod tak, aby metoda
main() wypisywała oczekiwane komunikaty. Do końca tego etapu NIE WOLNO modyfikować metod main().
Komunikat jaki powinna wyświetlić metoda main() klasy Biblioteka po tym etapie wygląda następująco:
Godziny otwarcia bibliotek:
Biblioteki są otwarte codziennie od 9:00 do 17:00.
Adresy bibliotek:
Armii Krajowej 24
Plac Grunwaldzki 6
Wypozyczanie Pana Tadeusza
Udało się wypożyczyć Książkę: Pan Tadeusz
Przykro nam, książka jest już wypożyczona.
Przykro nam, nie mamy takiej książki.
Książki dostępne w pierwszej bibliotece
Gra o Tron
Tozsamosc Bourne’a
Analiza Matematyczna
Politechnika Wrocławska
Mateusz Lis
Strona 1 z 4
Laboratorium Podstaw Programowania
Laboratorium IV: Biblioteka
Książki dostępne w drugiej bibliotece
Brak książek w bibliotece.
Zwrot Pana Tadeusza
Udało Ci się zwrócić książkę: Pan Tadeusz
Książki dostępne w pierwszej bibliotece
Pan Tadeusz
Gra o Tron
Tozsamosc Bourne’a
Analiza Matematyczna
4.3
Tworzenie różnych rodzajów książek
Ostatnim krokiem jest samodzielne stworzenie 4 rodzajów książek:
• Epopeja,
• KsiazkaFantastyczna,
• Kryminal,
• KsiazkaNaukowa.
W tych klasach należy w odpowiedni sposób korzystając z polimorfizmu zaimplementować metody dajRodzaj() oraz
dajOpis(). Opis powinien być zależny od rodzaju książki - np. dla książki naukowej podać dziedzinę, w której jest
osadzona, a dla romansu imiona kochanków. Należy pamiętać o dodaniu pól przechowujących te dane do odpowiednich
klas! Następnie należy tak zmodyfikować metodę main() z klasy Biblioteka aby zwizualizować działanie polimorfizmu.
4.4
Wskazówki
• Niektóre metody muszą być statyczne, podczas gdy inne nie. Przyjrzyj się uważnie metodzie main() klasy Biblioteka,
• zwróć uwagę na sposób porównywania obiektów typu String. Zastosuj metodę String.equals(String2),
• możesz założyć, że w bibliotece nie będzie więcej niż 100 książek,
• pisz program kawałek po kawałku, testując każdy element. Zacznij od zakomentowania całej metody main() klasy
Biblioteka.
Potem odkomentowuj linijki, które wg Ciebie są już zaimplementowane i sprawdzaj czy działają
poprawnie,
• nie modyfikuj metod main() nim dojdziesz do części 3.
Politechnika Wrocławska
Mateusz Lis
Strona 2 z 4
Laboratorium Podstaw Programowania
Laboratorium IV: Biblioteka
Appendices
A
Ksiazka.java
Listing 1: Szablon klasy Ksiazka
c l a s s
K s i a z k a
{
S t r i n g
t y t u l
;
boolean
czyWypozyczona
;
public
K s i a z k a
(
S t r i n g
t y t u l
)
{
;
}
public void
wypozycz
( )
{
;
}
public void
o d d a j
( )
{
;
}
public boolean
czyWypozyczona
( )
{
return f a l s e
;
}
public
S t r i n g
d a j T y t u l
( )
{
return
" "
;
}
public
S t r i n g
d a j R o d z a j
( )
{
return
" "
;
}
public
S t r i n g
d a j O p i s
( )
{
return
" "
;
}
public s t a t i c void
main
(
S t r i n g
[ ]
argumenty
)
{
K s i a z k a p r z y k l a d o w a
=
new
K s i a z k a
(
" Pan T a d e u s z "
) ;
System
.
o u t
.
p r i n t l n
(
" T y t u l : ( p o w i n n o byc Pan T a d e u s z ) "
+
p r z y k l a d o w a
.
d a j T y t u l
( )
) ;
System
.
o u t
.
p r i n t l n
(
" Czy w y p o z y c z o n a ( p o w i n n a byc f a l s e ) ? "
+
p r z y k l a d o w a
.
czyWypozyczona
( )
) ;
p r z y k l a d o w a
.
wypozycz
( ) ;
System
.
o u t
.
p r i n t l n
(
" Czy w y p o z y c z o n a ( p o w i n n o byc t r u e ) ? "
+
p r z y k l a d o w a
.
czyWypozyczona
( )
) ;
p r z y k l a d o w a
.
o d d a j
( ) ;
System
.
o u t
.
p r i n t l n
(
" Czy w y p o z y c z o n a ( p o w i n n o byc f a l s e ) ? "
+
p r z y k l a d o w a
.
czyWypozyczona
( )
) ;
}
}
Politechnika Wrocławska
Mateusz Lis
Strona 3 z 4
Laboratorium Podstaw Programowania
Laboratorium IV: Biblioteka
B
Biblioteka.java
Listing 2: Szablon klasy Biblioteka
c l a s s
B i b l i o t e k a
{
// Dodaj i m p l e m e n t a c j e o d p o w i e d n i c h metod
public s t a t i c void
main
(
S t r i n g
[ ]
argumenty
)
{
// S t w o r z dwie
b i b l i o t e k i
B i b l i o t e k a
p i e r w s z a
=
new
B i b l i o t e k a
(
" A r m i K r a j o w e j 24 "
) ;
B i b l i o t e k a dru ga
=
new
B i b l i o t e k a
(
" P l a c G r u n w a l d z k i 6 "
) ;
// Dodaj c z t e r y
k s i a z k i do p i e r w s z e j
b i b l i o t e k i
p i e r w s z a
.
d o d a j K s i a z k e
(
new
K s i a z k a
(
" Pan T a d e u s z "
) ) ;
p i e r w s z a
.
d o d a j K s i a z k e
(
new
K s i a z k a
(
" Gra o T r o n "
) ) ;
p i e r w s z a
.
d o d a j K s i a z k e
(
new
K s i a z k a
(
" T o z s a m o s c B o u r n e ’ a "
) ) ;
p i e r w s z a
.
d o d a j K s i a z k e
(
new
K s i a z k a
(
" A n a l i z a M a t e m a t y c z n a "
) ) ;
// Wypisz g o d z i n y u r z e d o w a n i a
b i b l i o t e k
System
.
o u t
.
p r i n t l n
(
" G o d z i n y o t w a r c i a b i b l i o t e k "
) ;
w y p i s z G o d z i n y O t w a r c i a
( ) ;
System
.
o u t
.
p r i n t l n
( ) ;
// p u s t a
l i n i j k a
System
.
o u t
.
p r i n t l n
(
" A d r e s y b i b l i o t e k "
) ;
p i e r w s z a
.
w y p i s z A d r e s
( ) ;
dr uga
.
w y p i s z A d r e s
( ) ;
System
.
o u t
.
p r i n t l n
( ) ;
// p u s t a
l i n i j k a
// wypozycz Pana Tadeusza z obu b i b l i o t e k
System
.
o u t
.
p r i n t l n
(
" W y p o z y c z a n i e P a n a T a d e u s z a "
) ;
p i e r w s z a
.
w y p o z y c z K s i a z k e
(
" Pan T a d e u s z "
) ;
p i e r w s z a
.
w y p o z y c z K s i a z k e
(
" Pan T a d e u s z "
) ;
// s p r o b u j
j e s z c z e
r a z
dr uga
.
w y p o z y c z K s i a z k e
(
" Pan T a d e u s z "
) ;
System
.
o u t
.
p r i n t l n
( ) ;
// p u s t a
l i n i j k a
// Wypisz d o s t e p n e
t y t u l y w obu b i b l i o t e k a c h
System
.
o u t
.
p r i n t l n
(
" K s i a z k i d o s t e p n e w p i e r w s z e j b i b l i o t e c e "
) ;
p i e r w s z a
.
w y p i s z D o s t e p n e K s i a z k i
( ) ;
System
.
o u t
.
p r i n t l n
( ) ;
// p u s t a
l i n i j k a
System
.
o u t
.
p r i n t l n
(
" K s i a z k i z d r u g i e j b i b l i o t e k i "
) ;
dr uga
.
w y p i s z D o s t e p n e K s i a z k i
( ) ;
System
.
o u t
.
p r i n t l n
( ) ;
// z wr oc Pana Tadeusza do b i b l i o t e k i
System
.
o u t
.
p r i n t l n
(
" Z w r o t P a n a T a d e u s z a "
) ;
p i e r w s z a
.
o d d a j K s i a z k e
(
" Pan T a d e u s z "
) ;
System
.
o u t
.
p r i n t l n
( ) ;
// Wypisz t y t u l y
d o s t e p n e w p i e r w s z e j
b i b l i o t e c e
System
.
o u t
.
p r i n t l n
(
" K s i a z k i d o s t e p n e w p i e r w s z e j b i b l i o t e c e "
) ;
p i e r w s z a
.
w y p i s z D o s t e p n e K s i a z k i
( ) ;
}
}
Politechnika Wrocławska
Mateusz Lis
Strona 4 z 4