08.18

신승빈·2022년 8월 18일
0

KGCA 수업

목록 보기
25/128

그래프

DFS, BFS

트리와 그래프는 명확한 차이가 있지만 노드에 접근하는 방식의 유사성에 기반한 해석

DFS

Preorder방식의 트리 순회

BFS

LevelOrder방식의 트리 순회

최소 신장 트리

그래프의 모든 노드를 방문할 때, 비용이 최소가 되는 방법

Prim

현재 연결된 노드 집합에서 최소 비용의 간선과 연결된 노드 선택

Kruskal

연결되지 않은 노드 집합들 중에서 최소 비용 간선 선택

OMT(Object Modeling Technique)

UML의 Class Diagram에서 사용되는 문법과 동일해보임

객체 생성 - 점선
객체 소유 - 실선
상속 - 수직선과 삼각형
(부분)집합 - 마름모
다수 참조 - 칠해진 원
추상클래스 - 이탤릭체

UML(Unified Modeling Language)

Usecase

사용자 관점으로 시스템 표현

Class

클래스간의 관계

Sequence

클래스의 시간에 흐름

Collaboration

객체와 객체의 메시지 중심
시퀸스와 유사(흐름과 관계)

State

객체의 생명 주기동안의 상태

Activity

수행 순서, 업무 처리 과정
Sequence보다 추상적인 느낌
Usecase의 1개의 flow가 Activity의 1개의 Action

Component

Software의 물리적 구조
exe, dll, lib파일의 참조 관계

Deployment

하드웨어 배치 관계

Object

특정 시간에 모델링된 시스템의 구조
클래스의 인스턴스로 표현
클래스 다이어그램보다 더 구체적

디자인 패턴

프로그램 개발 과정에서 자주 나타는 문제를 해결하기 위한 방법, 구조적 해결법

디자인 패턴의 4요소

이름, 문제, 해법, 결과
이중, 어떤 상황에서 사용해야 하는가를 나타내는 '문제'를 중점적으로 분석

장점

If-else구문의 최소화
수정에 대한 병경사항 최소화(변경의 국지화)

MVC(Model-View-Controller)

Model

데이터, 초기값, 데이터 가공 절차

View

텍스트, 체크박스 같은 출력

Controller

Model과 View를 이용한 실질적인 연산, 비지니스 로직으로 해석해도 될 듯

Abstract Factory Pattern

ex) OS에 따라 문서 작성 프로그램이 달라질 수 있다(메모장, vim)
제품군 단위로 Factory를 생성한 후 Factory로 부터 제품(객체)를 받아옴
변경 가능성이 있는 부분을 한 곳(Factory)로 모음

Reference : https://refactoring.guru/design-patterns/abstract-factory

Factory Method Pattern

ex) 문서의 확장자가 어플리케이션마다 연관되어 있음(hwp-한글, doc-word)
대행함수를 통해서 간접적으로 객체를 생성

Reference : https://refactoring.guru/design-patterns/factory-method
사견

디자인 패턴의 가장 큰 전제인 '변경되는 부분과 변경되지 않는 부분을 분리한다'라는 관점에서 굳이 두 패턴이 큰 차이는 없다고 생각됨
결국 생성을 담당하는 Factory클래스를 구현하고, 구체적으로 생성하는 인스턴스는 SubFactory에서 결정한다는 공통점이 존재
단지 Abstract Factory의 경우 제품'군'으로 묶는다는 특징이 있는거 말고는 큰 차이를 이해할 수 없음
그런 관점에서 Factory Method를 좀 더 세밀하게 구현한 것이 Abstract Factory같다고 생각됨

profile
이상을 길잡이 삼아 로망을 추구합니다.

0개의 댓글