2020. 11. 5. 17:45ㆍOOP
- 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(-)
- 앞의 두 개는 공통결합이 생길 가능성이 높아 지양