"패키지 제품"의 두 판 사이의 차이
잔글 (→같이 보기) |
|||
(사용자 4명의 중간 판 14개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''패키지'''(package) | + | '''패키지 제품'''(package product)이란 불특정 다수를 상대로 개발한 [[소프트웨어]] 제품을 말한다. 간략히 '''패키지'''(package)라고 한다. [[솔루션]](solution)은 고객 요구에 맞게 일부 [[커스터마이징]]이 가능하지만, 패키지 소프트웨어의 경우 기성 제품을 그대로 사용해야 하며, 일체의 수정, 변형, 교체가 불가능하다. |
+ | |||
+ | = 개요 = | ||
+ | [[파일:패키지.png|500픽셀|썸네일|'''패키지''']] | ||
+ | |||
+ | 패키지(package)란 서로 관련이 있는 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 패키지를 사용함으로써 클래스들이 필요할 때만 사용될 수 있도록 하고, 클래스를 패키지 이름과 함께 계층적인 형태로 사용함으로써 다른 그룹에 속한 클래스와 발생할 수 있는 클래스 이름간의 충돌을 막아줌으로 클래스의 관리를 편하게 해준다.<ref> 프로그래머스, 〈[https://programmers.co.kr/learn/courses/5/lessons/172 [자바입문]패키지]〉, 2018.12.28 </ref> | ||
+ | |||
+ | 패키지를 통해 편리하게 프로젝트를 관리할 수 있고 내 코드들을 다른 라이브러리로부터, 또 다른 라이브러리들끼리 서로 구분가능하다. 기본적인 자바 라이브러리 또한 java.lang, java.util. java.net java.awt와 같은 다양한 패키지들를 통해 분류된다. 자바 라이브러리는 우리가 일반 폴더 구조에서 볼수있는 계층적 패키지구조를 가지고 있다. 상위 패키지에 하위패키지가 종속되는 형식이다. 그래서 모든 자바 패키지들은 가장 상위 패키지인 java와 javax 패키지에 종속되어 있다. | ||
+ | |||
+ | 패키지를 사용하는 가장 큰 이유는 클래스명의 고유성을 보장하기 위해서이다. 만약 다른 두 프로그래머가 서로 다른 목적을 가진 클래스를 생성했는데 이름 같다 가정할 때, 서로 다른 패키지를 사용함으로써 충돌을 피할수 있다. 그리고 패키지 이름의 고유성을 보장하기 위해 최상위 패키지명에 "com.muckycode"와 같은 방식으로 인터넷 도메인 주소를 거꾸로 사용하기도 한다. 인터넷 도메인은 이미 고유성을 가지고 있기때문에 다른 충돌을 걱정할 필요가 없기 때문이다. <ref> 코드보관함, 〈[https://muckycode.blogspot.com/2017/07/java-package.html [java]패키지의 개념]〉, 2017.07.04 </ref> | ||
+ | |||
+ | 우측 사진은 패키지를 활용함으로 클래스 파일을 각각의 디렉토리 구조로 별도로 저장한사진이다. <ref> 스터디메이크, 〈[https://studymake.tistory.com/428 자바의 패키지 이해]〉, 2015.07.13 </ref> | ||
+ | |||
+ | == 특징 == | ||
+ | * 네임 스페이스 : 네임스페이스란 이름을 구분 할 수 있게 해주는 공간을 의미한다. 위의 파일의 예에서는 디렉토리가 바로 그 공간이고, 자바에서는 패키지(Package)가 바로 그 공간이다. 이러한 특성 덕분에 패키지는 이름 중복으로 인한 문제를 방지 할 수 있다. 패키지 안의 클래스 이름은 고유해야 한다. 다시 말해 패키지 안에는 같은 이름의 두개의 클래스를 만들 수 없다. | ||
+ | <ref> 삐멜 소프트웨어 엔지니어, 〈[https://imasoftwareengineer.tistory.com/71 자바패키지]〉, 2019.04.01 </ref> | ||
+ | |||
+ | * 서브패키지 : 도트(.)를 이용하여 하위 패키지를 계속해서 만들어 나갈 수 있다.여기서 패키지는 디렉토리의 구조 그대로 따라간다는 것을 확인할 수 있다. | ||
+ | package example.test.people | ||
+ | public class CLASS | ||
+ | |||
+ | import example.test.people | ||
+ | import example.test.people.CLASS.class | ||
+ | |||
+ | == 활용 == | ||
+ | 패키지는 여러 클래스를 묶어놓는 개념이기 때문에, 계층적으로 관리할수 있으며 동일 디렉토리에 있는 [[클래스]]는 특별한 문법 구문없이도 다른 [[클래스]] 끼리 사용이가능하다 다른 디렉토리에 있는 것을 사용하려면 import 문장 문법에 의해 사용한다. 또한 패키지는 숫자, &와_을 제외한 특수문자가 금지되어 있고, 모든 글자를 소문자로 작성하여야 하며 패키지는 [[클래스]]들을 계층적으로 관리하기 위해 존재하고 package라는 키워드와 함께 지정된다. | ||
+ | |||
+ | == 선언 == | ||
+ | 물리적으로 하나의 디렉토리 역할을 하고 사용자가 하위 요소들을 효율적으로 관리하기 위해 패키지를 선언한다. | ||
+ | |||
+ | === 선언 방법 === | ||
+ | 패키지 선언 | ||
+ | package java.awt.event; | ||
+ | |||
+ | 자바 소스파일 안의 패키지 사용방법 | ||
+ | import java.awt.event.*; | ||
+ | import java.awt.event.ActionEvent; | ||
+ | |||
+ | ActionEvent 참조하는법 | ||
+ | ActionEvent myEvent = new ActionEvent(); | ||
+ | |||
+ | Import 선언없이 직접 사용하는 방법 | ||
+ | java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent(); | ||
+ | |||
+ | == 종류 == | ||
+ | 자바는 풍부한 클래스 라이브러리 패키지들을 갖고 있다. | ||
+ | |||
+ | * Java.Applet : 자바 [[바이트코드]] 형태로 배포되는 애플릿이다. [[자바 가상 머신]]이 내장된 웹 브라우저나 썬 마이크로시스템즈에서 배포하는 AppletViewer로 실행할 수 있다. | ||
+ | * Java.Awt(Abstract Window Toolkit) :자바 프로그램이 수행되는 어떤 운영체제에서든 수행가능,그래픽을 이용하여 사용자와 프로그램간의 상호작용이 가능하다.([[GUI]]) | ||
+ | * Java.Beans : 자바빈즈란 빌더 형식의 개발도구에서 가시적으로 조작이 가능하고 또한 재사용이 가능한 소프트웨어 컴포넌트이다. | ||
+ | * Java.Io : 입출력 스트림을 포함하고 있다. | ||
+ | * Java.Lang : 자바 프로그래밍에 필요한 기본 클래스를 제공한다. [[Object]] 클래스, String 클래스, Integer 클래스, [[System]] 클래스 등이 있다. | ||
+ | * 그외에도 Java.Util, Java.Time, Java.Text 등 여러가지의 종류가 있다. | ||
+ | |||
+ | {{각주}} | ||
+ | |||
+ | == 참고자료 == | ||
+ | * 프로그래머스, 〈[https://programmers.co.kr/learn/courses/5/lessons/172 [자바입문]패키지]〉, 《개인블로그》, 2018-12-28 | ||
+ | * 코드 보관함, 〈[https://muckycode.blogspot.com/2017/07/java-package.html [java]패키지의 개념]〉, 《개인블로그》, 2017-07-04 | ||
+ | * 스터디메이크, 〈[https://studymake.tistory.com/428 자바의 패키지 이해]〉 《개인블로그》, 2015-07-13 | ||
+ | * 삐멜 소프트웨어 엔지니어, 〈[https://imasoftwareengineer.tistory.com/71 자바패키지]〉, 《개인블로그》2019-04-01 | ||
+ | * 한아, 〈[https://blog.naver.com/hann726/221661757832 비가비에]〉, 《개인블로그》, 2019-09-28 | ||
== 같이 보기 == | == 같이 보기 == | ||
+ | * [[자바]] | ||
+ | * [[클래스]] | ||
+ | * [[객체지향 프로그래밍]] | ||
* [[소프트웨어]] | * [[소프트웨어]] | ||
* [[솔루션]] | * [[솔루션]] | ||
+ | * [[커스터마이징]] | ||
+ | * [[패키지]] | ||
+ | * [[패키지 소프트웨어]] | ||
− | + | {{솔루션|검토 필요}} |
2021년 8월 3일 (화) 21:47 기준 최신판
패키지 제품(package product)이란 불특정 다수를 상대로 개발한 소프트웨어 제품을 말한다. 간략히 패키지(package)라고 한다. 솔루션(solution)은 고객 요구에 맞게 일부 커스터마이징이 가능하지만, 패키지 소프트웨어의 경우 기성 제품을 그대로 사용해야 하며, 일체의 수정, 변형, 교체가 불가능하다.
개요[편집]
패키지(package)란 서로 관련이 있는 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 패키지를 사용함으로써 클래스들이 필요할 때만 사용될 수 있도록 하고, 클래스를 패키지 이름과 함께 계층적인 형태로 사용함으로써 다른 그룹에 속한 클래스와 발생할 수 있는 클래스 이름간의 충돌을 막아줌으로 클래스의 관리를 편하게 해준다.[1]
패키지를 통해 편리하게 프로젝트를 관리할 수 있고 내 코드들을 다른 라이브러리로부터, 또 다른 라이브러리들끼리 서로 구분가능하다. 기본적인 자바 라이브러리 또한 java.lang, java.util. java.net java.awt와 같은 다양한 패키지들를 통해 분류된다. 자바 라이브러리는 우리가 일반 폴더 구조에서 볼수있는 계층적 패키지구조를 가지고 있다. 상위 패키지에 하위패키지가 종속되는 형식이다. 그래서 모든 자바 패키지들은 가장 상위 패키지인 java와 javax 패키지에 종속되어 있다.
패키지를 사용하는 가장 큰 이유는 클래스명의 고유성을 보장하기 위해서이다. 만약 다른 두 프로그래머가 서로 다른 목적을 가진 클래스를 생성했는데 이름 같다 가정할 때, 서로 다른 패키지를 사용함으로써 충돌을 피할수 있다. 그리고 패키지 이름의 고유성을 보장하기 위해 최상위 패키지명에 "com.muckycode"와 같은 방식으로 인터넷 도메인 주소를 거꾸로 사용하기도 한다. 인터넷 도메인은 이미 고유성을 가지고 있기때문에 다른 충돌을 걱정할 필요가 없기 때문이다. [2]
우측 사진은 패키지를 활용함으로 클래스 파일을 각각의 디렉토리 구조로 별도로 저장한사진이다. [3]
특징[편집]
- 네임 스페이스 : 네임스페이스란 이름을 구분 할 수 있게 해주는 공간을 의미한다. 위의 파일의 예에서는 디렉토리가 바로 그 공간이고, 자바에서는 패키지(Package)가 바로 그 공간이다. 이러한 특성 덕분에 패키지는 이름 중복으로 인한 문제를 방지 할 수 있다. 패키지 안의 클래스 이름은 고유해야 한다. 다시 말해 패키지 안에는 같은 이름의 두개의 클래스를 만들 수 없다.
- 서브패키지 : 도트(.)를 이용하여 하위 패키지를 계속해서 만들어 나갈 수 있다.여기서 패키지는 디렉토리의 구조 그대로 따라간다는 것을 확인할 수 있다.
package example.test.people public class CLASS
import example.test.people import example.test.people.CLASS.class
활용[편집]
패키지는 여러 클래스를 묶어놓는 개념이기 때문에, 계층적으로 관리할수 있으며 동일 디렉토리에 있는 클래스는 특별한 문법 구문없이도 다른 클래스 끼리 사용이가능하다 다른 디렉토리에 있는 것을 사용하려면 import 문장 문법에 의해 사용한다. 또한 패키지는 숫자, &와_을 제외한 특수문자가 금지되어 있고, 모든 글자를 소문자로 작성하여야 하며 패키지는 클래스들을 계층적으로 관리하기 위해 존재하고 package라는 키워드와 함께 지정된다.
선언[편집]
물리적으로 하나의 디렉토리 역할을 하고 사용자가 하위 요소들을 효율적으로 관리하기 위해 패키지를 선언한다.
선언 방법[편집]
패키지 선언
package java.awt.event;
자바 소스파일 안의 패키지 사용방법
import java.awt.event.*; import java.awt.event.ActionEvent;
ActionEvent 참조하는법
ActionEvent myEvent = new ActionEvent();
Import 선언없이 직접 사용하는 방법
java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();
종류[편집]
자바는 풍부한 클래스 라이브러리 패키지들을 갖고 있다.
- Java.Applet : 자바 바이트코드 형태로 배포되는 애플릿이다. 자바 가상 머신이 내장된 웹 브라우저나 썬 마이크로시스템즈에서 배포하는 AppletViewer로 실행할 수 있다.
- Java.Awt(Abstract Window Toolkit) :자바 프로그램이 수행되는 어떤 운영체제에서든 수행가능,그래픽을 이용하여 사용자와 프로그램간의 상호작용이 가능하다.(GUI)
- Java.Beans : 자바빈즈란 빌더 형식의 개발도구에서 가시적으로 조작이 가능하고 또한 재사용이 가능한 소프트웨어 컴포넌트이다.
- Java.Io : 입출력 스트림을 포함하고 있다.
- Java.Lang : 자바 프로그래밍에 필요한 기본 클래스를 제공한다. Object 클래스, String 클래스, Integer 클래스, System 클래스 등이 있다.
- 그외에도 Java.Util, Java.Time, Java.Text 등 여러가지의 종류가 있다.
각주[편집]
참고자료[편집]
- 프로그래머스, 〈[자바입문패키지]〉, 《개인블로그》, 2018-12-28
- 코드 보관함, 〈[java패키지의 개념]〉, 《개인블로그》, 2017-07-04
- 스터디메이크, 〈자바의 패키지 이해〉 《개인블로그》, 2015-07-13
- 삐멜 소프트웨어 엔지니어, 〈자바패키지〉, 《개인블로그》2019-04-01
- 한아, 〈비가비에〉, 《개인블로그》, 2019-09-28
같이 보기[편집]