객체지향이란?
객체 지향 모델링은 기능이 아닌 객체가 중심이 되며 "누가 어떤 일을 할 것인가?"가 핵심
객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞추는 것.
객체지향 프로그래밍(Object-Oriented Programming, OOP)이란?
컴퓨터 프로그램을 설계하는 기법 중 하나로, 컴퓨터 프로그램을 현실 세계의 대상과 그 기능을 객체화하여 표현하는 것
객체지향의 주요 개념
① 객체(Object)
- 실제로 존재하는 것. 클래스에 정의된 내용대로 메모리에 생성된 것
② 클래스(Class)
- 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 것
- 객체를 정의 해놓은 것. 객체의 설계도, 틀
③ 패키지(Package)
- 클래스를 묶어두는 물리적인 단위. 클래스들의 집합
④ 메시지(Message)
⑤ 추상화
- 공통 성질을 추출하여 수퍼클래스로 구성한다.
- 객체 중심의 안정된 모델을 구축 가능 하며 현실 세계를 자연스럽게 표현.
⑥ 상속(Inheritance)
- 부모 클래스가 가지고 있는 필드와 메소드를 자식 클래스에서 그대로 물려받아 사용하는 것.
⑦ 캡슐화(Encapsulation)
- 필요한 속성(Attribute)와 행위(Method)를 하나로 묶고 그중 일부를 외부에서 사용하지 못하도록 은닉하는 것
- 캡슐화는 객체가 가지고 있는 프로퍼티에 대한 직접적인 접근을 막고, 별도의 메서드를 통해 접근하거나 수정하도록 하는 것이며 이때 접근지정자를 사용.
⑧ 다형성
- 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질.
⑨ 집단화 | is part of
- 클래스 간의 구조적인 집약 관계
- "클래스 A는 클래스 B와 클래스 C로 구성된다"
⑩ 일반화 | is a
- 클래스들 간의 개념적인 포함 관계
- "자식 클래스 A는 부모 클래스 B의 일종이다."
객체지향 언어의 4가지 특성
추상화, 상속, 캡슐화, 다형성
객체지향 설계 원칙(SOLID)
① 단일 책임 원칙(SRP, Single Responsibility Principle)
- 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함
② 개방 폐쇄의 원칙(OCP, Open-Closed Principle)
- 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다
③ 리스코프 교체(치환)의 원칙(LSP, Liskov Substitution Principle)
컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 원칙
④ 인터페이스 분리 원칙(ISP, Interface Segregation Principle)
- 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙
⑤ 의존성 역전 원칙(DIP, Dependency Inversion Principle) -의존 관계를 맺을 때 변화하기 쉬운 것 보다 변화하기 어려운 것에 의존하라는 원칙을 의미한다.
객체지향 분석 기법
- 소프트웨어를 개발하기 위한 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법
객체지향 분석 기법의 종류
1) 럼바우 분석기법
- 동적 모델링 기법이 사용될 수 있다.
- 데이터와 행위를 하나로 묶어 객체를 정의내리고 추상화시키는 작업이라 할 수 있다.
- 코드 재사용에 의한 프로그램 생산성 향상 및 요구에 따른 시스템의 쉬운 변경이 가능하다.
① 객체(Object) 모델링 | 객체 다이어그램
- 정보모델링, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정, 객체 다이어그램으로 표시
② 동적(Dynamic) 모델링 | 상태 다이어그램
- 상태도(상태 다이어그램)을 이용하여 시스템의 행위를 기술
③ 기능(Functional) 모델링 | 자료흐름도
- 자료 흐름도를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정 표현
2) Coad-Yourdon 방법**
- 객체, 동적, 기능 모델로 나누어 수행하는 방법이다.
- 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 방법이다.
- Use-Case를 강조하여 사용하는 방법이다.
- E-R 다이어그램을 사용하여 객체의 행위를 모델링
- 객체 식별, 구조 식별
3) Booch 방법
- 미시적, 거시적 개발 프로세스를 모두 사용하는 분석방법.
- 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의
4) Jacobson 방법
- Use Case를 사용하여 분석
- 사용자, 외부 시스템, 다른 요소들이 시스템과 상호 작용 하는 방법을 기술
5) Wirfs-Brock
- 분석과 설계간 구분이 없으며, 고객 명세서를 평가하여 설계 작업까지 연속적으로 수행