Java 문법 (5) - 객체 지향 프로그래밍
Java 문법 (5) - 객체 지향 프로그래밍
절차 지향과 객체 지향
절차지향
- 이름 그대로 절차를 지향하는 프로그래밍입니다. 실행 순서를 중요하게 생각하는 방식입니다.
- 프로그램의 흐름을 순차적으로 따르며 처리하는 방식입니다.
- “어떻게”를 중심으로 프로그래밍 합니다.
- 데이터와 데이터에 대한 처리방식이 분리되어 있습니다.
객체지향
- 객체를 중요하게 생각하는 방식입니다.
- 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍하는 방식입니다.
- “무엇을” 중심으로 프로그래밍 합니다.
- 데이터와 데이터에 대한 행동(메서드)가 하나의 객체 안에 포함되어 있습니다.
절차지향 프로그래밍 예시
예시와 같이
데이터와 기능이 분리
되어 있는 것을 볼 수 있습니다. 예시의 메서드 대부분 MusicPlayer의 데이터를 사용합니다. 만약 이후에 관련 데이터가 변경되면 메서드들도 함께 변경해야하고, 데이터와 기능이 분리되어 있기 때문에유지보수
관점에서도 관리해야할 부분이 2곳으로 늘어나게 됩니다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// 음악 플레이어 클래스
// 데이터
public class MusicPlayer {
int volume;
boolean isOn;
}
public class MusicPlayerMain2 {
public static void main(String[] args) {
MusicPlayerData data = new MusicPlayerData();
on(data);
volumeUp(data);
volumeUp(data);
volumeDown(data);
showStatus(data);
off(data);
}
// 데이터 처리 메서드
static void on(MusicPlayerData data) {
data.isOn = true;
System.out.println("음악 플레이어를 시작합니다.");
}
static void off(MusicPlayerData data) {
data.isOn = false;
System.out.println("음악 플레이어를 종료합니다.");
}
static void volumeUp(MusicPlayerData data){
data.volume++;
System.out.println("음악 플레이어 볼륨: " + data.volume);
}
static void volumeDown(MusicPlayerData data){
data.volume--;
System.out.println("음악 플레이어 볼륨: " + data.volume);
}
static void showStatus(MusicPlayerData data){
if (data.isOn){
System.out.println("음악 플레이어 ON" + ", 볼륨: " + data.volume);
} else {
System.out.println("음악 플레이어 Off");
}
}
}
객체지향 프로그래밍 예시
예시와 같이 MusicPlayer안에
데이터와 기능이 모두 같이 들어있습니다.
음악 플레이어를 구성하기 위한 속성과 기능이 하나의 캡슐에 쌓여있는 것 같고, 필요한 기능을 매서드를 통해서 외부에 제공합니다. 이를캡슐화
라고 합니다. 객체지향 프로그래밍을 하게 되면 사람의 입장에서 더읽기 쉬운 코드
가 만들어지고,유지보수
에도 더 좋습니다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
// MusicPlayer의 데이터과 기능
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 showStatus(){
if (isOn){
System.out.println("음악 플레이어 ON" + ", 볼륨: " + volume);
} else {
System.out.println("음악 플레이어 Off");
}
}
}
public class MusicPlayerMain3 {
public static void main(String[] args) {
MusicPlayer musicPlayer = new MusicPlayer();
musicPlayer.on();
musicPlayer.volumeUp();
musicPlayer.volumeUp();
musicPlayer.volumeDown();
musicPlayer.showStatus();
musicPlayer.off();
}
}