강사님의 코드
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
=================
문자열을 원하는 각 타입으로 변환해주는 기능
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를 통해 객체 간의 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있다.
인터페이스는 추상메소드의 집합이다.
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.0tbasic@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
출력 결과