60일차

김윤정·2024년 9월 9일

코딩

목록 보기
49/60
post-thumbnail

1. 아래를 설명하시오.

  • DI: 의존성을 주입시킵니다. 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입을 시켜주는 방식입니다.

    <예시>

첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법이고, (완제품)

두번째 방법은 외부에서 생성 된 객체를 setter()나 생성자를 통해 사용하는 방법입니다. (조립)

첫번째 방법 예제를 보시면 MainClass는 Cats를 의존하고 있고, MainClass에서 직접 Cats클래스를 생성해서 사용합니다.

  • IOC: 오브젝트의 생성, 사용 및 생명주기의 관리까지 제어권이 바뀌었다는 의미입니다. 즉, 제어권을 스프링 프레임워크가 담당한다는 의미입니다.

  • IOC 컨테이너: 빈객체를 관리하는 저장소입니다

2. 아래와 같이 프로그래밍 하시오.

interface Shape

  • double getArea();
  • void setWidth(double width)
  • void setHeight(double height)
    삼각형 , 사각형 객체를 위의 인터페이스를 구현하여,
    appCTX4에 객체 생성후 Pencil 과 같이 다형성이 적용되도록 Main을 짜시오.

Shape.java

package com.javalec.ex;

public interface Shape {
   
   public double getArea();
   
   public void setWidth(double width);
   
   public void setHeight(double height);
   
   
}

Triangle.java

package com.javalec.ex;

public class Triangle implements Shape {

	private double width;

	private double height;

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

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

	@Override
	public double getArea() {
		return (width * height)/2;
	}

}

Rectangle.java

package com.javalec.ex;

public class Rectangle implements Shape {

	private double width;

	private double height;

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

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

	@Override
	public double getArea() {
		return width * height;
	}

}

appCTX4.xml

<?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">

	<!-- 	Pencil pencil = new Pencil4B(); -->
	<bean id="rectangle" class="com.javalec.ex.Rectangle"> 
		<property name="width">
				<value>10</value>
		</property>
		<property name="height">
				<value>2</value>
		</property>
	</bean>
	
		<bean id="triangle" class="com.javalec.ex.Triangle"> 
		<property name="width">
				<value>10</value>
		</property>
		<property name="height">
				<value>2</value>
		</property>
	</bean>
</beans>

ShapeMain.java

package com.javalec.ex;

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

public class ShapeMain {
	  
	   public static void main(String[] args) {
	      
	      String config = "classpath:appCTX4.xml";
	      
	      AbstractApplicationContext ctx = new GenericXmlApplicationContext(config);
	      
	      Shape rec = ctx.getBean("rectangle", Shape.class);
	      Shape tri = ctx.getBean("triangle", Shape.class);
	      
	      System.out.println("사각형: "+ rec.getArea());
	      System.out.println("삼각형: "+ tri.getArea());
	   }
}

0개의 댓글