지식공부

객체지향프로그래밍_OOP(Object-Oriented Programming)

동곤일상 2025. 6. 18. 17:38
반응형

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