컴퓨터프로그래밍/JAVA

객체지향 프로그래밍이란?

zelkova 2016. 5. 11. 08:42

<목차로 돌아가기>


  객체지향이란?

객체

객체(object)란 현실 세계에서 구별되어 존재하는 사물 또는 사상이라고 정의할 수 있다. 독립적으로 식별가능하고 상태와 행위를 가지고 있는 모든 실체는 모두 객체이다. 예를 들어, 자동차, 휴대폰, 노트북, 학생 등의 현실 실계에 존재하는 유·무형 실체나 명사를 객체라고 정의할 수 있다.


객체지향 프로그래밍

객체지향 프로그래밍(OOP, Object Oriented Programming)이란 프로그램을 구성하는 각각의 요소(객체)를 정의하고 서로 다른 요소들의 관계를 통해 프로그램을 개발하는 컴퓨터 프로그래밍의 패러다임 중 하나이다.


객체지향 프로그래밍 기법은 하나의 작업에 필요한 성질(데이터)을 클래스 내부에 모아놓음으로서 연관 데이터의 강한 결합(strong cohesion)을 이루게 하면서 각각의 클래스끼리는 독립성을 보장(week soupling)하므로 소프트웨어 공학 관점에서 소프트웨어 품질을 향상시킬 수 있다.



이러한 객체지향 프로그래밍은 기존 C, COBAL 등의 언어들이 지향하는 구조적 프로그래밍 기법에 비해 여러 가지 특징이 있다.


 - 추상화

다양한 객체들의 공통성을 도출하여 클래스(Class)또는 객체 클래스(Object Class)라는 그룹으로 다루며, 모든 객체는 유일성이 존재하여 독립적으로 식별이 가능한 것을 추상화(Abstraction)라 한다. 예를 들어, 실제로 노트북은 제조회사, 모델, 시리얼넘버 등에 따라 유일하게 식별되므로 노트북을 객체라고 할 수 있다. 또한 모든 노트북들의 공통적인 성질과 기능을 도출하여 노트북이라는 클래스로 추상화 할 수 있다.


 - 캡슐화 

객체의 구현과 사용을 독립시켜 객체의 상세한 내부 로직(Logic)과 상관업싱 객체의 사용방법(인터페이스)만 익히면 해당 객체의 사용이 가능한 것을(캡슐화)라 한다. 예를 들어 전자제품을 사용할 때 전자제품의 내부 구성요소는 캡슐화 되어 있지만 사용자의 내부 구성요소에 대해 알 필요는 없고 단지 사용방법만 익히면 가정제품을 사용할 수 있는 원리와 같다.


 - 모듈화

복잡한 시스템을 관리하기 쉬운 단위(객체 또는 컴포넌트)로 분리하여 시스템의 복잡도는 낮추고 재사용성을 높이는 것을 모듈화(Modularity)라고 한다. 모듈화하게 되면 궁극적으로 프로그램의 품질 및 생산성을 높일 수 있다.


 - 일반화

구체적인 클래스로 정의된 객체들의 공통성을 추출하여 부모 클래스로 일반화 시키는 것을 일반화(Generalization)라 한다. 트럭, 기차, 자전거 등은 각각의 객체를 가지는 클래스인데 모두 지상에서 활용되는 운송수단이므로 지상운송수단이라는 클래스로 묶을 수 있다. 즉, 임의의 클래스들 사이에 존재하는 공통사항을 모아 상위 클래스(또는 부모 클래스)를 구성할 수 있다.


상속성

일반화와 반대되는 개념으로 계층적 추상화 수준을 분할하여 다양하고 복잡한 시스템을 일반화시키기 위해 하나의 일반화된 클래스를 상세화하여 여러 클래스로 분할하여 사용하는 것을 상속성(Inheritance)이라고 한다. 이때 분할되는 클래스를 부모 클래스(Super Class)라고 하고, 분할되어 새로이 만들어지는 클래스를 자식 클래스(Sub Class)라고 한다.



반응형

'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글

JAVA - static  (0) 2016.05.11
생성자  (0) 2016.05.11
JAVA - 조건문 switch  (0) 2016.05.10
순서도  (0) 2016.05.10
API문서 살펴보는 방법  (2) 2016.05.07