Java/Excercise

interface ch02 HomeMainTest

낭구리 2021. 8. 31. 17:41
package ch02;

public class MainTest {

	public static void main(String[] args) {
		
		Television  television = new Television();
		Refrigerator refrigerator = new Refrigerator();
		ToyRobot toyRobot = new ToyRobot();
		
		television.turnOn();
		television.turnOff();
		System.out.println("-----");
		
		refrigerator.turnOn();
		refrigerator.turnOff();
		System.out.println("-----");
		
		toyRobot.turnOn();
		toyRobot.turnOff();
		System.out.println("-----");
		
		//인터페이스를 사용하여 표준을 만들어 틀을 사용할 수 있게된다.
		//다형성 - 배(선박, 신체, 과일) 배라는 이름도 여러가지 의미가있다.
		//다양한 형태로 바라보는 것
		//배열만들어서 크기는 3개 0,1,2 인스턴스 변수 넣어주세요.
		
		RemoteControler[] remote = new RemoteControler[3];
		
		remote[0] = television;
		remote[1] = refrigerator;
		remote[2] = toyRobot;
		
		//문제 1 확장 for문 이용해서 turnOn()메서드 호출
		for (RemoteControler remoteControler : remote) {
			remoteControler.turnOn();
		}//RemoteControler(타입) remoteControler(매개변수) remote(변수)
		System.out.println("-----");
		
		//문제 2 확장 for문 이용해서 turnOff()메서드 호출
		for (RemoteControler remoteControler : remote) {
			remoteControler.turnOff();
		}
		System.out.println("-----");
		
		//문제 3. 일반 for문을 사용해서 클래스타입이 ToyRobot이면 name을 화면에 출력해주세요
		//instanceof 연산자, 다운 캐스팅
		
		//1.for문 만들기
		//2.만약 TouRobot --> true{}
		//3.(int)0.8
		for (int i = 0; i < remote.length; i++) {
			if(remote[i] instanceof ToyRobot) {
				//ToyRobot이라는 것이 트루라면 {} 안에 실행
				String name = ((ToyRobot)remote[i]).name;
				System.out.println(name);
			}
		}
		
		//요구 사항 추가!! 인터페이스 추가
		//냉장고에 문이 열렸으면 멜로디 소리를 나게하라.(기능적인측면 -> 인터페이스로 접근)
		//장난감 로봇에 건전지가 거의 없으면 멜로디 소리가 나게하라.
		
		//인터페이스 장점.
		//표준화가 가능하다. 
		//서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
		//클래스 간에 결합도를 낮춰서 유연한 코드를 설계할 수 있다.(결합도가 낮아야 좋은 코드)

		//정리
		//객체지향 패러다임 핵심
		//객체와 객체간에 상호협력해서 코드를 설계해나간다.(버스,지하철, 학생, 스타크래프트)
		//객체와 객체간에 관계를 정의하여 코드를 설계해나간다.(상속, 포함관계, 추상클래스, 인터페이스)
		//다형성(클래스를 다양한 형태로 바라본다.)
		
		

		
		
		
		
		
		
		
	}
}