Daily Front_Minhhk

[OOP] 객체지향 프로그래밍 본문

Code개발일지

[OOP] 객체지향 프로그래밍

Minhhk 2022. 11. 18. 13:26

객체지향 프로그래밍

Object Oriented Programming

  • OOP는 프로그램 설계 철학 중 하나이다
  • OOP의 모든것은 객체로 그룹화가 되어 메모리가 반환되기 전까지 개체 내의 모든 것이 유지된다.
  • 객체 내에는 " 데이터와 기능이 함께 있다" 라는 원칙에 따라 메서드와 속성이 존재한다.

 

✂️특징

객체지향 프로그래밍에는 4가지의 개념이 있다

Encapculation (캡슐화)
Abstraction (추상화)
Inheritance (상속)
Polymorphism (다형성)

 

🔖 캡슐화

Encapculation

  • 캡슐화는 데이터(속성)와 기능(메서드)을 따로 정의하는 것이 아닌 , 하나의 객체 안에 넣어서 묶는 것이다. 이때 데이터와 기능이느슨하게 결합된다.
  • 느슨한 결합(Loose Coupling)은 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다.
  • 이에 따라 내부 구현 내용을 감추어서 외부에서 확인 할 수 없는 은닉화의 특징도 포함 하고 있다.
  • 은닉화는 디테일한 구현이나 데이터를 숨기고 동작(메서드)만 노출만 시킨다.
  • 코드가 복잡하지 않게 만들고 재사용성을 높인다는 장점이 있다.

 

🔖 추상화

Abstraction

  • 추상화는 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념이다.
  • 캡슐화와 많이 헷갈리는 부분이 있지만 추상화는 클래스를 사용하는 사람이 필요하지 않는 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 집중하는 것 이다.
  • 즉 , 필요한 부분(속성)을 모아서 상위의 개념(객체)으로 새롭게 이름을 붙이는 것을 추상화라고 한다.
  • 캡슐화 처럼 코드를 복잡하지 않게 만들고 단순화되어진 사용으로 변화에 대한 영향을 최소화 하는 장점이 있다.

 

 

🔖 상속

Inheritance

  • 상속은 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속 받는것을 말한다.
  • 즉 새로 만든 인스턴스는 부모 클래스에 속성과 메서드를 그대로 물려받는다.
  • 그대로 물려받아 새로 작성해야하는 코드 즉 불필요한 코드를 줄여서 재사용성을 높이는 장점이 있다.

 

 

🔖 다형성

Polymorphism

  • 다형성은 같은 이름은 가진 메서드라도 조금씩 다르게 동작하는 것처럼 다양한 형태를 가질 수 있다는 것을 뜻한다.
  • 상황에 따라 그리고 객체의 특성에 맞게 다르게 사용할 수 있는 것이 가능해진다.

 

캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있습니다.

 

🔥 클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 부릅니다. 이것이 추상화의 본질입니다.