티스토리 뷰

ooad

Object Oriented Principles

dictee 2019. 4. 29. 00:00

※ tutorialspoint의 OOAD 요약 (https://www.tutorialspoints.com/object_oriented_analysis_design/)

Principles of Object-Oriented Systems

object-oriented system은 object model 기반. 

Major Elements: 하나라도 없으면, object oriented를 포기하는 것을 의미

  • Abstraction, Encapsulation, Modularity, Hierarchy

Minor Elements: 유용하지만, 필수는 아닌 것들

  • Typing, Concurrency, Persistence

Abstraction

OOP의 object의 본질적인 특징에 집중하며, 외부 또는 우발적인 특성은 무시. 본질적인 특징은 object가 사용되는 context와 관련. (본질적인 특징: object를 다른 object들과 구분하는 특징)

Example

Student class 설계 시, enrolment_number, name, course, address attribute는 포함, pulse_rate, size_of_shoe 특성은 제외 (교육 기관 관점에서)

Encapsulation

class 내에서 attribute, method를 하나로 binding 하는 과정. 이것을 통해, class의 내부 정보는 외부로부터 숨겨진다. class는 class가 제공하는 서비스를 사용할 수 있는 인터페이스 제공을 method로 갖는다.

Modularity

문제를 일련의 모듈로 분해하는 과정. 문제의 전체적인 복잡도를 낮춘다. (모듈은 응집도가 높고, 느슨하게 연결되어야 한다.)

encapsulation과 관련. 

Hierarchy

abstraction의 랭킹 또는 순서. hierarchy를 통해, 시스템은, 최소 단위에 이르기까지, 자신의 subsystem을 가질 수 있는, 서로 관련있는 subsystem들로 구성된다. "divide and conquer". 코드 reusability.

  • "is-a" hierarchy: 상속에서 hierarchical 관계. 예) a rose "is-a" flower
  • "part-of" hierarchy: aggregation 관점의 hierarchical 관계. 예) a petal is a "part-of" flower

Typing

ADT (Abstract Data Type) 관점에서, type은 일련의 요소들을 특정짓는 것. OOP에서는 class는 다른 type과 구분할 수 있는 property를 갖는 type으로 시각화. typing이란, object가 class 또는 유형의 instance라는 개념을 적용하는 것. 다른 type의 object는 교환 불가능, 반드시 필요하다면 제한된 방법으로 교환 가능.

2가지 typing 종류

  • strong typing: compile 타임 때 object operation 점검
  • weak typing: runtime 때 operation 점검 (메시지는 아무 class에게 전송 가능)

Concurrency

object는 active, inactive로 구분. active object는 다른 object thread와 동시 실행이 가능한 독립 control thread를 갖는다.

Persistence

object는 특정 시간 동안만 memory를 사용한다. 전통적인 프로그래밍에서는, object의 수명은 프로그램의 execution 수명과 동일. file, DB 등의 object 수명은 object를 생성하는 프로세스보다 길다. object가 object 생성자가 종료된 후에도 계속 존재하는 속성.

댓글