상세 컨텐츠

본문 제목

[객체지향개발론] 객체 지향(Object Oriented) 원리

자료실/컴퓨터 공부

by 깔깔앵무 2020. 6. 22. 22:53

본문

반응형

이번 포스트는 객체 지향의 원리에 대해서 적어보도록 한다.

 

 

 

 


1. 추상화(Abstraction)

: 중요한 정보는 살리고 그렇지 않은 것은 지우는 행위

 

- 프로세스 추상화 : 프로그램에서 자주 나오는 상세한 부분을 함수로 묶어 호출하는 것. 이해하기 쉽고 간단한 모양으로 만든다 ( 예시 : "Hello, World!"라고 출력하는 프로세스를 printf("Hello, World!";라 표현할 수 있다.)

 

- 데이터 추상화 : 데이터 타입 등의 속성을 추출하는 것. 클래스를 이용해 데이터와 프로세스를 함께 추상화의 구조에 넣어 완벽한 추상화를 실현함.

 

 

2. 캡슐화(Encapsulation)

: 인터페이스만 알면 어떻게 동작 하는지는 몰라도 사용할 수 있게 하는 것을 말한다. 객체의 상세한 내용을 객체 외부에 철저히 숨기고 단순히 메시지 만으로 객체와의 상호작용을 하게 하는 것이다.

 

(예시 : 자동차가 어떤 원리로 움직이는 지는 몰라도 액셀을 밟으면 전진하는 것은 알고 있음)

 

이렇게 원리 정보가 보이지 않아 '정보 은닉(information hiding)'이라고도 한다.

 

 

3. 상속성(Inheritance)

: 객체 지향 프로그래밍 관점에서 상속관계를 말한다. 여러 개체들이 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립시키는 과정을 말한다. 이는 클래스를 구조화하는 방식이다.

- "is a kind of", "is-a" 관계이기도 하다.

 

참고 ) 다중 상속성(Multiple Inheritance) : 부모클래스가 여러 개, 자식 클래스는 수가 적음 (C++, JAVA 등)

 

 

4. 다형성(Polymorphism)

: 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력

 

(예시: JAVA에서는 같은 이름의 함수라도 Override해서 다르게 동작할 수 있다)

 

 

5. 객체 조립성(Composition)

: 'has-a' 관계( 예시 : 자동차는 엔진을 갖는다 )로 runtime에서 인터페이스와 관련해서 다이나믹하게 정의된다.  이는 기존 클래스를 compose하여 새로운 클래스를 만드는 것이다.  

 

 

6. 인터페이스(Interface)

: 우리가 객체에게 할 수 있는 요청을 말한다. (이 요청을 충족시키는 코드를 구현(Implement)라고 한다.)

- 인터 페이스는 다형성을 공식화 한다.

- 'plug-and-play' 구조를 서포트한다.

 

 

7. 추상 클래스(Abstract Class)

: Direct instance를 갖지 않는 클래스(설계만 되어있는 클래스)를 말한다. 자식 클래스에서 상속 관계로 내려받는다.

 

 

 

 

 

 

반응형

관련글 더보기