[Python] 객체 지향 프로그래밍(OOP)이란?

seoryeong·2023년 7월 5일

Python

목록 보기
2/3
post-thumbnail

💐 객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍 (OOP, Object Oriented Programmin)이란

  • 데이터를 추상화시켜 상태(속성)행위(methods)를 가진 객체(object)로 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직(흐름)을 구성하는 프로그래밍 방법을 말한다.

  • 프로그램을 실제 세상에 가깝게 모델링하는 기법

💐 클래스 (Class)

  • 어떤 문제를 해결하기 위한 데이터를 만들기 위해 OOP 원칙에 따라 집단(현실세계)에 속하는
    속성과 행위(methods)를 변수와 메서드로 정의한 것

ex) 로봇 설계도, 쿠키틀

💐 클래스의 사용

왼쪽에 있는 코드를 다른 개발자에게 공유하고, 반복되는 (1,2)를 하나로 묶어서 편하게 쓸 수 있는 방법으로 클래스 사용이 가능하다.

class는 바로 만들 수 없고, 일단 절차지향적으로 생각하고 반복되는 무언가가 있고 하나의 집단에서 행위를 나눌 수 있겠구나, 상태, 속성을 나눌 수 있겠구나라고 판단이 될 때 class로 나눌 수 있다.

오른쪽에 있는 그림에 나와있는 init 메소드는 생성자(constructor)로, 클래스로 인스턴스를 하나 만들었을때 즉시 실행되는 함수이다.

cal1=Cal(1,2) 처럼 객체를 생성하면 메모리에 올라오고 그러면 즉시 init 메소드가 실행된다.

cal1에는 namespace 공간이 생기고 이 공간 안에는 a가 있고, b가 있고,
add,sub,mul,div가 있다.

print(cal1.a)
print(cal2.b)
print(cal1.add())

이렇게 cal1.a처럼 점(.)을 찍는 순간 cal1 공간에 접근이 가능해진다.

💐 인스턴스, 객체

  • class에서 정의한 것(설계도)을 토대로 실제 메모리상에서 할당된 것 (실제 사물, object)으로
    실제 프로그램에서 사용되는 데이터이다.

  • 하나의 class로 만들어진 여러 instance(object)는 각각 독립적이다.

ex) 실제 로봇

★★ 인스턴스와 객체는 비슷한 언어로 사용되지만 분명한 차이가 있다.

💐 OOP 원칙: 캡슐화, 추상화, 상속화, 다형성

① 캡슐화 (encapsulation)

객체(Object)의 속성과 행위(methods)를 하나로 묶고,
구현된 일부를 외부에 감추어 은닉한다.

② 추상화 (abstraction)

불필요한 정보는 숨기고 중요한(필요한)정보만을 표현함으로써
공통의 속성이나 행위(methods)를 하나로 묶어 이름을 붙이는 것

③ 상속화 (inheritance)

부모 class 속성과 행위(methods)를 그대로 상속받고 행위(methods)의 일부분을 수정해야할 경우 상속받은 자식 class에서 해당 행위 methods만 다시 수정하여 사용할 수 있도록 한다.
또한 자식 class에서 추가적으로 속성이나 행위를 정의할 수 있게 한다.

④ 다형성 (polymorphism)

여러 형태를 가질 수 있도록 한다.
즉, 객체를 부품화할 수 있도록 한다.

profile
파이썬 개발자입니다.

0개의 댓글