Java 객체 지향 프로그래밍(OOP) 및 메모리 구조 정리

My Pale Blue Dot·2025년 3월 4일
0

JAVA

목록 보기
10/35
post-thumbnail

📅 날짜

2025-03-04

📝 학습 내용

1. 객체(Object)란?

  • 객체는 나를 제외한 모든 것.
  • 존재하는 모든 것은 메모리 공간을 차지하는 사물(object).
  • 절차 지향객체 지향은 별개가 아니라, 객체 지향에서도 절차 지향 문법을 사용함.

2. 객체의 구성 요소

구성 요소설명
속성(Attribute)객체마다 구별되는 데이터 (변수로 저장)
기능(Function)객체가 수행할 수 있는 공통된 동작 (메서드 처리)

3. 객체 지향 프로그래밍(OOP)이란?

  • 현실 세계의 객체 속성(데이터)과 기능(행동) 중 필요한 일부만 추출(추상화) 하여 프로그래밍하는 방식.
  • 문제 해결을 위한 요소 단위로 정의하고 적재할 수 있도록 고안된 문법.

4. 클래스(Class)란?

  • 동일한 종류의 객체에 필요한 메모리 공간을 제공하기 위해 선언된 자료형.
  • 클래스로 객체를 생성하기 전에는 메모리 공간을 차지하지 않음.
  • 클래스를 자료형처럼 사용하여 객체를 정의하면, 선언된 속성과 기능대로 공간이 형성됨.
  • 클래스 = 사용자 정의 자료형

📌 예제 코드

class Car {
    String color;   // 속성 (Attribute)
    int speed;      // 속성 (Attribute)

    void drive() {   // 기능 (Function)
        System.out.println("자동차가 달립니다.");
    }
}

5. 자바의 메모리 구조

자바는 메모리를 크게 3가지 영역으로 나눠 관리함.

메모리 영역설명
1) 스택(Stack) 영역{} 내에서 생성되고 소멸되는 지역 변수 저장 (ex: int, double)
2) 클래스(메서드) 영역공유 메모리 영역 (클래스 정보, static 변수, static 메서드, 생성자, 일반 메서드)
3) 힙(Heap) 영역new 키워드를 통해 생성된 객체가 저장되는 공간

📌 예제 코드

public class MemoryExample {
    public static void main(String[] args) {
        int x = 10; // 스택 영역
        Car myCar = new Car(); // 힙 영역에 저장됨
        myCar.color = "Red";
    }
}
  • x스택(Stack) 영역에 저장됨.
  • new Car()힙(Heap) 영역에 객체를 생성하고, 스택의 myCar 변수는 참조(주소)를 저장.

6. 코드 해석: Scanner sc = new Scanner(System.in);

Scanner sc = new Scanner(System.in);
  1. new
    • 힙(Heap) 영역에 Scanner 객체를 저장함.
  2. Scanner()
    • Scanner 객체에 필요한 초기값을 부여하는 생성자 메서드.
  3. Scanner sc
    • Scanner 클래스 자료형으로 정의된 참조 변수.
  4. 메모리 할당 과정
    • 힙(Heap) 메모리 영역에 Scanner 객체를 생성함.
    • 스택(Stack) 영역의 sc 참조변수에는 Scanner 객체의 시작 메모리 주소가 저장됨.

🔗 참고 자료

💡 느낀 점

  • 객체 지향 프로그래밍은 현실 세계의 개념을 코드로 표현하는 방식임을 이해했다.
  • 자바의 메모리 구조(스택, 힙, 클래스 영역) 를 알게 되었다.
  • Scanner sc = new Scanner(System.in); 문장이 어떻게 메모리에 할당되는지 명확히 이해할 수 있었다.

📌 요약

  • 객체는 속성(변수)과 기능(메서드)으로 구성됨.
  • 객체 지향 프로그래밍(OOP) 은 필요한 정보만 추출하여 프로그래밍하는 방식.
  • 클래스(Class) 는 객체를 생성하기 위한 템플릿(자료형).
  • 자바의 메모리는 스택(Stack), 힙(Heap), 클래스(메서드) 영역으로 구분됨.
  • Scanner sc = new Scanner(System.in); 의 메모리 할당 과정 숙지.

profile
Here, My Pale Blue.🌏

0개의 댓글