본문 바로가기
반응형

전체 글123

[C++]Design Pattern - Composite Pattern Composite Pattern 객체들을 트리구조로 구성하여 부분과 전체를 나 나태는 계층구조로 만들 수 있다. 개별 객체와 복합객체를 구별하지 않고 동일한 방법 다룰 수 있다. 이러한 구조를 흔히 윈도우에서 우클릭을 하면 볼 수 있는 팝업 메뉴를 예로 구현해본다. 구성 : 선택했을때선택했을 때 하위 메뉴를 열어주는 메뉴(PopupMenu), 선택했을 때 어떤 일을 실행하는 메뉴(MenuItem) 설계 : 이 구성을 객체지향으로 설계하면 PopupMenu, MenuItem 클래스로 만들 텐데 PopupMenu에는 하위 항목으로 실행을 위한 MenuItem을 가질 수 있고, 또 다른 하위 메뉴로 PopupMenu를 가질 수도 있다. 이 둘을 모두 담기 위해서는 기반 클래스 BaseMenu가 있어야 하겠다... 2020. 12. 13.
[C++] 일반 함수에서의 가변성 [문제점] 다음과 같이 정렬을 수행하는 예제가 있다. Sort함수의 정책(오름차순 정렬, 내림차순 정렬)을 외부에서 결정할 수 있도록 고쳐보자. #include #include using namespace std; void Sort(int* x, int size) { for (int i = 0; i < size-1; i++) { for (int j = i+1 ; j< size; j++) { // 오름차순, 내림차순의 정책을 결정하는 코드 if( x[i] < x[j] ) { swap(x[i], x[j]); } } } } int main() { int x[10] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 10}; Sort(x, 10); for(auto n : x) { cout 2020. 12. 11.
[게임이론] 삼각함수 삼각함수는 각의 크기를 삼각비로 나타내는 함수이다. 다음의 삼각형에 대해 옛날에 배웠던 삼각함수 공식은 아래와 같다. (입력 문제로 쎄타는 @로 표기한다.) cos@ = a / c sin@ = b / c tan@ = b / a 그렇다면 c가 1이라고 가정하면, 아래와 같이 변한다. cos@ = a / 1 = a sin@ = b / 1 = b tan@ = b / a 즉 밑변(a)의 길이는 cos@ 가 되고, 빗변(b)의 길이는 sin@가 된다. 이것을 피타고라스 정리에 대입해보면 다음과 같다 빗변의 길이가 1일때 벡터(방향)과 연계가 있기 때문에 잘 기억할 필요가 있다. 위와 같이 단위 원, 즉 반지름이 1인 원이 있다고 가정한다. 이 원에서 상의 가상의 위치 P(x, y)가 있다. 이 점을 통해 만들어지.. 2020. 12. 10.
[C#] File - BinaryFormatter 데이터를 파일에 저장할 때 저장 값들을 규격화하여 쓰고 읽어보자. 이에 대해 다음의 단계를 거친다. 1. 저장할 값을 struct, class로 규격화하여 구현한다. 2. 이 struct, class에 [serializable] 키워드를 붙여 준다. 3. FileStream을 생성한다. 4. BinaryFormatte로 파일을 작성한다. 5. FileStream을 닫아준다. 다음은 Player 배열을 BinaryFormatter를 이용해 파일에 쓰고 읽는 방법에 대한 예제이다. [Serializable] struct Player { public string _Name; public int _Level; public double _Exp; } class Program { const string fileNa.. 2020. 12. 8.
반응형