ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA9] 객체지향 모델링 심화
    비전공자 공부일기/:: JAVA 2020. 3. 11. 16:45

    한국기술교육대학교 온라인평생교육원
    모던웹개발을 위한 JAVA9 프로그래밍
    8회차 수업

     

     

    학습목표

    1) 정적 변수와 정적 메소드 - static 변수와 static 메소드

    2) 패키지와 임포트 - package의 개념과 import의 사용법

     

    사전지식

    - 정적변수&정적메소드: 클래스 레벨에서 바로 사용할 수 있는 변수와 메소드

    - 패키지: 자바에서 클래스를 계층적으로 저장하고 관리하기 위해 사용하는 개념 / .(점)을 구분자로 계층구성

     

     

    ** 강사님 설명

     

    static

    - 클래스에 선언된 메소드나 멤버변수는 반드시 객체화시켜야 사용 가능

    그런데 객체를 만들지 않고(인스턴스화 시키지 않고) 메소드를 사용하고 싶을 때 static을 사용한다.

    >> 단순 반복 처리작업을 해야 할 경우 종종 사용

     

     

    static 상수

    - static 변수는 주로 상수로 많이 사용됨

    (** 문법적으로 상수는 대문자로 선언하며, 앞에 final 이라는 키워드를 붙여준다)

     

     

    static 초기화 블록

    - 클래스 내부에 선언됨(아래 참고)

    public class SampleDAOClass {
    
    	static {    
        	Class.forName("oracle.jdbc.driver.OracleDriver");
            }
    
    }

    - 생성자는 객체를 생성할 때 수행

    - static 초기화 블록은 클래스가 최초로 메모리에 로딩될 때 수행

    그 최초로 로딩하는 순간에 무언가 수행하라는 명령을 위해 static 초기화 블록이 사용된다.

     

     

    static 메소드 - 팩토리 메소드

    - static 메소드는 흔히 팩토리 메소드를 만드는 데 사용된

    - 클래스의 새로운 인스턴스를 반환하는 static 메소드

    - 불필요하게 새 객체를 생성하는 대신 공유 객체를 반환하는 것도 가능

     

    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

    >> getCurrencyInstance() 메소드가 팩토리 메소드에 해당

    new 키워드 말고 객체를 생성하는 방법이다.

     

     

    패키지 package

    - 자바에서 말하는 패키지란, 연관된 클래스를 한 패키지에 넣어두는 것을 말한다.

    - 작업을 조직화하고, 다른 사람이 제공한 코드와 라이브러리를 분리

    - java.lang, java.util, java.math 등과 같은 표준 자바 라이브러리도 모두 패키지로 구분

     

    패키지명을 정의하는 방법

    - 패키지 이름은 java.util.regex처럼 점(.)으로 구분된 식별자 목록이다

    - 패키지 이름에서 유일성을 보장하기 위해 인터넷 도메인을 역순으로 사용한다.

    - 클래스를 패키지 안에 넣으려면 소스 파일의 첫문장에 package문을 추가한다.

     

     

    클래스 패스 class path

     

    Jar 파일

    - 클래스 파일을 포함하는 아카이브 파일 - zip파일과 구조가 같음

    - 클래스 파일을 파일시스템에 바로 저장하지 않음

    - 라이브러리 뿐만 아니라 프로그램을 묶는데도 사용됨

     

    Class path

    - 해당 파일 위치를 컴파일러와 JVM에게 알려줌

    - 프로젝트에서 라이브러리 JAR 파일을 사용할 때 클래스 패스 지정

     

    import 문을 사용하면 전체 이름 없이도 클래스 사용 가능

    - 해당 파일 위치를 컴파일러와 JVM에게 알려줌문을 사용하면,

    풀네임인 java.util.Random를 명시하지 않아도 Random만 써서 사용할 수 있음

    - 와일드카드 사용 가능 - java.util.*;

     

    Static import 정적 임포트

    import static java.lang.Math.*;

    sqrt(pow(x,2) + pow(y,2));

    // 즉 Math.sqrt와 Math.pow를 의미

     

     

     

    클래스 만들어보기

     

    (1) 데이터 구조를 정의하는 모델 클래스

     

    디렉토리에서

     

    src --- 루트패키지

    패키지명

     

     

    (2) static method를 포함하는 유틸리티 클래스

     

     

     

    정리

     static에 대한 장점은 크게 두 가지이다.
    1) static을 쓴 변수나 메소드는 객체생성 없이 모든 객체가 아무런 제약없이 공유할 수 있다.
    2) static을 쓴 변수는 값을 공유하므로, 연속적으로 그 값의 흐름을 이어갈 수 있다.

    다시 말해서 일반변수는 객체 생성시마다 그 값이 초기화되지만, 정적변수는 객체생성을 하지 않으므로 다른 객체에서 계속적으로 이어서 그 값을 변화시킬 수 있다.

    댓글

coding wanee