OOP : Object Oriented Programming(객체 지향 프로그래밍)
기본 전제는 기능(함수, 변수) 재사용이 가능하도록 설계 및 프로그래밍 했는지

대부분의 분야에서 OOP의 개념을 적용하여 프로그래밍을 수행
기본 개념 : 설계(사람이 이해하는 방식)와 구현할 소스코드(컴퓨터가 이해하는 방식) 간의 상호이해가 중요

  • OOP의 개념을 무분별하게 활용하면 유지보수가 어려워질 수도 있다

OOP 이전

  • 배열과 함수, 변수를 많이 생성하고 활용하여 최대한 많은 기능을 적은 양의 소스코드파일에 담았다
  • 속성과 기능이 증가할때 마다 배열과 함수를 계속 생성해야했기 때문에 비효율

OOP의 필요성

함수형은 함수의 사용을 극대화시켜서 코드의 가독성을 높여주는 형태
실제로 머릿속에서 떠올릴 수 있는 것을 프로그래밍하는 것이 OOP의 중점
기능별로 개체가 효율적으로(재사용가능하도록) 분리되어야 한다, 따라서 설계가 중요

OOP의 구성


OOP를 활용할 때의 특징

  • PEP와 같이 여러사람과 함께 일관적인 코드맥락 유지 가능
  • 복잡한 프로그래밍에 대해 함수나 클래스를 활용하여 오류발생확률 감소

OOP와 Python

  1. 파이썬의 자료형은 하나의 클래스이다
  • .method 형태로 활용되는 코드들은 해당 자료형 클래스에 구현된 메소드이다
  • 각 자료형 클래스의 메소드는 help('자료형')으로 확인할 수 있다
  1. 예시 : category_encoders 라이브러리의 OneHotEncoder

캡슐화


내부 속성(변수)과 함수를 하나로 묶어서 클래스로 선언하는 일반적인 개념

  • 캡슐화형태로 코드를 작성하지 않으면 특정 기능(함수, 변수)에 직접 접근하게 되는 상황
  • 기능이 많아질수록 재사용의 개념을 활용하기가 어려움

상속과 포함

  • object의 종류는 현실 세계에 있는 대부분이기 대문에, 설계될 수 있는 다양한 object가 있다

  • 상속(Inheritance)

"개는 동물이다." 또는 "선생님은 직장인이다."라는 관계로서 설명된다.

기본개념 : 상위 클래스의 모든 기능(함수, 변수)을 재사용할 수 있다
  • 포함
"개는 몸을 갖고 있다." 라는 관계로서 설명된다.

기본개념 : 다른 클래스의 일부 기능(함수)만을 재사용한다.

추상화


추상화는 복잡한 내용에서 핵심적인 개념 및 기능을 요약하는 것

  • object의 기능에 따라 추상클래스(상위클래스)를 상속받아 개별적으로 클래스(하위클래스)를 생성한다
  • 기본적으로 추상메소드를 선언하며 실제 실행되는 기능은 보여지지 않는다
  • 실제 실행되는 기능은 선언된 추상클래스를 상속받은 다른 클래스의 메소드에서 확인할 수 있다
  • 추상클래스를 사용하는 이유
    클래스 또는 함수가 예상했던 것 이상으로 많이 생성되는 경우 추상클래스를 생성하여 핵심적인 기능만 생성해놓는다
    실제로 동작기능은 추상클래스에서 상속받은 하위클래스의 메소드에서 진행된다
    추상클래스의 추상메소드를 활용할 때 장점은 추상클래스를 중심으로 하위클래스의 메소드를 다양하게 생성할 수 있기 때문에, 유지보수를 진행하는 경우 추상클래스만 수정하면 되므로 복잡성을 낮출 수 있다

다형성

OOP에서 다형성은 계층 구조의 상속 관계에서 상속받은 기능 외, 다른 기능을 추가적으로 제공하고자 할 때 사용한다

  • 장점 : 프로그램 작성 코드량을 줄여준다, if/else문을 많이 줄일 수 있다, 가독성 상승
profile
ㅋㄷ

0개의 댓글

Powered by GraphCDN, the GraphQL CDN