Menu
Coddy logo textTech

Rückblick – Benutzers профilsystem

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 29 von 110.

challenge icon

Aufgabe

Einfach

Erstellen wir ein vollständiges Benutzerprofilsystem, das alle Konzepte der Nullsicherheit zusammenführt, die du in diesem Kapitel kennengelernt hast. Du erstellst ein System, das Benutzerkonten mit einer Mischung aus erforderlichen Informationen und optionalen Details verwaltet.

Du organisierst deinen Code in zwei Dateien:

  • user_profile.dart: Definiere eine UserProfile-Klasse, die ein Benutzerkonto darstellt. Überlege, welche Informationen unbedingt erforderlich sind (z. B. ein Benutzername) und welche optional sind (z. B. eine Biografie oder Telefonnummer). Deine Klasse sollte Folgendes enthalten:
    • Eine nicht nullable String username – jeder Benutzer muss einen Benutzernamen haben
    • Eine nicht nullable String email – jeder Benutzer muss eine E-Mail-Adresse haben
    • Eine nullable String? displayName – Benutzer möchten möglicherweise einen anderen Namen anzeigen
    • Eine nullable String? bio – nicht jeder schreibt eine Biografie
    • Eine nullable int? age – das Alter ist eine optionale persönliche Information
    • Einen Konstruktor mit benannten Parametern und required für username und email
    • Eine Methode getDisplayIdentity(), die den Anzeigenamen zurückgibt, wenn er festgelegt ist, andernfalls mithilfe von ?? den Benutzernamen zurückgibt
    • Eine Methode getBioPreview(), die die ersten 20 Zeichen der Biografie gefolgt von ... zurückgibt, wenn die Biografie existiert und länger als 20 Zeichen ist, die vollständige Biografie, wenn sie höchstens 20 Zeichen lang ist, oder null, wenn keine Biografie existiert (verwende ?. für den sicheren Zugriff)
    • Eine Methode setDefaultBio(), die die Biografie nur dann auf 'Hello, I am new here!' setzt, wenn sie derzeit null ist, und dafür ??= verwendet
    • Eine Methode printProfile(), die das vollständige Profil des Benutzers anzeigt
  • main.dart: Importiere deine Benutzerprofilklasse und erstelle mehrere Benutzer, um das gesamte Spektrum der Funktionen zur Nullsicherheit zu demonstrieren:
    • Erstelle einen Benutzer mit dem Benutzernamen 'alice_dev' und der E-Mail-Adresse 'alice@code.com', setze anschließend den Anzeigenamen auf 'Alice', die Biografie auf 'Software developer passionate about clean code and testing' und das Alter auf 28
    • Erstelle einen Benutzer mit dem Benutzernamen 'bob_builder' und der E-Mail-Adresse 'bob@build.io', setze anschließend nur den Anzeigenamen auf 'Bob'
    • Erstelle einen Benutzer mit dem Benutzernamen 'charlie99' und der E-Mail-Adresse 'charlie@mail.net' (lasse alle optionalen Felder auf null)
    • Rufe setDefaultBio() für alle drei Benutzer auf
    • Rufe für jeden Benutzer der Reihe nach printProfile() auf, gib anschließend Identity: [getDisplayIdentity()] aus und gib danach Bio preview: [getBioPreview()] aus

Die Methode printProfile() sollte in diesem Format ausgeben:

===== User Profile =====
Username: [username]
Email: [email]
Display Name: [displayName or "Not set"]
Bio: [bio or "No bio"]
Age: [age or "Not specified"]

Beachte, dass Alices Biografie nach setDefaultBio() unverändert bleibt, weil sie bereits einen Wert enthält, während Charlie die Standardbiografie zugewiesen bekommt. Beobachte außerdem, wie die Biografie-Vorschau Alices längere Biografie kürzt, aber Charlies kürzere Standardbiografie vollständig anzeigt.

Erwartete Ausgabe:

===== User Profile =====
Username: alice_dev
Email: alice@code.com
Display Name: Alice
Bio: Software developer passionate about clean code and testing
Age: 28
Identity: Alice
Bio preview: Software developer p...
===== User Profile =====
Username: bob_builder
Email: bob@build.io
Display Name: Bob
Bio: Hello, I am new here!
Age: Not specified
Identity: Bob
Bio preview: Hello, I am new here!
===== User Profile =====
Username: charlie99
Email: charlie@mail.net
Display Name: Not set
Bio: Hello, I am new here!
Age: Not specified
Identity: charlie99
Bio preview: Hello, I am new here!

Probier es selbst

import 'user_profile.dart';

void main() {
  // TODO: Erstelle den Benutzer 'alice_dev' mit der E-Mail 'alice@code.com'
  // Setze displayName auf 'Alice'
  // Setze bio auf 'Software developer passionate about clean code and testing'
  // Setze age auf 28
  
  // TODO: Erstelle den Benutzer 'bob_builder' mit der E-Mail 'bob@build.io'
  // Setze nur displayName auf 'Bob'
  
  // TODO: Erstelle den Benutzer 'charlie99' mit der E-Mail 'charlie@mail.net'
  // Lasse alle optionalen Felder auf null
  
  // TODO: Rufe setDefaultBio() für alle drei Benutzer auf
  
  // TODO: Für jeden Benutzer in der Reihenfolge (alice, bob, charlie):
  // 1. Rufe printProfile() auf
  // 2. Drucke "Identity: [getDisplayIdentity()]"
  // 3. Drucke "Bio preview: [getBioPreview()]"
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler