OOP란?
OOP(Object-Oriented Programming,객체지향 프로그) 은 프로그램을 객체 들의 상호작용으로 구성하는 프로그래밍 패러다임 이다.
현실 세계의 사물이나 개념을 객체로 보고 그 객체를 구현하는 방식
객체란?
속성(데이터) + 동작(메서드)로 구성된 것을 말하면
예를 들어 현실 세계에서 “자동차”라는 객체를 생각해보면:
- 속성(필드): 색상, 브랜드, 속도, 연료량
- 동작(메서드): 운전하다, 멈추다, 가속하다
class Car {
String color;
int speed;
void drive() {
System.out.println("차가 달립니다.");
}
void stop() {
System.out.println("차가 멈춥니다.");
}
}
특징
- 추상화(Abstraction):
- 복잡한 내용을 감추고 필요한 정보만 노출
- 객체에서 공통된 속성과 행위를 추출하여 구성
- 캡슐화(Encapsulation):
- 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는것을 의
- 데이터 보호를 위해 외부 접근 제한
- 변수나 메서드를 사용자가 설정한 특정 메소드로만 접근 가
- 상속(Inheritance):
- 다른 객체의 속성과 동작을 물려받음
- 재사용으로 코드가 줄어듬
- 상속함으로써 상위 클래스의 변경이 어려워진다.
- 다형성(Polymorphism):
- 동일한 메시지로 다양한 동작 수행 가능
- 오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의
- 오버로딩 : 같은 이름의 메서드가 인자의 개수나 자료형에 따라 다른 기능 수
장점
- 코드 재사용 증가 (상속)
- 유지보수와 확장성 좋아짐
- 캡슐화로 인한 보안성 증가
- 다형성으로 유연한 코드 작성 가능
- 현실 세계 모델링이 유용하다. (설계 자체가 사람의 사고 방식과 비슷)
단점
- 초기에 설계 속도가 느리다
- 처리속도가 느리다 (메서드 호출, 상속 구조등 속도나 메모리 사용량이 증가)
- 작은 프로그램에서 비효율 적이다.
SOLID 원칙이란?
객체 지향 프로그래밍을 보다 효과적으로 수행하기 위한 지침
객체 지향 프로그래밍의 설계 원칙
S(Single Responsibility Principle, 단일 책임 원칙)
하나의 클래스는 하나의 책임만 가져야한다.
O(Open-Closed Principle, 개방 폐쇠 원칙)
클래스는 확장에 열려 있고, 변경에는 닫혀 있어야 한다.
L(Liskov Substitution Principle, 리스코프 치환 원칙)
하위(자식) 클래스는 언제나 상위(부모) 클래스를 대체할 수 있어야 한다.
I(Interface Segregation Principle, 인터페이스 분리 원칙)
인터페이스는 사용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야한다.
D(Dependency Inversion Principle, 의존 역전 법칙)
추상화에 의존해야하면, 구체화된 클래스에 의존해서는 안된다.
반응형
'CS > 개발상식' 카테고리의 다른 글
CSR vs SSR (0) | 2025.07.08 |
---|---|
[개발상식]클린코드란? (0) | 2025.06.15 |
아키텍처 (0) | 2025.05.13 |
리팩토링 (0) | 2025.05.05 |