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