Menu
Coddy logo textTech

Recapitulação - Sistema de Perfil de Usuário

Parte da seção Programação Orientada a Objetos do Journey de Dart da Coddy — lição 29 de 110.

challenge icon

Desafio

Fácil

Vamos construir um sistema completo de perfil de usuário que reúna todos os conceitos de null safety que você aprendeu neste capítulo. Você criará um sistema que gerencia contas de usuário com uma mistura de informações obrigatórias e detalhes opcionais.

Você organizará seu código em dois arquivos:

  • user_profile.dart: Defina uma classe UserProfile que representa uma conta de usuário. Pense em quais informações são essenciais (como um nome de usuário) versus o que é opcional (como uma biografia ou número de telefone). Sua classe deve ter:
    • Um String username não anulável - todo usuário deve ter um nome de usuário
    • Um String email não anulável - todo usuário deve ter um e-mail
    • Um String? displayName anulável - os usuários podem preferir mostrar um nome diferente
    • Um String? bio anulável - nem todo mundo escreve uma biografia
    • Um int? age anulável - a idade é uma informação pessoal opcional
    • Um construtor usando parâmetros nomeados com required para username e email
    • Um método getDisplayIdentity() que retorna o nome de exibição se definido, caso contrário, retorna o nome de usuário usando ??
    • Um método getBioPreview() que retorna os primeiros 20 caracteres da biografia seguidos por ... se a biografia existir e for maior que 20 caracteres, a biografia completa se tiver 20 caracteres ou menos, ou null se não houver biografia (use ?. para acesso seguro)
    • Um método setDefaultBio() que define a biografia como 'Hello, I am new here!' apenas se ela for atualmente nula usando ??=
    • Um método printProfile() que exibe o perfil completo do usuário
  • main.dart: Importe sua classe de perfil de usuário e crie vários usuários para demonstrar toda a gama de recursos de null safety:
    • Crie um usuário com username 'alice_dev' e email 'alice@code.com', então defina o nome de exibição como 'Alice', a biografia como 'Software developer passionate about clean code and testing' e a idade como 28
    • Crie um usuário com username 'bob_builder' e email 'bob@build.io', então defina apenas o nome de exibição como 'Bob'
    • Crie um usuário com username 'charlie99' e email 'charlie@mail.net' (deixe todos os campos opcionais como nulos)
    • Chame setDefaultBio() em todos os três usuários
    • Para cada usuário em ordem, chame printProfile(), depois imprima Identity: [getDisplayIdentity()] e, em seguida, imprima Bio preview: [getBioPreview()]

O método printProfile() deve imprimir neste formato:

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

Observe como a biografia de Alice permanece inalterada após setDefaultBio() porque ela já possui um valor, enquanto Charlie recebe a biografia padrão atribuída. Observe também como a prévia da biografia trunca a biografia mais longa de Alice, mas mostra a biografia padrão mais curta de Charlie na íntegra.

Saída esperada:

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

Experimente você mesmo

import 'user_profile.dart';

void main() {
  // TODO: Criar usuário 'alice_dev' com o e-mail 'alice@code.com'
  // Definir displayName como 'Alice'
  // Definir bio como 'Software developer passionate about clean code and testing'
  // Definir age como 28
  
  // TODO: Criar usuário 'bob_builder' com o e-mail 'bob@build.io'
  // Definir apenas displayName como 'Bob'
  
  // TODO: Criar usuário 'charlie99' com o e-mail 'charlie@mail.net'
  // Deixar todos os campos opcionais como null
  
  // TODO: Chamar setDefaultBio() em todos os três usuários
  
  // TODO: Para cada usuário em ordem (alice, bob, charlie):
  // 1. Chamar printProfile()
  // 2. Imprimir "Identity: [getDisplayIdentity()]"
  // 3. Imprimir "Bio preview: [getBioPreview()]"
}

Todas as lições de Programação Orientada a Objetos