객체 지향 프로그래밍

햄은 개발 공부중·2023년 1월 13일
0
post-thumbnail

객체 지향 프로그래밍(OPP)이란?

객체 지향 프로그래밍 (Object-Oriented Programming, OOP)이란 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용을 하는 프로그래밍 이론이다. (객체 = 데이터와 기능을 묶은 그룹)

  • 객체 지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관 있는 처리 부분(함수)데이터 부분(변수)을 하나의 객체로 묶어서 생성해 사용한다는 점이다.
  • class = 붕어빵 틀 / instance(객체) = 붕어빵

OPP(Object Oriented Programming)의 특징

1.캡슐화 (Encapsulation) - 코드단순화, 재사용↑

  • 캡슐화란 데이터와 코드의 형태를 외부에선 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법이다.
  • 캡슐화의 중요한 목적은 변수를 private로 선언해 데이터를 보호하고, 보호된 변수는 getter나 setter등의 메서드를 통해서 간접적으로 접근을 허용한다. (느슨한 결합으로 언제든 구현 수정 ok)
  • 캡슐화를 하면 불필요한 정보를 감출 수 있기 때문에 정보은닉을 할 수 있다.

2.추상화 (Abstraction) - 코드단순화(피해 최소화)

  • 내부는 복잡하지만 실제 보이는 부분은 단순하게 보여주는 것(인터페이스 단순화)
  • 이는 즉 실제로 존재하는 객체들을 프로그램으로 만들기 위해 공통 특성을 파악해 필요없는 특성을 제거하는 과정을 의미한다. (필요하지 않는 메서드는 가리고, 단순 이름으로 정리)

🤔  캡슐화와 추상화의 차이?

: 캡슐화는 코드, 데이터의 은닉에 집중한다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것!

3.상속 (Inheritance) - 불필요한 코드를 줄임(재사용성↑)

  • 기존 상위클래스의 기능을 가져와 재사용할 수 있음과 동시에 새로운 하위 클래스에 새로운 기능을 추가할 수 있다.(마치 부모가 자식에게 유전자를 물려주듯!)
  • 상속이 필요한 이유 = 중복되는 코드를 없애기 위함
  • 프로토타입 체인을 이용

4.다형성 (Polymorphism)

  • 상속과 관련된 개념으로 한 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 여러형태로 재구성되는 것을 말한다. (같은 부모지만 자식들은 약간씩 다름!)
  • 다형성을 사용하면 같은 이름의 속성을 유지함으로써, 속성을 사용하기 위한 인터페이스를 유지하고, 메서드를 낭비하지 않는다. (코드의 재사용성 상승!)
  • 오버라이딩 : 자식클래스가 부모클래스에서 만들어진 메서드를 자신 입맛대로 재창조해 사용하는 것
  • 오버로딩 : 하나의 클래스 안에서 같은 이름의 메서드를 사용하지만, 각 메서드마다 다른 용도로 사용되며 그 결과물 또한 다르게 구현되는 것
profile
내가 보려고 정리하는 블로그🔥

0개의 댓글