Java. 구성(Composition) 관련 문제

kimkim·2024년 9월 22일

Java. 공부내용정리

목록 보기
26/38

다음을 실행되게 해주세요.

// 출력 : 아래와 같이 출력되게 해주세요.

class Main {
  public static void main(String[] args) {
    Person p1 = new Person();
    p1.age = 20;
    p1.arm = new Arm();

    System.out.println(p1.arm.length + "cm");
    // 출력 : 100cm
  }
}

문제 풀때 알아야 할 점

  1. 하다가 어렵다면 위에서 부터 하나씩 풀면서
  2. 푸는 줄 아래부분들을 주석으로 만들고 하나씩 해결해나가는 것이 좋다.

문제 풀이

// 출력 : 아래와 같이 출력되게 해주세요.

class Main {
  public static void main(String[] args) {
    Person p1 = new Person();
    // 1. Person 클래스 만들고 객체 생성
    
    p1.age = 20;
    // 2. p1에 담긴 Person 객체의 변수에 값 넣기
	// >> 클래스에 변수 만들기    
    
    p1.arm = new Arm();
    // 3. p1에 담긴 Person 객체의 안에 있는 Arm()객체 생성
	// >> Arm()클래스 만들기
    
    System.out.println(p1.arm.length + "cm");
    // 출력 : 100cm
    
    // p1.arm.length의미 
    // .은 소유의 의미를 가지고 있다.(왼쪽이 오른쪽을 가지고 있음)
    // length는 arm이 가지고 있고, arm은 p1을 가지고 있다.
    // length는 arm이 가지고 있고 메서드가 아니기 때문에 
    // 변수선언이나 생성자를 이용하여 내용을 넣을 수 있다.
    // 4. 변수선언이나 생성자를 이용하여 length 넣기
    
  }
}

// 1. Person 클래스 만들기
class Person {
	// 2. 클래스에 age 변수 만들기    
	int age = 20;
    // 3. Arm()클래스 선언 만들기
    Arm arm;
}

// 3. Arm()클래스 만들기
class Arm {
	// 4. 변수선언이나 생성자를 이용하여 length 넣기
	int length;
    
    public Arm (){
    	length = 100;
    }
}

문제를 풀고 알게 된점

  1. 객체 안에 객체를 넣어 타고 타고 들어갈 수 있다.
  2. 객체 안에 객체를 넣어 중복을 해결 할 수 있다.
  3. .은 소유의 의미로 왼쪽이 오른쪽을 가지고 있음을 알수있었다.
  4. 본문제는 변수선언을 이용하여 문제를 해결하였는데 생성자도 이용할 수 있는 다른 풀이를 알 수 있었다.

0개의 댓글