인프런 커뮤니티 질문&답변

코린이님의 프로필 이미지
코린이

작성한 질문수

김영한의 실전 자바 - 기본편

문제와 풀이

이런식으로 해도 객체 지향 프로그램인가요?

작성

·

1.7K

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.

package oop1.ex;

import java.util.Scanner;

public class Account {
    Scanner scanner = new Scanner(System.in);
    int balance;

    int deposit() {
        System.out.print("입금할 금액을 입력하세요.\n↳ ");
        int depositAmount = scanner.nextInt();
        balance += depositAmount;
        System.out.println("잔액: " + balance + "원");
        return balance;
    }
    int withdraw() {
        System.out.print("출금할 금액을 입력하세요.\n↳ ");
        int withdrawAmount = scanner.nextInt();
        if (balance > withdrawAmount) {
            balance -= withdrawAmount;
        } else {
            System.out.println("잔액이 부족합니다.");
        }
        System.out.println("잔액: " + balance + "원");
        return balance;
    }

    void checkAmount() {
        System.out.println("잔액: " + balance);
    }
}
package oop1.ex;

import java.util.Scanner;

public class AccountMain {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Account account = new Account();

        while (true) {
            System.out.println("-------------메뉴를 선택하세요-------------");
            System.out.print("1. 입금 | 2. 출금 | 3. 잔액 확인 | 4. 종료\n↳ ");
            int selectMenu = scanner.nextInt();

            switch (selectMenu) {
                case 1:
                    account.deposit();
                    break;
                case 2:
                    account.withdraw();
                    break;
                case 3:
                    account.checkAmount();
                    break;
                case 4:
                    System.out.println("프로그램을 종료합니다.");
                    return;
                default:
                    System.out.println("잘못된 입력입니다. 다시 입력해주세요");
                    break;
            }

        }
    }
}

제 나름 입력까지 하는 프로그램으로 만들었는데 인스턴스 안에 메서드에 print를 넣는게 좋은지 메인 클래스에 print를 넣는게 좋은지 잘 모르겠습니다

코드도 잘 짰는지 궁금합니다

답변 2

2

안녕하세요. 코린이님, 공식 서포터즈 David입니다.

Account 클래스가 입력(Scanner)과 출력(Print)의 책임을 가지고 있습니다.

Account 클래스가 입력과 출력을 담당해야 하는가?부터 고민해 보시면 좋을 것 같습니다:)

감사합니다.

0

본문에 짜신 코드를 테스트하는 코드를 작성해보시면 본인의 코드가 잘 짰는지 / 개선의 여지가 있는지 판단을 하는데 도움이 될 것 같습니다.

 

여기서 테스트란 눈으로 결과를 확인하는 휴먼 테스트가 아닌 프로그램이 동작을 검증하는 코드의 형태인 것을 의미합니다.

코린이님의 프로필 이미지
코린이

작성한 질문수

질문하기