Podsumowanie — budowanie kształtów
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 16 z 110.
Wyzwanie
ŁatwyZbudujmy klasę Rectangle, która łączy wszystkie techniki tworzenia konstruktorów poznane w tym rozdziale. Utworzysz wszechstronną klasę reprezentującą kształt, którą można utworzyć na kilka sposobów.
Podzielisz kod na dwa pliki:
rectangle.dart: Zdefiniuj klasęRectanglez następującymi elementami:- Dwa pola
final double:widthiheight - Dwa obliczane pola
final double:areaiperimeter - Główny konstruktor przyjmujący
widthiheight, który używa listy inicjalizacyjnej do obliczeniaarea(width × height) iperimeter(2 × (width + height)) - Konstruktor nazwany
Rectangle.square(double side), który przekazuje wartości do głównego konstruktora, ustawiając równą szerokość i wysokość - Konstruktor nazwany
Rectangle.golden(double width), który tworzy prostokąt z użyciem złotej proporcji (height = width × 1.618), przekazując wartości do głównego konstruktora - Konstruktor stały
Rectangle.unit(), który tworzy prostokąt o wymiarach 1×1 (będzie potrzebny do tego osobny konstruktor const) - Metodę
display(), która wyświetla informacje o prostokącie
- Dwa pola
main.dart: Zaimportuj klasę prostokąta i utwórz cztery prostokąty:- Prostokąt o niestandardowych wymiarach: szerokość
4.0i wysokość3.0 - Kwadrat o boku
5.0 - Złoty prostokąt o szerokości
10.0 - Prostokąt jednostkowy utworzony za pomocą konstruktora stałego (utwórz go jako stałą czasu kompilacji)
display()dla każdego prostokąta w podanej wyżej kolejności.- Prostokąt o niestandardowych wymiarach: szerokość
Metoda display() powinna wyświetlać tekst dokładnie w tym formacie:
Rectangle [width]x[height] | Area: [area] | Perimeter: [perimeter]Oczekiwany wynik:
Rectangle 4.0x3.0 | Area: 12.0 | Perimeter: 14.0
Rectangle 5.0x5.0 | Area: 25.0 | Perimeter: 20.0
Rectangle 10.0x16.18 | Area: 161.8 | Perimeter: 52.36
Rectangle 1.0x1.0 | Area: 1.0 | Perimeter: 4.0Spróbuj swoich sił
import 'rectangle.dart';
void main() {
// TODO: Utwórz prostokąt o niestandardowych wymiarach: szerokości 4.0 i wysokości 3.0
// TODO: Utwórz kwadrat o boku 5.0
// TODO: Utwórz złoty prostokąt o szerokości 10.0
// TODO: Utwórz prostokąt jednostkowy za pomocą konstruktora stałego
// (utwórz go jako stałą czasu kompilacji, używając 'const')
// TODO: Wywołaj display() dla każdego prostokąta w kolejności podanej powyżej
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy OOP
Pliki zewnętrzneBiblioteki i importyWprowadzenie do OOPKlasy a obiektySłowo kluczowe thisMetodyZmienne instancjiPodstawy konstruktorówPowtórka – prosty kalkulator4Bezpieczeństwo wartości null
Wprowadzenie do bezpieczeństwa wartości nullTypy dopuszczające null i niedopuszczające nullOperatory ? i !Słowo kluczowe late a bezpieczeństwo wartości nullOperatory uwzględniające nullBezpieczeństwo wartości null w klasachPodsumowanie — system profili użytkowników7Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjneMetody abstrakcyjneInterfejsy w DartInterfejsy niejawneImplementowanie a rozszerzanieWiele interfejsówPowtórka — kalkulator kształtów10Kolekcje i typy generyczne
Przegląd List, Set i MapKolekcje bezpieczne typowoKlasy generyczneMetody generyczneOgraniczenia typów generycznychIterable i IteratorPowtórka — generyczne przechowywanie danych13Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieMetody rozszerzająceKlasy wywoływalneKlasy zapieczętowane (Dart 3)Rekordy (Dart 3)Wzorce i dopasowywanie (3.0)Typy wyliczeniowe z metodami16Projekt: Zarządzanie biblioteką
Omówienie projektuKlasy książek i użytkowników2Konstruktory w Dart
Konstruktor domyślnyKonstruktory nazwaneListy inicjalizująceKonstruktory stałeKonstruktory fabryczneKonstruktory przekierowującePodsumowanie — budowanie kształtów5Hermetyzacja
Elementy publiczne a prywatneKonwencja prefiksu _Prywatność na poziomie bibliotekiGettery i settery — szczegółowoUkrywanie informacjiPodsumowanie — dane uczniów8Domieszki
Wprowadzenie do domieszekTworzenie domieszekKorzystanie z wielu domieszekSłowo kluczowe on w domieszkachDomieszka a dziedziczenieDomieszka a interfejsPodsumowanie – system zwierząt11Metody specjalne
Nadpisanie toString()Nadpisanie hashCode i ==Interfejs ComparableMetoda call()Nadpisanie noSuchMethodPodsumowanie — własna kolekcja14Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy3Właściwości klas
Elementy instancji a elementy statycznePola final i constZmienne inicjalizowane z opóźnieniemMetody i pola statyczneGettery i setteryPowtórzenie – menedżer kont bankowych6Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superPrzesłanianie metodAdnotacja @overrideSłowo kluczowe final dla klasKonstruktory i dziedziczeniePowtórzenie – hierarchia pracowników9Polimorfizm
Podstawy polimorfizmuPolimorfizm za pomocą interfejsówSprawdzanie typu w czasie działaniaOperatory is i asSłowo kluczowe covariantPodsumowanie — procesor płatnościPoćwicz samodzielnie: Kompilator Dart online