이번 방학 UML 관련 내용들을 학습하여 소프트웨어 공학에 있어서, 심화된 학습을 진행하고자 한다. 프로젝트관리 과목을 수강하기는 했지만, 소프트웨어 공학과 설계 관련한 내용에 있어서는 부족한 점이 많은 것 같아 이를 보완하고자 이번 공부를 기획하였다.
<객체와 클래스>
객체는 현실세계에 존재하는 모든것들을 의미한다. ex) 소나타, KTX, 붕어빵 등 눈에 보이거나 만져지는 실제적인 것이 모두 객체다.
클래스는 개념적으로 존재하는 것을 의미한다. 즉 객체를 생성할 수 있는 구조와 정보를 가진 틀이라고 정의할 수 있다. ex) 자동차, 기차, 붕어빵 기계로 표현되는 것들이다.
메시지
<객체 지향의 특징>
객체 지향에는 여러 특징이 있다. 추상화, 캡슐화, 상속, 다형성의 네가지 특징이다.
추상화: 현실세계에 존재하는 어떤 것을 있는 그대로 표현하면 복잡하기 때문에, 특정 측면을 강조하여 나타내는 것을 추상화라고 부른다.
캡슐화: 캡슐화란 데이터와 이 데이터를 처리하는 오퍼레이션이 한 틀 안에서 객체라는 단위로 묶여 사용되는 것을 말한다. 이러한 캡슐화는 클래스로 구현하게 된다.
상속: 상속은 객체 지향에서 가장 핵심이 되는 개념으로, 프로그램을 쉽게 확장할 수 있는 수단이다. 자세히 설명해 보자면 상속은 상위 클래스의 모든 특성을 하위 클래스가 이어받음으로써, 이미 정의된 클래스를 재사용하고 확장할 수 있도록 지원받는 개념이다.
다형성: 다형성은 여러 클래스에 같은 이름의 함수가 존재하지만 동작은 다르게 수행하는 것을 의미한다.
<추상 클래스와 인터페이스>
추상클래스: 추상 클래스는 클래스의 명칭과 메서드는 있으나, 메서드의 처리 내용이 없다. 그래서 상속을 통해 메서드가 구현된다.
인터페이스: 인터페이스는 모든 메서드가 추상 메서드인 경우를 말한다. 인터페이스는 추상 클래스보다 한 단계 더 추상화된 클래스이다.
위에는 Animal의 추상클래스이다.
위와 같이 Dog 클래스를 선언하여 이를 활용하여 실행해볼 수 있다.
이를 통해 메인 메서드가 실행이 가능하다.
<모델링 방법>
객체 지향 방법론으로는 다양한 것들이 있다. 그 중에서 대표적인 몇가지 방법론을 살펴볼 것이다.
1) 부치 방법론: 부치 방법론은 설계 중심의 방법론으로서 시스템을 몇개의 뷰로 분석할 수 있다고 보았다. 그래서 이 뷰를 모델 다이어그램으로 나타내었다.
2) 야콥슨의 OOSE: OOSE는 유스케이스를 강조한 방법론이다. 유스케이스는 외부 행위자와 상호작용하는 시스템의 요구사항을 정의하고 큰 규모의 시스템을 개발하는데 효율적이다.
3) 럼바의 OMT: OMT 방법론에는 하나의 시스템을 기술하기 위하여 세가지 모델을 사용한다. 바로 객체 모델, 동적 모델, 기능 모델이다.
4) UML: 부치 방법론과 OOSE, OMT를 하나로 합한 방법론이다.