일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 2448
- 1%d
- 이더리움
- X보다 작은 수
- 시험 성적
- 가상 화폐
- Mist
- 블록 체인
- 세 수
- 함수 사용하기
- 솔리디티
- 10817
- 자바스크립트
- 10871
- for문 사용해보기
- Baekjoon
- if문 사용해보기
- 1546
- 알고리즘 문제풀이
- 백준
- 그대로 출력하기
- 더하기 사이클
- 비트 코인
- Remix
- 별 찍기 - 11
- 단계별로 풀어보기
- 평균은 넘겠지
- 1110
- Dapp
- 1065
- Today
- Total
목록Technology/객체 지향 디자인 패턴 (16)
블링블링 범블링
상태패턴(State Pattern) 상태패턴은 객체의 상태에 따라서 각가 다른 행위를 할 수 있도록 캡슐화한 패턴을 말한다. 동적으로 행동을 교체할 수 있다. 전략패턴과 구조는 같지만 쓰임과 용도가 다르다. 예시를 통해 살펴보자. 커피머신이 있다고 가정하자. 동작 버튼을 눌렀을 때 커피머신의 상태에 따라 다른 동작을 한다. 동작버튼을 눌렀을 때 커피상태가 정상작동이면 커피를 주겠지만, 만약 컵이 없는 경우에는 컵이 없다고 메세지가 뜰 것이다. 그리고 청소하고 있는 상태라면 청소상태를 종료하고 다시 동작상태로 바꿔줘야한다. 이 설명을 아래 코드로 옮겨보았다. [기존의 코드]?12345678910111213141516171819202122232425262728293031323334353637383940414..
템플릿메서드패턴(Template Method Pattern) 템플릿메서드패턴이란 구체적인 구현은 다르지만 전체적인 알고리즘의 골격이 같은 경우 적용하는 패턴을 말한다. 템플릿메서드패턴은 상위클래스에서 처리의 흐름을 제어하고, 하위클래스에서 처리의 내용을 구체화한다. 여러 클래스에서 공통되는 사항은 상위 추상클래스에서 구현하고, 각각의 상세부분은 하위 클래스에서 구현하는 특징을 가지고 있다. 때문에 템플릿메서드 패턴은 코드의 중복을 줄이고, 리팩토링에 유리한 패턴으로 상속을 통한 확장 개발 방법이다. 템플릿메서드 패턴은 주로 전략패턴과 가장 많이 사용되는 패턴 중에 하나다. 예시를 통해서 템플릿메서드패턴을 적용해보자. 가장 대표적인 예로 커피와 차를 만드는 과정이 있다. 커피를 만드는 과정은 물을 끓인다-..
전략패턴(Strategy Pattern) 전략패턴이란 동적을 알고리즘을 교체할 수 있는 구조를 말한다. 알고리즘 인터페이스를 정의하고, 각각의 알고리즘 클래스별로 캡슐화하여 각각의 알고리즘을 교체 사용 가능하게 한다. 즉, 하나의 결과를 만드는 목적(메소드)는 동일하나, 그 목적을 달성할 수 있는 방법(전략, 알고리즘)이 여러가지 존재할 경우에 사용하는 패턴이다. 보통 기본이 되는 템플릿 메서드(Template Method Pattern)과 함께 가장 많이 사용되는 패턴 중에 하나다. 아래 그림은 전략패턴을 적용한 클래스다이어그램이다. Context의 변경을 최소화하고, 인터페이스를 통해 다양한 타입을 만들어 코드를 변경할 수 있다. 이해를 돕기 위해서 예시를 들어 전략패턴을 적용해보자. 급여를 계산하는..
객체지향프로그래밍(Object-Oriented Programs) 객체지향프로그래밍이란 실세계의 사물을 추상화(Abstraction), 캡슐화(Encapsulation)하고, 계층구조는 상속(Inheritance)시키며, 부모와 다른 자식의 특성, 행위는 다형성(Polymorphism)으로 구현된 것, 즉 객체의 구성으로 프로그램을 만들어 가는 것을 객체지향 프로그래밍이라고 한다. 이러한 캡슐화, 상속, 다형성을 이용해서 코드의 재사용성을 키우고, 프로그램의 유지보수의 비용을 감소시킬 수 있다는 장점이 있기 때문에 대부분의 프로그램은 객체지향 프로그래밍으로 구현한다. 먼저 객체지향의 구성요소와 특징에 대해서 알아보자. [객체지향의 구성요소] 1. 객체(Object) : 클래스의 인스턴스(실제로 메모리상에 ..
객체지향의 원칙-SOLID 객체지향 설계에서 5대 원칙이 있다. 단일책임원칙(Single responsibility principle), 개방폐쇄 원칙(Open-Closed principle), 리스코프 치환원칙(Liskov substitution principle), 인터페이스 분리의 법칙(Interface segregation principle), 의존관계역전법칙(Dependency inversion principle)을 말한다. 이 5가지를 SOLID법칙이라고 말한다. 5가지의 원칙이 지켜져야하는 이유는 코드의 재사용성과 유지보수성을 키울 수 있기 때문이다. 그리고 이 설계원칙을 기반으로 디자인패턴 또는 소프트웨어 개발론이 등장하고 있다. 1. 단일책임원칙(Single responsibility p..
UML-Diagram(다이어그램) UML에서 다이어그램은 이제 사물과, 관계를 나타내는 기호를 활용해서 프로그램을 도식화 한 것을 말한다. 어따한 것을 요구하느냐, 무엇을 강조하느냐에 따라서 많은 종류의 다이어그램이 존재한다. 위의 그림 이외에도 더 찾아보니 더 많은 다이어그램들이 존재했고, 정적 다이어그램, 동적 다이어그램인지 또는 기능 다이어그램인지 분류한 경우도 있었다. 이번 글을 쓰면서 공부할 겸 이전에 '급식관리프로그램'을 만들었던 것을 이용해서 몇가지 다이어그램을 그려보려고 한다. 찾아보면서 공부한 토대로 만들어본 다이어그램이기 때문에 정식 다이어그램과 조금 다를 수 있고, 잘못된 점도 있을 것이라 생각한다. [급식관리 프로그램] 급식관리프로그램은 학교 안에 있는 급식실의 식권을 예매를 통해 ..
UML-Relationship(관계) UML에서 가장 중요하다고 생각되는 부분이 관계다. 그만큼 어려운 부분이기도 하다. 시간이 걸리겠지만 정리를 해보려고한다. 관계는 구성 요소들 간의 관계성을 표현하며, 주로 클래스들간의 표현 시에 사용된다. 크게 의존(Dependency), 연관(Association), 일반화(Generalization), 실체화(Realization) 관계로 이뤄져있다. 그림과 예시를 통해서 설명해볼 것이다. 1. Dependency Relationships(의존 관계) [개념]하나의 클래스에 변화가 있으면 다른 클래스에도 변화가 가는 것을 두 클래스는 의존 관계에 있다고 말할 수 있다. 1) 한 클래스의 메소드가 다른 클래스의 개체를 인자로 받아 그 메소드를 사용할 경우를 의존관..