OOP란 무엇일까?

shin_stealer·2020년 12월 12일
0

Object
Oriented
Programming

객체 지향 프로그래밍

객체 지향 프로그래밍은 컴퓨터 프로그램을 "객체"들의 모임으로 파악하고자 하는 프로그래밍의 패러다임 중 하나이다.

여기서 말하는 객체는 서로 연관되어있는 변수와 함수들을 하나의 group 으로 만드는 것이다.

레고와 같은 블럭을 서로 결합하여서 하나의 완제품을 만드는 것처럼,

oop에서는 객체가 블럭의 역할을 한다.
객체와 객체를 유기적으로 연결하여서 하나의 프로그램을 완성하는 패러다임이다.

*패러다임이란?
어떤 한 시대 사람들의 견해나 사고를 지배하고 있는 이론적 틀이나 개념의 집합체

각 객체들은 서로 메세지를 주고 받을 수 있으며 데이터를 처리할 수 있다.

객체지향은 복잡하게 얽혀있는 함수들을 구분하여 한 단계 더 큰 틀("객체")에 넣어서 구분, 정리 정돈 할 수 있게 되는 것이다.

이것이 객체 지향 프로그래밍이 필요한 이유 중의 하나이다.

만약 절차 지향 방식으로 만들어진 프로그램에서 무언가 오류가 발생하게 된다면, 그 오류를 찾기 위해서 프로그램의 모든 함수들을 검토해봐야 한다.

하지만, 객체 지향 프로그래밍에서는 오류가 생긴 "객체"를 위주로 검토하여 보다 쉽게 문제를 해결할 수 있게 된다.

OOP의 장점과 단점

장점

  • 코드의 재사용성이 높아진다.
  • 유지 보수가 쉬워진다.
  • 절차지향프로그래밍에 비해 코드의 정리정돈이 쉽다.

단점

  • 처리 시간이 오래 걸릴 수 있다.
  • 프로그램을 설계할 때 많은 고민이 필요하다.

OOP의 특징

  1. 추상화 - 객체에서 공통된 속성과 행위를 추출하는 것
    ex) 자동차 -> 현대, 기아, BMW, etc..

  2. 캡슐화 - 프로그램의 세부사항을 외부로 드러나지 않도록 특정 클래스로 감추는 것 (접근 제어자)

  • 실제로 구현 부분을 외부로 드러나지 않게 하는 것
    ex)알약
  1. 은닉화 - 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고, 자신의 연산만을 통하여 접근을 허용하는 것.

  2. 상속성 - 객체의 변수나 함수를 다른 객체에 물려주거나 물려 받는 것
    ex) 동물 - 고양이, 강아지

  3. 다형성 - 같은 이름을 가진 변수나 메소드가 상황에 따라서 다른 결과를 내는 것
    ex) 핸드폰 키패드 (폴더)

같은 모양의 코드가 다른 행위를 하는 것
마치 우리가 핸드폰에 있는 키패드로 다이얼을 누르거나, 문자를 하거나, 게임을 하는 것까지 가능한 것처럼 모양은 같은데
다른 기능을 수행하는 것이 디바이스 기반의 다형성의 한 예시이다.

profile
I am a Blacksmith.

0개의 댓글