πŸ“š TIL 16일차

temprmnΒ·2023λ…„ 6μ›” 7일
0
post-thumbnail

였늘의 μ£Όμš”μ‚¬ν•­ (6/7, μˆ˜μš”μΌ)

  1. ν˜Έν…” μ˜ˆμ•½ ν”„λ‘œμ νŠΈ μ‹œμž‘
    • 객싀 μ˜ˆμ•½Β·μ·¨μ†Œ κΈ°λŠ₯

이틀 μ „ λ©”λͺ¨μž₯ ν”„λ‘œμ νŠΈμ—μ„œ 컨트둀러 뢀뢄을 λ§‘μœΌλ©΄μ„œ, 개인적으둜 μ°œμ°œν–ˆλ˜ 뢀뢄듀이 많이 ν•΄μ†Œλ˜μ—ˆλ‹€. κ·Έλž˜μ„œ μ΄λ²ˆμ—” μ»¨νŠΈλ‘€λŸ¬μ— λŒ€ν•œ 미련을 λ˜μ§€κ³ ... μ˜ˆμ•½ 뢀뢄을 λ§‘μ•˜λ‹€!

μ΄λ²ˆμ—λŠ” μΉ νŒμ— 닀같이 λͺ¨μ—¬μ„œ μ΄λ ‡κ²Œ ꡬ쑰도도 같이 κ·Έλ €λ³΄μ•˜λ‹€. 그리고 λ‚˜λ‹ˆ μš”κ΅¬μ‚¬ν•­μ΄ 머리 μ†μ—μ„œ 더 잘 μ •λ¦¬λ˜μ—ˆλ‹€ πŸ‘ κΈ°λŠ₯에 따라 일을 λΆ„λ°°ν•΄μ•Όν•˜λŠ”λ°, μ œμ‹œλœ ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­λ§ŒμœΌλ‘œλŠ” λΆ€μ‘±ν•΄μ„œ 'μ˜ˆμ•½κ°€λŠ₯ν•œ ν˜Έν…” 쑰회'λΌλŠ” κΈ°λŠ₯도 μΆ”κ°€ν•˜κΈ°λ‘œ ν–ˆλ‹€.

βœ‹ 상황에 λ§žλŠ” .gitignore 파일 생성

μž‘μ—…μ„ ν•˜λ‹€λ³΄λ©΄ 개인 ν™˜κ²½ μ„€μ • νŒŒμΌμ΄λ‚˜, μΊμ‹œ 파일 등이 μƒμ„±λœλ‹€. 이걸 일일히 μ œμ™Έν•΄μ£Όμ§€ μ•ŠμœΌλ©΄ 리포지토리에 μ»€λ°‹λ˜μ–΄ 좩돌이 μΌμ–΄λ‚˜λŠ” κ²½μš°κ°€ μ’…μ’… μƒκΈ°λŠ”λ°, 이런 상황을 .gitignore둜 방지할 수 μžˆλ‹€.

gitignore.io

μœ„μ˜ μ‚¬μ΄νŠΈμ— 상황에 λ§žλŠ” ν‚€μ›Œλ“œλ₯Ό μž…λ ₯ν•˜λ©΄ 그에 λ§žλŠ” .gitignore νŒŒμΌμ„ 생성해쀀닀. 우리 νŒ€μ€ μ—¬κΈ°μ„œ μƒμ„±λœ νŒŒμΌμ„ λ³΅μ‚¬ν•˜μ—¬ μ‚¬μš©ν•˜μ˜€λ‹€.

(μ•Œλ €μ£Όμ‹  νŒ€μ› λΆ„ 짱,,,~~πŸ‘)

객싀 μ˜ˆμ•½Β·μ·¨μ†Œ κΈ°λŠ₯

πŸ”§ μ •λ³΄λŠ” Reservation이 κ°–κ³  μžˆκ³ μš”, 싀행은 Reserveμ—μ„œ ν•©λ‹ˆλ‹€

λ‚΄ 머리속 상상도

