반응형
OOP(Object-Oriented Programming) 자세한 설명
1. OOP(객체지향프로그래밍)란?
OOP는 프로그램을 객체(Object) 단위로 설계하고, 객체들이 상호작용하며 동작하도록 만드는 프로그래밍 패러다임이야. 현실 세계의 개념(학생, 게시글, 채팅 세션)을 객체로 모델링해서 코드의 재사용성, 유지보수성, 확장성을 높이는 게 목표야.
- 핵심 아이디어:
- 객체: 데이터(속성)와 기능(메서드)을 하나로 묶은 단위. 예: Student 객체는 studentId, name 속성과 enrollCourse() 메서드 가짐.
- 클래스: 객체의 설계도. 예: Student 클래스는 학생 객체의 틀.
- 장점:
- 코드 재사용(상속, 다형성), 모듈화(캡슐화), 유지보수 쉬움.
- 대규모 프로젝트(학사관리시스템, 게시판) 관리에 적합.
- 단점:
- 절차지향보다 설계 복잡, 초기에 시간 소요.
- 성능상 약간의 오버헤드(객체 생성/메모리 관리).
OOP 4대 원칙 요약
캡슐화 | 데이터와 기능을 하나로 묶고 내부 구현 숨김 | - private 필드, getter/setter - 정보 은닉, 무결성 유지 |
학사관리시스템: StudentDto의 private 필드, getter/setter로 데이터 보호 WebSocket: EchoHandler의 private clients 관리 |
상속 | 부모 클래스의 속성과 메서드를 자식 클래스에 물려줌 | - extends 사용 - 코드 재사용, 계층 구조 |
게시판: NoticePost가 Post 상속, display 오버라이딩 WebSocket: EchoHandler가 TextWebSocketHandler 상속 |
다형성 | 같은 인터페이스로 서로 다른 객체가 다르게 동작 | - 오버라이딩, 오버로딩 - 유연성, 확장성 |
학사관리시스템: User 인터페이스로 Student, Admin 다르게 login Spring: @RestController의 다형적 요청 처리 |
추상화 | 공통 속성과 기능을 추출해 인터페이스/추상 클래스 정의 | - 불필요한 세부사항 숨김 - 설계 단순화 |
학사관리시스템: Course 추상 클래스로 공통 메서드 정의 WebSocket: WebSocketHandler 인터페이스로 메시지 처리 추상화 |
'지식공부' 카테고리의 다른 글
Spring객체 저장방식과 폼유효성검사 (0) | 2025.06.19 |
---|