반응형
PlayList 클래스에 추가할 메서드
1. 플레이리스트의 재생 시간 합산
int PlayList::get_total_duration() {
int total_duration = 0;
for (auto song_ptr : tracks) {
total_duration += song_ptr->get_duration();
}
return total_duration;
}
2. 플레이리스트 내 특정 아티스트의 노래 목록
vector<Song*> PlayList::find_songs_by_artist(string artist_name) {
vector<Song*> result;
for (auto song_ptr : tracks) {
if (song_ptr->get_artist() == artist_name) {
result.push_back(song_ptr);
}
}
return result;
}
3. 플레이리스트 내 특정 앨범의 노래 목록
vector<Song*> PlayList::find_songs_by_album(string album_name) {
vector<Song*> result;
for (auto song_ptr : tracks) {
if (song_ptr->get_album() == album_name) {
result.push_back(song_ptr);
}
}
return result;
}
MusicManager 클래스에 추가할 메서드들
1. 모든 플레이리스트의 재생 시간 합산
int MusicManager::get_total_duration() {
int total_duration = 0;
for (auto plist : playlists) {
total_duration += plist->get_total_duration();
}
return total_duration;
}
2. 모든 플레이리스트 내 특정 아티스트의 노래 목록
vector<Song*> MusicManager::find_all_songs_by_artist(string artist_name) {
vector<Song*> result;
for (auto plist : playlists) {
vector<Song*> songs = plist->find_songs_by_artist(artist_name);
result.insert(result.end(), songs.begin(), songs.end());
}
return result;
}
3. 모든 플레이리스트 내 특정 앨범의 노래 목록
vector<Song*> MusicManager::find_all_songs_by_album(string album_name) {
vector<Song*> result;
for (auto plist : playlists) {
vector<Song*> songs = plist->find_songs_by_album(album_name);
result.insert(result.end(), songs.begin(), songs.end());
}
return result;
}
4. 노래 정보를 업데이트하는 메서드
void MusicManager::update_song_info(int song_id, string new_title, string new_artist, string new_album, string new_mv_url) {
auto it = find_playlist("All");
Song* song_ptr = (*it)->find_song_by_id(song_id);
if (song_ptr != nullptr) {
song_ptr->set_title(new_title);
song_ptr->set_artist(new_artist);
song_ptr->set_album(new_album);
song_ptr->set_mv_url(new_mv_url);
cout << "Song information updated." << endl;
} else {
cout << "Song not found." << endl;
}
}
Song 클래스에 필요한 메서드
1. 노래 시간 가져오기
int Song::get_duration() {
return duration; // duration 멤버 변수가 있다고 가정
}
2. 노래 정보 설정 메서드
void Song::set_title(string new_title) {
title = new_title;
}
void Song::set_artist(string new_artist) {
artist = new_artist;
}
void Song::set_album(string new_album) {
album = new_album;
}
void Song::set_mv_url(string new_mv_url) {
mv_url = new_mv_url;
}
반응형
'IT 프로그래밍 > 객체지향프로그래밍' 카테고리의 다른 글
객체지향프로그래밍 시험 예상 문제 코드 (0) | 2024.06.22 |
---|---|
객체지향프로그래밍 7 과제 Food Monster (0) | 2024.06.21 |
객체지향프로그래밍 5 과제 (0) | 2024.06.21 |
객체지향프로그래밍 4 과제 (0) | 2024.06.21 |
객체지향프로그래밍 그룹액티비티 7 (0) | 2024.06.19 |