Reservation κ°μ²΄μ—μ„œ λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…μ„ μ‹€ν–‰ν•˜μ§€ μ•Šκ³ , Reserve 객체λ₯Ό λ”°λ‘œ λ§Œλ“  μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  1. κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 클래슀λ₯Ό κ±΄λ“œλ¦¬λ©΄ μΆ©λŒν•  κ°€λŠ₯성이 μžˆλ‹€.

    말 κ·ΈλŒ€λ‘œ Reservation ν΄λž˜μŠ€λŠ” κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•΄μ•Όν•  정보λ₯Ό λ‹΄κ³  있기 λ•Œλ¬Έμ—, λ‚˜ μ΄μ™Έμ˜ νŒ€μ›μ΄ κ±΄λ“œλ¦΄ κ°€λŠ₯성이 크닀. 이 ν΄λž˜μŠ€μ— μ΄μ–΄μ„œ μž‘μ—…μ„ ν•˜κ²Œ 되면, 좩돌 문제 뿐만 μ•„λ‹ˆλΌ 정보λ₯Ό κ΄€λ¦¬ν•˜λŠ”λ° ν˜Όμ„ μ„ κ²ͺ을 수 μžˆλ‹€. μž‘μ—…μ— ν˜Όμ„ μ΄ μƒκΈ°κ±°λ‚˜, νŒŒμΌμ„ 머지할 λ•Œ 좩돌이 μΌμ–΄λ‚˜λŠ” κ±Έ ν•΄κ²°ν•˜λŠ” 것보닀 μ‹€ν–‰ ν•¨μˆ˜λ“€μ„ λ”°λ‘œ λΆ„λ¦¬ν•΄μ„œ μž‘μ„±ν•˜λŠ” 것이 훨씬 쉽기 λ•Œλ¬Έμ— 이λ₯Ό μ„ νƒν–ˆλ‹€.

  2. 컨트둀러 (역할을 ν•˜λŠ” 클래슀)μ—μ„œ μ˜ˆμ•½ μ‹€ν–‰ λ©”μ„œλ“œλ₯Ό νŽΈν•˜κ²Œ ν˜ΈμΆœν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•¨μ΄λ‹€.

    μœ„μ—μ„œλ„ μ–ΈκΈ‰ν–ˆλ“―μ΄ Reservationμ—μ„œ 계속 μž‘μ—…μ„ ν•˜λ‹€λ³΄λ©΄ 정보 관리에 ν˜Όμ„ μ΄ 생길 ν™•λ₯ μ΄ 높아진닀. ν˜Όμ„ μ΄ 생기면 μ΅œμ’…μ μΈ 싀행을 λ‹΄λ‹Ήν•΄μ•Όν•  컨트둀러의 뢀담이 컀질 λΏλ”λŸ¬, 가독성도 쒋지 μ•Šμ•„μ§€κΈ° λ§ˆλ ¨μ΄λ‹€. κ·Έλž˜μ„œ Reserve 객체가 ν•„μš”ν•œ 행동듀을 싀행을 ν•˜κ²Œ ν•˜λ©΄, μ»¨νŠΈλ‘€λŸ¬λŠ” Reserveκ°€ κ°–κ³  μžˆλŠ” μ‹€ν–‰ ν•¨μˆ˜λ“€μ„ ν˜ΈμΆœμ‹œν‚€κΈ°λ§Œ ν•˜λ©΄ λ˜λŠ” ν˜•νƒœκ°€ λ˜μ–΄μ„œ μˆ˜μ •μ΄λ‚˜ μ‚¬μš©ν•˜κΈ°λ„ νŽΈν•˜κ³  보기에도 쒋을 것이라고 μƒκ°ν–ˆλ‹€.

객싀 μ˜ˆμ•½ β†’ uuid도 μƒμ„±ν•΄μ„œ λ°˜ν™˜ν•˜κΈ°

πŸ“ Reserve.java

