JAVA Programming/JAVA 문제

[42] 템플릿 메소드문제( ArrayList, 템플릿메소드 run() , 추상클래스)

꾸준히개발하자 2020. 7. 16. 12:10

 

 

package cartest;

public abstract class Car {
	
	public abstract void start();
	public abstract void drive();
	public abstract void stop();
	public abstract void turnoff();
	
	
	final public void run() { // 템플릿 메소드	
		start();
		drive();
		stop();
		turnoff();
	}
}

 

추상메소드를 가지는 추상 클래스를 생성합니다. 

final 로 지정된 템플릿메소드 run() 를 생성합니다.  - 로직순서를 구현

 

package cartest;

public class Sonata extends Car {

	@Override
	public void start() {
		System.out.println(" Sonata 시동을 킵니다.");
	}

	@Override
	public void drive() {
		System.out.println(" Sonata 달립니다.");
	}

	@Override
	public void stop() {
		System.out.println("  Sonata 멈춤니다.");
	}

	@Override
	public void turnoff() {
		System.out.println(" Sonata 시동을 끕니다.");
	}
	
}

 

package cartest;

public class Avante extends Car {

	@Override
	public void start() {
		System.out.println("Avante 시동을 킵니다.");
	}

	@Override
	public void drive() {
		System.out.println(" Avante 달립니다.");
	}

	@Override
	public void stop() {
		System.out.println(" Avante 멈춤니다.");
	}

	@Override
	public void turnoff() {
		System.out.println(" Avante 시동을 끕니다.");
	}
	
}
package cartest;

public class Grandeur extends Car {

	@Override
	public void start() {
		System.out.println("  Grandeur 시동을 킵니다.");
	}

	@Override
	public void drive() {
		System.out.println("  Grandeur 달립니다.");
	}

	@Override
	public void stop() {
		System.out.println("  Grandeur 멈춤니다.");
	}

	@Override
	public void turnoff() {
		System.out.println("  Grandeur 시동을 끕니다.");
	}
	
}

 

package cartest;

public class Genesis extends Car {

	@Override
	public void start() {
		System.out.println("Genesis 시동을 킵니다.");
	}

	@Override
	public void drive() {
		System.out.println(" Genesis 달립니다.");
	}

	@Override
	public void stop() {
		System.out.println("Genesis 멈춤니다.");
	}

	@Override
	public void turnoff() {
		System.out.println("Genesis 시동을 끕니다.");
	}
	
}

 

이제  ArrayList 에 Car 객체를 선언하고  carList를 만듭니다

각각의 객체를 new를 통해  add 추가  합니다.

 

for hanced for 문을 사용하여    배열명인 carList에  run()을 실행해

템플릿 메소드 의  순서대로  메소드들을 실행 합니다. 

 

package cartest;

import java.util.ArrayList;

public class CarTest {

	public static void main(String[] args) {
		ArrayList<Car> carList = new ArrayList<Car>();
		carList.add(new Sonata());
		carList.add(new Avante());
		carList.add(new Grandeur());
		carList.add(new Genesis());
		
		for(Car car : carList ) {
			 car.run();
			 System.out.println("=================");
		}
	}
}