기본 윈도우 창만들기 (Java 내장 클래스Frame 사용)_ has a(포함) / is a(상속)

하히호호·2024년 4월 12일
0

java가 제공해주는 클래스에는 Frame이라는 클래스가 존재한다.
Frame의 클래스에는 다양한 메서드가 있는데
우리가 할 일은 창을 띄우는 것이다.

클래스간의 관계

다른 클래스를 가져오는 방법은 크게 2가지가 있는데.
하나는 포함 관계이고 다른 방법은 상속 관계이다.

Frame은 atw클래스에 위치해있다.

문서 찾기

Frame관련 문서 공식문서(api)를 찾아보자.
공식적인 문서를 찾는게 가장 먼저되어야한다.

  1. 구글 'java (버전) api'검색한다.
    java 17을 사용하고 있기에 'java 17 api' 검색하자.

    Oracle에서 공식적으로 제공 하는 문서들이 제공한다.

API는 java에서 이미 만들어 놓은 다양한 클래스, 메서드, 인터페이스 등의 집합입니다. 개발자들이 프로그램을 개발에 도움을 주는 기능들을 모아놓았습니다.
또 어떻게 사용해야하는지 방법이나 관련 설명이 쭉 서술되어 있습니다.

  1. Frame클래스를 찾아 들어갑니다. 위에서 말했듯 atw클래스 하위에 있음을 알고 있습니다.



위의 사진과 같이 java.desktop > java.awt 를 찾을 수 있습니다. java.awt안에 들어가면 Frame을 찾을 수 있습니다.

  1. 해당 설명이 적혀있다.

    자신의 코드에 사용할 클래스를 찾아 import해서 찾아야한다.
    우리는 Constructor을 보면 Frame(String title)을 사용할 것이기에 찾아서 참고하며 사용하면 된다.

포함(has a)

포함 관계는 약한 결합이다.
우선 포함관계로 윈도우 창을 띄어보자.
클래스의 멤버로 클래스를 참조 변수를 선언하는 것이다.

package pack2;

import java.awt.Frame;

//java가 지원하는 Frame 클래스로 창띄우기 : 포함관계
public class MyFrame {
	private String title = "포함관계";
	private Frame frame;
	
	public MyFrame() {
		frame = new Frame(title); //객체를 만들었다.
	}
	
	private void display() {
		frame.setSize(500, 300);//윈도우 창 크기
		frame.setLocation(200, 150); //왼쪽 상단에서부터 윈도우창 위치
		frame.setVisible(true);
		
	}
	
	
	public static void main(String[] args) {
		MyFrame frame = new MyFrame();
		frame1.display();

	}

}

실행하면 아래와 같이 윈도우 창이뜬다. 물론 다른 코드 작업을 안했기에 내용은 없다.
윈도우창은 사진과 같이 메뉴창도 나오고 최대화 혹은 최소화도 가능하다.
하지만, 닫기는 불가하다. 개발자의 취향대로 작동되도록 코드에 포함시키지 않은 것같다.

상속(is a)

상속은 extends로 부모 클래스를 가져오는 것이다.
(private를 제외한)부모의 메서드나 변수를 사용할 수 있다.

  • 중요한 특징
    - 상속은 단일 상속만 허용한다.
    • 2개의 부모 클래스(상위 클래스)를 받을 수 없다.
package pack3;

import java.awt.Frame;

public class MyFrame2 extends Frame{

	public MyFrame2() {
		super("상속 사용");
	}
	
	void display() {
		setSize(500,300); //현재 클래스setSize를 정의하지 않았으면 super키워드는 필요없다.
		//super.setSize(500,300);
		setLocation(200,150);
		setVisible(true);
	}
	
	public static void main(String[] args) {
//      [1번 방법]
//		MyFrame2 frame = new MyFrame2();
//		frame.display();
//		[2번 방법]
		new MyFrame2().display();
		
	}

}

상속은 포함관계와 비교하면 강한 결합을 가진다.

profile
읽히는 코드를 짜고싶습니다.

0개의 댓글