명품 자바 Programming
Chapter5 Ex2
Q :
4장 연습문제 중 하나를 수정하여 완성해보자. 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 를 수행하는 각 클래스 Add, Sub, Mul, Div를 만들어라. 이들은 모두 다음 필드와 메소드를 가진다.
- int 타입의 a,b 필드 : 연산하고자 하는 피연산자
- void setValue(int a, int b) : 피연산자를 객체 내에 설정한다.
- int calculate() : 해당 클래스의 목적에 맞는 연산을 실행하고 그 결과를 리턴한다.
- 공통 멤버 : int a, int b, setValue(), calculate()
Add, Sub, Mul, Div 클래스에 공통된 필드와 메소드가 존재하므로 새로운 추상 클래스 Calc를 정의하고 이들이 Calc를 상속받게 하라. main() 메소드에서는 다음 실행 사례의 그림과 같이 키보드로부터 계산하고자 하는 연산자와 두 정수를 입력받은 후, Add, Sub, Mul, Div 중에서 이 연산을 시행할 수 있는 객체를 생성하고 setValue()와 calculate()를 호출하여 그 결과 값을 화면에 출력하라.
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | package chap5ex; import java.util.Scanner; class Add extends Operator{ Add(int a, int b){ this.a = a; this.b = b; } public int calculate(){ return a+b; } } class Sub extends Operator{ Sub(int a, int b){ this.a = a; this.b = b; } public int calculate(){ return a-b; } } class Mul extends Operator{ Mul(int a, int b){ this.a = a; this.b = b; } public int calculate(){ return a*b; } } class Div extends Operator{ Div(int a, int b){ this.a = a; this.b = b; } public int calculate(){ return a/b; } } abstract class Operator{ int a, b; Operator(){ a = 0; b = 0;} public void setValue(int a, int b){ this.a = a; this.b = b; } public abstract int calculate(); } public class Calculator { public static void main(String[] args) { Scanner in = new Scanner(System.in); Operator cal = null; int a, b; char oper; System.out.print("두 정수와 연산자를 입력하시오>>"); a = in.nextInt(); b = in.nextInt(); oper = in.next().charAt(0); switch(oper){ case '+': cal = new Add(a,b); break; case '-': cal = new Sub(a,b); break; case '*': cal = new Mul(a,b); break; case '/': cal = new Div(a,b); break; default: System.out.println("잘 못된 연산자 입력"); break; } System.out.println(cal.calculate()); } } | cs |
Key Point
상속의 개념
유용하셨다면 공감 버튼 ↓ 눌러주세요!
728x90
'# Language > Java' 카테고리의 다른 글
명품 JAVA 프로그래밍 5장 5번 (0) | 2018.07.21 |
---|---|
명품 JAVA 프로그래밍 5장 4번 (0) | 2018.07.21 |
명품 JAVA 프로그래밍 5장 3번 (0) | 2018.07.21 |
명품 JAVA 프로그래밍 5장 1번 (0) | 2018.07.21 |
명품 JAVA 프로그래밍 5장 OpenChallenge (0) | 2018.07.20 |
명품 JAVA 프로그래밍 4장 6번 (2) | 2018.07.20 |
명품 JAVA 프로그래밍 4장 5번 (0) | 2018.07.20 |