
OOP란, (Object-Oriented Programming)의 약자이며, 우리에게는 객체 지향이라고 알려져 있다.객체(Object)는 속성과 함수로 구성되어 있다.예) Car라는 객체를 가지고 있다고 생각해보자.\-속성 : fuel, speed, steering w

클래스를 사용하여 특정 객체를 표현할 수 있다.클래스는 속성과 행동을 포함하는 객체를 정의한다.속성은 데이터의 요소이고 함수는 특정 작업을 수행한다.클래스에는 객체의 초기 상태를 설정하는 생성자가 존재한다.클래스는 템플릿으로 쉽게 재사용할 수 있다.객체지향 프로그래밍에
로버트 C. 마틴이 명명한 객체지향 프로그래밍 및 설계의 기본 원칙이다.프로그래머가 유지보수가 쉽기 때문에 확장성이 있는 프로그램을 개발하려 할 때 이 원칙들을 적용할 수 있다.해당 원칙은 총 5개가 존재하며, 이번에 알아볼 것은 아래와 같다.단일 책임 원칙이란 모든
지난번까지 SOLID principle의 SRP까지 알아보았다. 이번에는 Open-Closed, Dependency Inversion Principle에 관해 알아볼 차례이다. 개방-폐쇄 원칙(Open-Closed Principle)은 소프트웨어 개체(클래스, 모듈,

이번에 알아볼 것은 Liskov Substitution principle과 Interface Segregation 원칙이다.이 원칙은 미국의 컴퓨터 과학자 바바라 리스코프(Barbara Liskov)가 만든 원칙이다.이 원칙은 컴퓨터 프로그램에서 자료형 S가 자료형 T

이번에는 UML에 관해 알아보도록 하자.시스템을 시각화 하거나 시스템의 사양이나 설계를 문서화하기 위한 표현방법통합 모델링 언어는 객체 지향 프로그래밍 소프트웨어 집약 시스템을 개발할 때 산출물을 명세화, 시각화, 문서화할 때 사용한다.일반적으로 UML의 범위는 매우

이전까지는 객체 지향의 의미와 객체 지향에서 자주 쓰는 방법적인 측면, 그리고 SOLID Principle에 관해 알아보았다. 이제 본격적으로 코드 설계에 필요한 패턴에 관해 알아보도록 하자.Creation Design Pattern은 설계 패턴의 한 종류이다. 이 패

이번에는 Builder Pattern을 정리하고자 한다.해당 패턴은 객체의 생성과정이 복잡할 경우에 사용하여 이를 간단하게 만들어 준다.이때, 생성과정이 복잡할 수 있는 경우는 매우 다양하여 작성자의 판단이 중요하다.예를 들어, 하나의 오브젝트를 생성할 때, 여러 개의

글로벌하게 접근 가능한 단 한개의 객체만을 허용하는 패턴이다.해당 패턴은 다음과 같은 성격을 가진다.클래스에 대한 단일 객체를 생성한다. 예) DB 접근시, Client가 여럿이되, 하나의 객체만 강제하는 경우. \-> 단일 객체가 아니면 혼동이 생길 수 있다. \->

프로토타입 패턴은 기존 객체를 복제하여 새로운 객체를 생성하는 바업이다.그러나 아래의 경우 클래스로부터 인스턴스를 만드는 것이 아니라 인스턴스를 복사해서 새로운 인스턴스를 만드는 것이 좋다.종류가 너무 많아 클래스로 정리되지 않는 경우클래스로부터 인스턴스 생성이 어려운

이번에 배워볼 것은 Adapter Pattern이다.해당 패턴은 다음과 같이 정의한다.하나의 인터페이스를 다른 인터페이스로 전환하는 역할을 하는 패턴이미 제공되어 있는 것 과 필요한 것 사이의 차이를 없애 주는 디자인 패턴을 말한다.쉽게 말해서 교류 110볼트를 220

Proxy는 '대리인'이라는 의미, 일을 대신하는 사람이다.대리인이 할 수 있는 범위를 넘는 일이 발생하면, 실제 본인에게 와서 업무를 요청한다.객체지향에서는 바빠서 일을 할 수 없는 real 오브젝트 대신에 프록시 오브젝트가 어느정도 일을 처리한다. real 오브젝트

다음을 생각해보자스펀지 케이크가 1개 있다고 가정해보자. 크림만 바르면 아무 모양이 없는 크림케이크가 되고, 여기에 딸기를 얹으면 딸기 케이크가 되고, 초콜릿을 장식하고 이름을 쓰고 초를 꽃으면 생일 케잌이 된다.모두 처음에는 다 같은 스펀지 케이크지만 장식을 하면 목

