본문 바로가기

JAVA

[34일차] 자바 패키지 하나 더 만들기

[2일차] BeanFactory 와 다형성 사용하기 : 네이버 카페 (naver.com)

 

마주이야기&마주스토리 : 네이버 카페

마주스토리 카페

cafe.naver.com

 

test0707 package하나 만들기

패키지에 class 세개만들기 

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 소리를 내린다.");
	}
}
package test0707;

public class SamsungTV {
	SamsungTV(){
		System.out.println("삼성 TV 생성자");
	}
	void turnOn() {
		System.out.println("삼성 TV 를 켜다.");
	}
	void turnOff() {
		System.out.println("삼성 TV 를 끄다.");
	}
	void soundUp() {
		System.out.println("삼성 TV 소리를 올린다.");
	}
	void soundDown() {
		System.out.println("삼성 TV 소리를 내린다.");
	}
}
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();*/

	}

}

메소드의 이름이나 형태를 정의를 해놓는게 인터페이스다


TV 라는 인터페이스 생성하기 

package test0707;

public class LgTV implements TV{ /*implements TV 하면 soundUp,soundDown 이 생긴다
 									interface에 있는거는 필수로 사용해야한다 그외는 추가해서 사용가능*/
	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 소리를 내린다.");
		
	}
}
package test0707;

public class SamsungTV implements TV { //implements TV하면 powerOn,powerOff가 생긴다
	SamsungTV(){
		System.out.println("삼성 TV 생성자");
	}
	void turnOn() {
		System.out.println("삼성 TV 를 켜다.");
	}
	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 를 끄다.");
		
	}
}

메인에서 인터페이스 불러오기 

package test0707;

public class MainTest {

	public static void main(String[] args) {
		//new SamsungTV(), new LgTV() ;
		
		TV tv= new LgTV(); // tv 의 형을 TV라고 잡아줄 수 있음. 부모의 형을 상속받을 수 있다 
		tv.powerOn();
		tv.soundUp();
		tv.soundDown();
		tv.powerOff();
		
		/*SamsungTV tv= new SamsungTV();
		tv.turnOn();
		tv.soundUp();
		tv.soundDown();
		tv.turnOff();*/

	}

}

클래스 이름만 바꿔주면 된다 


*디자인패턴 BeanFactory

객체를 리턴해주기 위해서 BeanFactory를 생성한다 

package test0707;

public class BeanFactory {
	
	public Object getBean(String beanName){ //Object(객체)로 리턴받는다
		
		if(beanName.equals("s") || beanName.equals("S")) {
			return new SamsungTV();
		}else if(beanName.equals("l") || beanName.equals("L")) {
			return new LgTV();
		}
		return null; //if 문 밖에서 지정되어있어서 써준것뿐
		
	}
}

메인에서 BeanFactory 불러오기 

package test0707;

public class MainTest {

	public static void main(String[] args) {
		//BeanFactory: new SamsungTV(), new LgTV()를 선택할 수 있는 객체를 생성한것 
		
		BeanFactory factory = new BeanFactory();
		TV tv= (TV) factory.getBean(args[0]); //메인의 값을 받음 args
		                                      //factory 의 형은 object 인데 TV로 강제 형변환 시킨 것이다
		//TV tv= new SamsungTV();
		tv.powerOn();
		tv.soundUp();
		tv.soundDown();
		tv.powerOff();
	}
}

 


인터페이스하나 클래스 하나 생성

 

getter, setter, toString 

package test0707;

public class BoardVo {
	private String id;
	private String pwd;
	
	private String ch1;
	private String ch2;
	
	
	public String getCh1() {
		return ch1;
	}
	public void setCh1(String ch1) {
		this.ch1 = ch1;
	}
	public String getCh2() {
		return ch2;
	}
	public void setCh2(String ch2) {
		this.ch2 = ch2;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	@Override
	public String toString() { //return하기 전에 값이 정상적으로 확인하기 위해서 toString을 쓴다 
		return "BoardVo [id=" + id + ", pwd=" + pwd + "]";
	}
	
	
	
}
package board;

import java.util.List;

public interface Board {
	//C- insert, R- select, U- update, D-delete 
	
