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 |
Tags
- 순열
- dp
- 최단경로
- 완전탐색
- backend
- 코딩테스트
- 백준
- SW역량평가
- Floyd
- BFS
- SW역량테스트
- 스프링
- D4
- 트리의지름
- Framework
- 알고리즘
- 그래프
- 중복순열
- professional
- BOJ
- java
- 백엔드
- 골드3
- 실버1
- 골드5
- 1251
- 최단경로탐색
- swea
- 최소신장트리
- Spring
Archives
- Today
- Total
공부 기록장
Class를 이용해 음악 목록 보여주기(2) 본문
1번에서 만들었던 클래스들을 적절히 이용해서 작동하게 하기 위해 또 다른 클래스들을 만들었다.
MusicManager 클래스를 이용해 노래를 추가하거나, 검색, 삭제 하는 기능들을 만들어 주었고, MusicPlayer 을 통해 만들어 둔 기능들을 실행해주었다. 이러한 기능들을 제어하기 위해 Exception이나 Interface들도 만들어 주었다.
MusicManager
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class MusicManager implements IMusicMgr{
private ArrayList<MusicPlaylist> plist;
private ArrayList<Music> mlist;
public MusicManager() {
load();
}
//노래만 추가
public void addMusic(String title, String singer, String genre, String album) {
//노래 추가할 때 제목&가수 둘 다 같으면 에러처리.
for(Music music: mlist) {
if(music.getTitle().equals(title) && music.getSinger().equals(singer))
throw new DuplicateException();
}
Music m = new Situation(title,singer,genre,album);
mlist.add(m);
}
//새로운 플레이리스트 생성
public void makePlaylist(String pTitle) {
if(plist != null) {
for(MusicPlaylist p : plist) {
if(p.getpTitle().equals(pTitle))
throw new DuplicateException();
}
}
plist.add(new MusicPlaylist(pTitle));
}
//플레이리스트 보기
public ArrayList<MusicPlaylist> playlist() throws Exception{
if(plist == null)
throw new Exception();
ArrayList<MusicPlaylist> pl = new ArrayList<MusicPlaylist>();
for(MusicPlaylist m : plist) {
pl.add(m);
}
return pl;
}
//노래에 상황 추가하기
public void addSituation(String title, int situation) {
if(situation > 6 || situation < 1)
throw new InputException();
for(Music m: mlist) {
if(m.getTitle().equals(title))
new Situation(m, situation);
}
if(plist != null) {
for(MusicPlaylist p : plist) {
for(Music mp : p.getMusic()) {
if(((Situation)mp).getTitle().equals(title))
((Situation)mp).setSituation(situation);
}
}
}
}
//플레이리스트에 노래 추가
public void addPlaylist(String title, String pTitle) {
for(Music m: mlist) {
if(m.getTitle().equals(title))
for(MusicPlaylist p : plist){
if(p.getpTitle().equals(pTitle))
p.setMusic(m);
}
}
}
//노래 삭제
public void removeMusic(String title) {
//노래 목록에서 노래 삭제
int target = -1;
for(int i = 0; i < mlist.size(); i++) {
if( mlist.get(i).getTitle().equals(title)) {
target = i;
}
}
if(target != -1)
mlist.remove(target);
//노래가 지워졌으니 플레이리스트에서도 삭제
if(plist != null) {
for(MusicPlaylist p : plist) {
for(Music m : p.getMusic()) {
if(m.getTitle().equals(title)) {
p.getMusic().remove(m);
break;
}
}
}
}
}
//플레이리스트에서 노래 삭제
public void removePlaylist(String pTitle, String title) {
//노래 목록에서는 X, 지정 플레이리스트에서만 노래 삭제
for(MusicPlaylist p : plist) {
for(Music m : p.getMusic()) {
if(m.getTitle().equals(title)) {
p.getMusic().remove(m);
break;
}
}
}
}
//플레이리스트 자체 삭제
public void removePlaylist(String pTitle) {
for(MusicPlaylist p : plist) {
if(p.getpTitle().equals(pTitle))
plist.remove(p);
}
}
//노래에 상황 업데이트
public void updateMusic(String title, int situation) {
if(situation > 6 || situation < 1)
throw new InputException();
for(Music m: mlist) {
if(((Situation)m).getTitle().equals(title))
((Situation)m).setSituation(situation);
}
}
//전체 음악 출력
public ArrayList<Situation> getMusicList(){
ArrayList<Situation> ml = new ArrayList<Situation>();
for(Music m : mlist) {
ml.add((Situation)m);
}
return ml;
}
//상활별 음악 출력(상황 입력)
public ArrayList<Situation> getSituationList(int situation) {
ArrayList<Situation> ml = new ArrayList<Situation>();
for(Music m: mlist) {
if(((Situation)m).getSituation() == situation)
ml.add((Situation)m);
}
return ml;
}
//노래 제목 검색
public ArrayList<Music> searchByTitle(String title){
ArrayList<Music> m = new ArrayList<Music>();
for(Music music: mlist) {
if(music.getTitle().equals(title))
m.add(music);
}
return m;
}
public void save() {
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("mdata.dat"));
ObjectOutputStream out2 = new ObjectOutputStream(new FileOutputStream("pdata.dat"));
out.writeObject(mlist);
out2.writeObject(plist);
out.flush();
out2.flush();
out.close();
out2.close();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
public void load() {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("mdata.dat"));
ObjectInputStream in2 = new ObjectInputStream(new FileInputStream("pdata.dat"));
mlist = (ArrayList<Music>) in.readObject();
plist = (ArrayList<MusicPlaylist>) in2.readObject();
System.out.println("음악 데이터 불러오기 성공");
}catch(FileNotFoundException e) {
mlist = new ArrayList<Music>();
plist = new ArrayList<MusicPlaylist>();
System.out.println("새로 생성");
}catch(IOException e) {
e.printStackTrace();
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
}
MusicPlayer
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class MusicManager implements IMusicMgr{
private ArrayList<MusicPlaylist> plist;
private ArrayList<Music> mlist;
public MusicManager() {
load();
}
//노래만 추가
public void addMusic(String title, String singer, String genre, String album) {
//노래 추가할 때 제목&가수 둘 다 같으면 에러처리.
for(Music music: mlist) {
if(music.getTitle().equals(title) && music.getSinger().equals(singer))
throw new DuplicateException();
}
Music m = new Situation(title,singer,genre,album);
mlist.add(m);
}
//새로운 플레이리스트 생성
public void makePlaylist(String pTitle) {
if(plist != null) {
for(MusicPlaylist p : plist) {
if(p.getpTitle().equals(pTitle))
throw new DuplicateException();
}
}
plist.add(new MusicPlaylist(pTitle));
}
//플레이리스트 보기
public ArrayList<MusicPlaylist> playlist() throws Exception{
if(plist == null)
throw new Exception();
ArrayList<MusicPlaylist> pl = new ArrayList<MusicPlaylist>();
for(MusicPlaylist m : plist) {
pl.add(m);
}
return pl;
}
//노래에 상황 추가하기
public void addSituation(String title, int situation) {
if(situation > 6 || situation < 1)
throw new InputException();
for(Music m: mlist) {
if(m.getTitle().equals(title))
new Situation(m, situation);
}
if(plist != null) {
for(MusicPlaylist p : plist) {
for(Music mp : p.getMusic()) {
if(((Situation)mp).getTitle().equals(title))
((Situation)mp).setSituation(situation);
}
}
}
}
//플레이리스트에 노래 추가
public void addPlaylist(String title, String pTitle) {
for(Music m: mlist) {
if(m.getTitle().equals(title))
for(MusicPlaylist p : plist){
if(p.getpTitle().equals(pTitle))
p.setMusic(m);
}
}
}
//노래 삭제
public void removeMusic(String title) {
//노래 목록에서 노래 삭제
int target = -1;
for(int i = 0; i < mlist.size(); i++) {
if( mlist.get(i).getTitle().equals(title)) {
target = i;
}
}
if(target != -1)
mlist.remove(target);
//노래가 지워졌으니 플레이리스트에서도 삭제
if(plist != null) {
for(MusicPlaylist p : plist) {
for(Music m : p.getMusic()) {
if(m.getTitle().equals(title)) {
p.getMusic().remove(m);
break;
}
}
}
}
}
//플레이리스트에서 노래 삭제
public void removePlaylist(String pTitle, String title) {
//노래 목록에서는 X, 지정 플레이리스트에서만 노래 삭제
for(MusicPlaylist p : plist) {
for(Music m : p.getMusic()) {
if(m.getTitle().equals(title)) {
p.getMusic().remove(m);
break;
}
}
}
}
//플레이리스트 자체 삭제
public void removePlaylist(String pTitle) {
for(MusicPlaylist p : plist) {
if(p.getpTitle().equals(pTitle))
plist.remove(p);
}
}
//노래에 상황 업데이트
public void updateMusic(String title, int situation) {
if(situation > 6 || situation < 1)
throw new InputException();
for(Music m: mlist) {
if(((Situation)m).getTitle().equals(title))
((Situation)m).setSituation(situation);
}
}
//전체 음악 출력
public ArrayList<Situation> getMusicList(){
ArrayList<Situation> ml = new ArrayList<Situation>();
for(Music m : mlist) {
ml.add((Situation)m);
}
return ml;
}
//상활별 음악 출력(상황 입력)
public ArrayList<Situation> getSituationList(int situation) {
ArrayList<Situation> ml = new ArrayList<Situation>();
for(Music m: mlist) {
if(((Situation)m).getSituation() == situation)
ml.add((Situation)m);
}
return ml;
}
//노래 제목 검색
public ArrayList<Music> searchByTitle(String title){
ArrayList<Music> m = new ArrayList<Music>();
for(Music music: mlist) {
if(music.getTitle().equals(title))
m.add(music);
}
return m;
}
public void save() {
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("mdata.dat"));
ObjectOutputStream out2 = new ObjectOutputStream(new FileOutputStream("pdata.dat"));
out.writeObject(mlist);
out2.writeObject(plist);
out.flush();
out2.flush();
out.close();
out2.close();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
public void load() {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("mdata.dat"));
ObjectInputStream in2 = new ObjectInputStream(new FileInputStream("pdata.dat"));
mlist = (ArrayList<Music>) in.readObject();
plist = (ArrayList<MusicPlaylist>) in2.readObject();
System.out.println("음악 데이터 불러오기 성공");
}catch(FileNotFoundException e) {
mlist = new ArrayList<Music>();
plist = new ArrayList<MusicPlaylist>();
System.out.println("새로 생성");
}catch(IOException e) {
e.printStackTrace();
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Interface
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public interface IMusicMgr {
public void addMusic(String title, String singer, String genre, String album);
public void addSituation(String title, int situation);
public void addPlaylist(String title, String pTitle);
public void removeMusic(String title);
public void makePlaylist(String pTitle);
public void removePlaylist(String pTitle, String title);
public void removePlaylist(String pTitle);
public void updateMusic(String title, int situation);
public ArrayList<Situation> getMusicList();
public ArrayList<Situation> getSituationList(int situation);
public ArrayList<Music> searchByTitle(String title);
public void save();
public void load();
}
Exception
public class DuplicateException extends RuntimeException {
}
public class InputException extends RuntimeException{
}
'JAVA' 카테고리의 다른 글
Class를 이용해 음악 목록 보여주기(1) (0) | 2021.03.02 |
---|
Comments