OOP - 객체 지향 프로그래밍의 4가지 특징

·2023년 11월 27일
0

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

OOP란
하나의 소프트웨어가 동작하는 원리를 그것을 구성하는 여러 객체 간의 상호작용으로 정의하고, 이에 따라, 객체를 중심으로 소프트웨어를 설계/개발해야한다는 프로그래밍 패러다임이다.

OOP의 4가지 특징

1. 추상화

  • 어떤 대상/집단의 공통적이고 본질적인 특징을 추출하여 정의한 것을 의미한다.
  • 어떤 대상을 구현할 때, 그 대상의 본질적인 특징을 정의하고, 이것에 기반하여 대상을 객체로 구현하는 것을 의미한다.
  • 이 때, 대상의 본질적인 특징을 정의하는 데 프로그래밍적 활동되는 개념이 abstract class와 interface 이다.

2. 상속

  • 대상을 객체로 추상화/구현할 때, 기존에 구현한 클래스를 재활용하여 구현할 수 있는 것을 의미한다.
  • 구체적으로, 대상을 추상화하여 객체로 구현할 때, 대상의 특징을 일부분 구현한 객체가 있을 경우, 이를 확장하여 대상을 추상화/구현 할 수 있다는 것이다.
  • 코드 재사용성을 높일 수 있는 큰 장점이 있다.

3. 다형성

  • 다형성이란 어떤 객체의 속성이나 기능이 상황에 따라 여러 형태로 변할 수 있다는 것을 의미한다.
  • 다형성을 구현하는 예시로는 상속/구현 상황에서 메서드 오버라이딩/오버로딩이 있다.

    ✔ 오버라이딩 vs 오버로딩
    오버라이딩 - 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의하여 사용하는 기술
    오버로딩 - 같은 이름의 메서드를 여러개개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술

  • 다형성을 통해 개발 유연성, 코드 재사용성을 제고시킬 수 있다.
  • 다형성이 구현된 구조에서는 상위 객체의 타입으로 하위 객체를 참조할 수 있다.

4. 캡슐화

  • 캡슐화란 클래스 내의 연관된 속성(property), 함수(method)를 하나의 캡슐로 묶어 외부로부터 클래스로의 접근을 최소화하는 것을 의미한다.
  • 캡슐화는 외부로부터 클래스의 변수, 함수를 보호하고 외부에는 필요한 요소만 노출하고, 내부의 상세한 동작 은닉 장점이 있다.
  • 클래스의 캡슐화는 접근제한자를 통해 구현할 수 있다.
  • 캡슐화는 객체 간의 결합도를 감소시키고, 응집도를 강화하는데 기여한다. 즉, 유지보수의 용이성이 좋아지는 효과를 기대할 수 있다.

    결합도 : 객체 간에 의존하는 정도를 의미
    응집도 : 한 객체의 자율성, 특정 역할에 대한 독립적인 책임을 의미

0개의 댓글