FIF's 코딩팩토리

자바 기초 NCS교육과정(21)-캐스팅과 바인딩 문제풀이 본문

Back-End/국비 NCS교과과정

자바 기초 NCS교육과정(21)-캐스팅과 바인딩 문제풀이

FIF 2019. 7. 31. 09:35
반응형

이번 시간은 문제풀이 시간 입니다.

코드를 바로 보지 마시고, 충분한 시간을 가지고 고민해 보세요!

생각하는 시간이 많을수록 실력은 향상됩니다.

 

 

 

Question 1) Prob001_binding.java

 

아래를 참조하여 main()메소드를 구현하세요.

 

단, main( )메소드에서 선언된 객체변수를 사용합니다.
   
  [출력결과]
  (2,3)
  (3,4)red
  (2,3)입니다
  (3,4)입니다

 

class CPoint {
	private int x, y;

	public CPoint(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public void show() {
		System.out.println("(" + x + "," + y + ")" + other());
	}

	protected String other() {
		return "";
	}

	public String toString() {
		return "(" + x + "," + y + ")" + "입니다";
	}
}

class ColorPoint extends CPoint {
	private String color;

	public ColorPoint(int x, int y, String color) {
		super(x, y);
		this.color = color;
	}

	public String other() {
		return color;
	}
}

public class Prob001_binding {

	public static void main(String[] args) {
		CPoint a, b;

		// 여기에서 구현하세요.
	

	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Answer 1) Prob001_binding.java

class CPoint {
	private int x, y;

	public CPoint(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public void show() {
		System.out.println("(" + x + "," + y + ")" + other());
	}

	protected String other() {
		return "";
	}

	public String toString() {
		return "(" + x + "," + y + ")" + "입니다";
	}
}

class ColorPoint extends CPoint {
	private String color;

	public ColorPoint(int x, int y, String color) {
		super(x, y);
		this.color = color;
	}

	public String other() {
		return color;
	}
}

public class Prob001_binding {

	public static void main(String[] args) {
		CPoint a, b;

		// 여기에서 구현하세요.///////////////////////
		a = new CPoint(2, 3);
		a.show();
		b = new ColorPoint(3, 4, "red");
		b.show();
		System.out.println(a.toString());
		System.out.println(b.toString());

		
		///////////////////////////////////

	}// end main()
}// end class

출력결과

 

Question 2) Prob002_binding.java

 

 [출력결과]
  이름          급여      정규보너스    특별보너스
  =============================================
  kim  1200000  150000       156000
  lee  1750000  100000   262500
  park  2500000  150000   325000
  hong  2350000  100000   352500

//직군별 보너스를 다르게 지급
 class Employee{
	String name;
	int salary;
	
	public Employee() {
		super();
	}
	public Employee(String name, int salary) {
		super();
		this.name = name;
		this.salary = salary;
	}
	
	//정규보너스
	 public int getBonus(){
		 return 0;
	 }     
	
	@Override
	public String toString() {
		return name +"\t\t" +salary;
	}
}
//--------------------------------------------------------------------------------
class Engineer extends Employee{
	public Engineer() {
		super();
	}

	public Engineer(String name, int salary) {
		super(name, salary);
	}

	@Override
	public int getBonus() {
		return 150000;
	}

	@Override
	public String toString() {
		return super.toString()+"\t"+getBonus();
	}
}
//--------------------------------------------------------------------------------
class Developer extends Employee{
	public Developer() {
		super();
	}

	public Developer(String name, int salary) {
		super(name, salary);
	}

	@Override
	public int getBonus() {
		return 100000;
	}

	@Override
	public String toString() {
		return super.toString()+"\t"+getBonus();
	}
}
//--------------------------------------------------------------------------------
public class Prob002_binding {
	public static void main(String[] args) {
		Employee[] em=new Employee[]{new Engineer("kim",1200000),
									 new Developer("lee",1750000),
									 new Engineer("park",2500000),
									 new Developer("hong",2350000)};
		
/* Engineer는 급여의 13%,  Devloper는 15%를 특별보너스로 지급하는 프로그램을 구현하세요.*/
	
		//여기에 구현하세요
			
		//////////////////////////////////////
		
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Answer 2) Prob002_binding.java

//직군별 보너스를 다르게 지급
 class Employee{
	String name;
	int salary;
	
	public Employee() {
		super();
	}
	public Employee(String name, int salary) {
		super();
		this.name = name;
		this.salary = salary;
	}
	
	//정규보너스
	 public int getBonus(){
		 return 0;
	 }     
	
	@Override
	public String toString() {
		return name +"\t\t" +salary;
	}
}
//--------------------------------------------------------------------------------
class Engineer extends Employee{
	public Engineer() {
		super();
	}

	public Engineer(String name, int salary) {
		super(name, salary);
	}

