객체 지향 프로그래밍
2024.07.02 - [Java] - [Java 기본] 절차 지향 프로그래밍
이전 포스팅에서 개발한 음악 플레이어는 데이터와 기능이 분리된 절자 지향적인 프로그램이었다.
이번에는 데이터와 기능을 하나로 묶어서 프로그래밍 해보자 .
객체 지향 음악 플레이어
프로그램의 실행 순서보다는 프로그램이 어떤 속성(데이터)를 가지고 어떤 기능(메서드)를 제공하는 지에 초점을 맞춰서 개발해보자.
- 속성: Volumne, isOn
- 기능: on(), off(), volume(), volumeDown(), showStatus
public class MusicPlayer {
int volume;
boolean isOn;
void on() {
isOn = true;
System.out.println("음악 플레이어를 시작합니다.");
}
void off() {
isOn = false;
System.out.println("음악 플레이어를 종료합니다. ");
}
void volumeUp() {
volume++;
System.out.println("음악 플레이어 볼륨 : " + volume);
}
void volumeDown() {
volume--;
System.out.println("음악 플레이어 볼륨 : " + volume);
}
void showStatuc() {
System.out.println("음악 플레이어 상태 확인");
if(isOn) {
System.out.println("음악 플레이어 ON, 볼륨: " + volume);
} else {
System.out.println("음악 플레이어 OFF ");
}
}
}
=> 속성과 기능을 정의했다.
이제 MusicPlayer를 잘 모르는 다른 개발자가 사용한다고 생각하고 아래 코드를 보자.
public class MusicPlayerMain4 {
public static void main(String[] args) {
MusicPlayer player = new MusicPlayer();
//음악 플레이어 켜기
player.on();
//볼륨 증가
player.volumeUp();
player.volumeUp();
//볼륨 감소
player.volumeDown();
// 음악플레이어 상태
player.showStatus();
//음악 플레이어 끄기
player.off();
}
}
=> MusicPlayer를 사용하는 입장에서는 내용을 몰라도 기능을 사용할 수 있다.
캡슐화
MusicPlayer를 보면 플레이어를 구성하기 위한 속성과 기능이 하나로 묶여있다. 이렇게 필요한 속성과 기능을 묶어서 외부에 제공하는 것을 캡슐화라 한다.
객체지향 프로그래밍으로 변경 후 코드의 가독성이 향상되고, 속성과 기능이 모여있기 때문에 변경도 용이해졌다.
예를 들어 MusicPlayer 상태에 '대기' 상태가 추가된다고 가정해보자. 우리는 Music Player만 수정하면 된다. 이를 가져다 쓰는 곳에서는 변경할 필요가 없다.
* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 기본] 생성자 (0) | 2024.07.04 |
---|---|
[Java 기본] 객체란? (0) | 2024.07.04 |
[Java 기본] 클래스와 메서드 (0) | 2024.07.03 |
[Java 기본] 절차 지향 프로그래밍 (0) | 2024.07.02 |
[Java 기본] null (0) | 2024.07.02 |