Java_실습_인터페이스_책장

권권·2023년 3월 8일
0

Java 예제🛒

목록 보기
3/14
post-thumbnail

자바 인터페이스 실습

인터페이스에 대한 예제를 풀어보았다.

문제

책장을 만들려고 한다. 책장은 책을 넣는 순서대로 꺼낼 수 있다.
실제로 책을 넣고 뺄 수 있는 BookShelf와 물건을 넣고 빼는 Shelf 클래스, 넣고 빼는 동작을 구현하게 할 Queue(인터페이스) 를 이용하여 책장을 만들어라

생각한 것

  1. 객체
    가. BookShelf
    나. Shelf
    다. Queue

  2. 필드
    가. 책 제목

  3. 메서드
    가. 책을 넣기
    나. 책을 빼기(넣은 순서대로)
    다. 남은 책 갯수 세어주기

클래스 구현

  1. Shelf
package ch08.sec02;

import java.util.ArrayList;

public class Shelf {

	protected ArrayList<String> shelf; // 배열타입임

	public Shelf() {
		shelf = new ArrayList<String>();
	}

	public ArrayList<String> getShelf() {
		return shelf;
	}

	public int getCount() {
		return shelf.size();
	}

}

먼저 Shelf 클래스를 만들어주었다.
눈여겨봐야할 것은 자료구조인데, 자료구조를 ArrayList로 하고 그 안에 들어갈 자료형을 String으로 하였다.
그리고 생성자를 통해서 필드에 ArrayList 객체를 을 대입해주었다.

getCount()를 통해서 shelf ArrayList에 남아있는 자료도 확인 할 수 있다.

  1. Queue 인터페이스
package ch08.sec02;

public interface Queue {

	void enQueue(String title); // 큐에 집어넣기

	String deQueue(); // 큐에서 빼기

	int getSize(); // 큐에 남은 갯수
}

Queue 인터페이스는 1. 집어넣는 메서드 2. 빼는 메서드 3. 남은갯수 메서드 구현을 요청하는 추상클래스를 선언해주었다.

  1. BookShelf 클래스
package ch08.sec02;

public class BookShelf extends Shelf implements Queue{

	@Override
	public void enQueue(String title) {
		shelf.add(title);
	}

	@Override
	public String deQueue() {
		return shelf.remove(0); // 처음에 추가한 것 FIFO
	}

	@Override
	public int getSize() {
		return getCount();
	}
}

그리고 위의 두가지 클래스와 인터페이스를 상속 및 구현해준 BookShelf 클래스를 생성해주었다. 상속과 구현을 모두 적용한 클래스라는 점을 보자

상속 받은 shelf (ArrayList 타입) 을 통해서 Queue의 메서드 오버라이딩하였다.

  1. 구현 클래스
package ch08.sec02;

public class BookShelfExample {

	public static void main(String[] args) {
		
		Queue bookQueue = new BookShelf();
		
		bookQueue.enQueue("토지1");
		bookQueue.enQueue("토지2");
		bookQueue.enQueue("토지3");
		bookQueue.enQueue("토지4");
		bookQueue.enQueue("토지5");
		
		System.out.println(bookQueue.getSize()); // 5
		
		

		System.out.println(bookQueue.deQueue()); // 토지 1
		System.out.println(bookQueue.deQueue()); // 토지 2
		System.out.println(bookQueue.deQueue()); // 토지 3
		System.out.println(bookQueue.deQueue()); // 토지 4
		System.out.println(bookQueue.deQueue()); // 토지 5
	}

}

위 처럼 구현클래스를 작성해주었다.
먼저 BookShelf 객체를 Quere 인터페이스 타입으로 형변환 해주었다.
enQueue 에서 원하는 자료형인 String 자료형을 넣어서 add() 를 통해서 ArrayList 에 순서대로 쌓고, deQueue 를 통해서 remove(0) 을 해주었다. (들어간 순서대로 빼주는 것) 그리고 deQueue 로 반환된 값을 프린트 해주면 위와 같다.

ArrayList 의 활용방법에 대해 유의하자.

profile
안녕하세요

0개의 댓글