Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정처기필기
- cisco packet
- NCS
- 데이터베이스
- javaee
- w3school
- VLAN
- 버추얼머신
- 네트워크관리사
- autoset
- jsp
- 참조타입
- jsp연결
- 라우터
- html
- ospf
- 오라클
- rinux
- 원형그래프
- ciscopacket
- 네트워크
- 자바
- Cisco
- php
- Oracle
- 정보처리기사
- 이것이 자바다
- sql
- 리눅스
- Java
Archives
- Today
- Total
기록해! 정리해!
자바 - TV 인터페이스 본문
객체지향프로그램의 큰 틀을 연습해봅시다..
클래스 생성 사용 인터페이스 생성 사용
LG / 삼성 ----> 회사 ----> TV
똑같은 기능을 만드는데 소스가 다 다름
회사 "얘들아, 이건 좀 아니지않냐? 우리 기준에 좀 맞춰줘"
기준 = 인터페이스
void 앞에 특별한 상황이 아니면 디폴트가 public이기 때문에 굳이 안써줘도 됨
[순서]
1. 각 기업의 소스 작성
2. 메인테스트 클래스 생성해서 출력
3. 인터페이스 생성
4. 각 기업의 소스, 메인테스트 수정
5. 빈팩토리 생성
6. 메인테스트 수정
7. arg 입력
1. LgTV 클래스 생성
package test0707;
public class LgTV {
public LgTV(){
System.out.println("LgTV 생성자");
}
public void powerOn () {
System.out.println("LgTV 전원을 켠다.");
}
public void powerOff() {
System.out.println("LgTV 전원을 끈다.");
}
public void volumeUp() {
System.out.println("LgTV 소리를 올린다.");
}
public void volumeDown() {
System.out.println("LgTV 소리를 내린다.");
}
}
2. SamsungTV 클래스 생성
package test0707;
public class SamsungTV {
public SamsungTV() {
System.out.println("SamsungTV 생성자");
}
public void turnOn() {
System.out.println("삼성 TV를 켜다.");
}
public void turnOff() {
System.out.println("삼성 TV를 끄다.");
}
public void soundUp() {
System.out.println("삼성TV 소리를 올린다.");
}
public void soundDown() {
System.out.println("삼성TV 소리를 내린다.");
}
}
3. MainTest 클래스 생성해서 출력하기
package test0707;
public class MainTest {
public static void main(String[] args) {
/*
LgTV tv = new LgTV();
tv.powerOn();
tv.volumeUp():
tv.volumeDown();
tv.powerOff();
*/
SamsungTV tv = new SamsungTV();
tv.turnOn();
tv.soundUp();
tv.soundDown();
tv.turnOff();
}
}
4. Interface TV 생성하기
: 메소드를 정의하는 곳
: 매개변수 없다, 리턴값 없다(void니까)
package test0707;
public interface TV {
void powerOn();
void powerOff();
void soundUp();
void soundDown();
}
인터페이스에 있는 메소드는 무조건 다 사용해야함 (필수)
인터페이스메소드가 아닌 다른 메소드는 Lg나 삼성만의 고유 메소드 (추가)
implements 추가
메소드 추가
-LgTV
package test0707;
public class LgTV implements TV{
public LgTV(){
System.out.println("LgTV 생성자");
}
public void powerOn () {
System.out.println("LgTV 전원을 켠다.");
}
public void powerOff() {
System.out.println("LgTV 전원을 끈다.");
}
/*
public void volumeUp() {
System.out.println("LgTV 소리를 올린다.");
}
public void volumeDown() {
System.out.println("LgTV 소리를 내린다.");
}
*/
@Override
public void soundUp() {
System.out.println("LgTV 소리를 올린다.");
}
@Override
public void soundDown() {
System.out.println("LgTV 소리를 내린다.");
}
}
-Samsung TV
package test0707;
public class SamsungTV implements TV {
public SamsungTV() {
System.out.println("SamsungTV 생성자");
}
/*
public void turnOn() {
System.out.println("삼성TV를 켜다.");
}
public void turnOff() {
System.out.println("삼성TV를 끄다.");
}
*/
public void soundUp() {
System.out.println("삼성TV 소리를 올린다.");
}
public void soundDown() {
System.out.println("삼성TV 소리를 내린다.");
}
@Override
public void powerOn() {
System.out.println("삼성TV를 켜다.");
}
@Override
public void powerOff() {
System.out.println("삼성TV를 끄다.");
}
}
5. MainTest
부모의 형을 상속해서 사용 가능하다
LgTV -> TV
package test0707;
public class MainTest {
public static void main(String[] args) {
//TV tv = new SamsungTV();
TV tv = new LgTV();
tv.powerOn();
tv.soundUp();
tv.soundDown();
tv.powerOff();
}
}
6. 디자인패턴(GoF) 싱글톤
객체를 리턴해주기위해서
BeanFactory 클래스 생성
package test0707;
public class BeanFactory {
public Object getBean(String beanName){
if(beanName.equals("S")||beanName.equals("s")) {
return new SamsungTV();
}else if(beanName.equals("L")||beanName.equals("l")) {
return new LgTV();
}
return null; //if문 밖에있음
}
}
7. MainTest
package test0707;
public class MainTest {
public static void main(String[] args) {
//TV tv = new SamsungTV();
//TV tv = new LgTV();
BeanFactory factory = new BeanFactory();
//new SamsungTV나 new LgTV를 선택해서 리턴받을 수 있는 객체 생성
//arg[0]는 외부에서 값을 넣겠다는 뜻
TV tv =(TV) factory.getBean(args[0]);
//(object)를 (TV)로 강제형변환
tv.powerOn();
tv.soundUp();
tv.soundDown();
tv.powerOff();
}
}
결과) 소스를 뜯을 필요없이 값만 입력하면 출력할 수 있게 되었다.
'JAVA' 카테고리의 다른 글
자바 - 참조타입 (배열) (0) | 2022.07.08 |
---|---|
자바 - board 인터페이스 (0) | 2022.07.07 |
자바 - 난수 , switch, break, for문, while문, 확인문제 (3장,4장) (0) | 2022.07.06 |
자바 - 오버플로우, 연산자 , 확인문제 (0) | 2022.07.05 |
자바 - 메소드연습 , 구구단 (0) | 2022.07.05 |
Comments