본문 바로가기
코딩💻

[Python] OOP(Object-Oriented Programming), 캡슐화, 상속과 포함, 추상화, 다형성

by 하암꿈 2022. 10. 12.
728x90

OOP, 캡슐화, 상속과 포함, 추상화, 다형성

 

 

OOP (Object Oriented Programming)

 

  • OOP
    • 객체지향 프로그래밍 
    • 프로그램 설계방법론이자 개념의 일종이다.
    • 기능의 재사용이 가능하도록 설계 및 프로그래밍을 하는것이다.
    • 클래스와 인스턴스, 함수, 변수라는 object로 변화시켜서 프로그램을 하는 방법이다.
  • 배경
    • 프로그래밍 개념의 대부분은 최소비용으로 최대 효율을 얻기 위해서 개발되었다.
    • OOP가 나오기 이전에는 최대한 많은 기능을 적은양의 소스코드 파일에 담고 배열과 함수를 계속해서 생성해야했기 때문에 관리하는데에 있어서 비효율적이었다.
    • data-driven(데이터기반 의사결정), 컴퓨터하드웨어성능, 데이터양 증가에 따라 OOP활용도 증가하였다.
  • OOP를 활용 할 때 특징
    • 여러사람과 함께 일관적인 코드맥락을 유지할수있다.
    • 오류 발생확률을 줄일수있다.
    • 설계와 구현할 소스코드간의 상호이해가 중요하다.
    • 기능별로 개체가 효율적으로(재사용 가능하도록) 분리되어야 한다.
    • 대부분의 분야에서 OOP의 개념을 적용하여 프로그래밍하지만 항상 활용하지는 않는다.

 


OOP 구성 파악

 

 

캡슐화

 

  • 캡슐화
    • 내부 속성(변수)과 함수를 하나로 묶어서 클래스로 선언하는 일반적인 개념.
    • object 및 소스코드 구현에 대한 상세정보를 분리하는 과정
  • 특징
    • 캡슐화하지 않고 코드를 작성할 경우에 직접 그 기능에 접근을 해야하는 상황이 된다.
    • 캡슐화를 하면 모듈화가 가능해진다
    • 기능이 분리되어있으니 디버깅을 하는 경우 편리하고, 소스코드의 목적을 알기 쉬워진다.

 

728x90

 

 

상속과 포함(Inheritance & Composition)

상속과 포함

  • 상속(Inheritance)
    • 상위 클래스의 모든 기능을 재사용할수있다.
  • 포함(Composition)
    • 다른 클래스의 일부 기능만을 재사용한다.

 

 

 

추상화

 

예를들면 추상클래스는 볼펜 껍데기, 자식클래스는 잉크의 색깔이 될 수있겠다.

  • 추상화
    • 복잡한 내용에서 핵심적인 개념 및 기능을 요약하는 것을 말한다.
  • 기본적으로 추상클래스의 기능은 보여지지 않고 상속받은 클래스의 메소드가 기능이 보여진다.
  • 추상클래스를 사용하는 이유
    • 클래스 또는 함수가 예상했던 것 이상으로 많이 생성되는 경우 추상클래스를 생성하여 핵심적인 기능만 생성해놓는다.
    • 하위클래스의 메소드를 다양하게 생성할수있기 때문이다.

 

 

다형성

 

  • 다형성
    • 하나의 객체에 여러 가지 타입을 대입할 수 있다는 것을 의미
    • OOP에서 다형성은  상속받은 기능 외에 다른 기능을 추가적으로 제공하고자 할 때 사용한다.
  • 장점
    • 코드의 가독성을 높혀준다
    • 코드량을 줄여준다. if/else문을 많이 줄일수있다.
300x250