객체지향 프로그래밍이란?
- 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
- Object Oriented를 "객체 지향" 보다는 "객체 위주(주되는 것으로 삼는 것)"로 이해하는 것이 편함.
Object Oriented Analysis : 객체 갖고 분석하다
Object Oriented Design : 객체 갖고 설계하다
Object Oriented Programming : 객체 갖고 프로그램하기
즉, Object Oriented는 객체 가지고 뭔가를 하는 것.
Object와 Class
Object
- 각 Object(이하 객체)는 고유한 속성(Attribute)와 동작(Behavior)이 있다. 개체는 서로 분리되어 있으며 자신의 존재, 다른 대상과 독립적인 자신의 정체성을 가지고 있다.
- 속성(Attribute)이란 각 개체가 갖는 특징을 말하며 동작(Behavior)은 각 개체가 갖는 행동들을 의미한다.
Class
- 클래스는 같은 종류의 집단에 속하는 동작(Behavior)과 속성(Attribute)을 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형이라고 할 수 있다.
- 클래스는 표현해야하는 대상들의 공통적인 특징을 서술한 것이다.
클래스는 객체의 동작과 속성을 식별할 수 있는 곳이다. 따라서 객체의 속성과 동작은 클래스 내부에 정의된다.
Object = Instance (실체)
Class = Abstract (추상)
★다양한 용어들, 그러나 같은 뜻!
- 속성(Attribute) = Data = Member Variable = State = Field
- 동작(Behavior) = Operation = Member Function = Method
- 클래스(Class) = 개념 (Concept) = 타입(Type)
- 객체(Object) = 실체(Instance) = 변수(Variable)
객체지향언어의 특징
1. 캡슐화(Encapsulation)
데이터와 코드의 형태를 외부로부터 알 수 없게 하고 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법이다.
캡슐화의 가장 큰 장점은 정보 은닉(Information Hiding)에 있다.
외부에서 객체에 접근하는데 있어서 정보를 숨기고 객체의 연산을 통해서만 접근이 가능하게 한다는 것이다.
정보 은닉의 장점
1. 외부에서 특정 객체의 데이터 및 함수에 직접 접근하는 것을 막음으로써 변경하지 못하게 함.
2. 유지보수나 확장 시 오류의 범위를 최소화
3. 객체 내 정보손상, 오용 방지
4. 독립성 : 조작법이 바뀌어도 사용방법 자체는 바뀌지 않고 데이터가 변경되어도 다른 객체에 영향을 주지 않음.
5. 이식성 : 처리된 결과를 바로 사용
6. 객체의 모듈화 : 새로운 시스템 구성에 하나의 모듈처럼 사용 가능
2. 상속(Inheritance)
상위 클래스의 모든 것을 하위 클래스가 모두 이어 받는 것이다.
즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려준다.
하위 클래스는 상위 클래스의 모든 속성과 연산을 재정의 하지 않아도 속성으로 사용할 수 있고, 거기에 추가로 새로운 속성과 연산을 추가하여 사용할 수 있다. -> 재사용성 증가
3. 다형성(Phlymorphism)
상속과 연관이 있는 개념으로 한 객체가 다른 여러형태의 객체로 재구성 되는 것을 말한다.
쉽게 말하면 한 부모의 밑에서 태어난 자식이 똑같지는 않은것과 같다고 볼 수 있다.
자바의 오버로드(Overload) 또는 오버라이드(Override)이 다형성의 대표적인 예라고 할 수 있고, 이 것을 구현하는 것을 오버로딩(Overloading)과 오버라이딩(Overriding)이라고 한다.
간단히 말해 같은 명령을 각기 다른 오브젝트에 줄 수 있다는 뜻이다.
4. 추상화(Abstraction)
객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다.
다시 말하면 실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을 파악해서 필요없는 특성을 제거하는 과정을 가리킨다. -> 모델화
추상화는 최소의 비용으로 실제 상황에 대처할 수 있고, 시스템의 구조 및 구성을 가시적으로 볼 수 있다.
객체지향언어의 장점과 단점
장점
1. 재사용성
- 상속을 통해 프로그래밍 시 코드의 재사용을 높일 수 있다.
2. 자연스런 모델링
- 우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.
3. 생산성 향상
- 잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있다.
4. 점진적 개발
5. 견고한 의미적 모델링
6. 명확한 인터페이스 기술
7. 보안
8. 유지보수의 용이성
- 프로그램 수정 시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라 할 수 있다.
단점
1. 개발속도가 느림
- 객체가 처리하려는 것에 대한 정확한 이해가 필요하기 때문에 설계단계에서부터 많은 시간이 소요된다.
2. 실행속도가 느림
- 객체지향언어는 대체적으로 실행속도가 느리다.
3. 코딩난이도 상승
참고 사이트
The Story of Object-Oriented Programming | by Omar Elgabry | OmarElgabry's Blog | Medium
The Story of Object-Oriented Programming
The interesting story of the object-oriented programming.
medium.com
객체지향 개념 (쫌 아는체 하기) (slideshare.net)
객체지향 개념 (쫌 아는체 하기)
객체지향의 개념을 명시적(definitive)으로 정의하고 설명하고, 구조적 방법과 비교한 발표자료 입니다.
www.slideshare.net
객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전
객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러
ko.wikipedia.org
[C++] 객체지향 언어의 5가지 특징 (tistory.com)
[C++] 객체지향 언어의 5가지 특징
객체지향 기법의 특징은 크게 5가지가 있습니다. 캡슐화, 정보은닉, 추상화, 상속성, 다형성이 바로 그것이며 이중 구조적 기법과 차별되는 개념은 캡슐화, 상속성, 다형성 입니다. 객체지향
coding-factory.tistory.com
'개발 > 객체지향' 카테고리의 다른 글
OOAD(Object Oriented Analysis and Design) 이란? (0) | 2021.12.16 |
---|