TIL OOP!!

전성재·2021년 2월 3일
0

OOP(Object Oriented Programming)란 무엇인가!!

객체지향 프로그래밍은 실제 세계에 기반한 모델을 만들기 위해 추상화를 사용하는 프로그래밍 패러다임이라고 한다.

객체지향 프로그래밍은 함수들의 집합 혹은 단순한 컴퓨터의 명령어들의 목록 이라는 기존의 프로그래밍에 대한 전통적인 관점에 반하여, 관계성있는 객체들의 집합이라는 관점으로 접근하는 소프트웨어 디자인으로 볼 수 있다.

쉽게 내가 이해한 관점으로는 말그대로 인간의 사고방식 체계를 코드로 옮겼다고 보면 쉬울거 같다, 기존 절차지향이 단지 위에서 아래였다면
객체지향은 각 객체간의 데이터와 메세지를 주고 받으며 작동하는, 각 객체 별도의 역할이나 책임을 갖는 작은 독립적인 기계로 볼 수 있는 것이다. 그래서 인지 오늘날 사용되는 많은 프로그래밍 언어들(자바, 자바스크립트, C#, C++, 파이썬, PHP, 루비, 오브젝트C)에서 객체지향 프로그래밍을 지원한다.

특징!

객체지향에서 빠질 수 없는 핵심 특징은 바로 Inheritance(상속), polymorphism(다형성), encapsulation(캡슐화), Abstraction(추상화)등이 있다.

  1. Inheritance(상속) :

    상속은 말그대로 무언가 물려주는, 클래스간의 연결된 특별한 버전의 클래스를 생성하는 방법이라고 생각하면 된다 상속은 부모(parent) 클래스의 인스턴스를 자식(child) 클래스에 할당함으로써 상속이 이루어진다. (다만 자바스크립트는 오직 하나의 클래스를 상속만 지원한다.)
    여기서 특별한 클래스는 자식(child)라 불리우고 원본 클래스는 흔히 부모(parent)라 불리운다. 최신 브라우저에서는 Object.create 메서드를 사용해서 상속을 수행할 수도 있다.

  2. polymorphism(다형성) :

    쉽게 말하면 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 뜻한다. 여기서 말하는 같은 타입이란 부모 클래스가 같다는 의미이다 예들들어 자동차의 바퀴 타입으로 여러가지의 것들이 있지만 바퀴의 성능은 다르다(다형성) 따라서 동일 바퀴지만 성질이나 성능이 다름을 뜻한다. 이런 효과로 객체는 부품화가 가능하다.

  3. encapsulation(캡슐화) :

    캡슐화는 외부의 잘못된 접근으로 값이 변하는 것을 막기 위해 클래스 내의 변수나 함수를 감추거나 드러내는 은닉성을 지니고 있다. 다른 사용자로 하여금 들어낼 필요가 없거나 보안적으로 알려지지 않아야 할 것 들을 말그대로 캡슐안에 넣어서 사용하는데는 지장이 없으나 속을 알지못하게 하는 것이다.

  4. Abstraction(추상화) :

    객체들에게서 공통적인 속성과 행위를 추출하는 것을 추상화라고 한다.
    세상에 모든 것을 다 클래스에 담고 객체를 만드것은 불가능하다. 그래서 추상적으로 생각해 일단 큰틀의 클래스를 구현하고 거기에 최소 이러한 공통적인 요소나 필수 적인 요소는 들어갔으면 하는 바램에서 만든 것이 추상화이다.

정리!

지금까지 객체지향 프로그래밍(OOP)에 대해 알아 보았다 글과 개념만으로는 쉽지않은 느낌이지만 실제로 사용하면서 많은 것을 더 배우고 느낄
수 있을 거라고 생각한다. 힘내자 뇌야 화이팅!

profile
항상 하는 사람

0개의 댓글