Przegląd projektu i projekt UML
Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 77 z 87.
Wyzwanie
ŁatwyZacznijmy projekt Systemu zarządzania biblioteką od zbudowania jego podstaw: głównych klas encji, od których zależeć będzie cała reszta. To pierwsze wyzwanie skupia się na utworzeniu dobrze zorganizowanych klas Book i User, które modelują główne encje systemu.
Rozmieścisz swój kod w trzech plikach:
Book.java: Utwórz klasęBook, która reprezentuje książkę z biblioteki. Każda książka powinna mieć prywatne pola:isbn(String),title(String),author(String) iisAvailable(boolean, domyślnie ustawione natrue). Dodaj konstruktor przyjmujący isbn, title i author. Zapewnij odpowiednie metody pobierające dla wszystkich pól oraz metodę ustawiającą dlaisAvailable. Dodaj metodęgetDetails(), która zwraca sformatowany ciąg znaków:[isbn] title by author.User.java: Utwórz klasęUserreprezentującą członka biblioteki. Każdy użytkownik powinien mieć prywatne polaid(String) iname(String). Dodaj konstruktor przyjmujący obie wartości oraz metody pobierające dla każdego pola. Dodaj metodętoString(), która zwraca:User[id]: name.Main.java: Połącz swoje klasy, aby zademonstrować, że działają poprawnie. Otrzymasz pięć danych wejściowych: ISBN, tytuł i autora książki, a następnie identyfikator i nazwę użytkownika.Utwórz obiekt
Bookz pierwszych trzech danych wejściowych, a obiektUserz dwóch ostatnich. Wyświetl szczegóły książki za pomocągetDetails(), a następnie wyświetl, czy książka jest dostępna, w formacieAvailable: truelubAvailable: false. Na koniec wyświetl użytkownika za pomocą jego metodytoString().
Otrzymasz pięć danych wejściowych w następującej kolejności: ISBN (String), tytuł (String), autor (String), identyfikator użytkownika (String) i nazwa użytkownika (String).
Na przykład dla danych wejściowych 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 i Alice Smith wynikiem będzie:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithTe podstawowe klasy będą fundamentem całego Systemu zarządzania biblioteką. W kolejnych lekcjach rozbudujesz je o funkcje wypożyczania, możliwości wyszukiwania i nie tylko!
Spróbuj swoich sił
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Wczytaj informacje o książce
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// Wczytaj informacje o użytkowniku
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: Utwórz obiekt Book z isbn, title i author
// TODO: Utwórz obiekt User z userId i userName
// TODO: Wyświetl szczegóły książki za pomocą getDetails()
// TODO: Wyświetl, czy książka jest dostępna (format: "Available: true" lub "Available: false")
// TODO: Wyświetl użytkownika za pomocą toString()
}
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe thisMetodyPola (atrybuty)Metoda konstruktoraPrzeciążanie konstruktoraPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawy dziedziczenia (extends)Słowo kluczowe superPrzesłanianie metod (@Override)Łańcuch wywołań konstruktorówKlasa ObjectDziedziczenie jedno- i wielopoziomoweDlaczego Java nie obsługuje wielodziedziczenia klasPodsumowanie – hierarchia pracowników7Metody specjalne i klasa Object
Metoda toString()equals() i hashCode()Metoda clone()compareTo() i ComparableInterfejs ComparatorPodsumowanie — własne sortowanie10Obsługa wyjątków w programowaniu obiektowym
Hierarchia klas wyjątkówWłasne wyjątkiBłędy sprawdzane a niesprawdzaneWzorzec try-with-resourcesPodsumowanie – zweryfikowany użytkownik13Projekt: System zarządzania biblioteką
Przegląd projektu i projekt UMLKlasy książki i użytkownikaSystem wypożyczeńFunkcja wyszukiwaniaInterfejs administratoraIntegracja obsługi wyjątkówTestowanie i integracja2Modyfikatory dostępu i enkapsulacja
Przegląd poziomów dostępuMetody pobierające i ustawiająceUkrywanie informacjiSłowo kluczowe finalPodsumowanie — menedżer kont bankowych5Polimorfizm
Podstawy przeciążania metodPrzesłanianie metod (w czasie wykonywania)Rzutowanie w górę i w dółOperator instanceofKlasy i metody abstrakcyjnePowtórka — kalkulator figur8Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieAgregacja a kompozycjaKlasy wewnętrzne, zagnieżdżone i anonimoweEnumy i metody enumówRekordy (Java 16+)Klasy zapieczętowane (Java 17+)11Wzorce projektowe — część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec BuilderWzorzec ObserverWzorzec Strategy3Właściwości klas i składowe statyczne
Zmienne instancji a zmienne statyczneMetody statyczneBloki statyczneStałe (static final)Powtórka – Counter i Utility6Interfejsy i klasy abstrakcyjne
Wprowadzenie do interfejsówImplementowanie interfejsówImplementacja wielu interfejsówMetody domyślne i statyczne w interfejsieKlasy abstrakcyjne a interfejsyInterfejsy funkcyjnePodsumowanie — system płatnościPoćwicz samodzielnie: Kompilator Java online