본문 바로가기

Study64

[C#] 리플렉션(Reflection) 1. 리플렉션(reflection)이란? - 애플리케이션 실행 중 어셈블리의 내용(메서드, 프로퍼티, 생성자 등, 인스턴스의 데이터 타입 정보)을 확인하거나 검사하려는 경우 사용되는 기능 - 프로그램 실행 도중에 객체의 정보를 조사하거나, 다른 모듈에 선언된 인스턴스를 생성하거나, 기존 개체에서 형식을 가져오고 해당하는 메소드를 호출, 또는 해당 필드와 속성에 접근할 수 있는 기능을 제공한다. - 컴파일 시에 알 수 없었던 타입이나 멤버들을 찾아내고 사용할 수 있게 해주는 메커니즘 2. 리플렉션의 목적 - 애플리케이션 개발시, 디버깅 또는 런타임에 알 수 없는 객체의 동작을 분석하기 위함. - 외부 라이브러리에 존재하는 클래스 및 메서드를 분석하기 위함. - 개발 도구 자체를 개발하거나 분석도구를 만들때.. 2023. 11. 1.
[C++] final 키워드 2 이것 저것 알아보면서 코드를 보면 final이라는 키워드가 있는데 이게 뭐지 싶었다. 알아보니 final은 c/c++에서는 쓰이지 않고, java에서 쓰이는 것이라고 한다. java에서 변수 앞에 쓰이는 final은 c++에서의 const와 같은 상수를 뜻한다! //요약 final은 java에서 쓰임 변수 앞에 쓰인 fianl은 c++의 const와 같은 의미로 사용 2023. 10. 24.
[C++] npos 1. string::npos란? - string의 find() 함수 수행 시에 찾는 문자열이 없을 때 반환된다. - '-1' 의 값을 가지는 상수이다. 2. 예시 string s = "abcde"; if(s.find('a') == string::npos) // a는 s에 들어있으므로 false 반환 { cout 2023. 10. 19.
[UML] 패키지 다이어그램(Package Diagram) - 어떤 구성요소라도 더 높은 수준의 단위로 묶을 수 있도록 해주는 구조 - 클래스와 같은 여러 모델 요소들을 그룹화하여 표현하기 위한 수단 - 각 패키지는 네임스페이스를 나타냄 - 모든 클래스는 자신이 속한 패키지 내에서 유일해야 함 - 규모가 큰 시스템에서는 패키지 다이어그램을 보아야 해당 시스템의 구조를 이해하고 제어할 수 있음 1) 패키지 - 여러 클래스들로 구성된 묶음 2) 의존 관계 - 하나의 패키지가 다른 패키지를 사용하는 관계 3) - 어떤 패키지가 너무 많은 곳에 쓰여서 의존을 표시하면 다이그램이 보기 힘들어질 때 키워드를 붙여 사용 - 패키지를 바라보는 시각에 따라 아래와 같이 여러가지 방법으로 표현될 수 있다. 2023. 10. 12.
[UML] 상호 작용 개요 다이어그램(Interaction Overview Diagram) - 시스템 구성 요소들 사이의 상호 작용을 표현하는 다이어그램 중 하나 - 객체들 간에 주고받는 메시지를 통해 상호 작용을 명세 - 여러 조건 분기를 적용하기에 적절함 - 활동 순서를 시각화한다는 것에서 활동 다이어그램과 유사 - 각 개별 활동인 중첩된 상호 작용 다이어그램을 포함할 수 있는 프레임으로 표시됨 - 활동 다이어그램과 같은 표기(초기,최종,결정,병합,분기,조인)를 사용하고 추가로 '상호 작용 발생', '상호 작용 요소'를 사용함 - if-then-else 경로를 단일 시퀀스 다이어그램으로 설명해야하는 복잡한 시나리오 분석에 유용함 2023. 10. 12.
[UML] 복합 구조 다이어그램(Composite Structure Diagram) - 클래스 내부 부분들을 나타내기 위해 사용 - 복합 구조의 클래스와 컴포넌트 내부 구조를 표현한다. - 클래스를 계층적인 내부 구조로 분해하여 복잡한 객체를 여러 개의 부분으로 나눔 1) 부분(Part) - 클래스 내부의 요소들을 나타냄 - "이름:클래스"의 형태로 나타내는데 둘 다 선택사항이다.(생략가능함) - 대괄호 속에 '[1]' 이런식으로 표시하여 다중성을 나타낸다. 2) 연결자(Connector) - 부분들 사이에 선으로 이어진 부분을 말한다. 3) 포트(Port) - 외부와 내부가 연결되는 지점 - 작은 네모로 표시 4) 대리 연결자(Delegation connector) - 포트와 부분 사이를 연결 - 화살표로 표시 - 같은 모델인데 왼쪽은 클래스, 오른쪽은 복합 구조 다이어그램을 나타냄 2023. 10. 12.
[프로그래머스][C++] 공배수 #include #include using namespace std; int solution(int number, int n, int m) { int answer = 0; if(number % n == 0 && number % m == 0) return 1; return answer; } 1. %연산을 이용해 나머지가 0인 경우를 판별하여 배수인지를 확인한다. 2. number를 n으로 나눴을 때의 나머지가 0이면서 m으로 나눴을 때도 나머지가 0이라면 1을 리턴한다. 3. 그 외의 경우에는 0을 리턴한다. 잠깨기 용으로 쉽게 풀었다. 2023. 10. 12.
[UML] 상태 머신 다이어그램(State Machine Diagram) - 객체의 행동 다이어그램 중 하나 - 객체는 특정 상태를 지니며 이 상태는 이벤트와 같은 액션에 의해서 변경되는데, 이러한 객체의 상태와 상태의 변화를 도식화 한 다이어그램이 상태 머신 다이어그램이다. - 상태 머신을 이용해 각 객체의 행동을 모델링한다. 1) 시작 마크(First State) - 프로세스에서 처음 상태를 나타냄 - 해당 마크와 이어진 상태가 처음 상태임 2) 상태(State) - 프로세스의 상태를 나타냄 - 둥근 모서리의 네모박스 3) 이벤트(Event)와 상태 변경/전이(Transition) - 이벤트는 상태 변경을 일으키는 무언가를 뜻한다. - 이벤트를 통해 외부에 의한 액션이 있을 수 있고, 아니면 시간의 경과에 따른 결과가 될 수도 있다. - 기존 상태에서 새로운 상태로 변화하.. 2023. 10. 10.
[UML] 배치 다이어그램(Deployment Diagram) - 시스템의 물리적인 구조를 보여주며, 어떤 소프트웨어가 어떤 하드웨어에서 동작하고 있는지를 보여준다. - 무엇이 어디에 배치되는지를 보여준다. - 시스템 설계 단계의 마지막에 작성한다. 1) 노드(node) - 소프트웨어를 실행할 수 있는 어떤 것 - 장치(device)와 하드웨어 두 가지의 형태로 존재 2) 실행 환경(execution environment) - 스스로 실행하거나 다른 소프트웨어를 포함하는 소프트웨어 - 운영체제, 컨테이너 프로세스 등이 해당한다. 3) 아티팩트(artifact) - 노드에 포함되며, 소프트웨어의 물리적인 모습을 뜻한다. - 클래스 상자로 보여주거나 이름을 나열하여 표현하는데 문서 아이콘 상자나 키워드를 붙여 표시한다. - .exe, .bin,DLL, JAR, 어셈블리.. 2023. 10. 10.
[UML] 컴포넌트 다이어그램(Component Diagram) - 각각의 컴포넌트들이 어떻게 서로 연결되어 더 큰 컴포넌트나 소프트웨어 시스템을 구성하는지를 보여줌 - 시스템을 구성하는 소프트웨어의 조각, 임베디드 컨트롤러 등 그들의 조직과 종속성을 보여준다. - 클래스 다이어그램보다 높은 수준의 추상화를 가진다. - 일반적으로 컴포넌트는 하나 이상의 클래스에 의해 구현된다. - 시스템의 많은 부분을 포함할 수 있도록 구축 블록을 구축한다. 1) 컴포넌트 - 논리적 요소들을 물리적으로 패키지화한 것 - 행동의 제공과 필요한 인터페이스에 의해 정의되는 시스템의 모듈 부분을 의미한다. - 일반적으로 탭이 달린 직사각형의 형태로 표현한다. - 내부에 컴포넌트의 이름을 포함하고, 컴포넌트가 패키지에 포함되어 있다면 이름 앞에 패키지의 이름을 붙여서 나타낼 수 있다. 2) .. 2023. 10. 6.
[UML] 유스케이스 다이어그램(Use Case Diagram) - 시스템과 사용자의 상호작용을 다이어그램으로 표현한 것이다. - 사용자의 관점에서 시스템의 서비스, 기능 및 그와 관련한 외부와의 관계를 보여준다. - 프로젝트에 대한 요구사항을 정의하고 세부기능을 분석하여 개발 범위를 정할 때 작성한다. 1) 시스템(System) - 만들고자 하는 프로그램을 나타냄 - 유스케이스들을 둘러싼 사각형 틀로 시스템 명칭을 안쪽 상단에 작성한다. 2) 액터(Actor) - 시스템의 외부에 있고 시스템과 상호작용을 하는 사람(시스템의 기능을 사용하는 사람), 시스템(시스템에 정보를 제공하는 또 다른 시스템)을 말한다. - 원과 선을 조합하여 사람모양으로 표현 - 액터명은 위나 아래에 표시하여 액터의 역할을 작성 3) 유스케이스(Usecase) - 사용자 입장에서 바라본 시스템.. 2023. 10. 6.
[UML] 객체 다이어그램(Object Diagram) - 특정 시점의 객체들이 동작하는 상황을 표현 - 클래스가 아닌 인스턴스를 보여주기에 인스턴스 다이어그램이라고도 함 - 클래스 다이어그램으로 이해하기 어려울 때 이해를 쉽게하기 위해서 사용한다. 1) 객체 - 사각형에 객체의 이름을 표기하고 밑줄을 그음 2) 링크 - 객체 간의 연관 관계를 의미하면 실선으로 연결하여 표시 - 연결된 객체들끼리 메시지를 주고받음 - 클래스 간에 관계를 맺고 있음을 의미함 - 객체들은 해당 클래스의 제약 조건을 모두 만족해야 함 3) 상태 - 속성의 값들로 객체의 상태가 표현됨 - 특정 순간에 객체가 가지고 있는 속성값들이 객체의 상태가 됨 4) 동적바인딩 - 객체 다이어그램은 템플릿에 대한 동적 바인딩을 표현 - 동적 바인딩은 클래스가 아닌 객체로 만들어질 때 타입을 알려.. 2023. 10. 5.