Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 백준 #
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
Archives
- Today
- Total
luke
[자바/Java] - 객체 지향, 절차 지향 본문
객체 지향, 절차 지향
객체 지향과 절차 지향 프로그래밍에 대해 정리하는 시간을 가지려 한다.
절차 지향 프로그래밍
- 절차 지향 프로그래밍은 이름 그대로 절차를 지향한다. 쉽게 이야기하면 실행 순서를 중요하게 생각하는 방식이다.
- 절차 지향 프로그래밍은 프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 즉, "어떻게"를 중심으로 프로그래밍 한다.
객체 지향 프로그래밍
- 객체 지향 프로그래밍은 이름 그대로 객체를 지향한다. 쉽게 이야기하면 객체를 중요하게 생각하는 방식이다.
- 객체 지향 프로그래밍은 실제 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍하는 방식이다. 즉, "무엇을" 중심으로 프로그래밍 한다.
절차 지향 프로그래밍과 객체 지향 프로그래밍의 차이점
- 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다. 반면 객체 지향에서는 데이터와 그 데이터에 대한 행동(메서드)이 하나의 '객체' 안에 포함되어 있다.
절차 지향 프로그래밍 코드를 봐보겠다.
<절차 지향 프로그래밍 코드>
public class MusicPlayerData {
int volume = 0;
boolean isOn = false;
}
<Main>
public class MusicPlayer {
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("Start MusicPlayer.");
}
static void off(MusicPlayerData data) {
data.isOn = false;
System.out.println("MusicPlayer END");
}
static void volumeUp(MusicPlayerData data) {
data.volume++;
System.out.println("MusicPlayer volume: " + data.volume);
}
static void volumeDown(MusicPlayerData data) {
data.volume--;
System.out.println("MusicPlayer volume: " + data.volume);
}
static void showStatus(MusicPlayerData data) {
System.out.println("MusicPlayer status");
if (data.isOn) {
System.out.println("MusicPlayer ON, volume: " + data.volume);
} else {
System.out.println("MusicPlayer OFF");
}
}
}
각각의 메서드를 보면 " MuiscPlayerData "의 데이터를 사용한다. 따라서 이후에 관련 데이터가 변경되면
" MusicPlayerMain " 부분의 메서드들도 함께 변경해야 한다. 그리고 이렇게 데이터와 기능이 분리되어 있으면 유지보수 관점에서도 관리 포인트가 2곳으로 늘어난다.
결국 지금과 같이 데이터와 기능이 분리되어 있다는걸 확인할수 있다. 하지만 객체 지향 프로그래밍을 한다면 데이터와 기능을 하나로 묶어서 사용할 수 있게 된다.
바로 객체 지향 프로그래밍 코드를 보겠다.
<객체 지향 프로그래밍 코드>
public class MusicPlayer {
int volume = 0;
boolean isOn = false;
void on() {
isOn = true;
System.out.println("Start MusicPlayer.");
}
void off() {
isOn = false;
System.out.println("MusicPlayer END");
}
void volumeUp() {
volume++;
System.out.println("MusicPlayer volume: " + volume);
}
void volumeDown() {
volume--;
System.out.println("MusicPlayer volume: " + volume);
}
void showStatus() {
System.out.println("MusicPlayer status");
if (isOn) {
System.out.println("MusicPlayer ON, volume: " + volume);
} else {
System.out.println("MusicPlayer OFF");
}
}
}
위 클래스를 보면 필요한 속성과 기능을 모두 정의한걸 볼수 있다. 이제 이 클래스만 있으면 메인 클래스에서 플레이어를 생성해서 사용할 수 있다. 필요한 모든 속성과 기능이 하나의 클래스에 포함되어 있는 것이다.
<Main>
public class MusicPlayerMain {
public static void main(String[] args) {
MusicPlayer player = new MusicPlayer();
//음악 플레이어 켜기
player.on();
//볼륨 증가
player.volumeUp();
//볼륨 증가
player.volumeUp();
//볼륨 감소
player.volumeDown();
//음악 플레이어 상태
player.showStatus();
//음악 플레이어 끄기'
player.off();
}
}
※ 출처: Inflearn 김영한-Java 강의 중
'Study > Java' 카테고리의 다른 글
[자바/Java] - 자바 메모리 구조(스택과 큐 자료 구조) (0) | 2024.01.12 |
---|---|
[자바/Java] - 접근 제어자(private,default,protected,public) (0) | 2024.01.08 |
[자바/Java] - NullPointerException 예외 (0) | 2024.01.07 |
[자바/Java] - 기본형, 참조형 (2) | 2024.01.07 |
[자바/Java] - 클래스(Class) (0) | 2024.01.06 |