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 criar um sistema completo de perfil de usuário que reúne todos os conceitos de segurança contra nulos que você aprendeu neste capítulo. Você criará um sistema que gerencia contas de usuário com uma combinação de informações obrigatórias e detalhes opcionais.

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

  • user_profile.dart: defina uma classe UserProfile que represente uma conta de usuário. Pense em quais informações são essenciais (como um nome de usuário) e quais são opcionais (como uma biografia ou um número de telefone). Sua classe deve ter:
    • Uma String username não anulável — todo usuário deve ter um nome de usuário
    • Uma String email não anulável — todo usuário deve ter um e-mail
    • Uma String? displayName anulável — os usuários podem preferir exibir um nome diferente
    • Uma 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 retorne o nome de exibição se estiver definido; caso contrário, retorne o nome de usuário usando ??
    • Um método getBioPreview() que retorne os primeiros 20 caracteres da biografia seguidos por ... se a biografia existir e tiver mais de 20 caracteres; a biografia completa se tiver 20 caracteres ou menos; ou null se não existir uma biografia (use ?. para acesso seguro)
    • Um método setDefaultBio() que defina a biografia como 'Hello, I am new here!' somente se ela for atualmente nula, usando ??=
    • Um método printProfile() que exiba 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 variedade de recursos de segurança contra nulos:
    • Crie um usuário com o nome de usuário 'alice_dev' e o e-mail 'alice@code.com'; depois 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 o nome de usuário 'bob_builder' e o e-mail 'bob@build.io'; depois defina apenas o nome de exibição como 'Bob'
    • Crie um usuário com o nome de usuário 'charlie99' e o e-mail 'charlie@mail.net' (deixe todos os campos opcionais como nulos)
    • Chame setDefaultBio() nos três usuários
    • Para cada usuário, na ordem, chame printProfile(); depois imprima Identity: [getDisplayIdentity()]; 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(), pois ela já tem um valor, enquanto Charlie recebe a biografia padrão. Observe também como a prévia da biografia trunca a biografia mais longa de Alice, mas exibe por completo a biografia padrão mais curta de Charlie.

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

Pratique por conta própria: Compilador de Dart online