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 sécurité contre les valeurs nulles que vous avez appris dans ce chapitre. Vous allez créer un système qui gère des comptes utilisateur 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 opposition à celles qui sont facultatives (comme une biographie ou un numéro de téléphone). Votre classe doit avoir :
    • Un String username non nullable : chaque utilisateur doit avoir un nom d’utilisateur
    • Un String email non nullable : chaque utilisateur doit avoir une adresse 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 renvoie le nom d’affichage s’il est défini, sinon le nom d’utilisateur à l’aide de ??
    • Une méthode getBioPreview() qui renvoie les 20 premiers caractères de la biographie suivis de ... si la biographie existe et comporte plus de 20 caractères, la biographie complète si elle comporte 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 sur 'Hello, I am new here!' uniquement si elle est actuellement nulle, à l’aide de ??=
    • 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 afin de démontrer toute la gamme des fonctionnalités de sécurité contre les valeurs nulles :
    • Créez un utilisateur avec le nom d’utilisateur 'alice_dev' et l’adresse e-mail 'alice@code.com', puis définissez le nom d’affichage sur 'Alice', la biographie sur 'Software developer passionate about clean code and testing' et l’âge sur 28
    • Créez un utilisateur avec le nom d’utilisateur 'bob_builder' et l’adresse e-mail 'bob@build.io', puis définissez uniquement le nom d’affichage sur 'Bob'
    • Créez un utilisateur avec le nom d’utilisateur 'charlie99' et l’adresse 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 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 que la biographie d’Alice reste inchangée après setDefaultBio() car elle a déjà une valeur, tandis que Charlie reçoit la biographie par défaut. Observez également comment l’aperçu de la biographie tronque la biographie plus longue d’Alice, mais affiche en entier la biographie par défaut, plus courte, de Charlie.

Résultat attendu :

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

Entraînez-vous par vous-même : Compilateur Dart en ligne