study/JAVA 🦊

JAVA - 7

서나쓰 2021. 1. 7. 15:16
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

'study > JAVA 🦊' 카테고리의 다른 글

JAVA - 9  (0) 2021.01.07
JAVA - 8  (0) 2021.01.07
JAVA - 6  (0) 2020.12.28
JAVA - 5  (0) 2020.12.28
JAVA - 4  (0) 2020.12.27