OOP (1)

2020. 11. 5. 17:45OOP

  • IT 관점의 Communication과 Layer

- 협업하는 객체 간의 커뮤니케이션

- protocol은 규약

- layer를 통해 객체 간 독립성 / 결합성, 복잡성

 

 

  • OOP

- OOP란 programming의 패러다임

OOP는 이전 시대(시대라고 해봤자 몇 십년 단위)를 아우르던 프로그래밍 경향에서 불편함을 보완하기 위해 등장

OOP 이전에는 procedural programming, structured programming 등이 있음

 

- concept가 선행되어 feature이 나옴

으레 OOP의 특징은 상속, 다형성, 캡슐화, 추상화라고 하지만, 이것들에 대한 요구(의도)가 있었기 때문에 그 특징이 나온 것임

그래서 OOP의 특징이 아닌 컨셉이라고 보아야 함

(위 얘기의 출처는 랩장님인데 이게 100퍼센트 맞다 아니다라고 보기 보다는, OOP의 등장배경과 보다 본질적으로 접근하자면 이러하다 라고 이해하면 될듯)


- Inheritance:

상속(extend의 개념)

수직적/ 수평적 확장

재사용

 

- Polymorphism:

동형이상, 환경에 의해 영향을 받음


- Encapsulation:

내부의 변화가 외부에 영향을 끼치지 않음(흔히 말하는 정보 은닉)

접근제어자로 정보 은닉의 권한을 조절


- Abstraction:

현실의 객체를 소프트웨어적 관점으로 재구성(object-class-instance)

설계 시 가장 중시됨

분해-재조립

 

 

  • 접근제어자

- public(+), package(~), protected(#), private(-)
- 앞의 두 개는 공통결합이 생길 가능성이 높아 지양