코딩 이래요래
객체지향 프로그래밍 본문
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 |