[Java] 10.2. 상태는 행위를 통해 변경한다.

김주희's avatar
Feb 26, 2025
[Java] 10.2. 상태는 행위를 통해 변경한다.
객체 지향 프로그램
private 붙이는 이유? → 상태에 직접적인 접근을 막기 위해 (상태 변경 행위를 통해서 하도록 강제)
메서드에 public을 붙이는 이유? ⇒ 상태를 반드시 행위를 통해 변경하기 위해
package ex04; class DeskLamp { private boolean isOn; // 컨벤션(우리끼리의 약속) - boolean은 앞에 is, 변수의 선언 // 자기 클래스 외에서는 접근 불가 public void turnOn() { isOn = true; } public void turnOff() { isOn = false; } public String toString() { return "현재 상태는 " + (isOn == true ? "켜짐" : "꺼짐"); } } public class DeskLampTest { public static void main(String[] args) { DeskLamp myLamp = new DeskLamp(); // 인스턴스(heap에 떠야 인스턴스임), 객체(object) // 객체지향 프로그램 // 상태를 변경시킨는 행위는 모든 곳에 // 상태는 해당 클래스 내부에서만 // private 선언 전) 문법적으로는 ㄱㅊ 객체지향으로는 틀림 // myLamp.isOn = true; (X) -> private 선언 (상태 변경 행위를 통해서 하도록 강제) // 상태 변경은 행위를 통해서!!!!! myLamp.turnOn(); System.out.println(myLamp); myLamp.turnOff(); System.out.println(myLamp); } }
notion image
main에 public → jvm이 못찾는다 DeskLampTest.Main으로 찾음
 
 
 
package ex04; class Radio { // 상태 : isPress private boolean isPress; // 행위 : 책임(이 메서드가 해야할 일)을 생각하고 만든다. // 메서드는 하나의 책임만 가지는 것이 좋다 -> 관리가 편함 (유지보수 굿~) // 최소한의 책임을 가진 메서드 -> 합치기 좋음 // 1. 책임 (켜다) // 2. 책임 (끄다) // 상태를 변경만 하는(끄고 켜는) 메서드 public void turnOn() { isPress = true; } public void turnOff() { isPress = false; } // 상태 확인 -> 반드시 필요 public boolean getIsPress() { return isPress; } } public class RadioTest { public static void main(String[] args) { Radio radio = new Radio(); radio.turnOn(); System.out.println(radio.getIsPress()); radio.turnOff(); System.out.println(radio.getIsPress()); } }
notion image
Share article

More articles

See more posts

jay0628