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. 문제
- 요구사항
- 광물이 추가될 때마다 (자수정, 오팔, 다이아… 쭉쭉쭉 추가 예정) add메서드를 추가해야하는 단점이있는 코드.
- 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
'스파르타코딩클럽(내일배움캠프)' 카테고리의 다른 글
스파르타 코딩 클럽 4주차 1일 (0) | 2022.11.20 |
---|---|
스파르타 코딩 클럽 3주차 후기 (1) | 2022.11.20 |
스파르타 코딩 클럽 3주차 4일 (1) | 2022.11.17 |
스파르타 코딩 클럽 3주차 3일 (0) | 2022.11.15 |
스파르타 코딩 클럽 3주차 2일 (0) | 2022.11.15 |