<aside> 💁‍♂️ 이 장에서는 설계의 청사진이 되는 모델링에 대해 설명합니다.

</aside>

모델 : 동작 원리와 구조를 간단하게 설명하기 위해, 사물의 특징과 관계를 그림으로 나타낸 것 모델링 : 모델을 만드는 활동

#1. 악마를 불러들이기 쉬운 User 클래스

User 클래스는 사양 변경이 굉장히 잦아서, 여러 가지 문제를 일으키기 쉬운 클래스입니다.

[code 13-1] User 클래스

class User {
	int id;
	String name;
	String email;
	String passwordDigest;
}

이후 상품 배송지 지정을 위한 주소와 전화번호, 구매자 프로필을 나타내는 자기소개와 URL 등 다양한 사양이 추가되었습니다.

얼마 지나지 않아 다른 업체도 상품을 등록할 수 있도록 사양 변경이 이루어졌습니다.

법인 사용자를 등록할 때도 User 클래스를 사용하기로 하여 등록번호를 User클래스에 추가하였습니다.

[code 13-2, 13-3] 여러 인스턴스 변수가 추가됨

class User {
	int id;
	String name;
	String email;
	String passwordDigest;
	String address;
	String phoneNumber;
	String bio
	String url;
	int discountPoint;
	String themeMode;
	LocalDate birthday;
	String corporationNumber;
}

하지만 얼마 지나지 않아 버그가 발생하기 시작했습니다.

법인등록번호인 User.corporationNumbernull이라서 발생한 문제입니다.

이 뿐만 아니라 여러가지 버그 발생 가능성이 있으며, 이러한 문제의 발생 원인은 모델링을 제대로 하지 않았기 때문입니다.


#2. 모델링으로 접근해야 하는 구조

모델은 시스템의 구조를 설명하기 위해서 사용합니다.

따라서 모델링을 이해하려면 시스템이 무엇인지 알아야 합니다.