절차 지향 프로그래밍
- 절차 지향 프로그래밍은 이름 그대로 절차를 지향.
- 실행 순서를 중요하게 생각하는 방식이다.
**객체 지향 프로그래밍과의 차이
- 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다. 반면 객체 지향에서는 데이터와 그 데이터에 대한 메서드가 하나의 객체 안의 포함되어 있다.
예시 코드
MusicPlayerMain3
package oop1;
public class MusicPlayerMain3 {
public static void main(String[] args) {
MusicPlayerData data = new MusicPlayerData();
// 음악 플레이어 켜기
On(data);
// 볼륨 증가
increase(data);
// 볼륨 증가
increase(data);
// 볼륨 감소
decrease(data);
// 음악플레이어 상태
state(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 increase(MusicPlayerData data) {
data.volume++;
System.out.println("음악 플레이어 볼륨: " + data.volume);
}
static void decrease(MusicPlayerData data) {
data.volume--;
System.out.println("음악 플레이어 볼륨: " + data.volume);
}
static void state(MusicPlayerData data) {
System.out.println("음악 플레이어 상태 확인");
if (data.isOn) {
System.out.println("음악 플레이어 ON, 볼륨: " + data.volume);
} else {
System.out.println("음악 플레이어 OFF");
}
}
}
MusicPlayerData
package oop1;
public class MusicPlayerData {
int volume = 0;
boolean isOn = false;
}
** 위 코드는 MusicPlayerData클래스에는 속성만이 정의 되어 있고, 메서드는 MusicPalyerMain3에 정의되어 있다. 절차지향 프로그래밍에서는 위와 같이 속성과 메서드가 분리되어 있다.
객체 지향 프로그래밍
** 객체 지향 프로그래밍은 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식이다. 데이터와 그 데이터에 대한 행동(메서드)이 하나의 '객체' 안에 포함되어 있다.
예시 코드
MusicPlayer
package oop1;
public class MusicPlayer {
int volume = 0;
boolean isOn = false;
void on() {
this.isOn = true;
System.out.println("음악 플레이어를 시작합니다.");
}
void off() {
this.isOn = false;
System.out.println("음악 플레이어 끄기.");
}
void volumeUp() {
this.volume++;
System.out.println("음악 플레이어 볼륨: " + this.volume);
}
void volumeDown() {
this.volume--;
System.out.println("음악 플레이어 볼륨: " + this.volume);
}
void showStatus() {
System.out.println("음악 플레이어 상태 확인");
if (this.isOn) {
System.out.println("음악 플레이어 ON, 볼륨: " + this.volume);
} else {
System.out.println("음악 플레이어 OFF");
}
}
}
MusicPlayerMain4
package oop1;
public class MusicPlayerMain4 {
public static void main(String[] args) {
MusicPlayer musicPlayer = new MusicPlayer();
musicPlayer.on();
musicPlayer.volumeUp();
musicPlayer.volumeUp();
musicPlayer.volumeDown();
musicPlayer.showStatus();
musicPlayer.off();
}
}
- 객체 지향 프로그래밍에서는 위 코드와 같이 MusicPlayer 클래스 안에 속성과 메서드가 함께 정의 되어 있고, MusicPlayerMain4에서는 객체를 생성하고 MusicPlayer의 속성과 메서드를 사용하고 있다.
캡슐화
- 속성과 기능을 하나로 묶어서 필요한 기능을 메서드를 통해 외부에 제공하는 것을 캡슐화라고 한다.
** 객체란?
- 세상의 모든 사물을 단순하게 추상화해보면 속성과 기능 2가지로 설명할 수 있다.
- 자동차
- 속성: 차량 색상, 현재 속도
- 기능: 엑셀, 브레이크, 문 열기, 문 닫기
- 동물
- 속성: 색상, 키, 온도
- 기능: 먹는다, 걷는다
- 객체 지향의 특징은 속성과 기능을 하나로 묶는 것 뿐만 아니라 캡슐화, 상속, 다형성, 추상화, 메시지 전달 같은 다양한 특징들이 있다.
'Java' 카테고리의 다른 글
| Java 기본 - 접근제어자 (0) | 2024.12.21 |
|---|---|
| Java 기본 - 생성자 (0) | 2024.12.08 |
| Java 기본 - 기본형과 참조형 (0) | 2024.12.04 |
| Java 기본 - 클래스(배열) (0) | 2024.11.19 |
| Java 기본 - 클래스, 객체, 인스턴스 (0) | 2024.11.11 |