1. Model (모델)
package ex03_뮤직플레이어;
public class Music {
// Model : 데이터를 가지고 있는 객체
private String title; // 노래제목
private String singer; // 가수
private String path; // 노래 저장 경로
public Music(String title, String singer, String path) {
this.title = title;
this.singer = singer;
this.path = path;
}
// (2) getter 메소드
public String getTitle() {
return title;
}
public String getSinger() {
return singer;
}
public String getPath() {
return path;
}
}
2. View (뷰)
package ex03_뮤직플레이어;
import java.util.ArrayList;
import java.util.Scanner;
import javazoom.jl.player.MP3Player;
public class MusicMain2 {
// 유지보수 쉽게 코드 리팩토링
// 모듈 - 클래스 1개;
// View : 시각화(입출력 역할)
public static void main(String[] args) {
// jar(클래스파일들의 집합) 추가하는 방법
// 프로젝트 선택 --> 마우스 우클릭 --> build path
// --> configure build path --> 탭중에 libraries
// --> class path 옵션 선택 --> add jars
Scanner sc = new Scanner(System.in);
MusicController con = new MusicController();
while (true) {
System.out.print("[1]노래재생 [2]다음곡 [3]이전곡 [4]정지 [5]종료 >> ");
int input = sc.nextInt();
if (input == 1) {
// 노래재생
Music m = con.play();
// (2) 노래에 대한 정보를 출력
System.out.println("====재생중인 노래====");
System.out.println("노래 제목 \t 가수");
System.out.print(m.getTitle() + " \t ");
System.out.println(m.getSinger());
} else if (input == 2) {
// 다음곡
Music m = con.next();
// 다음곡이 있었을 경우에만 index 1증가시키고 노래를 재생
if (m != null) {
// (2) musicList 두번째 방에 있는 노래 정보 출력
System.out.println("====재생중인 노래====");
System.out.println("노래 제목 \t 가수");
System.out.print(m.getTitle() + " \t ");
System.out.println(m.getSinger());
} else {
System.out.println("다음곡이 없습니다.");
}
} else if (input == 3) {
// 이전곡
Music m = con.pre();
if (m != null) {
System.out.println("====재생중인 노래====");
System.out.println("노래 제목 \t 가수");
System.out.print(m.getTitle() + " \t ");
System.out.println(m.getSinger());
} else {
System.out.println("이전곡이 없습니다.");
}
} else if (input == 4) {
// 정지
con.stop();
System.out.println("노래를 정지합니다.");
} else if (input == 5) {
con.stop();
System.out.println("프로그램을 종료합니다.");
break;
}
}
}
}
2. Controller (컨트롤러)
package ex03_뮤직플레이어;
import java.util.ArrayList;
import javazoom.jl.player.MP3Player;
public class MusicController {
// Controller : 데이터의 흐름 제어
// (음악 재생, 다음곡 넘긱기, 이전곡 넘기기, 음악정지)
// 1. 필드
private MP3Player mp3 = new MP3Player();
private String comPath = "C:\\Users\\USER\\Desktop\\JavaStudy\\ex0706\\src\\player\\";
private ArrayList<Music> musicList = new ArrayList<Music>();
private int index = 0;
// 2. 메소드
// 객체를 생성하는 순간에 뮤직플레이리스트를 추가하기
// --> 기본 생성자 사용
// 생성자는 리턴타입 지정X;
// 메소드명은 클래스명이랑 토시 한 톨도 안틀리고 같아야함.
// 매개변수(x)
public MusicController() {
musicList.add(new Music("Attention", "뉴진스", comPath + "Attention.mp3"));
musicList.add(new Music("Butterfly", "전영호", comPath + "Butterfly.mp3"));
musicList.add(new Music("LoveDive", "아이브", comPath + "Lovedive.mp3"));
musicList.add(new Music("Nxde", "아이들", comPath + "Nxde.mp3"));
musicList.add(new Music("RushHour", "크러쉬", comPath + "Rushhour.mp3"));
}
// 재생하기
public Music play() {
stop();
mp3.play(musicList.get(index).getPath());
return musicList.get(index);
}
// 정지하기
// 리턴타입x, 메소드명 stop
public void stop() {
if (mp3.isPlaying()) {
mp3.stop();
}
}
// 다음곡 재생하기
public Music next() {
if (index < musicList.size() - 1) {
index++;
return play();
// play();
// return musicList.get(index);
} else {
stop();
return null;
}
}
// 이전곡 재생하기
// 메소드명 pre
public Music pre() {
if (index > 0) {
index--;
return play();
} else {
stop();
return null;
}
}
}
'프로그래밍언어 > Java' 카테고리의 다른 글
(자바) 객체 배열 2 (0) | 2024.04.19 |
---|---|
(자바) 객체 배열 Main (0) | 2024.04.19 |
(자바) 뮤직플레이어 프로그램 만들기(MVC패턴 적용 안한 상태) (0) | 2024.04.19 |
[Java] this 키워드의 의미와 사용 방법 3가지(예시 코드 포함) (0) | 2024.04.19 |
코딩에서의 스코프(Scope)란? (feat. 자바) (1) | 2024.04.19 |
1. Model (모델)
package ex03_뮤직플레이어; public class Music { // Model : 데이터를 가지고 있는 객체 private String title; // 노래제목 private String singer; // 가수 private String path; // 노래 저장 경로 public Music(String title, String singer, String path) { this.title = title; this.singer = singer; this.path = path; } // (2) getter 메소드 public String getTitle() { return title; } public String getSinger() { return singer; } public String getPath() { return path; } }
2. View (뷰)
package ex03_뮤직플레이어; import java.util.ArrayList; import java.util.Scanner; import javazoom.jl.player.MP3Player; public class MusicMain2 { // 유지보수 쉽게 코드 리팩토링 // 모듈 - 클래스 1개; // View : 시각화(입출력 역할) public static void main(String[] args) { // jar(클래스파일들의 집합) 추가하는 방법 // 프로젝트 선택 --> 마우스 우클릭 --> build path // --> configure build path --> 탭중에 libraries // --> class path 옵션 선택 --> add jars Scanner sc = new Scanner(System.in); MusicController con = new MusicController(); while (true) { System.out.print("[1]노래재생 [2]다음곡 [3]이전곡 [4]정지 [5]종료 >> "); int input = sc.nextInt(); if (input == 1) { // 노래재생 Music m = con.play(); // (2) 노래에 대한 정보를 출력 System.out.println("====재생중인 노래===="); System.out.println("노래 제목 \t 가수"); System.out.print(m.getTitle() + " \t "); System.out.println(m.getSinger()); } else if (input == 2) { // 다음곡 Music m = con.next(); // 다음곡이 있었을 경우에만 index 1증가시키고 노래를 재생 if (m != null) { // (2) musicList 두번째 방에 있는 노래 정보 출력 System.out.println("====재생중인 노래===="); System.out.println("노래 제목 \t 가수"); System.out.print(m.getTitle() + " \t "); System.out.println(m.getSinger()); } else { System.out.println("다음곡이 없습니다."); } } else if (input == 3) { // 이전곡 Music m = con.pre(); if (m != null) { System.out.println("====재생중인 노래===="); System.out.println("노래 제목 \t 가수"); System.out.print(m.getTitle() + " \t "); System.out.println(m.getSinger()); } else { System.out.println("이전곡이 없습니다."); } } else if (input == 4) { // 정지 con.stop(); System.out.println("노래를 정지합니다."); } else if (input == 5) { con.stop(); System.out.println("프로그램을 종료합니다."); break; } } } }
2. Controller (컨트롤러)
package ex03_뮤직플레이어; import java.util.ArrayList; import javazoom.jl.player.MP3Player; public class MusicController { // Controller : 데이터의 흐름 제어 // (음악 재생, 다음곡 넘긱기, 이전곡 넘기기, 음악정지) // 1. 필드 private MP3Player mp3 = new MP3Player(); private String comPath = "C:\\Users\\USER\\Desktop\\JavaStudy\\ex0706\\src\\player\\"; private ArrayList<Music> musicList = new ArrayList<Music>(); private int index = 0; // 2. 메소드 // 객체를 생성하는 순간에 뮤직플레이리스트를 추가하기 // --> 기본 생성자 사용 // 생성자는 리턴타입 지정X; // 메소드명은 클래스명이랑 토시 한 톨도 안틀리고 같아야함. // 매개변수(x) public MusicController() { musicList.add(new Music("Attention", "뉴진스", comPath + "Attention.mp3")); musicList.add(new Music("Butterfly", "전영호", comPath + "Butterfly.mp3")); musicList.add(new Music("LoveDive", "아이브", comPath + "Lovedive.mp3")); musicList.add(new Music("Nxde", "아이들", comPath + "Nxde.mp3")); musicList.add(new Music("RushHour", "크러쉬", comPath + "Rushhour.mp3")); } // 재생하기 public Music play() { stop(); mp3.play(musicList.get(index).getPath()); return musicList.get(index); } // 정지하기 // 리턴타입x, 메소드명 stop public void stop() { if (mp3.isPlaying()) { mp3.stop(); } } // 다음곡 재생하기 public Music next() { if (index < musicList.size() - 1) { index++; return play(); // play(); // return musicList.get(index); } else { stop(); return null; } } // 이전곡 재생하기 // 메소드명 pre public Music pre() { if (index > 0) { index--; return play(); } else { stop(); return null; } } }
'프로그래밍언어 > Java' 카테고리의 다른 글
(자바) 객체 배열 2 (0) | 2024.04.19 |
---|---|
(자바) 객체 배열 Main (0) | 2024.04.19 |
(자바) 뮤직플레이어 프로그램 만들기(MVC패턴 적용 안한 상태) (0) | 2024.04.19 |
[Java] this 키워드의 의미와 사용 방법 3가지(예시 코드 포함) (0) | 2024.04.19 |
코딩에서의 스코프(Scope)란? (feat. 자바) (1) | 2024.04.19 |