Post

객체지향의 특성과 원칙

OOP는 Object Oriented Programming의 줄임말입니다.

  • 객체(Object) / Oriented(지향) / Programming(프로그래밍)

객체 지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임(견해, 사고법)이라고 할 수 있습니다.

즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말합니다.


객체지향의 특성

1. 캡슐화 (Encapsulation)

객체의 속성과 기능을 하나로 묶어서 외부에서 직접 접근할 수 없도록 제한하는 것을 말합니다.

캡슐화를 통해 객체의 내부 구조를 감추고, 외부에서는 객체의 인터페이스만을 사용할 수 있게 됩니다.

이를 통해 객체의 안정성과 유지보수성이 증가하게 됩니다.

2. 상속 (Inheritance)

상위 클래스(부모 클래스)가 가지고 있는 속성과 기능을 하위 클래스(자식 클래스)가 물려받아서 사용하는 것을 말합니다.

상속을 통해 코드의 재사용성이 높아지고, 유지보수성이 좋아집니다.

3. 다형성 (Polymorphism)

동일한 메서드나 속성을 가진 객체를 다양한 방식으로 사용하는 것을 말합니다.

다형성을 통해 유연하고 확장성 있는 코드를 작성할 수 있습니다.

4. 추상화 (Abstraction)

객체에서 공통적인 속성과 기능을 추출하여 모델화하는 것을 말합니다.

추상화를 통해 객체의 복잡성을 감소시키고, 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.


객체지향설계원칙

image

1. SRP (Single Responsibility Principle, 단일 책임 원칙)

각 클래스는 하나의 책임만을 가져야 하며,

클래스가 변경되는 이유는 단 하나의 이유여야 합니다.

2. OCP (Open-Closed Principle, 개방-폐쇄 원칙)

클래스는 확장에는 열려 있으나 변경에는 닫혀 있어야 합니다.

새로운 기능이 추가되더라도 기존의 코드를 변경하지 않고,

확장을 통해 기능을 추가할 수 있어야 합니다.

3. LSP (Liskov Substitution Principle, 리스코프 치환 원칙)

하위 클래스는 상위 클래스에서 정의된 메서드를 무조건 사용할 수 있어야 합니다.

즉, 상위 클래스의 기능을 하위 클래스에서 유지해야 합니다.

4. ISP (Interface Segregation Principle, 인터페이스 분리 원칙)

각 행위에 대한 인터페이스는 서로 분리되어야 합니다.

ex) 핸드폰으로 전화를 하는데 핸드폰 카메라가 방해가 되면 안 된다는 뜻

5. DIP (Dependency Inversion Principle, 의존성 역전 원칙)

추상화된 것(상위클래스)은 구체적인 것(하위클래스)에 의존해서는 안 되며,

구체적인 것이 추상화된 것에 의존해야 합니다.

This post is licensed under CC BY 4.0 by the author.