μˆœμ„œλŠ” λ‹¨μˆœν•˜κ²Œ UUIDλ₯Ό 랜덀으둜 μƒμ„±ν•œ λ‹€μŒ, Reservation 객체λ₯Ό λ§Œλ“€κ³ , μƒμ„±λœ UUID와 Reservation 객체λ₯Ό HashMap<K,V> reservedRoom에 μΆ”κ°€ν•œλ‹€. 이 λ•Œ μƒμ„±λœ UUIDλ₯Ό LinkedList<UUID> ν˜•νƒœμ˜ μ»¨ν…Œμ΄λ„ˆ λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ λ”°λ‘œ ν•œ 번 더 μ €μž₯ν•΄μ£Όμ—ˆλ‹€. (아직 μ‚¬μš©λ˜μ§„ μ•Šμ§€λ§Œ, μ‚¬μš©λ  μˆ˜λ„ μžˆμ„ 것 κ°™μ•„μ„œ μ €μž₯ν•΄λ‘μ—ˆλ‹€.)

// μ˜ˆμ•½ 정보λ₯Ό μ €μž₯ν•  HashMap
private Map<UUID, Reservation> reservedRoom = new HashMap<>();

// μ˜ˆμ•½ ν‚€ κ°’ (uuid)을 μ €μž₯ν•  LinkedList
private LinkedList<UUID> reservedUUIDList = new LinkedList<>();
/*** 1. μ˜ˆμ•½ 생성 -> μ˜ˆμ•½ 번호 λ°˜ν™˜ ***/
public UUID createReservation(Room room, Customer customer){
    
    // UUID 랜덀으둜 생성
    UUID uuid = UUID.randomUUID();
    
    // μ˜ˆμ•½ 생성
    Reservation reservation = new Reservation(
            room, customer.getName(), customer.getPhoneNumber(),
            LocalDateTime.now(), uuid
    );
    
    // μƒμ„±ν•œ μ˜ˆμ•½μ„ μΆ”κ°€
    reservedRoom.put(uuid, reservation);
    
    // list에 μƒμ„±λœ uuid κ°’ μ €μž₯
    reservedUUIDList.add(uuid);
    
    // uuid λ°˜ν™˜
    return uuid;
}

정보가 μ œλŒ€λ‘œ μ €μž₯λ˜μ—ˆλŠ”μ§€ 확인해보기 μœ„ν•΄ κ°œλ³„ μ˜ˆμ•½ μ‘°νšŒκ°€ λ˜λŠ” λ©”μ„œλ“œλ₯Ό λ§Œλ“€μ–΄μ„œ ν…ŒμŠ€νŠΈν•΄μ£Όμ—ˆλ‹€.

/*** 3-2. κ°œλ³„ μ˜ˆμ•½ 쑰회 - 좜λ ₯ ν˜•μ‹ ***/
public void printMyReservation(UUID myUUID) {

    System.out.printf("[%s λ‹˜μ˜ μ˜ˆμ•½ 정보]\n", getCustomerName(myUUID));
    System.out.printf("- μ˜ˆμ•½ 번호: %s\n", myUUID.toString());        
    System.out.printf("- μ˜ˆμ•½ λ‚ μ§œ: %s\n\n", getParseDateTime(myUUID));
    
    // System.out.printf("- μ˜ˆμ•½ λ‚ μ§œ: %s\n\n", getParseDate(myUUID)); -> λ‚ μ§œλ§Œ 좜λ ₯
    System.out.printf("- μ˜ˆμ•½μž: %s λ‹˜\n", getCustomerName(myUUID));
    System.out.printf("- μ˜ˆμ•½μž μ „ν™”λ²ˆν˜Έ: %s\n\n", getCustomerPhoneNumber(myUUID));
    
    System.out.printf("- μ˜ˆμ•½ 객싀 번호: %s\n", getRoom(myUUID).getRoomNumber());
    System.out.printf("- μ˜ˆμ•½ 객싀 크기: %s\n", getRoom(myUUID).getRoomSize());
    System.out.printf("- μ˜ˆμ•½ 객싀 가격: %s 원\n", getRoom(myUUID).getRoomPrice());
}
πŸ“ Main.java (객체 생성 ν…ŒμŠ€νŠΈ)