	@Override
	public int getBonus() {
		return 150000;
	}

	@Override
	public String toString() {
		return super.toString()+"\t"+getBonus();
	}
}
//--------------------------------------------------------------------------------
class Developer extends Employee{
	public Developer() {
		super();
	}

	public Developer(String name, int salary) {
		super(name, salary);
	}

	@Override
	public int getBonus() {
		return 100000;
	}

	@Override
	public String toString() {
		return super.toString()+"\t"+getBonus();
	}
}
//--------------------------------------------------------------------------------
public class Prob002_binding {
	public static void main(String[] args) {
		Employee[] em=new Employee[]{new Engineer("kim",1200000),
									 new Developer("lee",1750000),
									 new Engineer("park",2500000),
									 new Developer("hong",2350000)};
		
/* Engineer는 급여의 13%,  Devloper는 15%를 특별보너스로 지급하는 프로그램을 구현하세요.*/
	
		System.out.println("이름          급여      정규보너스    특별보너스");
		System.out.println("=============================================");
		for(Employee ob : em)
		{
			if(ob instanceof Engineer)
				System.out.println(ob.toString() + "\t" + (int)(ob.salary * 0.13));
			else if(ob instanceof Developer)
				System.out.println(ob.toString() + "\t" + (int)(ob.salary * 0.15));
		}	
		
	}
}

출력결과

 

Question 3) Prob003_binding.java

 

  [데이타]
  이름       부서     구분         급여           수당           근무일         일당
  홍길동    영업부   정직원        450000      1000
  갑동이    기획부   계약직                                                     20           10000
   
  [출력결과]
  홍길동  총급여  451000
  갑동이  총급여  200000
   
  위의 [데이타]를 참조하여 [출력결과]가 나오도록 프로그램을 구현하세요.

class info{
	String name;
	String bs;
	public info(String name, String bs) {
		this.name = name;
		this.bs = bs;
	}
	int money() {
		return 0;
	}
	public void prn() {
		System.out.printf("%s  총급여  %d\n",name,money());
		
	}
}

class reg extends info{
	String lv;
	int salary;
	int bonus;
	
	public reg(String name, String bs, String lv, int salary, int bonus) {
		super(name,bs);
		this.lv=lv;
		this.salary=salary;
		this.bonus=bonus;
	}
	@Override
	int money() {
		return salary+bonus;
	}
}

class gye extends info{
	String lv;
	int day;
	int pay;
	public gye(String name, String bs, String lv, int day, int pay) {
		super(name, bs);
		this.lv = lv;
		this.day = day;
		this.pay = pay;
	}
	@Override
	int money() {
		return day*pay;
	}
}

public class Prob003_binding {

	public static void main(String[] args) {
	//여기에 구현하세요
		

	}//end main()
	


}//end class

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Answer 3) Prob003_binding.java

//사원클래스
abstract class Employment {
	private String name;
	private String dept;
	private String section;

	public Employment() {

	}

	public Employment(String name, String dept, String section) {
		this.name = name;
		this.dept = dept;
		this.section = section;
	}

	public String getName() {
		return name;
	}

	public String getDept() {
		return dept;
	}

	public String getSection() {
		return section;
	}

	@Override
	public String toString() {
		return name + " " + dept + " " + section;
	}

	abstract public long count();

}// end Member

//정직원 급여
class Regular extends Employment {
	private int salary;
	private int allowance;

	public Regular() {

	}

	public Regular(String name, String dept, String section, int salary, int allowance) {
		super(name, dept, section);
		this.salary = salary;
		this.allowance = allowance;
	}

	@Override
	public String toString() {
		return getName() + " " + getDept() + " " + getSection() + " " + salary + " " + allowance;
	}

	@Override
	public long count() {
		return salary + allowance;
	}

}// end Regular

//계약직 급여
class Worker extends Employment {
	int numDays;
	int numPay;

	public Worker() {

	}

	public Worker(String name, String dept, String section, int numDays, int numPay) {
		super(name, dept, section);
		this.numDays = numDays;
		this.numPay = numPay;
	}

	@Override
	public String toString() {
		return getName() + " " + getDept() + " " + getSection() + " " + numDays + " " + numPay;
	}

	@Override
	public long count() {
		return numDays * numPay;
	}
}// end Worker

public class Prob003_binding {
	public static void main(String[] args) {
		Regular rman = new Regular("홍길동", "영업부", "정직원", 450000, 1000);
		display(rman);
		Worker wman = new Worker("갑동이", "기획부", "계약직", 20, 10000);
		display(wman);
				
	}// end main()

	public static void display(Employment emp) {
		System.out.printf("%s 총급여:%d\n", emp.getName(), emp.count());
	}
}// end class

출력결과

반응형
Comments