반응형
캡슐화 쉬운 예제
package access;
public class Car {
private int speed;
public Car() {
speed = 0;
}
public Car(int speed) {
this.speed = speed;
}
public void applyBrakes () {
if(isStopped()) {
System.out.println("자동차가 이미 정지된 상태입니다.");
} else {
speed = Math.max(0, speed -50);
System.out.println("속도를 50 감소 시킵니다. 현재 속도: " + speed +"km");
}
}
public void accelerate(int speed) {
if(!isLimited()) {
this.speed = Math.min(this.speed + speed, 200);
System.out.println("속도를 증가 시킵니다. 현재 속도: " + this.speed + "km");
} else {
System.out.println("더 이상 속도를 올릴 수 없습니다. 현재 속도: " + this.speed + "km");
}
}
public void showStatus() {
System.out.println("현재 속도: " + speed + "km");
}
private boolean isStopped() {
return this.speed <= 0;
}
private boolean isLimited() {
return this.speed >= 200;
}
}
데이터(속도)는 외부에서 직접 접근 못하도록 private으로 선언했고 외부에 노출된 메서드를 통해서만 조작가능
메서드도 실제 자동차처럼 엑셀, 브레이크, 상태표시만 노출시켰음(사용자는 아주 심플한 예제로 엑셀 밟으면 속도 올라가고 브레이크 밟으면 속도 내려가고 상태표시 정도만 있으면 됨, 그 외의 메서드는 이 객체를 사용하는 사용자는 몰라도 됨)
반응형
'IT > development' 카테고리의 다른 글
[java] extends (feat. simple) (2) | 2024.10.23 |
---|---|
[spring] spring security 초간단 예시 (3) | 2024.10.13 |
[javascript] javascript this (42) | 2024.06.01 |
[development] chrome development tool debugging 1 (43) | 2024.06.01 |
[egovframework] GPKI 웹보안 API 적용 (45) | 2024.05.14 |
댓글