Organizowanie klas w moduły
Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 30 z 56.
Gdy twój projekt rośnie, trzymanie wszystkich klas w jednym pliku staje się nieuporządkowane. Wyobraź sobie 10 klas w jednym pliku — trudno wtedy znaleźć kod i go utrzymywać.
Nauczyliśmy się już, jak organizować kod za pomocą modułów — eksportując i importując funkcje oraz zmienne. W przypadku klas obowiązuje ta sama logika i składnia! Możesz eksportować klasy z jednego pliku i importować je do innego, tak jak robiliśmy to w przypadku funkcji.
Poćwiczmy organizowanie klas w moduły, aby nasz kod był przejrzysty i łatwy w zarządzaniu.
Na przykład:

Jak to działa:
Plik 1: furniture-base.js (Eksportuj klasę bazową)
export class Furniture {
constructor(material) {
this.material = material;
}
describe() {
return `${this.material} furniture`;
}
}Plik 2: chair.js (Importuj i rozszerz)
import { Furniture } from './furniture-base.js';
export class Chair extends Furniture {
constructor(material, legs) {
super(material);
this.legs = legs;
}
sit() {
return "Sitting comfortably";
}
}Plik 3: main.js (Użyj wszystkiego razem)
import { Chair } from './chair.js';
import { Table } from './table.js';
const myChair = new Chair("wood", 4);
const myTable = new Table("glass", "round");
console.log(myChair.describe()); // "wood furniture"
console.log(myTable.describe()); // "glass furniture"Wyzwanie
Masz system sklepu elektronicznego zorganizowany w moduły. Klasy Laptop i Smartphone są tworzone w osobnych plikach, ale trzeba udostępnić je innym plikom.
Twoje zadanie:
- Wyeksportuj klasy (użyj eksportów nazwanych — nie domyślnych):
- W pliku
laptop.js: Dodajexport, aby udostępnić klasęLaptop - W pliku
smartphone.js: Dodajexport, aby udostępnić klasęSmartphone
- W pliku
- Zaimportuj klasy w pliku
main.js:- Zaimportuj klasę
Laptopz plikulaptop.js - Zaimportuj klasę
Smartphonez plikusmartphone.js
- Zaimportuj klasę
Spróbuj swoich sił
// TODO: Zaimportuj klasę Laptop z laptop.js
// TODO: Zaimportuj klasę Smartphone z smartphone.js
const myLaptop = new Laptop();
const myPhone = new Smartphone();
console.log(myLaptop.type); // Wyświetla: "laptop"
console.log(myPhone.type); // Wyświetla: "smartphone"Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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