요약 - 사용자 프로필 시스템
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 29번째.
챌린지
쉬움이 장에서 배운 모든 널 안정성(null safety) 개념을 하나로 모으는 완전한 사용자 프로필 시스템을 구축해 보겠습니다. 필수 정보와 선택적 세부 정보가 혼합된 사용자 계정을 관리하는 시스템을 만들 것입니다.
코드를 두 개의 파일로 구성합니다:
user_profile.dart: 사용자 계정을 나타내는UserProfile클래스를 정의합니다. 어떤 정보가 필수적(예: 사용자 이름)이고 어떤 정보가 선택적(예: 자기소개 또는 전화번호)인지 생각해보세요. 클래스에는 다음이 포함되어야 합니다:- Null을 허용하지 않는
String username- 모든 사용자는 사용자 이름을 가져야 합니다. - Null을 허용하지 않는
String email- 모든 사용자는 이메일을 가져야 합니다. - Null을 허용하는
String? displayName- 사용자는 다른 이름을 표시하고 싶어 할 수 있습니다. - Null을 허용하는
String? bio- 모든 사람이 자기소개를 작성하지는 않습니다. - Null을 허용하는
int? age- 나이는 선택적인 개인 정보입니다. username과email에required를 사용하는 명명된 매개변수(named parameters) 생성자??를 사용하여 표시 이름이 설정되어 있으면 표시 이름을 반환하고, 그렇지 않으면 사용자 이름을 반환하는getDisplayIdentity()메서드- 자기소개가 존재하고 20자보다 길면 첫 20자 뒤에
...을 붙여 반환하고, 20자 이하이면 전체 자기소개를 반환하며, 자기소개가 없으면null을 반환하는getBioPreview()메서드 (안전한 접근을 위해?.를 사용하세요) ??=를 사용하여 현재 null인 경우에만 자기소개를'Hello, I am new here!'로 설정하는setDefaultBio()메서드- 사용자의 전체 프로필을 표시하는
printProfile()메서드
- Null을 허용하지 않는
main.dart: 사용자 프로필 클래스를 가져오고 널 안정성 기능의 전체 범위를 보여주기 위해 여러 사용자를 생성합니다:- 사용자 이름이
'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로 둡니다). - 세 사용자 모두에 대해
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: 세 사용자 모두에 대해 setDefaultBio()를 호출하세요.
// TODO: 각 사용자 순서대로 (alice, bob, charlie):
// 1. printProfile()을 호출하세요.
// 2. "Identity: [getDisplayIdentity()]"를 출력하세요.
// 3. "Bio preview: [getBioPreview()]"를 출력하세요.
}