소프트웨어 개발 방법론 중 하나로, 프로그램에서 가장 작은 단위를 객체로 만들고 객체 간의 상호작용을 이용해 소프트웨어를 개발하는 개념입니다.
객체지향의 특징
- 클래스와 객체 (Class & Objects):
- 클래스(Class)는 객체(Object)를 생성하기 위한 설계도로, 데이터와 메서드(함수)로 구성됩니다.
- 객체는 클래스의 인스턴스로, 클래스의 구조를 기반으로 실제 메모리에 할당된 것을 의미합니다.
- 캡슐화 (Encapsulation):
- 캡슐화는 데이터와 관련 기능(메서드)을 하나로 묶고, 외부에서의 접근을 제한하여 데이터의 안전성과 보안성을 보장합니다.
- 클래스는 자체적인 데이터를 관리하며, 외부에서는 내부 동작 방식을 몰라도 인터페이스를 통해 접근할 수 있습니다.
- 상속 (Inheritance):
- 상속은 기존 클래스의 특성(속성과 메서드)을 다른 클래스에서 재사용하거나 확장할 수 있도록 해줍니다.
- 상속을 통해 새로운 클래스는 기존 클래스의 특성을 이어받아 사용할 수 있습니다.
- 다형성 (Polymorphism):
- 다형성은 같은 이름의 메서드가 다른 기능을 수행하도록 하는 기능으로, 같은 코드에서 다양한 동작이 가능하도록 합니다.
- 오버라이딩(Overriding)과 오버로딩(Overloading)을 통해 다형성을 구현할 수 있습니다.
- 객체 지향 설계 원칙 (Object-Oriented Design Principles):
- SOLID 원칙과 같은 객체 지향 설계 원칙은 객체지향의 기본 원리를 따라 코드를 설계하고 유지보수하기 쉽도록 돕습니다.
- 단일 책임 원칙(SRP), 개방-폐쇄 원칙(OCP), 리스코프 치환 원칙(LSP) 등이 있습니다.
OOP란
객체지향 프로그래밍(Object-Oriented Programming)의 약어로, 객체의 관점에서 프로그래밍을 하는 것입니다.
SOLID 원칙
의미 있는 객체지향 소프트웨어를 설계하기 위한 다섯 가지 원칙을 의미합니다. 이 원칙들은 코드의 유연성, 확장성, 유지보수성을 높이고, 객체지향 프로그램의 설계를 개선하는 데 도움이 됩니다.
- 단일 책임 원칙 (Single Responsibility Principle - SRP):
- 하나의 클래스는 하나의 책임만 가져야 합니다.
- 클래스가 변경되어야 하는 이유는 오직 하나여야 하며, 이는 클래스를 더 작고 이해하기 쉽게 만듭니다.
- 이 원칙을 따르면 코드의 유지보수가 쉬워지고 응집력이 높아집니다.
- 개방-폐쇄 원칙 (Open-Closed Principle - OCP):
- 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 합니다.
- 기존의 코드를 수정하지 않고도 기능을 추가하거나 변경할 수 있도록 설계해야 합니다. 이를 위해 추상화와 다형성을 활용합니다.
- 리스코프 치환 원칙 (Liskov Substitution Principle - LSP):
- 자식 클래스는 부모 클래스의 기능을 대체할 수 있어야 합니다.
- 즉, 어떤 클래스의 인스턴스가 있을 때, 그것을 해당 클래스의 하위 클래스의 인스턴스로 치환해도 기존의 동작 방식이 변경되지 않아야 합니다.
- 인터페이스 분리 원칙 (Interface Segregation Principle - ISP):
- 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안됩니다.
- 즉, 인터페이스를 여러 개로 분리하여 각 클라이언트가 필요한 인터페이스만 사용하도록 하는 것입니다.
- 의존관계 역전 원칙 (Dependency Inversion Principle - DIP):
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안됩니다. 둘 모두 추상화에 의존해야 합니다.
- 즉, 추상화를 통해 상위 수준의 모듈은 하위 수준의 모듈과 직접적으로 연결되지 않고, 추상화에 의존하여야 합니다.
'CS' 카테고리의 다른 글
| 서로 다른 성능을 가진 기기에서 Update 사용 시 주의할 점 (0) | 2023.11.20 |
|---|---|
| 상속이란 (0) | 2023.11.16 |
| 자료구조의 종류와 차이점 (0) | 2023.11.16 |
| 값 형식과 참조 형식의 차이점 (0) | 2023.11.16 |
| 스택, 힙 메모리와 차이점 (0) | 2023.11.16 |