먼저 객체지향 프로그래밍이 뭔지 알기 전에, 객체와 클래스에 대해서 알아보자.
객체와 클래스
객체란?
- 구체적인 추상적 데이터의 단위이다.
- 객체의 속성은 클래스의 맴버 변수로 선언 한다
- 클래스의 모양 그대로 찍어낸 실체다.
- 프로그램 실행중에 생성되는 실체이다.
- 메모리 공간을 갖는 구체적인 실체
- 인스턴스(instance)라고도 부른다.
클래스란?
- 객체를 만들어내기 위한 설계도 혹은 틀
- 객체의 속성(state)과 행동(behavior) 포함.
예)
클래스 | 객체 |
---|
사람 | 나, 너, 이웃집아저씨 |
붕어빵틀 | 구워진 붕어빵 여러개 |
소나타 자동차 | 출고된 실제 소나타 20대 |
그럼 이제 객체지향 프로그래밍이란 무엇일까?
객체지향 프로그래밍(OOP)란?
프로그램의 구현을 시간의 흐름순이 아닌 객체간의 관계와 협력을 기반으로 프로그래밍 하는것이다. 즉, 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징을 뽑아와 프로그래밍 하는것이다.
객체를 정의하고 각 객체의 속성을 맴버 변수로 역활을 매서드로 구현하고 각 객체간의 협력을 구현하는 것을 말한다.
객체지향 프로그래밍의 장점
-
소프트웨어의 생산성 향상
- 컴퓨터 산업의 발전에 따라 소프트웨어의 생명 주기(Life Cycle) 단축됨에 따라 소프트웨어를 빠른 속도로 생산할 필요성이 증대해졌다.
- 객체지향 언어
- 캡슐화, 상속, 다형성, 객체 등 소프트웨어 재사용을 위한 여러 장치가 내장되어있다.
- 소프트웨어 재사용과 부분 수정이 빠르다.
- 소프트웨어를 다시 만드는 부담이 줄어들었다.
- 소프트웨어의 생산성이 향상되었다.
-
실세계에 대한 쉬운 모델링
- 컴퓨터 산업 초기때는 수학계산/통계 처리를 하는 등의 처리과정, 계산 절차가 중요했지만 현대에는 절차나 과정보다 물체(객체)들의 상호작용으로 묘사하는 것이 용이해졌기 때문
-
보안성 향상
- 객체지향의 캡슐화 특징으로 실제 구현되는 부분을 외부에서 볼 수 없으므로 정보 은닉 가능.
객체지향 프로그래밍의 단점
-
느린 개발속도
- 모든 객체의 역활과 기능을 이해해야 하기 때문에 프로그래밍에 많은 시간이 소모된다.
-
느린 실행속도
- 절차지향 프로그래밍에 비해 느린 실행속도
- 메모리와 연산에 대한 비용이 증가한다.
-
높은 난이도