일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코딩초보
- 프로그래밍언어
- 기초코딩
- JAVA기초
- 스프링 기초
- github
- 자바프로그래밍
- 리눅스
- 제이쉘
- 데이터베이스
- 메소드
- Java
- eclips
- 스프링
- 프로그래밍
- 초보코딩탈출
- 알고리즘
- Git
- Elk
- 자바 스프링
- 자바기초
- 컴퓨터과학개론
- 이클립스
- 초보코딩
- 배열
- JShell
- 프로그래밍기초
- spring
- 자바
- 클래스
- Today
- Total
키보드워리어
【자바】캡슐화의 기본이해 - 2 본문
안녕하세요 【키보드 워리어】
⌨🗡🧑
블로그 방문자 여러분, 안경닦이입니다.
오늘은 자바 중요 개념 캡슐화에 대해 알아보는 두 번째 시간입니다.
만일 이전 포스팅을 보지 못하신 분들은 이전 포스팅을 참고해주세요~
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());
이것은 속도를 올려주는 로직입니다.
이 로직(논리)은 다른 객체에서도 사용 가능해요. 하지만
이런 객체가 많아지면 로직이 중복되고 관리하기가 힘들어집니다. 이렇기 때문에 이런 로직들은 캡슐화해서 원본 클래스에 넣을 수 있습니다.
이렇게 increaseSpeed메서드 하나만 만들어서 사용해주면
하나의 메서드를 추가해주는 코드로 바로 로직을(동작) 생성시킬 수 있습니다.
캡슐화는 로직의 중복도 제거하고 다른 클래스에서도 이 메서드를 쓸 수 있게 해주는 효과가 있습니다.
이제 속도를 추가하지만 말고 감속할 수도 있겠죠?
이렇게 해줘도 되지만 아래 빨간 박스 사진처럼 수정해주면 관리가 좀 더 수월해지겠죠!
setSpeed는 이미 0 이하로 떨어지면 작동하지 않게 했으니까요!
'JAVA > 입문' 카테고리의 다른 글
【자바】기본 자료형 소개 및 ,형(type)변경 하는 법 (0) | 2022.11.17 |
---|---|
【자바】자바 생성자 소개 (0) | 2022.11.15 |
【자바】캡슐화의 기본이해 - 1 (0) | 2022.11.07 |
【자바】객체지향 프로그래밍 (1) | 2022.11.05 |
【자바】디버깅 모드 - Step over 와 Step into에 대해 알아본다 (0) | 2022.10.13 |