DINO NET

(23.01.08) 객체 타입, 객체 지향 / 절차 지향 본문

program()/파이썬

(23.01.08) 객체 타입, 객체 지향 / 절차 지향

2023. 1. 18. 18:42

객체

  • 가변타입: 한 번 생성한 인스턴스의 속성 변경 가능 ex) 리스트
  • 불변타입: 한 번 생성한 인스턴스의 속성 변경 불가능 ex) 튜플

 

sample

mutable_object = [1, 2, 3]
immutable_objcet = (1, 2, 3)

mutable_object[0] = 4
print(mutable_object)
#[4, 2, 3] 가변타입이므로 오류가 발생하지 않는다.

immutable_object[0] = 4
print(immutable_object)
#error 불변 타입이므로 속성 변경이 불가하다.

 

※ 속성은 바꿀 수 없으나 변수가 가리키는 객체 자체는 바꿀 수 있다.

 

tuple_a = (1, 2)
print(tuple_a)
#(1, 2)

tuple_a = (3, 4)
print(tuple_a)
#(3, 4)

tuple_a = (3, 4, 5)
print(typle_a)
#(3, 4, 5)

#위 경우 기존에 생성된 튜플의 속성을 바꾸는 것이 아니다.
#메모리에 내에 새로운 튜플을 생성 시켜 가리키는 객체 자체를 바꾼다.

 

in python
mutable immutable
list bool
dic int
  float
  str
  tuple

 

 

객체 지향 vs. 절차 지향

절차 지향 프로그래밍

  • 함수 내부에 프로그램에 필요한 동작을 묶어서 관리한다. 관련 데이터와는 합칠 수 없다.
  • 프로그래밍 명령어들을 순서대로 실행한다.

장단점

  • 실행 속도가 빠르다.
  • 유지 보수가 어렵고 비효율적이다.

 

객체 지향 프로그래밍

  • 클래스 내부에 프로그램에 필요한 동작(함수)과 관련 데이터를 함께 관리한다.
  • 다수의 객체들이 서로 상호작용하며 실행된다. 

특징

  1. 캡슐화: 데이터와 알고리즘을 하나로 묶어 캡슐처럼 만든다. 외부에서 확인하기 어렵다.
  2. 상속: 상위 클래스의 모든 것을 하위 클래스가 물려받는다.
  3. 다형성: 하나의 객체가 다른 여러 객체로 재구성된다. 
  4. 추상화: 실존하는 객체의 여러 특성 중, 프로그램을 만드는데 필요한 부분만 파악해서 추출하고 필요하지 않은 것은 제거하는 것이다.

장단점

  • 상속이 가능하므로 재사용이 가능하다.
  • 독립된 객체로 이루어져 있으므로 유지 및 보수가 용이하다.
  • 모델링이 자연스럽다.
  • 개발 속도와 실행 속도가 느리다.
  • 난이도가 높다.