Menu
Coddy logo textTech

Riepilogo - Sistema di profili utente

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 29 di 110.

challenge icon

Sfida

Facile

Costruiamo un sistema completo per i profili utente che riunisca tutti i concetti di sicurezza rispetto ai valori nulli che hai imparato in questo capitolo. Creerai un sistema che gestisce account utente con una combinazione di informazioni obbligatorie e dettagli facoltativi.

Organizzerai il codice in due file:

  • user_profile.dart: definisci una classe UserProfile che rappresenta un account utente. Rifletti su quali informazioni siano essenziali (come un nome utente) e quali facoltative (come una biografia o un numero di telefono). La classe dovrebbe avere:
    • Una String username non nullable: ogni utente deve avere un nome utente
    • Una String email non nullable: ogni utente deve avere un indirizzo email
    • Una String? displayName nullable: gli utenti potrebbero preferire mostrare un nome diverso
    • Una String? bio nullable: non tutti scrivono una biografia
    • Un int? age nullable: l'età è un'informazione personale facoltativa
    • Un costruttore che usa parametri con nome e required per username e email
    • Un metodo getDisplayIdentity() che restituisce il nome visualizzato se impostato, altrimenti restituisce il nome utente usando ??
    • Un metodo getBioPreview() che restituisce i primi 20 caratteri della biografia seguiti da ... se la biografia esiste ed è più lunga di 20 caratteri, la biografia completa se contiene 20 caratteri o meno, oppure null se non esiste alcuna biografia (usa ?. per l'accesso sicuro)
    • Un metodo setDefaultBio() che imposta la biografia su 'Hello, I am new here!' solo se al momento è null, usando ??=
    • Un metodo printProfile() che visualizza il profilo completo dell'utente
  • main.dart: importa la classe del profilo utente e crea diversi utenti per mostrare tutte le funzionalità della sicurezza rispetto ai valori nulli:
    • Crea un utente con nome utente 'alice_dev' e indirizzo email 'alice@code.com', poi imposta il nome visualizzato su 'Alice', la biografia su 'Software developer passionate about clean code and testing' e l'età su 28
    • Crea un utente con nome utente 'bob_builder' e indirizzo email 'bob@build.io', poi imposta solo il nome visualizzato su 'Bob'
    • Crea un utente con nome utente 'charlie99' e indirizzo email 'charlie@mail.net' (lascia null tutti i campi facoltativi)
    • Chiama setDefaultBio() per tutti e tre gli utenti
    • Per ogni utente, nell'ordine, chiama printProfile(), poi stampa Identity: [getDisplayIdentity()], quindi stampa Bio preview: [getBioPreview()]

Il metodo printProfile() dovrebbe stampare in questo formato:

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

Nota come la biografia di Alice rimanga invariata dopo setDefaultBio() perché ha già un valore, mentre a Charlie viene assegnata la biografia predefinita. Osserva anche come l'anteprima della biografia tronchi quella più lunga di Alice, ma mostri per intero la biografia predefinita più breve di Charlie.

Risultato previsto:

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

Provalo tu

import 'user_profile.dart';

void main() {
  // TODO: Crea l'utente 'alice_dev' con l'email 'alice@code.com'
  // Imposta displayName su 'Alice'
  // Imposta bio su 'Software developer passionate about clean code and testing'
  // Imposta age su 28
  
  // TODO: Crea l'utente 'bob_builder' con l'email 'bob@build.io'
  // Imposta solo displayName su 'Bob'
  
  // TODO: Crea l'utente 'charlie99' con l'email 'charlie@mail.net'
  // Lascia tutti i campi facoltativi a null
  
  // TODO: Chiama setDefaultBio() per tutti e tre gli utenti
  
  // TODO: Per ogni utente, nell'ordine (alice, bob, charlie):
  // 1. Chiama printProfile()
  // 2. Stampa "Identity: [getDisplayIdentity()]"
  // 3. Stampa "Bio preview: [getBioPreview()]"
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online