GDJ 8/18

Yongha Hwang·2023년 8월 18일
0

JAVA & MVC

1.패턴

  • 디자인 패턴

    -설계 문제에 대한 해답을 문서화 하기 위해 고안된 방법
    -소프트웨어 개발 과정에서 자주 나타나는 과제를 해결하기 위한 방법
    -패턴은 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다
    -디자인 패턴은 일반적으로 대규모 프로그램 개발에 적합 하다.
    -각 디자인 패턴이 유용한 상황에 대해 잘 알아야 한다.
    -패턴은 절대적이지 않다.(상황에 맞게 유연하게 변형이 가능 하다.

  • MVC 패턴

    MVC Pattern 은 Model View Controller의 약자로 애플리케이션을 세 가지의 역할로 구분한다

  • MVC는 JSP를 한번에 묶어서 편리하게 처리 할 수 있다.
//# = protected / + = public / - = private / 기본값 = default
// 아래 어노테이션(@)은 특정 요청이 있을때 아래 클래스를 실행하라는 의미  
// localhost:8080/01_Controller 요청이 왔을때web.xml 에서 welcomfile list 에 지정된 파일이 없으면 404에러가 난다.
// 하지만 아래 "/" 요청이 있으면 404가 나지 않고 아래 클래스를 실행 한다.
@WebServlet("/")
public class MainController extends HttpServlet {
	//extends 는 상속한다는 키워드 이다.
	// method = "get" 으로 요청한 경우 아래 메서드를 실행
	//protected : 패키지를 벗어나려면 부모자식관계여야함
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("GET 방식 요청");
	}
	// method ="post" 로 요청한 경우 아래 메서드를 실행
	// post 방식을 사용하기 위해서는 명시를 해야함 (기본값 get)
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("POST 방식 요청");
	}

2.상속

  • JAVA 에서는 다른 소스를 가져다 쓰기 위한 두가지 방법이 있다.
  • 객체화(instance) 와 상속(inherit) 이다.
  • 상속은 부모의 것을 내 것처럼 사용하는 개념 이다.
  • 상속은 OOP 4대 특징 중 하나이다

//override 를 했다는 것은 이 메서드를 그대로 사용하지 않겠다는 의미
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
				
		MyCar car = new MyCar();
		String result ="";
		//상속을 사용하면 하나의 클래스 객체화로 나머지 상속받은 메서드를 모두 사용 할 수 있다.
		switch(action) {
			case "start":
				result = car.start();
				break;
			case "stop":
				result = car.stop();
				break;
			case "run":
				car.turbo = true;
				result = car.run();
				break;
			case "test":
				result = car.test();
				break;
		}
		System.out.println(result);
        
     //run() 이 마음에 안들어 수정해서 사용하고자 한다.
	// 1. 완전히 다시 만든다.
	/*
	@Override
	public String run() {
		return "시속 150km 로 달린다.";
	}
	*/	
	// 2. 경우에 따라서 부모것을 사용할수도 내것을 사용할수도 있게 한다.(부모의 기능을 활용)
	public boolean turbo = false;
	@Override
	public String run() {
		if(turbo == false) {
			return super.run(); // super 는 부모를 의미			
		}else {
			return "시속 200km 로 달린다.";
		}
	}
    	//view 에 응답을 해주자 
		// 1. response 활용
		// -sendRedirect 를 활용해 완전히 다른 페이지로 이동
		// -out 객체를 이용해서 페이지를 다시 그리는 방법
		
		// 2. request 활용
		// -forward 를 활용해서 특정 페이지에 특정 데이터를 던져준다.
		req.setAttribute("msg", result); //request 니까 보낼 값을 담을 수 있다.
		RequestDispatcher dis = req.getRequestDispatcher("index.jsp");
		dis.forward(req, resp); //전송
	}
  • override : 상속받은 메서드를 수정 하는 것
  • final 이 붙은 메서드는 읽기전용(read only) 이므로 override가 불가능 하다.

3.추상화

  • Abstract(추상화) : OOP 4대 특징 중 하나로 실체 간에 공통되는 특성을 추출 하고 불 필요한 정보를 제거해 단순화 시키는 것이다.

	// 추상클래스에는 2개의 메서드가 존재 한다.	
	// 1. 일반 메서드(누군가 상속하면 그냥 자기것 처럼 사용하는 메서드)
	public String jump(String job) {
		return job+" 가 점프한다.";
	}
	// 2. 추상 메서드(몸체가 없는 메서드)
	// 추상 클래스를 상속받는 클래스에게 강제로 오버라이드 하도록 한다.(규격)
	public abstract String skill(String job);
	public abstract String useItem(String job);
  • 추상화를 사용 하는 이유 : 필수로 만들어야 하는 메서드들을 말로하는 것보다
    특정 클래스를 상속받게 하는 것이 더 효과적이다.
  • 추상 클래스는 자식 이외에는 객체화 시킬 수 없다.

0개의 댓글

관련 채용 정보