티스토리 뷰

1. 추상화

추상화라고 하는 것은 객체들의 공통적인 특징(속성 과 기능)을 뽑아내는 것이다.

즉, 우리가 구현하는 객체들이 가진 공통적인 데이터와 기능을 도출해 내는 것을 의미한다.

 

추상화는 절차지향 프로그래밍에서도 있어왔다. 대표적인 것이 구조체와 같은 사용자 데이터형이다.

이것은 데이터를 추상화해서 하나의 새로운 데이터 유형을 만드는 것이다. 예를들어 struct와 같은 구조체가 있다.

하나의 새로운 데이터형을 정의하는 데 그 안에는 여러개의 부속데이터를 둘 수 있다. 이 때 그 데이터를 추상화를 통해 정의한 것이다.


2. 캡슐화

객체지향에서 캡슐화는 데이터 구조와 데이터를 다루는 방법을 결합시켜 묶는 것을 말한다.

특정 객체가 독립적으로 역할을 제대로 수행하기 위해 필요한 데이터와 기능을 하나로 묶어 관리한다.

객체가 맡은 역할을 수행하기 위한 하나의 목적을 위해 데이터와 기능들을 묶는 것이다.

또한, 이러한 특징은 다른 의미로 사용되기도 한다. 데이터를 은닉하고 그 데이터를 접근하는 기능을 노출시키지 않겠다는 의미로 사용할 때

캡슐화라는 용어를 사용한다.


데이터와 메소드를 하나의 단위로 묶는 것으로써, 클래스 내부 정의에 대해 외부에서 볼 수 없도록 하는 것이다.

클래스에 정의된 메소드만 사용할 수 있으며, 내부의 속성과 구현을 볼 수 없게 디자인한다.

캡슐화는 객체를 외부의 부정적인 방법으로 사용하는 것을 방지하며, 사용자가 클래스의 내부에 대해 알지 못하는 상황에서도 

외부에 공개된 메소드(interface)를 통해 객체 사용을 가능하게 해준다.


3. 상속성

상속이 없으면 객체지향은 절차지향과 별 다른 바가 없다.

상속이란 특징을 가지면서 객체지향 언어가 절차지향 언어에 비해 문법의 규모가 2배 이상 늘어났다.


상속이란 상위개념의 특징을 하위개념이 물려받는 것을 말한다. 하나의 클래스가 가지고 있는 특징(데이터와 함수)들을 

그대로 다른 클래스에게 물려주고자 할 때 상속성의 특징을 사용한다.


기존에 있던 클래스를 바탕으로 다른 특성을 추가해 새로운 클래스를 만들 수 있다.


4. 다형성

다형성이란 같은 메시지에 대해 클래스에 따라 다른 행위를 하게 되는 특징이다.

일반적으로 같은 이름을 가지는 메소드에 대해 인자(Argument)의 개수와 데이터형(Data Type)에 따라 수행되는 행위가 달라짐을 의미한다.

다형성을 통해서 사용자는 약속된 인터페이스를 따르는 서로 다른 객체를 같은 방식으로 사용할 수 있게 된다.


약간 다른  방법으로 일을 하는 함수를 동일한 이름으로 호출해 주는 것을 말한다.



[출처] 

1. http://sesok808.tistory.com/ 

2. 게으른 개발자 되기 (http://blog.daum.net/question0921/1051)

'java/javascript' 카테고리의 다른 글

class 파일 컴파일 버전 확인  (0) 2014.08.26
java와 c의 차이점  (0) 2014.08.05
박싱(Boxing)과 언방식(Unboxing)  (0) 2014.04.02
int 와 Integer 차이  (0) 2014.04.02
double 연산에서 NaN 처리  (0) 2014.02.28