📝관련 실습: 인터페이스와 제어자 (MovieManagerImpl.java)
import java.util.Arrays;
/* 도서리스트를 배열로 유지하며 관리하는 클래스*/
public class MovieManagerImpl implements IMovieManager {
/*관리할 최대 영화 수*/
private static int MAX_SIZE = 100;
/*관리한 영화 리스트*/
private Movie[] movieList = new Movie[MAX_SIZE];
/*현재 등록된 영화 수*/
private int size = 0;
public static int getMaxSize() {
return MAX_SIZE;
}
/*싱글턴 패턴*/
⭐ private static IMovieManager instance = new MovieManagerImpl();
private MovieManagerImpl() {
}
public static IMovieManager getInstance() {
return instance;
}
//영화를 영화리스트에 추가
/*기능과 UI 구분 위해 리턴타입을 void에서 boolean으로 변경*/
@Override
public boolean add(Movie movie) {
if(size < MAX_SIZE) {
movieList[size++] = movie;
return true;
} else {
return false;
}
}
//등록된 전체 영화리스트 반환
@Override
public Movie[] getList() {
return Arrays.copyOfRange(movieList, 0, size);
}
@Override
public Movie[] searchByTitle(String title) {
int cnt = 0;
for(int i=0; i<size; i++) {
if(movieList[i].getTitle().contains(title)) {
cnt++;
}
}
int idx = 0;
Movie[] tmp = new Movie[cnt];
for(int i=0; i<size; i++) {
if(movieList[i].getTitle().contains(title)) {
tmp[idx++] = movieList[i];
}
}
return tmp;
}
@Override
public Movie[] getMovies() {
int cnt = 0;
for(int i=0; i<size; i++) {
if(!(movieList[i] instanceof SeriesMovie)) {
cnt++;
}
}
int idx = 0;
Movie[] tmp = new Movie[cnt];
for(int i=0; i<size; i++) {
if(!(movieList[i] instanceof SeriesMovie)) {
tmp[idx++] = movieList[i];
}
}
return tmp;
}
@Override
public SeriesMovie[] getSeriesMovies() {
int cnt = 0;
for(int i=0; i<size; i++) {
if(movieList[i] instanceof SeriesMovie) {
cnt++;
}
}
int idx = 0;
SeriesMovie[] tmp = new SeriesMovie[cnt];
for(int i=0; i<size; i++) {
if(movieList[i] instanceof SeriesMovie) {
tmp[idx++] = (SeriesMovie)movieList[i];
}
}
return tmp;
}
@Override
public double getRunningTimeAvg() {
double sum=0;
for(int i=0; i<size; i++) {
sum += movieList[i].getRunningTime();
}
return sum/size;
}
} //end class
int[] arr = {1,2,3,5,4,8,3,8,4,2};
int[] tmp = Arrays.copyOfRange(arr, 0, 4);
System.out.println(Arrays.toString(tmp));
실행결과: [1, 2, 3, 5]