Walidacja autora książki
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 52 z 56.
Wyzwanie
Ulepsz konstruktor klasy Book, dodając walidację. Obecnie Book akceptuje dowolną wartość parametru author, ale powinien akceptować tylko instancję klasy Author.
Twoje zadanie:
- W konstruktorze Book dodaj instrukcję sprawdzającą if-else
- Jeśli autor jest prawidłowy (jest instancją klasy Author), używając
author instanceof Author, ustawthis.#author = author - W przeciwnym razie (autor jest nieprawidłowy): Zaloguj dokładnie
“Invalid author: must be Author instance”. Ustawthis.#author = null
Dzięki temu książka powinna zostać utworzona nawet wtedy, gdy autor jest nieprawidłowy.
Spróbuj swoich sił
import { Author } from './Author.js';
import { Book } from './Book.js';
// Testy
const rowling = new Author('J.K. Rowling');
// Poprawny przypadek (powinien działać bez komunikatów)
const validBook = new Book('Harry Potter', rowling);
console.log('Author:', validBook.authorInfo); // Powinno wyświetlić: "Author: J.K. Rowling"
// Niepoprawne przypadki (powinny wyświetlić komunikat, ale mimo to utworzyć książkę)
const invalid1 = new Book('Fake Book', 'String Author');Wszystkie lekcje w sekcji Programowanie obiektowe
1Obiekty i słowo kluczowe this
Szybka powtórka: obiektyDodawanie metod do obiektówZrozumienie słowa kluczowego thisFunkcje konstruktoraSłowo kluczowe newWyzwanie podsumowujące7Dziedziczenie i słowo kluczowe extends
DziedziczenieRelacja „jest rodzajem”Słowo kluczowe extendsMetoda super()Dziedziczenie właściwości i metodWyzwanie podsumowujące10Polimorfizm
Czym jest polimorfizm?Nadpisywanie odziedziczonych metodUżywanie superWyzwanie podsumowujące13Kompozycja a dziedziczenie
Relacja „ma” a relacja „jest”Ograniczenia głębokiego dziedziczeniaTworzenie obiektów2Organizowanie kodu
Czym są moduły?Eksportowanie za pomocą exportImportowanie za pomocą importEksporty domyślne a nazwane5Enkapsulacja i dostęp
EnkapsulacjaPubliczne i prywatne pola klasyMetody prywatneWyzwanie podsumowujące8Organizowanie kodu OOP
Organizowanie klas w moduły11Projekt: Renderer kształtów
Konfiguracja: klasa Shape i eksportDziedziczenie klasy CircleNadpisywanie i metoda obliczania polaStatyczny licznik kształtów14System zarządzania biblioteką
Projektowanie bibliotekiKlasa Book z kompozycjąWalidacja autora książki9Metody i właściwości statyczne
Poziom klasy a poziom instancjiWłaściwości statyczneStatyczne metody pomocniczeWyzwanie podsumowującePoćwicz samodzielnie: Kompilator JavaScript online