728x90
싱글톤
싱글톤이란?
- 프로그램 내에 여러 곳에서 반복적으로 사용되어야 하는 객체에 대해 전역 범위를 갖도록 객체 생성
- 여러 곳에서 공유하기 위한 작성 패턴
싱글톤의 장점
- 공유 기능을 하나만 생성하여 여러 곳에서 재사용함으로써 메모리를 효율적으로 사용
- 객체를 일일히 생성해야 하는 번거로움을 피할 수 있다
싱글톤의 특징
- static을 선언되어 고정영역에 생성되기 때문에 필요할 때마다 메모리에 할당
- 객체가 할당되지 않은 경우에만 할당하도록 하여 중복 할당 방지
- 메모리에서 삭제하는 기능이 있다
- 생성자를 private 형태로 정의하여 외부에서 접근 금지
- 하나의 객체만 참조하기 때문에 메모리 사용 절약 가능
싱글톤 객체 사용하기
- getInstance() 메서드를 사용하여 리턴 받는 형식으로 사용
싱글톤 형태
//싱글톤 객체 생성 위한 준비 시작
//객체가 여러개 생성되는 걸 막기 위해 참조 변수를 미리 선언
private static Calc current;
public static Calc getInstance() {
if(current == null) {
current = new Calc();
}
return current;
}
public static void freeInstance() {
//객체에 null이 대입하면 메모리 삭제
current = null;
}
//기본 생성자를 private로 은닉하게 되면 new를 통한 객체 생성 금지
private Calc() {
//생성자 super();
}
//싱글톤 객체 생성을 위한 준비 끝
private static Calc current;
public static Calc getInstance() {
if ( current == null ) {
current = new Calc();
} return current;
}
public static void freeInstance() {
current = null;
}
private Calc() { super(); }
Inner Class
- 일반 Inner Class
- 클래스 안에 또 다른 클래스 명시
- 하나의 클래스 내에 Inner 클래스가 여러 개 존재할 수 있다
- static Inner Class
- static 키워드를 적용하여 Inner 클래스 정의
Inner Class 객체 만들기
- 일반 Inner Class
- 상위 클래스를 통해서만 Inner Class 접근 가능
People p = new People(); People.Man man = p.new Man();
- static Inner Class
- 상위 클래스 객체 없이 클래스 이름으로 접근 가능
Peopel.Man p = new People.Man();
- Inner Class는 상위 클래스가 가지고 있는 모든 자원을 자신의 것처럼 사용할 수 있다.
Anonymous Class(익명, 무명 클래스)
- 일시적으로(일회성으로) 사용할 수 있으면서 인터페이스의 규격을 준수하는 클래스
public class Foo {
public void myFunction() {
MyInterface my = new MyInterface() {} ;
}
}
- 인터페이스를 상속받는 별도의 클래스가 없는 상태이므로, 할당은 인터페이스 형식으로 이루어진다.
- 하지만, 인터페이스는 반드시 어딘가에 상속이 되어야만 하므로, 이름없는 클래스를 표현하기 위해 할당과 함께 클래스 정의를 위한 블록 생성. {} ;
- 인터페이스를 상속받은 형태이기 때문에, 인터페이스에 대한 메서드 재정의(오버라이드)가 이루어져야한다.
- 바로 기능이 사용 가능하다.
- 상위 메서드의 지역 변수는 사용 불가.
패키지/클래스패스/라이브러리
패키지란?
- 클래스 묶음 단위
- 클래스를 용도별이나, 기능별로 그룹화한 것
클래스패스란?
- 컴파일이 완료된 *.class 파일들이 위치한 경로
- ClassPath를 컴파일시 옵션으로 설정하면 크 안에 모든 클래스들을 참조할 수 있다.
- 즉, 객체 생성할 때 대상 클래스의 소스 없이도 결과물만 참조하여 객체 생성 및 메서드 호출이 가능하다.
- 클래스 패스는 프로젝트 안에 폴더(A)를 생성하고, 복사할 프로젝트의 bin 프로젝트에 있는 폴더(B)를 A 폴더에 복사나 끌어오기 한다.
- 프로젝트-Properties에 들어가서 Java Build Path에서 Libraries 에서 Add Class Folder를 클릭
- A 폴더를 선택하여 OK
라이브러리란?
- 한개 이상의 패키지들을 배포하기 용이하도록 압축한 형태
- 재료로 사용될 프로젝트를 Export 한다
- JAR file 형태로 내보내기하고 이름 설정시 확장자가 .jar가 되게 한다
- 라이브러리를 받아올 프로젝트에 폴더를 생성하고 workspace에서 생성된 jar 파일을 그 폴더에 끌어온다
- 프로젝트-Properties에 들어가서 Java Build Path에서 Libraries 에서 Add JARs를 클릭
- 끌어온 Jar 파일을 선택 후 OK
API란?
- 프로그래밍 인터페이스로 쓰일 수 있는 또 다른 개념
- 개발에 용이하도록 기능을 모아놓은 집합체
- API는 보통 값 과 함수들로 나뉜다.
- 오픈 API는 값들의 집합이다.
Wrapper Class
Wrapper의 의
- 어떤 상황(컬렉션)에서 기본 데이터 타입의 변수를 객체 형태로 사양해야 하는 경우가 있는데, 이때 기본형 타입을 객체로 포장하기 위해 사용
- 기본 자료형과 Wrapper 클래스 간에서는 서로 암묵적 형변환이 가능하다
- 문자열 데이터를 실제 기본 자료형으로 변환시키는 기능
❗ 이 작업을 파싱한다고 한다.
MATH Class
- 계산을 하는데 도움이 되는 기본적 수학 함수들 제공
- 이 클래스는 java.lang 패키지에 정의되어 있다
가장 많이 사용되는 함수 : random()
이 내용은 itpaper 주영아 강사님의 교재를 발췌했습니다.
728x90