객체지향 뜻과 개념에 대해서 알아봅시다.
객체지향 뜻과 개념 설명
객체지향(Object Oriented)은 프로그램이나 사양을 만들 때 발상 중 하나입니다.
객체지향은 비슷한 것들을 하나라 묶는 발상입니다. 그래서 객체지향 프로그래밍(Object Oriented Programming)은 프로그램을 상태(State)와 행위(Behave)로 이루어진 객체의 기본 단위로 구분한 후 해당 객체들 간의 상호작용을 통해서 프로그램을 설계하고 개발을 진행하는 방법론입니다.
객체지향 언어는 4가지 중요한 특징이 있습니다.
객체지향 언어의 4가지 중요한 특징은 캡슐화와 정보은닉, 추상화, 상속성, 다형성입니다.
1. 캡슐화와 정보은닉
캡슐화(Encapsulation)은 데이터와 데이터를 처리하는 함수를 하나로 묶는 개념입니다. 클래스는 객체를 만들어 내는 틀이며 객체는 틀을 통해서 만들어지는 실체입니다. 정보은닉(Information Hiding)은 캡슐화에서 가장 중요한 특징으로 다른 객체에게는 자신의 정보를 감추고 자신의 연산(메소드) 만을 통해서 접근을 허용합니다.
2. 추상화
추상화(Abstraction)는 복수의 객체들 중에서 공통적인 속성과 기능, 특징을 도출하는 것입니다. 예를 들어 컴퓨터 제품들의 이름과 제조사가 모두 다르더라도 CPU, 메인보드, 램, HDD, 그래픽카드, 케이스와 같은 공통적인 특징이 있다면 모두 컴퓨터라고 부르는 것을 추상화라고 합니다. 엔진, 타이어, 핸들로 구성된 자동차나 CPU와 디스플레이로 구성된 스마트폰도 마찬가지 예입니다.
3. 상속성
상속성(Inheritance)은 기존에 정의된 부모라고 부르는 상위 클래스의 모든 속성과 연산(메소드)을 하위 클래스가 물려 받는 것을 의미합니다. 여기서 메소드는 메시지를 실행시킬 프로시저입니다. 상속은 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법이며 기존 코드를 재사용하는 것입니다. 이를 통해 프로그램을 쉽게 확장할 수 있습니다.
4. 다형성
다형성(Polymorphims)은 하나의 변수나 함수가 상황과 메시지에 따라서 다른 의미로 응답을 하는 것을 의미합니다. 다형성은 하나의 이름과 방법으로 여러 상황에 대처하는 기법입니다.
객체지향 뜻과 의미 이해
객체지향 뜻(Concept of Object Oriented)은 프로그램이나 사양을 추상화 한 물체에 대한 조작으로서 표현하는 발상을 의미합니다. 추상화는 비슷한 성질을 가지고 있는 여러 개의 물체를 하나의 추상적인 물체로 생각하는 방식입니다.
추상화라는 것을 통해 여러 개의 물체를 하나의 모델로 파악하여 효율적인 프로그램 개발이 가능해집니다.
추상화의 포인트는 무엇을 추상화 하느냐 입니다. 무엇을 추상화할지에 대해서는 추상화 한 정보의 용도에 의해서 결정되게 됩니다. 추상화 하기 위해서는 대상물에서 필요한 부분에 주목해서 해당 특징을 추출해야 합니다.
객체지향에서는 클래스와 인스턴스 개념이 있습니다. 공통의 특징을 가지고 있는 추상화한 물체를 클래스(Class)라고 하며 클래스에 포함되는 개별적인 물체를 실체라는 뜻으로 인스턴스(Instance)라고 합니다.
프로그래밍 언어에는 많은 종류들이 있는데 프로그래밍 언어를 크게 나눈다면 2가지로 나눌 수 있으며 2가지 종류의 언어는 객체지향 언어와 절차지향 언어입니다.
객체지향은 실제 세계를 모델링(Modeling)해서 프로그램을 개발하는 방법이며 객체 지향 프로그래밍의 경우 데이터와 절차를 한 개의 덩어리로 묶어서 생각하게 됩니다.
객체지향 언어는 장점과 단점이 존재합니다.
1. 객체지향 언어의 장점
객체지향 언어는 상속을 통해서 프로그램 코드를 작성할 경우 코드의 재사용률을 높여서 재사용이 용이하다는 장점이 있습니다. 또한 잘 설계된 클래스를 통해서 독립적인 객체를 활용하여 개발의 생산성을 높일 수 있습니다. 객체라는 개념은 자연적인 모델링이며 생각한 것을 그대로 구현 가능하다는 장점이 있습니다. 객체지향 언어는 유지보수 측면에서도 쉽고 용이하다는 장점을 가지고 있습니다.
2. 객체지향 언어의 단점
객체지향 언어는 실행속도가 느리다는 단점이 있습니다. 객체지향 언어와 대비되는 절치지향언어는 대표적으로 C언어가 있는데 절차지향 언어는 컴퓨터의 처리 구조와 유사하기 때문에 실행 속도가 빠르지만 객체지향 언어는 상대적으로 실행속도가 느립니다. 객체지향 언어의 대표적인 예는 자바(Java)와 C++, 파이썬(Python), 루비(Ruby)가 있습니다. 또한 객체지향 언어는 프로그램 용량이 매우 큽니다. 객체 단위의 프로그램의 경우 불필요한 정보들이 함께 들어갈 수 있기 때문에 프로그램 용량이 클 수 밖에 없습니다.
객체지향 언어는 설계를 위해서 많은 시간이 필요합니다. 클래스 별, 객체별 설계가 필요하고 상속 구조를 설계해야 하기 때문에 절차지향 언어에 비해서 설계에 더 많은 시간이 들어갈 수 밖에 없습니다.
객체지향 뜻과 객체지향 언어는 상태와 행위로 이루어진 객체라고 하는 기본 단위로 나눌 수 있고 객체들 간 상호작용 구조를 통해서 프로그램을 설계한 후 개발을 진행하는 프로그램 개발 방법이며 객체 지향에서는 캡슐화, 추상화, 상속성, 다형성의 4가지 중요한 특징이 있습니다. 객체지향 뜻과 객체지향 언어의 장점과 단점은 재사용이 가능하고 생산성을 높일 수 있고 유지보수가 쉬운 반면 실행속도가 느리고 설계 시간이 오래 걸린다는 한계가 있습니다.