반응형 전체 글123 [C++]Design Pattern - Application Framework 흔히 객체지향 프로그래밍이라 함은 쉽게 생각해 본다면 모든 것을 객체로 만드는 것이라고 할 수 있겠다. 그러나 C++은 태생적으로 main이 일반 함수이기 때문에 모든 것을 객체로 만들 수가 없다. GUI, 스마트폰 앱, 게임과 같이 특정 분야의 애플리케이션들은 전체적인 흐름이 항상 유사하다. 이런 전체적인 흐름이 유사한 애플리케이션에서는 이를 위해 main함수 안에서 전반적인 흐름을 담아 라이브러리 내부에 감추는 기법을 사용한다. #include using namespace std; class CWinApp; // 클래스 전방선언 CWinApp* g_app = 0; class CWinApp { public: CWinApp() { g_app = this; } virtual bool InitInstance.. 2020. 12. 7. [C++] Design Pattern - Policy Base Design [문제점] 아래의 코드에서 List s 가 멀티스래드에 안전하지 않다고 가정한다. 동기화를 위해서 Lock/Unlock의 구현이 필요하다. 그런데 사용자에 따라 List에 내장된 Lock/Unlock을 원치 않을 수도 있다. 불필요한 Lock/Unlock의 경우 성능 저하가 발생할 수도 있기 때문이다. 그러므로 Lock/Unlock은 사용자가 포함시킬 것인지 포함시키지 않을 것인지 선택 할 수 있어야 하겠다. 1. 변하는 것과 변하지 않는 것을 분리한다. * 변하는 것을 가상함수화하는 방법 -> Template Method * 변하는 것을 별도의 클래스로 구현하는 방법 -> Strategy Pattern 2. Strategy pattern을 이용해서 Lock/Unlock을 구현해보자. #include u.. 2020. 12. 5. [C# 코딩연습] 임의의 성적표. 성적 추출 문제 : 임의의 10인의 성적표를 만들고, 익명 함수, LINQ, Lamda를 이용해서 값을 정렬, 추출한다. using System; using System.Collections.Generic; using System.Linq; namespace LHHCheckPoint05 { class LHStudent { private int id; private int kor; private int eng; private int math; private int total; public LHStudent(int id, int kor, int eng, int math) { this.id = id; this.kor = kor; this.eng = eng; this.math = math; this.total = kor .. 2020. 12. 4. [C++]Design Pattern - 변하는 것을 분리하기 [문제점] 가령 이름, 나이, 주소 등을 입력하는 EditBox가 있고, 각 EditBox는 입력 목적에 따라 허용 문자를 달리 할 수 있도록(정책) EditBox를 구현해보자. 다음의 코드는 이에 대한 예가 될 수 있겠다. #include #include #include using namespace std; class Edit { string data; public: virtual bool validate(char c) { return isdigit(c); } string getData() { data.clear(); while (1) { // 한글자 입력 받기 char c = _getch(); // Enter Key > 입력 완료 if (c == 13) break; // 입력 유효성 검사 (정책) i.. 2020. 12. 1. 이전 1 ··· 20 21 22 23 24 25 26 ··· 31 다음 반응형