본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


객체지향 OOP

객체지향 이란 ? 2 - 객체지향의 4가지 특성

반응형

1. 캡슐화 

 

 캡슐화는 객체의 속성(Variable)을 보호하기 위해서 사용 된다.  객체의 캡슐화는 현실 세계에서도 볼 수 있다. 컴퓨터 본체 안에 수 많은 부품이 있지만 ,전원을 켜기 위해서는 메인보드에 전기 신호를 직접 주는 것이 아닌, 외부 케이스에 있는 전원 버튼을 통해서 상태 속성을 On/Off 하도록 변경 한다.

 

Method 설계

 

 -  속성이 선언되었으나 , 이의 상태를 변경하는 Method 가 없다면 ,잘못 선언된 속성이다.  즉 , 자신이 가지고 있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다. 

 

- 실물 객체가 가진 기능을 모두 제공해야 한다. 예를들면 자동차의 렌탈, 반납, 주행거리 계산등

 

- 각각의 Method는 서로 관련성이 있어야 한다. 차량의 렌탈. 반납,  자동차 등록증 등록/해지 등 각 속성의 상대 되는 기능을 제공해야 한다. 

 

- 객체 안의 Method는 개체 안의 속성을 처리해야 하며 , 다른 객체를 전달받아 해당 다른 객체에 정의 된 속성을 직접 처리하면 안 된다 .

단 , Method에 실행에 필요한 값들은 객체의 형태가 아닌 매개변수의 형태로 전달되어져야 한다. 

 

-Getter. / Setter Method 

 

  외부에서 내부 속성에 직접 접근 하는 거싱 아닌 Getter/ Setter Method를 통해서 접근하도록 적용

 

-CRUD Method

 

 데이터 처리를 위한 기본적인 CRUD Method를 제공

 

- Business Logic Method 

 

 비지니스 로직 처리를 위한 Method를 제공

 

- 객체의 생명 주기 처리

 

 흔히 destory(), disconnect() , quit()등 소멸에 대한 method

 

-객체의 영구성 관리 method

 

  영구성(유효성) 속성에 대한 변경이 외부에서는 접근이 불가능 하도록 private로 선언하며 내부의 다른 Method를 통해서 사용 되도록 한다. 

 

Method의 속성은 받드시 1개에 속할 필요는 없으며 , 여러개의 속성을 변경해도 된다.

 

캡슐화의 장점

 

 -객체지향의 패러다임 중 하나인 추상화를 제공한다.

 

  실제로 Method가 어떻게 동작하는지는 외부에서는 이해할 필요가 없으며 , 이를 단순 호출만으로 해당 기능을 실행 할 수 있고 , 이를 통해서 개체 단위로 프로그램 설계가 가능하다. 

 

-재 사용성 향상

 

 한 객체에 관련된 속성 및 Method는 모두 캡슐화의 형태로 제공됨으로 , 객체의 모듈성과 응집도가 높아진다. 이를 통하여 재 사용성이 높아진다. 만일 절차적 프로그래밍에서 ,Method를 재사용한다면 , 함수가 참고하고 있는 전역변수 및 내부에서 호출하는 Method가 미치는 영향을 모두 체크 해야 하느 , 객체의 경우는 단일 객체에만 영향을 주기 떄문에 재사용 성이 높다 

 

-유지 보수의 효율성이 향상 된다 . 

 

-무결성 보장

 

 보통의 캡슐화 코딩이라하면 ,주로 변수는 private로 선언하고 , Method를 public으로 선언하는 형태를 만이 가지게 된다 . 이는 개체의 무결성을 위함이며 , Getter/Setter를 제외 하고는 public Method는 입력된 매개변수를 Validation을 한 후에 실행 하는 것을 기본으로 한다. Validation을 통해 , 객체의 값을 바꾸거나 , 값에 대한 유효성을 가질 수 있다. 

 

 

2.상속

객체지향에서 상속은 속성의 상속이 아닌 하위로 내려갈 수록 구체화 되는 것이다 .

 

 

상속의 효과

 

- 프로그램 구조에 대한 이해도 향상

 

 최상위 클래스의 구조를 보고 , 하위 클래스의 동작을 이해 할 수 있다 .

 

- 재사용성 향상

 

 상송을 통해 , 해당 클래스에 필여한 속성 및 메소드를 모두 정의 하지 않고 , 상속을 받아서 사용할 수 있다. 

 

- 확장성 향상 

 

 일관된 형태의 클래스 객체를 추가할 수 있어 , 간단하게 프로그램 확장이 가능하다. 

 

- 유지보수성 향상 

 

 각 객체마다 , 자신의 메소드를 정의 하고 있다면, 코드 수정에서 많은 작업이 필요 하지만, 상속을 사용한 경우 일관된 형태로 작성이 가능하다.

 

3. 다형성

 - 다형성은 하나의 개체가 여러 개의 형태로 변화 하는것을 말하며 ,이를 객체지향에서도 유사하게 사용 하고 있다 . 

 

 

4. 추상화 

 - 객체지향에서의 추상화는 모델링이다 . 

 - 구체적으로 공통적인 부부느 또는 특정 특성을 분리해서 재조합 하는 부분이 추상화이다. 

 - 다형성 ,상속 모두 추상화에 속한다.

 

 

반응형

'객체지향 OOP' 카테고리의 다른 글

객체지향 이란? 4 - POJO  (0) 2021.05.05
객체지향 이란? 3 - 객체지향 설계 5원칙 SOLID  (0) 2021.05.04
객체지향이란?  (0) 2021.05.04