본문 바로가기

컴퓨터프로그래밍

OOP

OOP(Object Oriented Programming)란 object들의 상호작용으로 프로그램을 구성하는 프로그래밍이다. 뜻 그대로 객체지향프로그래밍을 말한다. 

 

OOP language라고 불리기 위해서는 3가지 특성을 가져야한다.

  1.  encapsulation(data hiding)-data나 method등 세부적인 구현방법에 대해 capsule로 싸고, 외부에서는 이를 조작할 수 있는 interface만 제공한다. 이를 통해 외부접근을 막을 수 있어 더 private한 프로그래밍을 할 수 있다. 
  2.  inheritance(상속)- 어떠한 class가 다른 class의 속성과 메소드를 물려받는 것이다. 이를 통해 modularity가 이루어진다. 상속을 통해서 코드의 재사용성을 극대화시키고 코드의 중복을 없애 더욱 간단한 코드가 만들어질 수 있다. 부모 클래스와 자식클래스로 나누어지고 자식클래스는 부모클래스로부터 속성과 메소드를 물려받는다. (is-a 관계)
    *oop 관계: (is-a) inheritance/ (has-a) embedded
  3.  polymorphism(다형성): 같은 이름의 method나 함수가 다른 클래스나 객체에 따라 다른 동작을 할 수 있는 능력. 즉, 보이는 것은 같으나 다른 기능을 하는 것이다. inheritance를 통해 이루어진다. 동일 message로 여러 종류의 object에게 각각 고유한 task를 수행할 수 있게 한다.

oop

  • oop는 순서가 없이 message 기반으로 동작한다. object간의 message전달을 통해 상호작용함.
  • 기존 imperative programming에 없던 class, object, encapsulation, inheritance, polymorphism등의 개념이 도입됨.

 

위의 특성들을 기반으로 oop를 사용하면, 데이터나 method를 계속해서 정의할 필요가 없어진다. 

 

object

  • 보거나 만질 수 있는 사물
  • python에서는 다음의 속성을 가진 데이터 덩어리를 가르킴.
    1. type: 해당 object이 무엇인지 정의
    2. id
    3. value: 앞서 type에 의해 object가 가질 수 있는 value의 범위가 결정됨.
    4. reference count: 해당 object이 얼마나 많은 곳에서 사용되는지를 count함.

예를 들어서 설명하자면, 차의 속성과 메소드를 encapsulation해서 class를 정의한다. 차클래스에서 파생하여 volvo클래스, bmw클래스를 만들 수 있다. volvo와 bmw클래스는 차클래스의 속성과 메소드를 상속받는다. 차클래스에 있는 clarksion()함수를 volvo클래스로 가져와 재정의하는 overriding(상속된 method를 sub-class에서 재정의함)을 사용할 수 있다(polymorphism).

 

*method-함수

 data-속성

 ex) 차 색상, 크기등 차의 특징은 속성(이미 정해져서 나오는 값)이고, 차가 가속하고 감속하는 것은 함수(변수에 다양한 값을 넣을 수 있음)이다.

 

  • overriding:상속된 method를 sub-class에서 재정의하는 것. 'super()'를 통해 super-class의 object를 가져와서 호출해야함. overriding을 하지 않는 경우, 기본적으로 super-class의 method를 사용한다.
  • overloading: 중복정의(python에서는 지원하지 않음)

 

 

'컴퓨터프로그래밍' 카테고리의 다른 글

Python Type  (0) 2024.05.20
VSCODE  (0) 2024.05.13
programming 소개  (0) 2024.05.01
파이썬 실행방법  (0) 2024.03.25
VSCODE에서 'hello world' 출력하기  (0) 2024.03.12