JAVA

221014 인터페이스 실습

주영재 2022. 10. 14. 16:51

인터페이스

package quiz15;

public interface SongList {

	public void insertList(String song);
	public void playList();
	public int playLength();
}

자식

package quiz15;

public class MelonMusic implements SongList {
	/*
	 * SongList인터페이스를 상속받아서 기능을 구현합니다.
	 * insertList() 는 list배열에 순서대로 저장
	 * playList() list의 음악을 랜덤하게 출력
	 * playLength() 는 저장된 음악의 개수를 반환
	 */
	private String[] list = new String[100];
	private int count = 0;

	@Override
	public void insertList(String song) {
		list[count]=song;
		count++;
	}


	@Override
	public void playList() {
		if(count==0){System.out.println("곡이 없음"); return;}
		System.out.println(list[(int)(Math.random()*count)]);
	}


	@Override
	public int playLength() {
		return count;
	}


}

insertList메서드는 호출될 때마다 값을 받을 테니 안에서 반복문을 돌릴 필요가 없음

노래가 추가되지 않으면 내용물이 없으니 출력을 다르게.

노래가 있으면 출력할 수 있는 곡은 1~받은 노래 개수

인덱스번호는 0~받은개수-1이니 Math.random()-(0<= <1)*count

 

main

package quiz15;

import java.util.Scanner;

public class MainClass {
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		//바깥에 객체생성
		SongList m= new MelonMusic();
		
		while(true){
			System.out.println("메뉴[1.추가, 2.재생, 3.개수, 4.종료]");
			System.out.print(">");
			int num=scan.nextInt();
			
			if(num==1) {
				System.out.print("노래>");
				m.insertList(scan.next());
			} else if(num==2) {
				m.playList();
			} else if(num==3) {
				System.out.println("재생곡개수:"+m.playLength());
			} else if(num==4) {
				System.out.println("종료");
				return;
			}
		}
		
//		SongList s = new MelonMusic();
//		s.insertList("가시");
//		s.insertList("미인");
//		s.insertList("같은 베개");
//		s.insertList("벚꽃엔딩");
//		s.playList();
//		System.out.println(s.playLength());
	}

}
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
곡이 없음
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>1
노래>가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>1
노래>미인
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>1
노래>같은베개
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
미인
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
미인
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
같은베개
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>3
재생곡개수:3
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>4
종료

객체생성의 위치 파악하기. 반복문안에있으면 계속 새로 생성됨.