본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타 코딩 클럽 3주차 5일

728x90

[객체지향 문제]

 

1. 계산기 문제

 

1. 위 Calculator 클래스를 상속하는 UpgradeCalculator를 만든다.
요구사항
빼기기능 구현, 메서드 명 minus

2. 위 Calculator클래스를 활용해서, 멤버 필드인 value의 크기 제한이 있는 MaxLimitCalculator클래스 만들기
요구사항
멤버 필드 value의 크기가 100보다 큰 값은 가질 수 없다.

 3.  위 Calculator클래스에서 짝수인지, 홀수인지 판별해주는 메서드 추가
요구사항 
짝수 홀수 판별 메서드 : isOdd 홀수이면 true 반환, 짝수이면 false 반환
 
4. 위 Calculator클래스에서 평균값 구하는 메서드 추가
요구사항
정수의 리스트 입력시, 입력받은 리스트의 평균값을 반환하는 avg 메서드 구현

class Calculator {
    int value;

    Calculator() {
        this.value = 0;
    }

    void add(int val) {
        this.value += val;
    }

    int getValue() {
        return this.value;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator cal = new Calculator();
        cal.add(10);
        System.out.println(cal.getValue());
    }
}

 

구현(정답 아닐수 있음)

import java.util.ArrayList;
import java.util.List;

class Calculator {
    int value;

    Calculator() {
        this.value = 0;
    }

    void add(int val) {
        this.value += val;
    }

    int getValue() {
        return this.value;
    }

    int avg(List<Integer> val)
    {
        System.out.println(val);
        int sum =0;
        for (Integer a:val)
        {
            sum+= a;
        }
        this.value = sum/val.size();
        return this.value;
    }

    boolean idOdd(int val)
    {
        if(val %2==0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

class MaxLimitCalculator extends Calculator{
    boolean flag;
    int temp;
    void exceedNum(int val)
    {
        temp = val;
        if(val>100)
        {
            flag = true;
        }
        else
        {
            flag = false;
        }
        if(flag == false)
        {
            value = temp;
        }
    }

}

class UpgradeCalculator extends Calculator{

    void minus(int val)
    {
        this.value-=val;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator cal = new Calculator();
        cal.add(10);
        cal.add(10);
        cal.add(10);

        List<Integer>val = new ArrayList<Integer>();
        val.add(10);
        val.add(10);
        val.add(10);
        val.add(10);
        val.add(20);
        val.add(20);
        val.add(20);
        val.add(20);
        System.out.println(cal.avg(val));

        MaxLimitCalculator limit = new MaxLimitCalculator();
        limit.exceedNum(101);
        System.out.println(limit.value);

        limit.exceedNum(95);
        System.out.println(limit.value);

        //System.out.println(cal.getValue());
    }
}

 

베스트 초과 확인하는 메서드

public class MaxLimitCalculator extends Calculator{
    @Override
    void add(int val){
        this.value = (this.value + val >= 100) ? this.value : this.value + val;
    }
}

3항 연산자를 이용해서 한줄에 끝냈다.

 

2. 미네랄 계산기 만들기 문제

 

1. 문제

  1. 요구사항
  1. 광물이 추가될 때마다 (자수정, 오팔, 다이아… 쭉쭉쭉 추가 예정) add메서드를 추가해야하는 단점이있는 코드.
  2.  MineralCalculator 클래스의 add 메서드 추가하지 않는 방법을 생각해서, 코드를 수정하세요.
class Gold {
}

class Silver {
}

class Bronze {
}

class MineralCalculator {
    int value = 0;

    public void add(Gold gold) {
        this.value += 100;
    }

    public void add(Silver silver) {
        this.value += 90;
    }

    public void add(Bronze bronze) {
        this.value += 80;
    }

    public int getValue() {
        return this.value;
    }
}

 

2. 구현

class Gold {
}

class Silver {
}

class Bronze {
}

class MineralCalculator {
    int value = 0;

    public void add(Gold gold) {
        this.value += 100;
    }

    public void add(Silver silver) {
        this.value += 90;
    }

    public void add(Bronze bronze) {
        this.value += 80;
    }

    public int getValue() {
        return this.value;
    }
}

class addMineral extends MineralCalculator{
    public void add(String Mineral)
    {
        if(Mineral=="Gold")
        {
            this.value += 100;
        }
        else if(Mineral=="Silver")
        {
            this.value += 90;
        }
        else if(Mineral=="Bronze")
        {
            this.value += 80;
        }
        else
        {
            System.out.println("Not recognition\n");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        addMineral min = new addMineral();
        min.add("Gold");
        System.out.println(min.getValue());
    }
}
728x90