객체지향 언어란 ?

박성현·2024년 3월 12일

java

목록 보기
2/51

🌟 객체지향언어

먼저 객체 란 구체적인 사물, 사람, 추상적인 개념이 될 수 있는 무언가 이다.
컴퓨터로 예를 들면, 컴퓨터에 쓰이는 모든 부품과 컴퓨터가 제공하는 모든 기능이 전부 객체이다.
객체지향언어 란 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만드는 프로그래밍 언어이다. 컴퓨터의 모든 부품을 적절히 연결하고 조립해서 컴퓨터가 제대로 작동하도록 만드는 것이라고 볼 수 있습니다.
우리가 들어보고 알고 있는 자바, C++, 파이썬 등등이 있다.

객체지향언어 특징

객체지향 언어의 특징은 크게 4가지로 나눌 수 있다.

  1. 캡슐화 (Encapsulation)
    : 데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것이다. 이 특징 때문에 데이터와 코드의 형태를 외부에서 알 수 없다. 캡슐화 되어 있지 않은 데이터와 코드는 사용하기 어렵다.

  2. 상속 (inheritance)
    : 부모와 자식간에 유전자를 물려주듯이 상위 클래스의 모든 것을 하위 클래스가 물려받는 것이다.

  3. 다형성 (polymorphism)
    : 상속과 연관된 개념으로, 하나의 객체가 다른 여러 객체로 재구성 되는 것이다.
    부모가 쌍둥이 자식을 낳으면 부모의 유전자가 두 명명의 자식으로 재구성되는 것과 같은 개념이다. 하지만 그렇다고해서 두 쌍둥이(재구성된 객체들)의 유전자가(원 개체)의 유전자와 똑같다고 볼 수 없다. 자바의 오버로드, 오버라이드 다형성이 이 다형성을 보여주는 대표적인 예이다.

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

객체지향언어의 장점

  1. 재사용성
    : 상속이 가능하기 때문에 코드를 재사용할 수 있어 편리하다.

  2. 생산성 증가
    : 컴퓨터가 고장났을 때 문제가 되는 부품만 수리하면 다시 정상 가동됩니다.
    마찬가지로 독립된 객체로 이루어져 있기 때문에 생산적으로 작업할 수 있고, 유지보수가 용이하다.

  3. 유동적인 모델링
    : 객체는 세상에 존재하는 모든 것이다. 객체지향언어 자체가 우리가 사는 세상을 닮았기 떄문에 개발자가 생각하는대로 자연스럽게 구현할 수 있다.

객체지향언어의 단점

  1. 느린 개발 속도
    : 모든 객체의 역할과 기능을 이해해야하기 때문에 프로그래밍에 많은 시간이 소요된다.

  2. 느린 실행 속도
    : 객체지향언어의 처리 속도는 절차지향언어보다 느리다.

  3. 높은 난이도
    : 객체지향언어는 대체로 난이도가 높다. 특히 다중 상속이 지원되는 C++은 어렵다.

절차지향언어

  • 절차지향 프로그래밍에 쓰이는 언어를 절차지향언어라고 하며, 대표적인 예로 c언어가있다.
  • 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 한다.
  • 자돈차 제조를 예로 들자면, 자동차는 엔진, 차체, 핸들, 의자, 바퀴 순으로 차례대로 만들어 져야하고 서로 분리되어도, 순서가 틀려도 안된다.

단점

  1. 유지보수가 어렵다.
    : 모든 구성요소가 유기적으로 연결되어 있다는 것은 한 부분이 고장나면 시스템의 전체가 고장난다는 뜻이다.
  2. 순서가 엄격히 정해져 있어 효율이 떨어진다.
    : 실행 순서가 정해져있기 때문에 코드의 순서가 바뀌면 결과가 달라질 확률이 커진다. 즉, 언어의 적응성이 부족하여 생상 효율이 떨어진다.

객체지향언어가 절차지향언어의 단점을 보완하고자 만들어졌다고 마냥 우수하다고 볼수는 없다. 구조와 특징이 다를 뿐, 어떻게 활용하느냐에 따라 다르다.

profile
개발기록장

0개의 댓글