국비 10일차_2

강지수·2023년 12월 26일
0

국비교육

목록 보기
19/97

강사님의 코드

package com.tech.gt003.lunch2;

public class LunchTest {
	public static void main(String[] args) {
		Lunch[] menu=new Lunch[3];
		menu[0]=new ChinaLunch("양장피",35000,3,"탕수육");
		menu[1]=new OrientLunch("소갈비",30000,5,"1인1냉면");
		menu[2]=new OrientLunch("안심스테이크",40000,2,"닭가슴살샐러드");
		
		for (int i = 0; i < menu.length; i++) {
			System.out.println("=================");
			System.out.println(menu[i]);			
			System.out.println("=================");
		}

	}
}

LunchTest.java (main)


package com.tech.gt003.lunch2;

public abstract class Lunch {
//	fname : 음식 이름
//	fprice : 음식 단가
//	fperson : 인원수
//	추상메소드 getTotal
	protected String fname;
	protected int fprice;
	protected int fperson;
	
	public Lunch(String fname, int fprice, int fperson) {
		this.fname=fname;
		this.fprice=fprice;
		this.fperson=fperson;
	}

	public abstract int getTotal();
	
	public abstract String toString();

}

Lunch.java


package com.tech.gt003.lunch2;

public class ChinaLunch extends Lunch {
	private String chinaService;
	public ChinaLunch(String fname, int fprice, int fperson, String chinaService) {
		super(fname,fprice,fperson);
		this.chinaService=chinaService;
	}
	public int getTotal() {
		return fprice*fperson;
	}
	
	@Override
	public String toString() {
		 String msg="<중국집>\n"
				 +"메뉴:"+fname+"\n"
				 +"가격:"+fprice+"\n"
				 +"인원:"+fperson+"\n"
				 +"서비스:"+chinaService+"\n"
				 +"총액:"+getTotal()+"\n";
		return msg;
	}

}

ChinaLunch.java


package com.tech.gt003.lunch2;

public class OrientLunch extends Lunch {
	private String orientService;
	public OrientLunch(String fname, int fprice, int fperson, String orientService) {
		super(fname,fprice,fperson);
		this.orientService=orientService;
	}
	public int getTotal() {
		return fprice*fperson;
	}
	
	@Override
	public String toString() {
		 String msg="<수원소갈비>\n"
				 +"메뉴:"+fname+"\n"
				 +"가격:"+fprice+"\n"
				 +"인원:"+fperson+"\n"
				 +"서비스:"+orientService+"\n"
				 +"총액:"+getTotal()+"\n";
		return msg;
	}

}

OrientLunch.java


package com.tech.gt003.lunch2;

public class WestLunch extends Lunch {
	private String WestService;
	public WestLunch(String fname, int fprice, int fperson, String WestService) {
		super(fname,fprice,fperson);
		this.WestService=WestService;
	}
	public int getTotal() {
		return fprice*fperson;
	}
	
	@Override
	public String toString() {
		 String msg="<고급레스토랑>\n"
				 +"메뉴:"+fname+"\n"
				 +"가격:"+fprice+"\n"
				 +"인원:"+fperson+"\n"
				 +"서비스:"+WestService+"\n"
				 +"총액:"+getTotal()+"\n";
		return msg;
	}

}

WestLunch.java


결과

=================
<중국집>
메뉴:양장피
가격:35000
인원:3
서비스:탕수육
총액:105000

=================
=================
<수원소갈비>
메뉴:소갈비
가격:30000
인원:5
서비스:1인1냉면
총액:150000

=================
=================
<수원소갈비>
메뉴:안심스테이크
가격:40000
인원:2
서비스:닭가슴살샐러드
총액:80000

=================

Wrap (랩)

문자열을 원하는 각 타입으로 변환해주는 기능

package com.tech.gt004;

public class WrapClass {
	public static void main(String[] args) {
//		랩
		String str="10";
		String str2="10.5";
		String str3="true";
		
		byte b=Byte.parseByte(str);
		System.out.println("문자열 byte값 변환 : "+b);
		int i=Integer.parseInt(str);
		System.out.println("문자열 integer값 변환 : "+i);
		short s=Short.parseShort(str);
		System.out.println("문자열 short값 변환 : "+s);
		long l=Long.parseLong(str);
		System.out.println("문자열 long값 변환 : "+l);
//		str2를 float로 변환
		float f=Float.parseFloat(str2);
		System.out.println("문자열 float값 변환 : "+f);
//		str2를 double로 변환
		double d=Double.parseDouble(str2);
		System.out.println("문자열 double값 변환 : "+d);
//		str3를 boolean으로 변환
		boolean bool=Boolean.parseBoolean(str3);
		System.out.println("문자열 boolean값 변환 : "+bool);
	}

}

결과

문자열 byte값 변환 : 10
문자열 integer값 변환 : 10
문자열 short값 변환 : 10
문자열 long값 변환 : 10
문자열 float값 변환 : 10.5
문자열 double값 변환 : 10.5
문자열 boolean값 변환 : true

DI (Dependency Injection)

DI (Dependency Injection) : 의존성 주입
외부에서 객체 간의 관계 (의존성) 를 결정해 주는데, 객체를 직접 생성하는 것이 아니라 외부에서 생성 후 주입시켜 주는 방식이라 할 수 있다.
DI를 통해 객체 간의 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있다.


