인터페이스 실습_4

호떡·2022년 7월 31일
0

📝관련 실습: 인터페이스와 제어자 (MovieManagerImpl.java)

  • Arrays.copyOfRange()

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

Arrays.copyOfRange()

	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]

0개의 댓글