Riepilogo - Crea forme
Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 16 di 110.
Sfida
FacileCostruiamo una classe Rectangle che riunisce tutte le tecniche per i costruttori che hai imparato in questo capitolo. Creerai una classe versatile per le forme, che può essere istanziata in diversi modi.
Organizzerai il codice in due file:
rectangle.dart: definisci una classeRectanglecon quanto segue:- Due campi
final double:widtheheight - Due campi calcolati
final double:areaeperimeter - Un costruttore principale che accetta
widtheheighte usa una lista di inizializzazione per calcolarearea(width × height) eperimeter(2 × (width + height)) - Un costruttore con nome
Rectangle.square(double side)che reindirizza al costruttore principale con larghezza e altezza uguali - Un costruttore con nome
Rectangle.golden(double width)che crea un rettangolo usando il rapporto aureo (height = width × 1.618) e reindirizza al costruttore principale - Un costruttore costante
Rectangle.unit()che crea un rettangolo 1×1 (per questo ti servirà un costruttore const separato) - Un metodo
display()che stampa le informazioni sul rettangolo
- Due campi
main.dart: importa la classe del rettangolo e crea quattro rettangoli:- Un rettangolo personalizzato con larghezza
4.0e altezza3.0 - Un quadrato con lato
5.0 - Un rettangolo aureo con larghezza
10.0 - Un rettangolo unitario usando il costruttore costante (crealo come costante a tempo di compilazione)
display()su ciascun rettangolo nell'ordine elencato sopra.- Un rettangolo personalizzato con larghezza
Il metodo display() dovrebbe stampare esattamente in questo formato:
Rectangle [width]x[height] | Area: [area] | Perimeter: [perimeter]Output previsto:
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.0Provalo tu
import 'rectangle.dart';
void main() {
// TODO: Crea un rettangolo personalizzato con larghezza 4.0 e altezza 3.0
// TODO: Crea un quadrato con lato 5.0
// TODO: Crea un rettangolo aureo con larghezza 10.0
// TODO: Crea un rettangolo unitario usando il costruttore costante
// (crealo come costante in fase di compilazione usando 'const')
// TODO: Chiama display() su ogni rettangolo nell'ordine indicato sopra
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniLibrerie e importazioniIntroduzione alla programmazione orientata agli oggettiClassi e oggettiLa parola chiave thisMetodiVariabili di istanzaFondamenti dei costruttoriRiepilogo - Calcolatrice semplice4Sicurezza dei valori null
Introduzione alla sicurezza dei valori nullNullable e non nullableGli operatori ? e !La keyword late e la sicurezza dei valori nullOperatori null-awareSicurezza dei valori null nelle classiRiepilogo - Sistema di profili utente7Classi astratte e interfacce
Classi astratteMetodi astrattiInterfacce in DartInterfacce impliciteImplementare vs estendereInterfacce multipleRiepilogo - Calcolatore di forme10Collezioni e generici
Panoramica di List, Set e MapCollezioni sicure rispetto ai tipiClassi genericheMetodi genericiVincoli sui genericiIterable e IteratorRiepilogo - Archiviazione generica13Concetti avanzati di OOP
Composizione vs ereditarietàMetodi di estensioneClassi chiamabiliClassi sealed (Dart 3)Record (Dart 3)Pattern e matching (3.0)Enum con metodi16Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e Utente2I costruttori in Dart
Costruttore predefinitoCostruttori con nomeListe di inizializzazioneCostruttori costantiCostruttori factoryCostruttori di reindirizzamentoRiepilogo - Crea forme5Incapsulamento
Membri pubblici e privatiConvenzione del prefisso _Visibilità a livello di libreriaApprofondimento su getter e setterNascondimento delle informazioniRiepilogo - Registri degli studenti8Mixin
Introduzione ai MixinCreare MixinUsare più MixinParola chiave on nei MixinMixin vs ereditarietàMixin vs interfacciaRiepilogo - Sistema animale11Metodi speciali
Sovrascrittura di toString()Sovrascrittura di hashCode e ==Interfaccia ComparableMetodo call()Sovrascrittura di noSuchMethodRiepilogo - Collezione personalizzata14Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneSingletonFactoryObserverStrategy3Proprietà delle classi
Membri di istanza e staticiCampi final e constVariabili lateMetodi e campi staticiGetter e setterRiepilogo - Gestore di conti bancari6Ereditarietà
Ereditarietà di baseLa parola chiave superOverride dei metodiL’annotazione @overrideLa parola chiave final per le classiCostruttori ed ereditarietàRiepilogo - Gerarchia dei dipendenti9Polimorfismo
Fondamenti di polimorfismoPolimorfismo tramite interfacceControllo del tipo a runtimeGli operatori is e asParola chiave covariantRiepilogo - Elaboratore di pagamenti12OOP asincrona
Future e async/awaitNozioni di base sugli streamController degli streamCostruttori asincroniAsync nei metodi di classeRiepilogo - Recupero dei dati15Pattern di progettazione Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern RepositoryEsercitati da solo: Compilatore Dart online