ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인스턴스, 클래스 메소드 문제
    Back end/Java 객체지향 2023. 11. 21. 13:54

     

    - 두점 사이의 거리

    public class PointTest {
      public static void main(String[] args) {
        // 객체 생성
        Point p1 = new Point(0, 0);
        Point p2 = new Point(3, 4);
        
        // 거리 계산
        double dist = Point.distance(p1, p2); // 눈여겨 볼 코드 
        
        // 결과 출력
        Systehttp://m.out.printf("두 점 A%s, B%s 사이의 거리: %.2f ", p1.toStr(), p2.toStr(),dist);
      }
    }

    class Point {
      /* 1. 필드를 만드시오. */
      int x;
      int y;
      /* 2. 생성자를 정의하시오. */
      Point (int _x, int _y){
        x = _x;
        y = _y;
      }
      /* 3. 객체 정보를 문자열로 반환하는 인스턴스 메소드를 만드시오. */
      String toStr(){
        return String.format("(%d, %d)", x, y);
      }
      /* 4. 두 점 사이의 거리를 반환하는 클래스 메소드를 만드시오. */
      static double distance(Point p, Point q){  // 여기서 p,q는 위의 Point.distance(p1,p2)를 보면 p1,p2는 Point로 받고 있음
        double dX = p.x - q.x; // x 좌표의 변화량 
        double dY = p.y - q.y; // y 좌표의 변화량 
        return Math.sqrt((dX * dX) + (dY * dY));
        
        
      }
    }

     

    - 출력

    두 점 A(0, 0), B(3, 4) 사이의 거리: 5.00 

     

     

    - 주어진 코드는 Account와 Hacker 클래스로 동작한다. 초기 계좌에는 백만원(1,000,000원)이 입력되어있는데, 이를 0원으로 변경하려 한다.

    public class Main {
      public static void main (String[] args) {
        // 1. 계좌 생성
        Account myAccount = new Account(1000000);
        System.out.println(myAccount.toString());
        
        // 2. 계좌 해킹
        Hacker.malcious(myAccount);
        
        // 3. 결과 출력
        System.out.println(myAccount.toString());
      }
    }

    class Account {
      // 필드
      int balance; // 디폴트 접근 제한자 -> 같은 공간 클래스에게 공개! 

      // 생성자
      public Account(int balance) {
        this.balance = balance;
      }

      // 메소드
      public String toString() {
        return String.format("Account { balance: %d }", balance);
      }
    }

    class Hacker {
      // 클래스 메소드 - 계좌의 잔액을 0원으로 변경
      public static void malcious(Account account) {
        /* 1. 파라미터 계좌의 잔액을 0으로 변경하세요. */
        account.balance = 0;
        
      }
    }

     

    - 출력

    Account { balance: 1000000 }
    Account { balance: 0 }

     

    출저: 홍팍 (https://www.youtube.com/@hongpark)

    이 블로그 기록은 개인 공부용 기록입니다.

    'Back end > Java 객체지향' 카테고리의 다른 글

    접근 제한자 (Access Modifer)  (0) 2023.11.21
    Getter & Setter 문제  (0) 2023.11.21
    인스턴스 메소드 < -> 클래스 메소드  (0) 2023.11.21
    4가지 맛 붕어빵 만들기  (0) 2023.11.20
    생성자[마린과 메딕] 문제  (0) 2023.11.19
Designed by Tistory.