Menu
Coddy logo textTech

まとめ:ユーザープロフィールシステム

CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 29/110。

challenge icon

チャレンジ

簡単

この章で学んだすべてのNullセーフティの概念を統合した、完全なユーザープロファイルシステムを構築しましょう。必須情報とオプションの詳細が混在するユーザーアカウントを管理するシステムを作成します。

コードは2つのファイルに分けて構成します:

  • user_profile.dart: ユーザーアカウントを表す UserProfile クラスを定義します。どの情報が不可欠(ユーザー名など)で、どの情報がオプション(自己紹介や電話番号など)かを考えてください。クラスには以下の要素を含める必要があります:
    • 非Nullの String username - すべてのユーザーはユーザー名を持つ必要があります
    • 非Nullの String email - すべてのユーザーはメールアドレスを持つ必要があります
    • Null許容の String? displayName - ユーザーは別の名前を表示したい場合があります
    • Null許容の String? bio - 全員が自己紹介を書くわけではありません
    • Null許容の int? age - 年齢はオプションの個人情報です
    • usernameemailrequired を指定した名前付きパラメータを使用するコンストラクタ
    • ?? を使用して、表示名が設定されている場合はそれを返し、設定されていない場合はユーザー名を返す getDisplayIdentity() メソッド
    • 自己紹介が存在し、20文字より長い場合は最初の20文字に ... を続けて返し、20文字以下の場合は自己紹介の全文を返し、自己紹介が存在しない場合は null を返す getBioPreview() メソッド(安全なアクセスのために ?. を使用してください)
    • ??= を使用して、現在Nullの場合のみ自己紹介を 'Hello, I am new here!' に設定する setDefaultBio() メソッド
    • ユーザーの完全なプロファイルを表示する printProfile() メソッド
  • main.dart: ユーザープロファイルクラスをインポートし、Nullセーフティ機能の全範囲を示すために複数のユーザーを作成します:
    • ユーザー名 'alice_dev'、メールアドレス 'alice@code.com' でユーザーを作成し、表示名を 'Alice'、自己紹介を 'Software developer passionate about clean code and testing'、年齢を 28 に設定します
    • ユーザー名 'bob_builder'、メールアドレス 'bob@build.io' でユーザーを作成し、表示名のみを 'Bob' に設定します
    • ユーザー名 'charlie99'、メールアドレス 'charlie@mail.net' でユーザーを作成します(すべてのオプションフィールドはNullのままにします)
    • 3人すべてのユーザーに対して setDefaultBio() を呼び出します
    • 各ユーザーに対して順番に、printProfile() を呼び出し、次に Identity: [getDisplayIdentity()] を出力し、その後に Bio preview: [getBioPreview()] を出力します

printProfile() メソッドは、以下の形式で出力する必要があります:

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

Aliceの自己紹介は、すでに値があるため setDefaultBio() の後も変更されませんが、Charlieにはデフォルトの自己紹介が割り当てられることに注目してください。また、自己紹介のプレビューで、Aliceの長い自己紹介は切り詰められ、Charlieの短いデフォルトの自己紹介は全文が表示されることも確認してください。

期待される出力:

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

自分で試してみよう

import 'user_profile.dart';

void main() {
  // TODO: メールアドレス 'alice@code.com' でユーザー 'alice_dev' を作成する
  // displayName を 'Alice' に設定する
  // bio を 'Software developer passionate about clean code and testing' に設定する
  // age を 28 に設定する
  
  // TODO: メールアドレス 'bob@build.io' でユーザー 'bob_builder' を作成する
  // displayName のみを 'Bob' に設定する
  
  // TODO: メールアドレス 'charlie@mail.net' でユーザー 'charlie99' を作成する
  // すべてのオプションフィールドを null のままにする
  
  // TODO: 3人すべてのユーザーに対して setDefaultBio() を呼び出す
  
  // TODO: 各ユーザー(alice、bob、charlie)に対して順番に以下を行う:
  // 1. printProfile() を呼び出す
  // 2. "Identity: [getDisplayIdentity()]" を出力する
  // 3. "Bio preview: [getBioPreview()]" を出力する
}

オブジェクト指向プログラミングのすべてのレッスン