1. 클로져란 무엇인가?

: 반환된 함수의 Life-cycle이 종료될 때까지 호출된 함수의 Life-cycle이 유지되는 기능이다.

function funName() {
    var varName = "var : " + x;
    return function() { // return문에 익명함수를 선언한다.(Lifle Cycle 시작)
        console.log(varName);
        for(var i = 1; i < 10; i++) { // for문에 의해 Cycle을 형성한다.
            console.log(x * i);
        }
    }; // return문 함수 종료(Life Cycle 종료)
}

var returnFun = funName(5); // 클로져가 적용된 함수를 호출한 뒤 가변 인자 값에 숫자 5를 넣는다.
                            // 위 메소드에 있는 x에 5가 대입되어 계산을 수행하는데
                            // 반환된 함수의 LifeCycle이 종료될때까지 지속적으로 수행한다.

 

 

2. JS를 이용하여, 구구단 중 홀수단만 나오게 하시오.

2-1. 소스코드

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>구구단 홀수로 찍기</title>
</head>
<body>
	<table border="1">
		<h1>구구단을 2단부터 9단까지 홀수로 출력</h1>
		<script type="text/javascript">
		document.write("<tr>");
		for (var i = 3; i <= 9; i+=2) {
			document.write("<td>" + i + "단 </td>");		
		}
		document.write("</tr>");
		
		for (var i = 1; i <= 9; i++) {
			document.write("<tr>");
			for (var j = 3; j <= 9; j+=2) {
				document.write("<td>" + j + " * " + i + " = " + i*j + "</td>");
			}
			document.write("</tr>");
		}
		</script>
	</table>
</body>
</html>

 

2-2. 구현화면

 

 

3. 부서별로 sal의 최소 값을 구하는데, 30번 부서의 sal 최소값 보다 큰것을 구하시오.

SELECT deptno, MIN(sal)
FROM emp
WHERE sal > (SELECT MIN(sal)
             FROM emp
             WHERE deptno = 30)
GROUP BY deptno;

 

 

4. 삼각형 및 사각형의 넓이를 구하는 프로그래밍을 IOC 컨테이너를 이용하여 프로그래밍 하시오.

4-1. RecMainClass.java (IOC 컨테이너를 담는 main 메소드가 있는 객체)

package com.javalec.ex;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class RecMainClass {

	public static void main(String[] args) {
		String configLocation = "classpath:applicationCTX.xml";

		// IOC 컨테이너(스프링 객체)
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
		RecInfo recInfo = ctx.getBean("recInfo", RecInfo.class);
		recInfo.getInfo();
		ctx.close();
	}
}

 

4-2. RecInfo.java (사각형의 가로, 세로 및 넓이에 대한 정보를 setter 하는 객체)

package com.javalec.ex;

public class RecInfo {
	private double width;
	private double height;
	private RecAreaCalculator recAreaCalculator;

	// 다른 객체에서 가져왔으므로 getter도 추가한다.
	public RecAreaCalculator getRecAreaCalculator() {
		return recAreaCalculator;
	}

	public void setRecAreaCalculator(RecAreaCalculator recAreaCalculator) {
		this.recAreaCalculator = recAreaCalculator;
	}

	public void setWidth(double width) {
		this.width = width;
	}

	public void setHeight(double height) {
		this.height = height;
	}

	public void recAreaCalculation() {
		recAreaCalculator.recAreaCalculation(width, height);
	}

	public void getInfo() {
		System.out.println("가로 : " + width);
		System.out.println("세로 : " + height);
		recAreaCalculation();
	}
}

 

4-3. RecAraCalculator.java (사각형의 넓이 값을 리턴하는 메소드가 있는 객체)

package com.javalec.ex;

public class RecAreaCalculator {

	// 사각형의 넓이
	public void recAreaCalculation(double width, double height) {
		double result = width * height; // 사각형의 넓이 공식

		System.out.println("사각형의 넓이는 : " + result + " 입니다.");
	}
}

 

4-4. applicationCTX.xml (Java Bean 객체를 가져와 일괄적으로 담아 관리하는 문서)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  
  <bean id="recAreaCalculator" class="com.javalec.ex.RecAreaCalculator">
  </bean>
  
  <bean id="recInfo" class="com.javalec.ex.RecInfo">
    <property name="width">
      <value>20</value>
    </property>
    <property name="height">
      <value>20</value>
    </property>
    <property name="recAreaCalculator">
      <ref bean="recAreaCalculator"/>
    </property>
  </bean>  
</beans>