객체 지향 프로그래밍(OOP)

📌 정의

컴퓨터 프로그래밍 패러다임 중 하나이다.
프로그래밍에서 필요한 데이터를 추상화 시켜서 상태와 행위를 가진 객체를 만든다.
객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

📌 장단점

장점

코드 재사용에 용이하다. (다른 클래스를 가져와서 이용할 수 있고, 상속을 통해 확장할 수도 있다)
유지보수가 쉽다. (수정해야 할 부분이 클래스 내부 멤버 변수나 메서드로 있기 때문에 해당 부분만 수정하면 된다)
대형 프로젝트에 적합하다. (클래스 단위로 모듈화시켜 개발할 수 있기 때문에 분담해서 업무를 맡을 수 있다)

단점

처리 속도가 상대적으로 느리다.
객체가 많으면 용량이 커질 수 있다.
설계시 많은 시간과 노력이 필요하다.

📌 주요 키워드

추상화

공통적인 특징을 파악해서 하나의 개념으로 다루는 것을 의미한다.

캡슐화

클래스라는 캡슐에 상태와 행위를 묶어서 실제 구현 내용은 은닉하는 것을 의미한다.

상속

공통된 특성을 부각시켜서 하나의 개념으로 성립시켜, 부모와 자식 관계로 표현할 수 있는 것을 의미한다.

다형성

하나의 행위를 다르게 표현할 수 있다. (오버라이딩, 오버로딩)

📌 5대 원칙(SOLID)

[S] 단일 책임 원칙 (SRP)

객체는 하나의 책임만 가져야 한다.

[O] 개방 - 폐쇠 원칙 (OCP)

기존 코드 변경하지 않고, 기능을 추가할 수 있도록 설계 해야 한다.

[L] 리스코프 치환 원칙 (LSP)

자식 클래스는 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.

[I] 인터페이스 분리 원칙 (ISP)

하나의 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
최소한의 인터페이스를 사용해야 한다.
인터페이스를 클라이언트에 특화되도록 분리시키는 설계 원칙이다.

[D] 의존 역전 원칙 (DIP)

변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다.
구체적인 클래스보다 인터페이스나 추상 클래스와 의존 관계를 맺어야 한다.
TOP