객체지향언어란 ?

박지윤·2024년 12월 20일

★ 객체 지향 언어(客體指向言語 ) 사전적 의미

IT관련 객체 지향 프로그래밍에서 사용하는 언어로서, 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다
객체를 만들고 조작하며 객체끼리 메시지를 주고받고, 데이터처리와같은 관계를 맺음으로 다수의 객체가 함께 수행될 수 있게 한다.

객체지향언어 (Object-oriented Language)

객체(客體) 란 구체적인 사물, 사람 혹은 추상적인 개념이 될 수도 있는 무언가이다
컴퓨터로 예를 들자면, 컴퓨터에 쓰이는 모든 부품(모니터, 키보드, 스피커 등)과 컴퓨터가 제공하는 모든 기능(화면이 켜짐, 소리가 남 등)이 전부 객체인것이다
(사람이 말로 표현 가능한 모든 것을 객체라 할 수 있다)

객체지향언어란 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만드는 프로그래밍 언어이다
컴퓨터의 모든 부품을 적절히 연결하고 조립해서 컴퓨터가 제대로 작동하도록 만드는 것이라고 볼 수 있다

객체지향언어의 특징

객체 지향 프로그래밍은 자료 추상화를 기초로 하여 상속, 다형 개념, 동적 바인딩이 시스템의 복잡성을 제어하기 위해 서로 맞물려 기능하는 것이다.

특징으로는 크게 캡슐화, 상속, 다형성, 추상화 4가지로 나눌 수 있다.

  1. 캡슐화
    데이터와 코드의 형태를 외부로부터 알 수없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법이다.
  1. 상속
    부모가 자식에게 유전자를 물려주듯, 상위 클래스의 모든 것을 하위 클래스가 이어 받는 것이다.
  1. 다형성
    상속과 연관된 개념으로, 하나의 객체가 다른 여러 객체로 재구성되는 것이다.
    부모가 쌍둥이 자식을 낳으면 부모의 유전자가 두 명의 자식으로 재구성되는 것과 같은 이치이다.

    하지만, 그렇다고 해서 두 쌍둥이(재구성된 객체들)의 유전자가 부모(원 개체)의 유전자와 똑같다고 볼 수는 없다. 자바의 오버로드, 혹은 오버라이드 다형성이 이 다형성을 드러내는 대표적인 예이다

  1. 추상화

    실존하는 객체의 여러 특성 중, 프로그램을 만드는데 필요한(공통적인) 부분만 파악해서 추출하고 필요하지 않은 것은 제거하는 것이다.

객체지향언어의 장점

  1. 재사용성
    '상속'이 가능하기 때문에 코드를 재사용할 수 있어 편리하다.
  1. 생산성 증가
    컴퓨터가 고장났을 때, 문제가 되는 부품만 수리하면 다시 정상 가동된다. 마찬가지로 독립된 객체로 이루어져있기 때문에 생산적으로 작업할 수 있고, 유지 및 보수가 용이하다
  1. 자연스러운 모델링
    앞서 말했듯, 객체는 세상에 존재하는 모든 것입니다. 객체지향언어 자체가 우리가 사는 세상을 닮았기 때문에 개발자가 생각하는 대로 자연스럽게 구현할 수 있다.

객체지향언어의 단점

  1. 느린 개발 속도
    모든 객체의 역할과 기능을 이해해야 하기 때문에 프로그래밍에 많은 시간이 소요된다.
  1. 느린 실행 속도
    객체지향언어의 처리 속도는 절차지향언어보다 느리다.
  1. 코딩난이도 상승
    다중 상속이 지원되는 C++ 같은 경우에 너무 복잡해져 코딩의 난이도가 상승할 수 있다.

객체지향언어가 절차지향언어의 단점을 보완하고자 등장했다고 해서 무조건적으로 우수하다고 할 수는 없다. 구조와 특징이 명확히 다를 뿐, 어떻게 활용하느냐에 따라 다른것이다.

객체지향언어로는 우리가 익히 들어 알고있는 자바, c++, 파이썬 이외에도 최초의 객체지향언어인 시뮬라67, 비주얼 베이직 닷넷, 액션스크립트, 스위프트 등 종류는 다양하다

기본 구성 요소

  • 클래스(Class)
    같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user defined data type)이라고 할 수 있다. 클래스는 다른 클래스 또는 외부 요소와 독립적으로 디자인하여야 한다.
  • 객체(Object)
    클래스의 인스턴스(실제로 메모리상에 할당된 것)이다. 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있다. 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다.
  • 메서드(Method), 메시지(Message)
    클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다. 메서드는 한 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용된다. 또 객체 간의 통신은 메시지를 통해 이루어진다.

0개의 댓글