Programming Lang. Java

hsy·2025년 6월 18일

객체지향 프로그래밍 (Object Oriented Programming, OOP)

정의: 객체들간의 상호작용을 기반으로 한 프로그램 개발 방법론

객체의 상호작용: 메소드 호출을 통해 매개값과 리턴값을 주고 받음으로써 기능
객체: 데이터(필드)와 절차(메소드)의 묶음
객체 모델링 - 객체 관계 :
	- 집합관계
    - 사용관계
    - 상속관계

의의: 규모가 큰 소프트웨어를 개발할 때 효율적임

- 코드 재사용 용이
- 디버깅할 때 수월 // 객체 무결성 
- 절차식보다 느리고 설계가 어려움

특징:

- 추상화
- 캡슐화
- 상속성
- 다형성

Java : 객체지향 언어 중 하나

자바 실행환경 :

자바 가상기계(JVM, Java Virtual Machine)

- 바이트 코드를 해석하여 실행하여주는 해석기 
- 자바 소스(*.java)는, JVM에서 실행될 수 있는 바이트 코드로 번역되며(*.class), 
  번역된 바이트 코드는 해석기(JVM)가 있는 어떠한 기종의 컴퓨터 환경에서도 실행 가능

자바 API

- 자바 프로그램에서 자주 사용되는 자바 클래스 모음(자바 클래스 라이브러리)
- 그래픽,네트워킹,보안,데이터베이스 접근 등의 기능 지원
자바 표준 모듈: JDK가 제공하는 표준 라이브러리. Java 9부터 모듈화되었음
Java.base는 모든 모듈이 의존하는 기본 모듈
Java.se는 JDK가 제공하는 모든 모듈을 제공하는 집합 모듈

API :
- 라이브러리의 사용법을 외부에서 사용할 수 있게 문서화한 인터페이스

라이브러리: .jar
- 개발 시 활용할 수 있는 구현 코드의 집합
- 모듈, 인터페이스의 바이트코드 파일(*.class)들이 압축되어 있음

모듈:
- 기능 단위로 독립된 코드의 집합, 독립적으로 컴파일 가능
- 모듈은 패키지, 클래스, 인터페이스 등 여러 구성 요소를 하나로 묶은 파일 단위 또는 논리적 단위
- 자바 9 이후의 모듈 시스템에서는 module-info.java 파일을 통해 어떤 모듈이 어떤 다른 모듈에 의존하는지 명시적으로 기술

패키지 : java.util java.lang java.io

- 관련된 코드(클래스, 함수, 모듈 등)를 "논리"적으로 묶어 관리하는 네임스페이스 단위
- 클래스를 컴파일하는 과정에서 자동으로 생성. 

ex.

.
└── com
    ├── mycompany
    │   └── Car.class #{package com.mycompany}
    └── yourcompany
        └── Car.class #{package com.yourcompany}

JVM 동작:

.
├── bin
└── src
    └── package
        └── Hello.java

자바 소스(.java)는, JVM에서 실행될 수 있는 바이트 코드로 번역되며(.class)

ex. javac -d bin src/packacge/Hello.java

번역된 바이트 코드는 해석기(JVM)가 있는 어떠한 기종의 컴퓨터 환경에서도 실행 가능

ex. java -cp bin package.Hello

자바는 클래스 로더를 이용해서 클래스를 메소드 영역에 저장하고 사용.

Class : JVM 최소 실행 단위

구성:

- 필드: 객체의 데이터가 저장되는 곳

필드 타입: 처리방식, 기본 타입. 참조 타입. 
접근 제한자(static): 메모리 로딩 방식 차이
	- 정적 멤버, 인스턴스 없이도 실행. 인스턴스 필드나 인스턴스 메소드, this 사용 불가. / 메소드영역
    - 인스턴스 멤버 / 힙영역
상수 선언: final 타입필드 [=초기값]
	- 필드 선언 시 초기값 대입, 클래스 귀속 / 메소드영역
    - 생성자에서 초기값 대입, 인스턴스 귀속 / 힙영역

- 생성자: 객체 생성 시 초기화 역할 담당

소멸자 명시 없음. Java는 GC 이용. 메모리 할당 정보가 공개되지 않음
매개변수 차이로 오버로딩

- 메소드: 객체의 동작으로 호출 시 실행하는 블록

리턴타입: return 문은 메소드 실행 종료, 메소드 선언에 리턴 타입이 있을 경우 해당 값 반환.
매개변수: 가변길이 매개변수 ... values

접근 제한자:

접근제한자제한대상제한범위
public클래스, 필드, 생성자, 메서드모든 클래스, 모든 패키지에서 접근 가능
protected필드, 생성자, 메서드같은 패키지 또는 다른 패키지의 하위(자식) 클래스에서 접근 가능
default클래스, 필드, 생성자, 메서드같은 패키지 내에서만 접근 가능
private필드, 생성자, 메서드같은 클래스 내에서만 접근 가능

references:

  • 이것이 자바다 3판 1권 - 한빛미디어, 신용권, 임경균
  • wikipedia - Java virtual machine
  • 정보통신기술용어해설
profile
hi

0개의 댓글