Python 36 - 객체 지향 언어, 객체 지향 프로그래밍 언어

2021. 5. 28. 16:50python

반응형

객체 지향 의 사전적 의미

IT관련 객체 지향 프로그래밍에서 사용하는 언어로서,

객체를 만들고 조작하며 객체끼리 관계를 맺음으로써 다수의 객체가 함께 수행될 수 있게 한다.

객체[Object]

객체(Object)란?

세상에 존재하는 모든것을 의미합니다.

즉, 주변에 있는 사물이나 생명체 같은 모든것들을 말합니다.
프로그래밍에서의 객체는 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹이라고 볼 수있습니다.

 

컴퓨터(PC)로 예를 들어보겠습니다.
컴퓨터(PC) = 데이터(본체, 모니터, 키보드, 마우스, 스피커.......등등) + 기능(화면제공, 소리, 입력, 출력.......등등)

위의 공식에 객체를 적용하면 이해하기가 쉬울거라 생각합니다.

객체[주변에 있는 모든 사물이나 생명체 등]

 

객체지향언어(Object-Oriented Programming, OOP )

객체지향언어란?
컴퓨터 프로그래밍의 한가지 기법으로 객체를 만들고 객체를 사용하는 프로그래밍 방법.
프로그램을 그저 데이터와 처리방법으로 나누는게 아니고, 프로그램을 다수의 "객체"를 만들고,

이들이 서로 상호작용을 통해 만들어지는 방식이다.

 

컴퓨터(PC)를 예로 들어 보겠습니다.

컴퓨터 한대를 완성하려면 CPU, RAM, BOARD, SSD, HDD, VGA, POWER, CASE 등 여러가지 부품이 있어야 합니다.
부품 하나하나가 연결이되고 조립이 되어야 사용하는 컴퓨터의 기능이 제대로 작동되고 사용 할 수있게 됩니다.
여기서 컴퓨터 부품(주변기기)들을 객체라고 생각하시면 됩니다.

 

각 부품들의 역할이 나뉘어져 있고 사용하고자 하는 부분에 대해서 각 부품들이 작동을 하게 됩니다.
고장이 나더라도 해당 부품만 수리 및 교체를 하면 간단하게 해결할 수 있습니다.

그렇기 때문에 유지보수도 쉽고 편해집니다.

즉, 명령어들로 이루어진 목록이 아닌 하나하나의 독립된 "객체"들의 그룹으로 생각하면 되고, 객체간의 메시지를 주고 받음으로서 쉽게 연결이 가능합니다.

객체지향언어

 

객체지향언어의 특징

위에서 예를 들었듯 객체지향은 하나의 조립PC 같은 컴퓨터와 같다고 생각 할 수있습니다.

이를 기반으로한 객체지향의 특징에 대해서 알아 보겠습니다.

 

캡슐화(Encapsulation)
데이터와 코드의 형태를 외부로부터 알 수없게 하고, 데이터의 구조와 역할, 기능을

하나의 캡슐형태로 만드는 방법입니다.

객체지향언어 - 캡슐화

상속(Inheritance)
상위 클래스의 모든걸 하위 클래스가 모두 이어 받는것 입니다.

즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려줍니다.

객체지향언어 - 상속

다형성(Polymorphism)
상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것을 말합니다.
쉽게 말하면 한부모의 밑에서 태어난 자식(쌍둥이포함)이 똑같지는 않는것과 같은 것과 같다할 수 있습니다.
자바의 오버로드(Overload) 또는 오버라이드(Override) 다형성의 대표적인 예라 할 수있고,

이 것을 구현하는걸 오버로딩(Overloading)오버라이딩(Overriding) 이라고 한다.

객체지향언어 - 다형성

추상화(abstraction)
추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것을 말합니다.
다시 말하면 실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을 파악해서

필요없는 특성을 제거하는 과정을 가르킵니다.

객체지향언어 - 추상화

객체지향언어의 장점

객체지향언어 - 장점

1. 재사용성
상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음.

 

2. 생산성 향상
잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있음.

 

3. 자연적인 모델링
우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.

 

4. 유지보수의 우수성
프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라할

수 있다.

 

객체지향언어의 단점

객체지향언어 - 단점

1. 개발속도가 느린점
객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.

 

2. 실행속도가 느린점

객체지향언어는 대체적으로 실행속도가 느리다.

 

3. 코딩난이도 상승
다중 상속이 지원되는 C++ 같은 경우에 너무 복잡해져 코딩의 난이도가 상승할 수 있다.

반응형