μ˜ˆμƒ μ‹œλ‚˜λ¦¬μ˜€λŒ€λ‘œ 좜λ ₯λ˜μ—ˆλŠ”μ§€ main() ν•¨μˆ˜λ₯Ό 톡해 ν…ŒμŠ€νŠΈ ν•΄λ³΄μ•˜λ‹€.

public static void main(String[] args) {

	// μ˜ˆμ•½ μ‹€ν–‰ 객체 생성
    Reserve reserve = new Reserve();
    
    // μ˜ˆμ•½ ν›„ uuid λ°˜ν™˜ν•˜μ—¬ μ €μž₯
    UUID uuid = reserve.createReservation(
		    new Room(101, RoomSize.Standard, 59000),
            new Customer("ν…ŒμŠ€νŠΈ μ†λ‹˜", "010-1234-5678", 12345678)
    );
          
	// 좜λ ₯ ν•¨μˆ˜
    reserve.printMyReservation(uuid);
}
β–Ά 좜λ ₯ κ²°κ³Ό
[ν…ŒμŠ€νŠΈ μ†λ‹˜ λ‹˜μ˜ μ˜ˆμ•½ 정보]
- μ˜ˆμ•½ 번호: 77d24cea-6cd7-4173-8ad4-c3fea4ccbd6b
- μ˜ˆμ•½ λ‚ μ§œ: 2023-06-07 21:51:03

- μ˜ˆμ•½μž: ν…ŒμŠ€νŠΈ μ†λ‹˜ λ‹˜
- μ˜ˆμ•½μž μ „ν™”λ²ˆν˜Έ: 010-1234-5678

- μ˜ˆμ•½ 객싀 번호: 101
- μ˜ˆμ•½ 객싀 크기: Standard
- μ˜ˆμ•½ 객싀 가격: 59000 원

μ˜ˆμƒλŒ€λ‘œ 잘 좜λ ₯λ˜μ—ˆκ³ , 였늘의 ν•  일은 μ΄μ •λ„λ‘œ 끝!인 것 κ°™λ‹€. (μ•„λ§ˆ)

κ·Έ μ™Έ: enum RoomSize

RoomSizeλ₯Ό μ΄ˆλ°˜μ— intν˜• 같은 숫자 κ°’μœΌλ‘œ μž…λ ₯ν•˜λ €κ³  ν–ˆλŠ”λ°, λ³΄ν†΅μ˜ ν˜Έν…”μ€ λ°© 크기λ₯Ό 숫자둜 ν‘œν˜„ν•˜κΈ° λ³΄λ‹€λŠ”, 트윈 λ£Έ, μŠ€μœ„νŠΈλ£Έ 같은 λ‹¨μœ„(?)λ₯Ό 보편적으둜 μ‚¬μš©ν•œλ‹€. intν˜•μ„ μ‚¬μš©ν•΄λ„, 쑰건문을 톡해 트윈 룸이라고 μΆ©λΆ„νžˆ 좜λ ₯해쀄 μˆ˜λŠ” μžˆμ—ˆμ§€λ§Œ, μ½”λ“œμ˜ κ°€λ…μ„±μ—λŠ” 썩 쒋지 μ•Šμ€ 방법이라고 νŒλ‹¨ν–ˆλ‹€. κ·Έλž˜μ„œ String[]을 μ‚¬μš©ν•˜λŠ” 방법과, enum μ—΄κ±°ν˜•μ„ μ‚¬μš©ν•˜λŠ” 방법을 κ³ μ•ˆν•΄λƒˆκ³ , enum μ—΄κ±°ν˜•μ„ μ‚¬μš©ν•΄λ³΄κΈ°λ‘œ ν–ˆλ‹€.

public enum RoomSize {
    Standard, Twin, Delux, Family, Suite,
}

좜λ ₯도 μœ„μ˜ [β–Ά 좜λ ₯ κ²°κ³Ό]처럼 별닀λ₯Έ λ³€ν™˜μ—†μ΄ 잘 좜λ ₯λ˜μ—ˆλ‹€.

profile
`ISFJ` T 49% F 51% /

0개의 λŒ“κΈ€