캡슐화

yoon__0_0·2024년 5월 30일
0

이어드림 수업

목록 보기
46/103

캡슐화란?

  • 객체의 데이터와 메서드를 하나로 묶고, 외부로부터 객체의 데이터를 보호하는 것을 의미함
  • 접근제한자 사용 (private, public, protected)
  • 클래스의 세부 구현을 숨림 (구현부 변경되어도 이 클래스를 사용하는 코드는 전혀 영향을 받지 않아서 이점이 큼)
  • 대부분의 변수들을 private로 설정해서 외부의 접근을 막기
  • 정보 은닉!!!의 중요성

에러 코드

  • 엘레베이터 예제 => max를 10층으로 해놨는데, 변경하는 경우
public class Elevator {
    // 문 열닫기
    public boolean opendoor = false;
    // 현재 상황 (층, 무게)
    public int current_F = 0;
    public float current_w = 0;

    // 최대 층
    public int max_F = 10;

    // 최대 무게
    public int max_w = 100;

    // 최소 층
    public int min_F = -2;
}

public class ElevatorTest {
    public static void main(String[] args){
        // Elevator 객체 생성
        Elevator elevator = new Elevator();

        // 현재 상황 출력
        System.out.println(elevator.current_F);

        // 사람이 타버림 => 3층으로 감
        elevator.current_F = 3;
        elevator.current_w += 40;

        // 사람이 탄 후 상황 출력
        System.out.println(elevator.current_F);

        // 갑자기 탄 사람이 15층을 가려고 함. (최대 층 수정)
        elevator.max_F = 15;

        //
        elevator.current_F = 15;
        System.out.println(elevator.current_F); // 15층으로 갈 수 있게 됨. 

    }
}

변경값

  • go, up의 메소드를 정의해주기
  • 변수값들은 모두 private로 선언
public class Elevator {
    // 문 열닫기
    private boolean opendoor = false;
    // 현재 상황 (층, 무게)
    private int current_F = 0;
    private float current_w = 0;

    // 최대 층
    private int max_F = 10;

    // 최대 무게
    private int max_w = 100;

    // 최소 층
    private int min_F = -2;

    // 층 변경
    public void goup(int F, int W){
        if (current_F + F <= max_F){
            current_F += F;
            System.out.println(current_F + "층으로 올라갑니다");
        }
        else{
            System.out.println("올라갈 수 없는 층입니다.");
        }

    }


}

public class ElevatorTest {
    public static void main(String[] args){
        // Elevator 객체 생성
        Elevator elevator = new Elevator();
        elevator.goup(30, 20);

    }
}
profile
신윤재입니다

0개의 댓글