Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

코딩 이래요래

객체지향 프로그래밍 본문

JAVA

객체지향 프로그래밍

강범호 2025. 3. 31. 00:58

1. 객체지향 프로그래밍이란?

 - 현실 세계의 모든 사건은 객체와 객체의 상호작용에 의해 일어난다는 세계관을 프로그램을 만들 때 이용하여 새로운 세계를 창조하는 방법론.

 - ** 무생물이나 개념 같은 존재들도 하나의 주체로 본인의 상태를 스스로 제어하고 행동한다

 (의인화 기법 -> 캡슐화)

- 하나의 객체는 너무 많은 일을 수행하는 것이 아닌, 적절한 행동, 책임을 가지고 있어야 한다

 (단일 책임의 원칙)

 

class Dog {

		// 상태(state) 또는 정보(data)
    String name;
    
    // 행동(behavior)
    void bark() {
        System.out.println(name + "가 짖습니다!");
    }
}

 

1-1. 객체지향 사고방식

 - 어떻게 기능을 구현할까 보다는 어떤 객체가 어떤 책임을 가져야 할지를 먼저 고민하여야 함

 - 역할과 책임에 따라 코드 구조가 유지보수와 확장에 유리하게 설계됨

 * 책임이 없는 객체는 필요가 없음

 

객체지향 프로그래밍의 장단점

장점 단점
재사용성 높음(클래스 재활용) 설계 시간이 더 걸릴 수 있음
유지보수 용이 잘못된 설계시 복잡도 증가
대규모 협업에 유리 규모가 작은 프로그램에는 과할 수 있음

 

따라서 객체 지향 프로그래밍이 무조건 정답은 아니지만,
여러 개발자들과 함께 대규모 프로젝트를 협업하고 유지보수 해야 하는 우리 입장에서는
필수 불가결한 요소다.

 

 

2. 객체

2-1. 객체의 할당

 - new 연산자와 함께 생성자를 호출하여 객체를 생성할 때 heap 메모리 공간에 서로 다른 자료형의 데이터가 연속적으로 나열/할당 된 인스턴스 공간

class Student {
    int studentId;  // 4byte
    char gender;    // 2byte
    double height;  // 8byte
    int weight;     // 4byte
    String name;    // 4byte
    short number;   // 2byte
}

 

2-1-1. 객체의 메모리 구조

클래스 내부 필드의 자료형의 크기만큼 나열/할당 된 모습

 

 - 객체의 참조 변수(s)는 스택(Stack)에 저장되며, 이 변수가 힙(Heap)영역에 있는 객체의 시작 주소를 가리킴

 

2-1-2. 필드에 접근하는 과정

 - s.studentId와 같은 필드 접근은 s가 가리키는 힙 메모리 영역 안에서 해당 필드의 위치를 찾아가는 과정임

 - JVM은 객체의 시작 주소를 기준으로 오프셋(offset)을 계산하여 그 위치로 이동함

 

 


해당 게시글은 학습한 내용을 정리하고 복습하며 정리한 글이므로 틀린 부분이 있을 수 있음.

 

'JAVA' 카테고리의 다른 글

자료구조  (0) 2025.04.13
SOLID 원칙  (0) 2025.04.07
객체지향 프로그래밍(OOP)의 4가지  (0) 2025.04.01
JVM의 메모리 구조  (0) 2025.03.31
Java의 클래스와 객체  (0) 2025.03.31