점점 커지는 경향으로 많은 클래스가 서로 관계를 맺으며 복잡하게 되는 클래스를 적절히 제어하기 위한 창구 역할을 하는 별도의 고수준 인터페이스를 두는 패턴을 의미한다. '건물의 앞면을 의미하는 것처럼 그 뒤쪽의 복잡함은 내부에 숨기고 간단한 인터페이스만 제공하는 패턴이

ㅇㅇ
동일한 것을 공유해서 낭비 없애기Flyweight는 플라이급이라는 의미로, 권투에서 가장 체중이 가벼운 체급을 의미한다.디자인패턴에서는오브젝트를 가볍게 하기 위한 것의 의미에서 사용하였다.오브젝트는컴퓨터 내부에서 가상적으로 존재하는 것이기 때문에 무겁다 또는 가볍다라고

컴퓨터의 파일 시스템에는 디렉터리 라는 것이 있다. 말하기 쉽게 생각하면 폴더라고 생각하면 편하다.이러한 디렉터리 안에는 파일이 있거나, 다른 하위 디렉터리가 있기도 한다. 마치 "상자 안의 상자" 같은 구조이다. 즉, 재귀적 구조를 가진다. 이때, 디렉터리 엔트리를

행동에 관련된 패턴Runtime 중에 알고리즘을 선택하게 한다. 약한 결합 중 객체를 바꿀 수 있고, 이는 분기마다 다른 선택을 가능케 한다. 알고리즘을 바꾸더라도 돌아갈 수 있도록 하여 고정을 하지 않는다.하나의 알고리즘을 직접 Implementing 하는 대신 어떠

1. 정의 state는 상태를 의미한다. 상태를 클래스로 표현하면 클래스를 교체해서 '상태의 변화'를 표현할 수 있다. State 패턴은 상태를 하나의 클래스로 제작하여, 클래스에 따라 변화하는 상태를 표시한 패턴이다. Strategy Pattern과 유사한 점을

템플릿이란, 사전적 의미로는 형판이라고 한다. 문자, 도형으로 구멍이 뚤려 있는 얇은 플라스틱 판을 생각해볼 수 있다. 실제로 어떤 도형이 그려질지는 필기구에 의해 결정되는데, 펜으로 그리면 펜으로 그린 도형이 되고, 연필로 그리면 연필로 그린 도형이 된다. Templ

어떤 서류를 받으러 회사에 갔다고 하자. 회사의 안내센터에서 물어보니 영업부로 가라고 하고, 영업부에 갔더니 그 서류는 고객관리부에서 취급한다고 하고, 다시 고객관리부에 갔더니 그 서류는 총무부에서 받을 수 있다고 했다. 이런 식으로 담당 부서의 담당자를 찾을 때까지

행위(Behavioral) 패턴에 속한다.클래스가 일을 실행할 때, 자신의 클래스나 다른 클래스의 메소드를 호출한다. 그러나 메소드를 호출한 결과는 오브젝트의 상태에 반영되지만, 일의 이력은 어디에도 남지 않는다. 이때, '이 일을 실행하시오' 라는 '명령'을 표현하는

memento(사람, 장소를 기억하기 위한) 기념품 (=souvenir)오브젝트의 상태를 사진처럼 memento로 보관하고 필요할 때 꺼내서 그 상태로 되돌릴 수 있는 패턴일반적으로 어떤 객체의 히스토리를 관리하고 싶을 때 유용한 패턴게임에서 save를 하는 것과 비슷

Observer는 관찰하는 사람의 의미이다.Observer 패턴에서는 관찰 대상의 상태가 변화하면 관찰자에게 알려준다.Observer 패턴은 상태 변화에 따른 처리를 기술할 때 효과적이다. Observer Pattern은 어떤 이벤트가 일어났을 때 이벤트를 바라보던

회원 10명이 모여서 공동 작업을 하고 있지만, 정리가 되지 않고 옥신각신 하는 모임을 상상해 보자.객체 간의 복잡한 상호작용을 중앙 집중화하여 관리할 필요가 있는 상황에서 주로 사용된다. 객체들이 직접 통신하는 대신 Mediator를 통해 간접적으로 통신하도록 하여

데이터구조와 처리를 분리하는 패턴데이터 구조 안에 많은 요소가 저장되어 있고, 그 각 요소에 대해서 무엇인가 처리해 나간다고 할 때, 이때 그 처리 코드는 데이터 구조를 표시하고 있는 클래스 안에 기술 해야한다.하지만, 만약 그 처리가 여러 종류라면 새로운 처리가 필요