Interface

인터페이스는 추상메소드의 집합이다.


interface 를 상속할 때는 implements 를 쓴다.


di 예제

package com.tech.gt005.di2;

public class CoffeeTest {
	public static void main(String[] args) {
		HotAmericano hot=new HotAmericano();
		IceAmericano ice=new IceAmericano();
		
		Coffee coffee=new Coffee();
		coffee.setAme(ice); // 주입시킨다
		coffee.coffeeType();
		coffee.setAme(hot);
		coffee.coffeeType();
//		결합도가 낮다, DI 가 낮다		
	}
}

CoffeeTest.java (main)


package com.tech.gt005.di2;

public class Coffee {
	private Americano ame;
	public void setAme(Americano ame) {
		this.ame=ame;
	}
	public void coffeeType() {
		System.out.println(ame.getName());	
	}
}

Coffee.java


package com.tech.gt005.di2;

public class HotAmericano implements Americano {
	
	@Override
	public String getName() {
		return "따뜻한 아메리카노";
	}
}

HotAmericano.java


package com.tech.gt005.di2;

public class IceAmericano implements Americano{
	
	@Override
	public String getName() {
		return "시원한 아메리카노";
	}
}

IceAmericano.java


package com.tech.gt005.di2;

public interface Americano {
	public String getName();
}

Americano.java


결과

시원한 아메리카노
따뜻한 아메리카노

main method가 있는 class 에서 변수를 주입시켜 원하는 값을 도출할 수 있음.
=> di가 낮다.


DI 관련 내용 역시 면접에서 나올 수 있는 질문


Linux 미션
di3 내용을 출력

CoffeeTest.java


Coffee.java


Americano.java


HotAmericano.java


IceAmericano.java


출력 결과


Windows 미션
클래스 이름들
Trans.java
abstract method : getCharge()
CityBus.java
Taxi.java
Express.java
Train.java
TransTest.java
trans[0]=new Train(10,100,500);
trans[1]=new CityBus(10,100,100);
trans[2]=new Experess(2,20,1500);
trans[3]=new Taxi(2,100,1000);

(인원, 거리, 거리당 금액)

출력 결과
인원 : 10, 거리 : 100, 총액 : 500000.0

tbasic@daum.net
메일제목 : 운송요금_홍길동
파일로 제출


package com.tech.mission1;

public class TransTest {
	public static void main(String[] args) {
		Trans[] trans=new Trans[4];
		
		trans[0]=new Train(10,100,500);
		trans[1]=new CityBus(10,100,100);
		trans[2]=new Express(2,20,1500);
		trans[3]=new Taxi(3,100,1000);
		
		for (int i = 0; i < trans.length; i++) {
			System.out.println("================");
			System.out.println(trans[i]);
			System.out.println("================");
		}
	}
}

TransTest.java (main)


package com.tech.mission1;

public abstract class Trans {
	protected int person;
	protected int distance;
	protected int price;
	
	public abstract float getCharge();
	
	public Trans(int person, int distance, int price) {
		this.person=person;
		this.distance=distance;
		this.price=price;
	}

}

Trans.java


package com.tech.mission1;

public class Train extends Trans {
	public Train(int person, int distance, int price) {
		super(person,distance,price);
	}
	public float getCharge() {
		return (float)distance*price;
	}
	@Override
	public String toString() {
		String result="<Train>\n"
				+"인원 : "+person+"\n"
				+"거리 : "+distance+"\n"
				+"단가 : "+price+"\n"
				+"총액 : "+getCharge()+"\n";
		return result;
	}

}

Train.java


package com.tech.mission1;

public class CityBus extends Trans {
	public CityBus(int person, int distance, int price) {
		super(person,distance,price);
	}
	public float getCharge() {
		return (float)distance*price;
	}
	@Override
	public String toString() {
		String result="<CityBus>\n"
				+"인원 : "+person+"\n"
				+"거리 : "+distance+"\n"
				+"단가 : "+price+"\n"
				+"총액 : "+getCharge()+"\n";
		return result;
	}

}

Citybus.java


package com.tech.mission1;

public class Express extends Trans {
	public Express(int person, int distance, int price) {
		super(person,distance,price);
	}
	public float getCharge() {
		return (float)distance*price;
	}
	@Override
	public String toString() {
		String result="<Express>\n"
				+"인원 : "+person+"\n"
				+"거리 : "+distance+"\n"
				+"단가 : "+price+"\n"
				+"총액 : "+getCharge()+"\n";
		return result;
	}

}

Express.java


package com.tech.mission1;

public class Taxi extends Trans {
	public Taxi(int person, int distance, int price) {
		super(person,distance,price);
	}
	public float getCharge() {
		return (float)distance*price;
	}
	@Override
	public String toString() {
		String result="<Taxi>\n"
				+"인원 : "+person+"\n"
				+"거리 : "+distance+"\n"
				+"단가 : "+price+"\n"
				+"총액 : "+getCharge()+"\n";
		return result;
	}

}

Taxi.java


출력 결과


profile
개발자 준비의 준비준비중..

0개의 댓글