내배캠 TIL 7일차

오병택·2025년 2월 25일

내배캠

목록 보기
29/73

7일차 요약

Java 강의

Java

JVM 메모리 구조

  • Method Area - 클래스 정보 저장공간
  • Stack Area - 메서드 실행 시 사용되는 공간(지역변수, 호출정보 등)
  • Heap Area - 객체가 생성되어 저장되는 공간

불변객체(Immutable Object)

내부 상태를 변경할 수 없는 객체

특징

  • final을 속성(property, field)에 활용
  • 세터(setter)없이 설계
  • 변경이 필요할 경우 새로운 객체 생성

무분별한 세터

첫 번째

접근제어자로 접근을 막아 놓고 다시 세터로 외부에 노출하면 막는 의미가 사라짐

ex)

public class DataStore {
    private String store; 
    
    public void setStore(String data) {
        this.store = data;
    }
}

이런 경우 올바른 데이터만 저장될 수 있도록 제한해야 함

ex)

public class DataStore {
    private String store; 
    
    public void setStore(String data) {
        if ("B".equals(data)) {
            System.out.println("❌ 'B'는 입력할 수 없습니다!");
        } else {
		        this.store = data;
        }
    }
}

두 번째

어떤 속성이 있을 때 하나씩 따로 세터로 정의하면 코드 중복이 많이 일어남

ex)

public class Robot {
    private boolean leftLeg; // 세터필요
    private boolean rightLeg;// 세터필요
    private boolean leftArm; // 세터필요
    private boolean rightArm;// 세터필요
    private boolean leftEye; // 세터필요
    private boolean rightEye;// 세터필요
}
Robot robot = new Robot();
robot.setLeftLeg(true);  // ✅ 왼쪽 다리 움직임
robot.setLeftArm(true); // ⚠️ 왼쪽 팔을 먼저 움직이면 균형이 깨짐
robot.setRightLeg(true); // ✅ 오른쪽 다리 움직임
...

이런 경우 전체를 묶어서 한 기능으로 만들어야 함

public class Robot {
    private boolean leftLeg;
    private boolean rightLeg;
    private boolean leftArm;
    ...

    public void walk(boolean power) {
        System.out.println("🚶 왼쪽 다리 앞으로!");
        leftLeg = power;

        System.out.println("🚶 오른쪽 다리 앞으로!");
        rightLeg = true;
        
        ...
    }
}

느낀 점

어제 늦게 자서 그런가 오늘 컨디션이 말이 아니다. 6시까지는 그나마 잘 버틴 것 같은데 밥 먹고 나서부터 집중이 아예 안 됐다. 일단 오늘은 푹 자고 내일은 집중해서 해야 겠다.

profile
걱정하지 말고 일단 해봐!

0개의 댓글