	public void insert(String str1, String str2);// 하나하나 받아도 되고 
	public void insert(BoardVo vo); //vo로 통으로 받아도 된다 
	public int insert2(BoardVo vo); //int는 성공일때 1 리턴, 실패하면 리턴 안함 
	
	
	public void update(String str1, String str2); //insert랑 유사 
	public void update(BoardVo vo); //기본 
	public int update2(BoardVo vo);
	
	public void delete(String str); //delete는 값을 하나만(pk) 받아오면 되서 vo를 쓰진않음
	public int delete2(String str); //vo로 받는다고 해서 문제가 되진 않는다 
	
	public BoardVo selectOne(String str); //값 하나 받기 
	public List<BoardVo> selectAll(String str1, String str2); // 여러 값 받기 
	public List<BoardVo> selectAll(BoardVo vo);// vo로 써도됨 
	//public List<BoardVo> selectAll(); 전체값 받기 
	
	//전체 레코드 수 받아오는 메소드 만들기 
	public int count();
	

}

스쿨보드 클래스 만들고 \ 보드 패키지 만들어서 옮기기 

인터페이스 불러오기 



package board;

import java.util.List;

public class SchoolBoard implements Board{

	@Override
	public void insert(String str1, String str2) {
		System.out.println("저장완료!");
		
	}

	@Override
	public void insert(BoardVo vo) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public int insert2(BoardVo vo) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void update(String str1, String str2) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void update(BoardVo vo) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public int update2(BoardVo vo) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void delete(String str) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public int delete2(String str) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public BoardVo selectOne(String str) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<BoardVo> selectAll(String str1, String str2) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<BoardVo> selectAll(BoardVo vo) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int count() {
		// TODO Auto-generated method stub
		return 0;
	}

}

 

메인함수 만들어서 SchoolBoard에 insert 메소드 실행하기 

vo에 영희, 1234 넣은 값을 s로 받기
<스쿨보드> * vo 쓸때 set 사용해주기

 


selectOne 을 메인함수에서 찍을 수 있게 리턴하기 

스쿨보드
메인함수


메인 함수에 1234찍기
스쿨보드에 str 추가


selectAll 활용하기 

 


main 은 service를 사용하고 service는 board를 사용하게 하는 구조 만들기 

(결합도 낮게하려고)

*board는 종단 작업인 것 

 

BoardVo 만들기 

package board;

public class BoardVo {
	private int idx;
	private String title;
	private String name;
	public int getIdx() {
		return idx;
	}
	public void setIdx(int idx) {
		this.idx = idx;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "BoardVo [idx=" + idx + ", title=" + title + ", name=" + name + "]";
	}
	
	
}

인터페이스 만들기 

package board;

import java.util.List;

public interface Board {
	void insert(BoardVo vo);
	
	BoardVo content(int k);
	
	List<BoardVo> selectAll();
	
}

Boardimpl 클래스 만들기 

package board;

import java.util.List;

public class Boardimpl implements Board{

	@Override
	public void insert(BoardVo vo) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public BoardVo content(int k) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<BoardVo> selectAll() {
		// TODO Auto-generated method stub
		return null;
	}

}

BoardService 인터페이스 만들기 

package board;

import java.util.List;

public interface BoardService {

void insert(BoardVo vo);
	
	BoardVo content(int k);
	
	List<BoardVo> selectAll();
}

BoardServiceimpl 클래스 만들기 

package board;

import java.util.List;

public class BoardServiceimpl implements BoardService{

	@Override
	public void insert(BoardVo vo) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public BoardVo content(int k) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<BoardVo> selectAll() {
		// TODO Auto-generated method stub
		return null;
	}

}

MainTest 메인클래스 만들기 


Boardimpl 값이 BoardServiceimpl 밑에다가 출력할 수 있게 만들어보라

 

'JAVA' 카테고리의 다른 글

[35일차] chap5. 데이터 타입 분류 (p138 ~ )  (0) 2022.07.08
[34일차] 서비스 사용하기  (0) 2022.07.07
[33일차]  (0) 2022.07.06
[32일차] 자바 연산자  (0) 2022.07.05
[32일차] 자바 메소드 만들기  (0) 2022.07.05