글쓰기

청년취업아카데미/Java

[21.01.11 Java] 음악 플레이어(클래스 분리)

RSpring41 2021. 1. 11. 11:01

 

▶ 프레이어 메인

package musicplayer;
import java.util.Scanner;

import javax.swing.plaf.metal.MetalComboBoxUI.MetalPropertyChangeListener;

import javazoom.jl.player.MP3Player;

// 플레이어 메인
public class MusicMain2 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		boolean isPlay = true;

		MusicPlayer mPlayer = new MusicPlayer();
		
		// 노래르 재생시켜 주는 라이브러리 
		MP3Player mp3 = new MP3Player();


		System.out.println("======[ 음악 재생]======");

		while (isPlay) {
			System.out.print("[1]재생 [2]중지  [3]이전곡  [4] 다음곡 [5] 종료 : >");
			int select = sc.nextInt();

			switch (select) {
			case 1:
				System.out.println(mPlayer.play());
				mp3.play(mPlayer.play().getPath());
				break;
				
			case 2:

				System.out.println(mPlayer.stop());
				mp3.stop();
				break;
				
			case 3:
				Music m = mPlayer.prePlay();
				if (m == null) {
					System.out.println("이전곡을 재생할 수 없습니다.");
				} else {
					System.out.println(m);
				}
			
				break;
				
			case 4:
				m = mPlayer.nextPlay();
				if (m == null) {
					System.out.println("다음곡을 재생할 수 없습니다.");
				} else {
					System.out.println(m);
				}
				break;
				
			case 5:
				System.out.println("프로그램이 종료되었습니다.");
				isPlay = false;
				break;
				
			default:
				System.out.println("잘못된 번호입니다. 다시 입력해주세요.");
				break;
			}
		}
	}

}

 

▶ 음악 정보 클래스

package musicplayer;
// 곡 정보를 저장하는 틀


public class Music {
	private String name;
	private String artist;
	private int playtime;
	private String path;

	public Music(String name, String artist, int playtime, String path) {
		super();
		this.name = name;
		this.artist = artist;
		this.playtime = playtime;
		this.path = path; 
	}
	
	
	public Music(String name, String artist, int playtime) {
		super();
		this.name = name;
		this.artist = artist;
		this.playtime = playtime;
	}

	
	

	public void setName(String name) {
		this.name = name;
	}

	public void setArtist(String artist) {
		this.artist = artist;
	}

	public void setPlaytime(int playtime) {
		this.playtime = playtime;
	}
	
	public void setPath(String path) {
		this.path = path;
	}

	public String getName() {
		return name;
	}

	public String getArtist() {
		return artist;
	}

	public int getPlaytime() {
		return playtime;
	}

	public String getPath() {
		return path;
	}


	@Override
	public String toString() {
		return artist + "가수   " + name + "재생중  " + playtime + "시간 재생중";
	}
	
	
	

}

 

 

 

음악 정보 + 기능 클래스

package musicplayer;
import java.util.ArrayList;


// 플레이어 기능 정보 + 음악 정보 저장
public class MusicPlayer {
	ArrayList<Music> musiclist;

	public MusicPlayer() {
		musiclist = new ArrayList<Music>();
		musiclist.add(new Music("HIP", "mamamoo", 16, "music/HIP.mp3"));
		musiclist.add(new Music("Hapjeong", "유산술", 30, "music/합정역 5번 출구.mp3"));
		musiclist.add(new Music("Blueming", "IU", 58, "music/Blueming.mp3"));
		musiclist.add(new Music("Workaholic", "볼빨간사춘기", 270, "music/Workahoic.mp3"));
	}

	int pos;

	// 반환을 musiclist로 반환함 > 출력 자료형을 맞춰줌
	public Music play() {
		return musiclist.get(pos);

	}

	public String stop() {
		return "노래를 중지합니다.";
	}

	public Music prePlay() {
		if (pos == 0) {
			return null;
		} else {
			pos--;
			return musiclist.get(pos);
		}

	}

	public Music nextPlay() {
		if (pos == musiclist.size() - 1) {
			return null;
		} else {
			pos++;
			return musiclist.get(pos);
		}
	}

}

 

 

중요 내용 정리

toString은 그냥 불러오면 리턴으로 출려

뭔가 사용하면 객체를 불러오는거로 사용됨

				mp3.play(mPlayer.play().getPath());
				
                 아래 코드와 동일함
                
				Music m = mPlayer.play();
				mp3.play(m.getPath());