문제1- 절차 지향 직사각형 프로그램 객체 지향으로 변경하기
다음은 직사각형의 넓이(Area), 둘레 길이 (Perimeter), 정사각형 여부(square)를 구하는 프로그램
-절차 지향 프로그래밍 방식으로 되어 있는 코드를 객체 지향 프로그램 방식으로 변경하라
-Rectangle 클래스를 만들어라
-RectangleOopMain 에 해당 클래스를 사용하는 main() 코드를 만들어라
절차 지향 코드
package oop1.ex;
public class RectangleProceduralMain {
public static void main(String[] args) {
int width = 5;
int height = 8;
int area = calculateArea(width, height);
System.out.println("넓이: " + area);
int perimeter = calculatePerimeter(width, height);
System.out.println("둘레 길이: " + perimeter);
boolean square = isSquare(width, height);
System.out.println("정사각형 여부: " + square);
}
static int calculateArea(int width, int height) {
return width * height;
}
static int calculatePerimeter(int width, int height) {
return 2 * (width + height);
}
static boolean isSquare(int width, int height) {
return width == height;
}
}
실행 결과)
넓이: 40
둘레 길이: 26
정사각형 여부: false
객체 지향 프로그램
package oop1.ex;
public class Rectangle {
int width = 5;
int height = 8;
int calculateArea() { //매개변수 필요 없음 (내 클래스 안에 있는 변수 사용하면 됨)
return width * height;
}
int calculatePerimeter() {
return 2 * (width + height);
}
boolean isSquare() {
return width == height;
}
}
package oop1.ex;
public class RectangleOopMain {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle();
rectangle.width = 5;
rectangle.height = 8;
int area = rectangle.calculateArea();
System.out.println("넓이: " + area);
int perimeter = rectangle.calculatePerimeter();
System.out.println("둘레 길이: " + perimeter);
boolean square = rectangle.isSquare();
System.out.println("정사각형 여부: " + square);
}
}
실행 결과)
넓이: 40
둘레 길이: 26
정사각형 여부: false
문제2- 객체 지향 계좌
은행 계좌를 객체로 설계
- Account 클래스 만들어라
- int balance 잔액
- deposit(int amount) : 입금 메서드
- 입금 시 잔액이 증가
- withdraw(int amount) : 출금 메서드
- 출금 시 잔액이 감소
- 잔액이 부족하면 '잔액 부족'을 출력
- AccountMain 클래스를 만들고 main() 메세드를 통해 프로그램을 시작
- 계좌에 10000을 입금
- 계좌에서 9000원 출금
- 계좌에서 2000원 출금 시도 => 잔액 부족 출력을 확인해라
- 잔고를 출력해라 => 잔고: 1000
실행 결과)
잔액 부족
잔고: 1000
문제 풀이)
package oop1.ex;
import java.util.Scanner;
public class Account {
int balance; //잔액
void deposit(int amount) {
balance += amount;
}
void withdraw(int amount) {
if (balance >= amount) {
balance -= amount;
} else {
System.out.println("잔액 부족");
}
}
}
package oop1.ex;
import java.util.Scanner;
public class AccountMain {
public static void main(String[] args) {
Account account = new Account();
account.deposit(10000);
account.withdraw(9000);
account.withdraw(2000); //오류 메시지 출력
System.out.println("잔고: " + account.balance);
}
}
잔액 부족
잔고: 1000
'개발 공부 > 문제와 풀이' 카테고리의 다른 글
Java) 연습문제 2-1 (0) | 2024.08.10 |
---|---|
Java) 물을 가장 많이 담을 수 있는 면적 구하기 (0) | 2024.08.09 |
Java) replace 구현 문제 (0) | 2024.08.09 |
기본형과 참조형 문제 풀이 (0) | 2024.03.16 |
김영한의 실전 자바 기본편 / Sec 1) 문제와 풀이 (0) | 2024.02.16 |