본문 바로가기
반응형

분류 전체보기1062

C++ - 헐리우드 원칙 (The Hollywood Principle) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 템플릿 메서드 패턴 헐리우드 원칙 (The Hollywood Principle) - Don't call us, we'll call you - 높은 수준의 모듈 간의 상호작용을 관리하기 위해 사용되는 원칙 - 상위 모듈이 하위 모듈에 의존할 때, 상위 모듈은 직접적으로 하위 모듈에 의존하지 말아야 한다. - 두 모듈 모두 추상화에 의존해야 한다. - 하위 모듈이 상위 모듈을 호출하지 않아야 하며, 상위 모듈이 추상화된 인터페이스를 통해 하위 모듈을 호출해야 한다. 의존성 부패 (Dependency Rot) - 여러 구성 요소 간의 의존성이 증가하는 현상 - 상위 모듈이 하위 모듈에, 하위 모듈이 상위 모듈에 서.. 2024. 2. 26.
C++ - 퍼사드 패턴 (Facade Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 어댑터 패턴 (Adapter Pattern) - 클래스 다이어그램 그리기 - 최소 지식 원칙 퍼사드 패턴 (Facade Pattern) - 구조 패턴 - 복잡한 시스템 또는 서브시스템을 단순화된 인터페이스로 제공하는 패턴 - 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. - 클라이언트가 시스템의 복잡성을 알 필요 없이 간단한 인터페이스를 통해 시스템에 접근할 수 있다. 구현 - Subsystem : 퍼사드가 제공하는 인터페이스를 구현하는 여러 클래스 또는 모듈의 집합 - Facade : 클라이언트와 상호작용하는 단일 인터페이스를 제공, 복잡한 시스템 또는 서브시스템을 캡.. 2024. 2. 26.
C++ - 최소 지식 원칙 (The Principle of Least Knowledge) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 퍼사드 패턴 최소 지식 원칙 (The Principle of Least Knowledge) = 디미터의 법칙 (Law of Demeter) - 객체가 다른 객체와 직접적으로 상호 작용하는 것보다는 가능한 다른 객체들과의 관련을 최소화해야 한다. - 객체는 해당 객체와 직접 관련된 정보만을 알아야 하고, 다른 객체의 내부 동작에 대해 세부 사항을 알 필요가 없다. - 객체와 다른 객체는 인터페이스를 통해 간접적으로 상호 작용을 유지해야 한다. 먼저 최소 지식 원칙 위반 사례를 보자. #include using namespace std; class Engine { public: void work() { cout 2024. 2. 25.
개발자 치트 시트 (Cheat Sheet) Visual Studio Code 단축키 https://code.visualstudio.com/assets/docs/getstarted/tips-and-tricks/KeyboardReferenceSheet.png HTML Help Sheet https://www.slideshare.net/zsk/html-help-sheet-02 CSS Help Sheet https://www.gosquared.com/blog/panic-over-css2-and-css3-help-sheets-are-here Git CLI Sheet https://education.github.com/git-cheat-sheet-education.pdf 2024. 2. 24.
C++ - 어댑터 패턴 (Adapter Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 어댑터 패턴 (Adapter Pattern) - 구조 패턴 - 호환되지 않은 두 개의 인터페이스 사이에 중간에서 어댑터를 두어 상호 작용을 하도록 하는 패턴 - 기존의 코드나 라이브러리를 변경하지 않고 새로운 코드나 라이브러리를 통합한다. 구현 - 타겟 (Target) : 클라이언트는 타겟 인터페이스를 통해 어댑터에 요청을 보낸다. - 어댑터 (Adapter) : 클라이언트가 호출하는 인터페이스를 실제로 구현하는 객체, 서비스 객체의 메서드 호출로 변환 - 어댑티 (Adaptee) : 어댑터가 클라이언트에게 제공하려는 기능을 정의하는 인터페이스 - 어댑터는 어댑티를 감싸서 클라이언트가.. 2024. 2. 24.
UML - 유스케이스 다이어그램 (Use Case Diagram) Architecture & Design Pattern 전체 링크  유스케이스 다이어그램 (Use Case Diagram)- 시스템의 사용자 또는 액터(Actor)와 시스템이 제공하는 기능(Use Case) 간의 상호작용을 보여준다.- 시스템의 내부 요소와 외부 요소를 결합하고, 사용자의 특정 요구 사항을 강조한다.- 시스템의 상황을 묘사하고, 시스템의 청사진으로 작동할 수 있다.- 사용자를 위한 다이어그램이므로 시스템의 기능이나 세부정보를 나타내지는 않는다. 유스케이스 (Use Case)- 새로 만들어야 할 시스템이나 소프트웨어 변경 사항에 대한 요구 사항을 찾아내는 방법 - 사용자 또는 시스템 외부에서 시스템이 수행할 수 있는 작업 또는 시나리오- 각 유스케이스는 시스템이 사용자의 요구사항을 어떻게 충.. 2024. 2. 23.
C++ - 커맨드 패턴 (Command Pattern) C, C++ 전체 링크 Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 - 스마트 포인터 : unique_ptr 커맨드 패턴 (Command Pattern) - 행동 패턴 - 행동을 캡슐화하여 다른 객체로 전달하는 패턴 - 요청을 객체로 캡슐화하여 매개변수화된 메서드 호출, 메서드 실행 또는 연산을 지원한다. 구현 - CommandInterface : execute() 메서드와 그에 필요한 다른 메서드(undo 등)를 정의 - ConcreteCommand : Command 인터페이스를 구현하여 실제로 실행될 작업을 구현 - Invoker : 클라이언트로부터 커맨드 객체를 받아서 실행하는 클래스, 클라이언트와 커맨드를 분리하는 역할 - Receiver : .. 2024. 2. 23.
UML - 클래스 다이어그램 (Class Diagram) Architecture & Design Pattern 전체 링크 참고 - 클래스 다이어그램 그리기 클래스 다이어그램 (Class Diagram) - 시스템의 클래스와 클래스들 간의 관계를 보여준다. - 코드 수준의 모든 구성 요소들을 속성들과 오퍼레이션들과 함께 나열한다. - 제한된 타입 정보를 제공하며, 메서드를 어떻게 작성해야 할지를 나타내지는 않는다. - Use Case의 명사가 클래스가 되며, 동사들은 메서드가 될 수 있다. 구조 클래스 다이어그램은 다음과 같은 구조를 가지고 있다. (클래스 이름 / 속성 / 오퍼레이션) (참고 : 오퍼레이션은 realization이 아닌 선언 정도, 메서드는 특정 언어로 구현된 실제 코드를 의미) attribute 앞의 기호는 visibility를 나타낸다. +.. 2024. 2. 23.
Node JS - dayjs로 날짜, 시간 관리하기 Node JS 전체 링크 참고 - 두 날짜 사이의 시간 차이 구하기 dayjs를 이용하면 날짜나 시간과 관련된 처리를 쉽게할 수 있다. npm install dayjs 예시 코드는 다음과 같다. const dayjs = require("dayjs"); // 현재 시간 가져오기 const now = dayjs(); console.log("현재 시간 : ", now.format()); console.log("포맷 변경 : ", now.format("YY-MM-DD / HH:mm:ss")); console.log("연도 확인 : ", now.get("year")); // or y console.log("시간 변경 : ", now.set("hour", 0).format()); // or h // -> year/.. 2024. 2. 22.
반응형