객체지향언어
객체지향언어는 현실 세계의 모든 것을 독립적인 객체(Object)로 보고, 사건들은 객체 간의 상호작용이라는 개념에서 출발한 프로그래밍 언어입니다. 자바(Java)에서는 클래스(Class)라는 설계도에 정의된 내용을 바탕으로, new 연산자를 통해 메모리(Heap 영역)에 생성된 것을 객체라고 합니다.
클래스(Class): 객체의 속성과 기능을 정의한 설계도 또는 빵 틀에 비유할 수 있습니다.
객체(Object): 클래스를 바탕으로 메모리에 실체화된 존재(인스턴스)입니다.
추상화 (Abstraction)
프로그램에서 필요한 공통적인 특징은 추출하고, 불필요한 부분은 제거하는 과정을 의미합니다. 예를 들어, '국민'이라는 객체를 프로그램으로 관리할 때, 그 사람의 이름, 주소, 나이 등 필요한 정보만 뽑아내고 그 외의 불필요한 정보는 버리는 것이 추상화입니다.
이렇게 추상화를 통해 정리된 데이터(속성)와 기능들을 묶어 클래스를 만듭니다.
캡슐화 (Encapsulation)
추상화를 통해 정리된 데이터(필드)와 기능(메소드)을 하나로 묶고, 외부에서 데이터에 직접 접근하는 것을 막는 기법입니다. 캡슐화의 핵심 원칙은 다음과 같습니다.
데이터 보호: 클래스 내부의 데이터는 private으로 선언하여 외부의 직접적인 접근을 원칙적으로 차단합니다.
간접 접근: 데이터에 접근하고 수정할 수 있는 기능(메소드)을 클래스 내부에 public으로 만들어 제공합니다.
이를 통해 데이터가 함부로 변경되는 것을 막고, 외부에는 기능을 숨겨 정보 은닉 효과를 얻을 수 있습니다.
getter/setter
캡슐화의 원칙에 따라 private 필드에 간접적으로 접근하기 위해 사용하는 대표적인 메소드입니다.
public void set필드명(자료형 변수명)
setter 메소드: 외부로부터 값을 전달받아 private으로 선언된 필드의 값을 설정(변경)하는 역할을 합니다.
public 반환형 get필드명()
getter 메소드: private으로 선언된 필드의 값을 외부에서 읽어갈 수 있도록 값을 반환하는 역할을 합니다.
자동생성
: alt + shift + s 또는 상단메뉴 Source -> Generate Getters and Setters... 클릭
MVC 패턴 (Model-View-Controller)
MVC 패턴은 애플리케이션을 Model, View, Controller라는 세 가지 역할로 구분하여 개발하는 디자인 패턴입니다. 각 구성 요소가 독립적으로 역할을 수행하므로 코드의 결합도(coupling)는 낮추고 응집도(cohesion)는 높여 유지보수와 확장이 용이해집니다.
Model: 데이터와 관련된 로직을 처리합니다. 데이터베이스에 접근하고(DAO), 비즈니스 로직(Service)을 수행하는 역할을 담당합니다.
View: 사용자에게 보여지는 화면, 즉 UI(User Interface)를 담당합니다. 사용자의 요청을 받아 Controller로 전달하고, Model로부터 받은 처리 결과를 화면에 표시합니다.
Controller: View로부터 사용자의 요청(Request)을 받아, 해당 요청을 처리할 Model의 메소드를 호출합니다. Model의 처리 결과가 나오면 그 결과를 다시 View로 전달(Response)하는 중재자 역할을 합니다.
객체 생성 (인스턴스화)
클래스라는 설계도를 바탕으로 메모리(Heap 영역)에 실제 사용할 수 있는 객체(인스턴스)를 만드는 과정을 의미합니다.
- 객체 선언
클래스이름 참조변수; // 예: Student student;
Stack 영역에 student라는 이름의 참조 변수를 위한 공간이 할당됩니다. 이 변수는 앞으로 생성될 객체의 메모리 주소를 저장하게 됩니다.
- 객체 생성 및 할당
참조변수 = new 생성자(); // 예: student = new Student();
new 연산자: Heap 영역에 클래스에 정의된 멤버 변수들을 위한 메모리 공간을 할당합니다.
생성자(Student()): 할당된 메모리 공간에 객체를 생성하고, 멤버 변수들을 초기화하는 역할을 합니다.
생성된 객체의 메모리 주소(위치 값)가 Stack 영역에 있는 참조 변수 student에 저장됩니다.
결과적으로, student라는 참조 변수를 통해 Heap 영역에 있는 실제 객체에 접근하여 그 객체의 필드와 메소드를 사용할 수 있게 됩니다.
'Study > Pullstack-Webdevelop' 카테고리의 다른 글
| 수업19일차_SQL 셋팅(3.7) (0) | 2025.03.19 |
|---|---|
| 수업9일차_OOP 필드/생성자 (2.20) (0) | 2025.03.04 |
| 수업6일차_배열2(2.18) (0) | 2025.03.04 |
| 수업5일차_배열(2.17) (0) | 2025.03.04 |
| 수업3-4일차_제어문(2.13-14) (0) | 2025.03.04 |