클린아키텍쳐-구조적 프로그래밍

클린아키텍쳐

객체지향 프로그래밍

객체 지향이란 무엇인가? 데이터와 함수의 조합? 이것은 만족스러운 대답이 아니다.

캡슐화, 상속, 다형성

캡슐화

OO를 정의하는 요소중 캡슐화를 언급하는 이유는 데이터와 함수를 쉽고 효과적으로 캡슐화 하는 방법을 OO언어가 제공하기 때문이다.

헤더와 구현체를 분리하는 방식을 버리면서 강력한 캡슐화에 의존하는 정의는 받아 들이기 힘들어졌다.

상속

OO 언어가 더 나은 캡슐화를 제공하지 못했지만 상속만큼은 OO 언어가 확실히 제공했다.

OO 언어가 고안되기 이전에도 상속과 비슷한 기법이 사용되었다고 말할 수 있다.

OO 언어가 새로운 개념을 만들지는 못했지만 데이터 구조에 가면을 씌우는 일을 상당히 편리한 방식으로 제공했다고 볼 수는 없다.

다형성

함수를 가리키는 포인터를 응용한것이 다형성이라는 점이다.

OO 언어는 다형성을 제공하지는 못했지만, 다형성을 좀 더 안전하고 더욱 편리하게 사용할 수 있게 해준다.

OO 언어는 제어흐름을 간접적으로 전환하는 규칙을 부과한다고 결론지을 수 있다.

다형성이 가진 힘

플러그인 형태를 유지할수 있다.

플러그인 아키텍처는 이처럼 입출력 장치 독립성을 지원하기 위해 만들어졌고 등장 이후 거의 모든 운영체제에서 구현 되었다.

OO의 등장으로 언제 어디서든 플러그인 아키택처를 적용할수 있게 되었다.

의존성 역전

인터페이스 사이의 소스 코드 의존성이 제어흐름과는 반대인점 이를 의존성 역전이라고 부른다.

OO 언어로 개발된 시스템을 다루는 소프트웨어 아키텍트는 시스템의 소스코드 의존성 전부에 대해 방향을
결정할수있는 절대적인 권한을 갖는다.

이것이 바로 OO가 제공하는 힘

시스템의 모듈을 독립적으로 배포할 수 있게 된다 이것은 개발 독립성을 갖게 된다.

참조