객체지향 설계: Difference between revisions
From CS Wiki
No edit summary |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[분류:소프트웨어 공학]] | [[분류:소프트웨어 공학]] | ||
;Object Oriented Designing; Object Oriented Architecting | ;Object Oriented Designing; Object Oriented Architecting | ||
== | ==특징== | ||
=== 단일 책임 원칙 | *객체지향 설계에서 중요한 것은 시스템을 구성하는 객체와 속성, 연산을 정의하는 것이다. | ||
*객체지향 설계에서는 주어진 객체의 특성을 분석하여 공통된 특징을 갖는 슈퍼클래스를 생성하는 추상화 기법을 통해 객체의 설계 비용과 시간을 줄일 수 있다. | |||
* 소프트웨어의 컴포넌트는 단 하나의 책임만을 가져야 한다. | *객체지향 설계에서는 캡슐화를 통해 객체의 세부내용 변경에 의해 발생될 수 있는 오류의 파급을 줄일 수 있다. | ||
; | ==[[객체지향 설계 원칙|객체지향 설계 5원칙]]== | ||
* | '''단일 책임 원칙(Single Responsiblity Principle; SRP)''' | ||
* | |||
*소프트웨어의 컴포넌트는 단 하나의 책임만을 가져야 한다. | |||
* | '''개방 폐쇄 원칙(Open Close Principles; OCP)''' | ||
* | |||
*확장에 대해선 열려 있어야 하고 수정에 대해선 닫혀 있어야 한다. | |||
*기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 해야 한다. | |||
'''리츠코프 치환 원칙(Liskov Substitution Principle; LSP)''') | |||
*자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다. | |||
'''[[인터페이스 분리의 원칙]](Interface Segregation Principle; ISP)''' | |||
*자신이 사용하지 않는 메서드는 구현하지 않도록 해야 한다. | |||
**이런 경우 인터페이스는 쪼개져야 한다. | |||
*하나의 일반적인 인터페이스 보단 여러 개의 구체적인 인터페이스가 낫다. | |||
'''[[의존관계 역전 원칙]](Dependency Inversion Principle; DIP)''' | |||
*의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다. | |||
*고차원의 모듈은 저차원의 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존 해야 한다. | |||
* | *DIP를 만족한다는 것은 의존관계를 맺을 때, 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺는다는 것을 의미 | ||
* | |||
* | |||
=== | == 같이 보기 == | ||
* [[객체지향 기법]] | |||
* [[객체지향 분석 방법론]] | |||
* | * [[객체지향 언어]] | ||
* | |||
Latest revision as of 03:09, 21 July 2023
- Object Oriented Designing; Object Oriented Architecting
특징[edit | edit source]
- 객체지향 설계에서 중요한 것은 시스템을 구성하는 객체와 속성, 연산을 정의하는 것이다.
- 객체지향 설계에서는 주어진 객체의 특성을 분석하여 공통된 특징을 갖는 슈퍼클래스를 생성하는 추상화 기법을 통해 객체의 설계 비용과 시간을 줄일 수 있다.
- 객체지향 설계에서는 캡슐화를 통해 객체의 세부내용 변경에 의해 발생될 수 있는 오류의 파급을 줄일 수 있다.
객체지향 설계 5원칙[edit | edit source]
단일 책임 원칙(Single Responsiblity Principle; SRP)
- 소프트웨어의 컴포넌트는 단 하나의 책임만을 가져야 한다.
개방 폐쇄 원칙(Open Close Principles; OCP)
- 확장에 대해선 열려 있어야 하고 수정에 대해선 닫혀 있어야 한다.
- 기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 해야 한다.
리츠코프 치환 원칙(Liskov Substitution Principle; LSP))
- 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다.
인터페이스 분리의 원칙(Interface Segregation Principle; ISP)
- 자신이 사용하지 않는 메서드는 구현하지 않도록 해야 한다.
- 이런 경우 인터페이스는 쪼개져야 한다.
- 하나의 일반적인 인터페이스 보단 여러 개의 구체적인 인터페이스가 낫다.
의존관계 역전 원칙(Dependency Inversion Principle; DIP)
- 의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다.
- 고차원의 모듈은 저차원의 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존 해야 한다.
- DIP를 만족한다는 것은 의존관계를 맺을 때, 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺는다는 것을 의미