Object-Oriented Programming

참새·2023년 3월 27일
0

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

  • 소프트웨어 개발 방법론 중 하나로, 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
  • 객체를 중심으로 데이터와 기능을 캡슐화하여 객체 간 상호작용을 통해 소프트웨어를 구성하는 방식.

주요키워드 및 원칙

  • 클래스 (Class)

    객체를 정의하는 설계도 혹은 틀을 의미하며 클래스는 객체가 가질 수 있는 속성(멤버 변수)과 행위(멤버 함수)를 정의.

  • 객체 (Object)

    클래스를 기반으로 생성된 구체적인 실체를 의미하며 객체는 속성과 행위를 가지고 다른 객체와 상호작용이 가능.

  • 캡슐화 (Encapsulation)

    객체의 속성과 행위를 하나로 묶고, 외부에서 직접 접근하지 못하도록 제한하는 것을 의미하며 이를 통해 객체의 내부 구현을 숨길 수 있음.

  • 상속 (Inheritance)

    부모 클래스에서 정의된 속성과 행위를 자식 클래스에서 재사용할 수 있도록 하는 것을 의미하며 상속을 통해 코드의 재사용성을 높이고, 유지보수를 용이하게 할 수 있음.

  • 다형성 (Polymorphism)

    여러 객체가 동일한 메서드를 호출하더라도 각자 다른 동작을 하도록 하는 것을 의미하며 다형성은 코드의 가독성을 높이고, 유지보수성을 향상시킴.

  • 추상화 (Abstraction)

    객체의 복잡한 내부 동작을 단순화하여 핵심적인 기능만 노출시키는 것을 의미하며 추상화를 통해 객체의 복잡도를 낮추고, 코드의 재사용성을 높일 수 있음.

객체지향 설계 5원칙(SOLID 원칙)

  • 객체 지향 프로그래밍에서 지켜야 할 다섯 가지 원칙을 나타내는 약어로 소프트웨어 설계와 유지보수의 용이성, 확장성, 재사용성 등을 증가시키기 위해 개발자들이 따라야 할 규칙을 제시.

종류

  • SRP(Single Responsibility Principle) : 단일 책임 원칙으로 하나의 클래스는 하나의 책임만 가져야 함.
  • OCP(Open Closed Principle) : 개방-폐쇄 원칙으로 확장에는 열려 있고, 변경에는 닫혀 있어야 함.
  • LSP(Liskov Substitution Principle) : 리스코프 치환 원칙으로 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 함.
  • ISP(Interface Segregation Principle) : 인터페이스 분리 원칙으로 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안됨.
  • DIP(Dependency Inversion Principle) : 의존 역전 원칙으로 고차원 모듈은 저차원 모듈에 의존하면 안되며, 추상화는 구체적인 사항에 의존하면 안됨.

정리

SOLID 원칙을 준수하면, 소프트웨어 시스템은 변경에 유연하고, 유지보수와 확장이 쉽게 이루어질 수 있으며 코드의 가독성과 재사용성도 높아지기 때문에, 객체 지향 프로그래밍에서는 SOLID 원칙을 중요하게 다룸.

장단점

  • 다른 사람이 만든 클래스를 가져와서 이용 할 수 있고 상속을 통해 확장이 가능.
  • 코드 재사용이 용이하고 수정 부분이 클래스 내부에 멤버 변수 또는 메서드로 존재하여 유지보수 용이.
  • 클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로젝트에 적합.
  • 처리 속도가 상대적으로 느리고 객체가 많으면 용량이 커질 수 있으며 설계 시 많은 시간과 노력이 필요.
profile
응애 나 아기 개발자

0개의 댓글