키보드워리어

【자바】캡슐화의 기본이해 - 2 본문

JAVA/입문

【자바】캡슐화의 기본이해 - 2

꽉 쥔 주먹속에 안경닦이 2022. 11. 9. 10:00
728x90

안녕하세요 【키보드 워리어】

 

⌨🗡🧑

 


블로그 방문자 여러분, 안경닦이입니다.

 

오늘은 자바 중요 개념 캡슐화에 대해 알아보는 두 번째 시간입니다.

만일 이전 포스팅을 보지 못하신 분들은 이전 포스팅을 참고해주세요~

 

2022.11.07 - [JAVA 완전정복!!/JAVA section 8] - 【자바】캡슐화의 기본이해 - 1


 

캡슐화(Encapsulation)의 첫 이점

 

여기서 생각해볼 것은 왜 캡슐화를 사용하냐는 거에요.

 

캡슐화를 하면 괜스레 set, get메서드도 만들어줘야 하고 불편하잖아요?

 

왜 데이터를 메서드로 거쳐야지만 외부에 노출되게 만든 걸까요?

 

여기에는 다 이유가 있죠. 메서드만이 할 수 있는 일이 있기 때문이에요. 그건 바로 오류를 최소화시키는 것입니다.

 

MotorBikeRunner에서 멤버 변수 speed를 누군가가 실수로 -100으로 입력했다고 생각해보세요. speed가 -100으로 달릴 수는 없죠?

 

캡슐화하지 않았을때 오류

캡슐화하지 않으면 이런 논리적인 오류가 발생할 수 있습니다.

 

캡슐화의 이점

캡슐화를 하면 setSpeed메서드에서 if문을 통해서 제어가 가능합니다!

만에 하나 캡슐화를 하지 않았다면 차의 속도가 엉뚱한 값이 될 수도 있는 오류가 나왔을 거예요 위에 사진처럼요!

 

잘못된 데이터의 객체 접근을 막을 수 있다! 이것이 캡슐화의 이점입니다.

 

 

캡슐화(Encapsulation)의 두 번째 이점

 

캡슐화를 사용하면 논리 로직을 잘 이용할 수 있어요.

 

아래와 같은 코드가 있다고 가정해볼게요

//ducati클래스의 speed를 100으로 높여보자

int ducatiSpeed = ducati.getSpeed(); //ducati speed출력
ducatiSpeed += 100; // ducatiSpeed + 100;

ducati.setSpeed(ducatiSpeed); 
System.out.println(ducati.getSpeed());

 

이것은 속도를 올려주는 로직입니다.

 

속도올려주는 로직(논리)

 

이 로직(논리)은 다른 객체에서도 사용 가능해요. 하지만

이런 객체가 많아지면 로직이 중복되고 관리하기가 힘들어집니다. 이렇기 때문에 이런 로직들은 캡슐화해서 원본 클래스에 넣을 수 있습니다.

 

캡슐화의 이점 -2

이렇게 increaseSpeed메서드 하나만 만들어서 사용해주면 

increseSpeed 메소드

 

하나의 메서드를 추가해주는 코드로 바로 로직을(동작) 생성시킬 수 있습니다.

캡슐화는 로직의 중복도 제거하고 다른 클래스에서도 이 메서드를 쓸 수 있게 해주는 효과가 있습니다.

 

이제 속도를 추가하지만 말고 감속할 수도 있겠죠?

캡슐화의 이점 - 로직관리가 편하다

 

이렇게 해줘도 되지만 아래 빨간 박스 사진처럼 수정해주면 관리가 좀 더 수월해지겠죠!

setSpeed는 이미 0 이하로 떨어지면 작동하지 않게 했으니까요!

 

decreaseSpeed메소드 validate
increaseSpeed메소드 validate

 

728x90