Menu
Coddy logo textTech

Récapitulatif - Système de profil utilisateur

Fait partie de la section Programmation Orientée Objet du Journey Dart de Coddy — leçon 29 sur 110.

challenge icon

Défi

Facile

Construisons un système complet de profil utilisateur qui rassemble tous les concepts de null safety que vous avez appris dans ce chapitre. Vous allez créer un système qui gère les comptes utilisateurs avec un mélange d'informations obligatoires et de détails facultatifs.

Vous organiserez votre code en deux fichiers :

  • user_profile.dart : Définissez une classe UserProfile qui représente un compte utilisateur. Réfléchissez aux informations essentielles (comme un nom d'utilisateur) par rapport à celles qui sont facultatives (comme une biographie ou un numéro de téléphone). Votre classe doit comporter :
    • Un String username non-nullable - chaque utilisateur doit avoir un nom d'utilisateur
    • Un String email non-nullable - chaque utilisateur doit avoir un e-mail
    • Un String? displayName nullable - les utilisateurs peuvent préférer afficher un nom différent
    • Un String? bio nullable - tout le monde n'écrit pas de biographie
    • Un int? age nullable - l'âge est une information personnelle facultative
    • Un constructeur utilisant des paramètres nommés avec required pour username et email
    • Une méthode getDisplayIdentity() qui retourne le nom d'affichage s'il est défini, sinon retourne le nom d'utilisateur en utilisant ??
    • Une méthode getBioPreview() qui retourne les 20 premiers caractères de la biographie suivis de ... si la biographie existe et fait plus de 20 caractères, la biographie complète si elle fait 20 caractères ou moins, ou null si aucune biographie n'existe (utilisez ?. pour un accès sécurisé)
    • Une méthode setDefaultBio() qui définit la biographie à 'Hello, I am new here!' uniquement si elle est actuellement nulle en utilisant ??=
    • Une méthode printProfile() qui affiche le profil complet de l'utilisateur
  • main.dart : Importez votre classe de profil utilisateur et créez plusieurs utilisateurs pour démontrer toute la gamme des fonctionnalités de null safety :
    • Créez un utilisateur avec le nom d'utilisateur 'alice_dev' et l'e-mail 'alice@code.com', puis définissez le nom d'affichage à 'Alice', la biographie à 'Software developer passionate about clean code and testing', et l'âge à 28
    • Créez un utilisateur avec le nom d'utilisateur 'bob_builder' et l'e-mail 'bob@build.io', puis définissez uniquement le nom d'affichage à 'Bob'
    • Créez un utilisateur avec le nom d'utilisateur 'charlie99' et l'e-mail 'charlie@mail.net' (laissez tous les champs facultatifs à null)
    • Appelez setDefaultBio() sur les trois utilisateurs
    • Pour chaque utilisateur dans l'ordre, appelez printProfile(), puis affichez Identity: [getDisplayIdentity()], puis affichez Bio preview: [getBioPreview()]

La méthode printProfile() doit afficher les informations dans ce format :

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

Remarquez comment la biographie d'Alice reste inchangée après setDefaultBio() car elle a déjà une valeur, tandis que Charlie se voit attribuer la biographie par défaut. Observez également comment l'aperçu de la biographie tronque la biographie plus longue d'Alice mais affiche la biographie par défaut plus courte de Charlie en entier.

Sortie attendue :

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

Essayez vous-même

import 'user_profile.dart';

void main() {
  // TODO: Créer l'utilisateur 'alice_dev' avec l'email 'alice@code.com'
  // Définir displayName à 'Alice'
  // Définir bio à 'Software developer passionate about clean code and testing'
  // Définir age à 28
  
  // TODO: Créer l'utilisateur 'bob_builder' avec l'email 'bob@build.io'
  // Définir uniquement displayName à 'Bob'
  
  // TODO: Créer l'utilisateur 'charlie99' avec l'email 'charlie@mail.net'
  // Laisser tous les champs optionnels à null
  
  // TODO: Appeler setDefaultBio() sur les trois utilisateurs
  
  // TODO: Pour chaque utilisateur dans l'ordre (alice, bob, charlie) :
  // 1. Appeler printProfile()
  // 2. Afficher "Identity: [getDisplayIdentity()]"
  // 3. Afficher "Bio preview: [getBioPreview()]"
}

Toutes les leçons de Programmation Orientée Objet