Menu
Coddy logo textTech

Podsumowanie — system profili użytkowników

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 29 z 110.

challenge icon

Wyzwanie

Łatwy

Stwórzmy kompletny system profili użytkowników, który łączy wszystkie poznane w tym rozdziale zagadnienia dotyczące bezpieczeństwa null. Utworzysz system zarządzający kontami użytkowników, zawierający zarówno wymagane informacje, jak i opcjonalne szczegóły.

Podzielisz kod na dwa pliki:

  • user_profile.dart: Zdefiniuj klasę UserProfile, która reprezentuje konto użytkownika. Zastanów się, które informacje są niezbędne (takie jak nazwa użytkownika), a które opcjonalne (takie jak biografia lub numer telefonu). Twoja klasa powinna zawierać:
    • Nieprzyjmującą wartości null zmienną String username — każdy użytkownik musi mieć nazwę użytkownika
    • Nieprzyjmującą wartości null zmienną String email — każdy użytkownik musi mieć adres e-mail
    • Przyjmującą wartość null zmienną String? displayName — użytkownicy mogą woleć wyświetlać inną nazwę
    • Przyjmującą wartość null zmienną String? bio — nie każdy pisze biografię
    • Przyjmującą wartość null zmienną int? age — wiek to opcjonalna informacja osobista
    • Konstruktor używający parametrów nazwanych, z required dla username i email
    • Metodę getDisplayIdentity(), która zwraca nazwę wyświetlaną, jeśli została ustawiona, a w przeciwnym razie zwraca nazwę użytkownika, używając ??
    • Metodę getBioPreview(), która zwraca pierwsze 20 znaków biografii, po których następuje ..., jeśli biografia istnieje i ma więcej niż 20 znaków; całą biografię, jeśli ma 20 znaków lub mniej; albo null, jeśli biografia nie istnieje (użyj ?., aby bezpiecznie uzyskać dostęp)
    • Metodę setDefaultBio(), która ustawia biografię na 'Hello, I am new here!' tylko wtedy, gdy jej bieżąca wartość to null, używając ??=
    • Metodę printProfile(), która wyświetla pełny profil użytkownika
  • main.dart: Zaimportuj klasę profilu użytkownika i utwórz kilku użytkowników, aby zademonstrować pełen zakres funkcji bezpieczeństwa null:
    • Utwórz użytkownika o nazwie 'alice_dev' i adresie e-mail 'alice@code.com', a następnie ustaw nazwę wyświetlaną na 'Alice', biografię na 'Software developer passionate about clean code and testing', a wiek na 28
    • Utwórz użytkownika o nazwie 'bob_builder' i adresie e-mail 'bob@build.io', a następnie ustaw tylko nazwę wyświetlaną na 'Bob'
    • Utwórz użytkownika o nazwie 'charlie99' i adresie e-mail 'charlie@mail.net' (pozostaw wszystkie pola opcjonalne jako null)
    • Wywołaj setDefaultBio() dla wszystkich trzech użytkowników
    • Dla każdego użytkownika, po kolei, wywołaj printProfile(), następnie wypisz Identity: [getDisplayIdentity()], a potem wypisz Bio preview: [getBioPreview()]

Metoda printProfile() powinna wypisywać dane w następującym formacie:

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

Zauważ, że biografia Alice pozostaje niezmieniona po wywołaniu setDefaultBio(), ponieważ ma już wartość, natomiast Charlie otrzymuje domyślną biografię. Zwróć też uwagę, że podgląd biografii skraca dłuższą biografię Alice, ale wyświetla w całości krótszą, domyślną biografię Charliego.

Oczekiwany wynik:

===== 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!

Spróbuj swoich sił

import 'user_profile.dart';

void main() {
  // TODO: Utwórz użytkownika 'alice_dev' z adresem e-mail 'alice@code.com'
  // Ustaw displayName na 'Alice'
  // Ustaw bio na 'Software developer passionate about clean code and testing'
  // Ustaw age na 28
  
  // TODO: Utwórz użytkownika 'bob_builder' z adresem e-mail 'bob@build.io'
  // Ustaw tylko displayName na 'Bob'
  
  // TODO: Utwórz użytkownika 'charlie99' z adresem e-mail 'charlie@mail.net'
  // Pozostaw wszystkie opcjonalne pola jako null
  
  // TODO: Wywołaj setDefaultBio() dla wszystkich trzech użytkowników
  
  // TODO: Dla każdego użytkownika po kolei (alice, bob, charlie):
  // 1. Wywołaj printProfile()
  // 2. Wypisz "Identity: [getDisplayIdentity()]"
  // 3. Wypisz "Bio preview: [getBioPreview()]"
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online