분류 전체보기
모듈 Module
1. 일반적으로, 모듈이란? 보다 작고 이해할 수 있는 단위로 나뉘어진 것 본체(本體)에서 분리되어, - 작은 부분으로 유기적으로(기능별로) 구성되어 있다가, - 필요할 때 마다, 본체에 합류하여 그 기능을 수행할 수 있는 것 통상, 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체로 봄 - 例) 각기 다른 여러 모듈 단위로 조립하여 전체를 완성 (모듈 조립) - 例) 표준화된 부품 (조립식 부품) 2. 문제를 다룰 때 모듈화 하는 이유는? 모듈화는, 거대한 문제를 작은 조각의 문제로 나누어 다루기 쉽도록 하는 과정 - 여기서, 작게 나누어진 각 부분을 모듈이라고 함 각 모듈은 논리적 또는 기능적으로 분리되어 격리되고 독립적인 일을 수행 모듈화 과정의 잇점 - 기본적인 것을 엮어서 복잡한 형상..
컴포넌트 Component
1. 컴포넌트는 독립적인 소프트웨어 모듈이다. 컴포넌트를 한마디로 표현하자면 소프트웨어 시스템에서 독립적인 업무 또는 독립적인 기능을 수행하는 ‘모듈’로서 이후 시스템을 유지보수 하는데 있어 교체 가능한 부품이다. 소프트웨어 컴포넌트는 하드웨어의 그래픽카드와 같은 개념으로 독립적인 기능을 수행하는 소프트웨어 모듈이라고 설명할 수 있으며 소프트웨어 컴포넌트는 컴포넌트란 말로 대체되어 사용되고 있다. 2. 컴포넌트는 구현, 명세화, 패키지화, 그리고 배포 될 수 있어야 한다. 컴포넌트의 정의나 형태는 관점에 따라 다양하게 존재하지만, 재사용 부품으로서의 컴포넌트가 되기 위해서는 아래의 내용을 만족해야만 한다. 소스코드(source code)가 아닌 실행코드(execute code) 기반으로 재사용할 수 있도..
[C] 이진 탐색 (Binary Search) 알고리즘 개념과 예제
이진 탐색 이진 탐색은 오름차순으로 정렬되어있는 데이터에서 원하는 값(타겟 넘버)의 위치를 찾아내는 알고리즘이다. 여기서 이진(Binary)는 우리가 알고있는 그 이진 코드 (0101001...) 가 아니라 데이터를 반(2개)으로 나누어서 비교하고 찾는 방식이여서 이진 탐색이라고 한다. 이진 탐색의 알고리즘 진행방식은 아래와 같다. 정렬되어있는 데이터의 중간 값을 임의의 값 X로 정함 타겟 넘버의 값과 X를 비교 타겟 넘버의 값이 X보다 크다면, 타겟 넘버는 데이터에서 X보다 우측에 위치해 있으니 반으로 나눈 데이터의 우측에서 1번 과정부터 다시 시작 타겟 넘버의 값이 X보다 작다면, 타겟 넘버는 데이터에서 X보다 좌측에 위치해 있으니 반으로 나눈 데이터의 좌측에서 1번 과정부터 다시 시작 이진 탐색 예..
[C#] default와 new() 제약조건 사용하기
generic 함수를 작성하는데, 기본 값을 생성해줘야 할 때가 있었다. 이 때 사용하게 되는 키워드가 new와 default다. 이 글에서는 class, struct 그리고 enum을 사용할 때 어떤 점을 주의해야 하는지 살펴보도록 하겠다. new와 default new는 generic 함수의 제약 조건이다. 해당 제약 조건을 걸면 generic 함수 내에서 new T()와 같은 코드를 사용할 수 있다. 이 제약 조건을 걸었을 경우 struct와 enum은 항상 사용가능하고, class는 구현에 따라 달라지게 된다. default는 C#의 기본 키워드로 제약 조건이 필요하지도 않고, 다른 많은 곳에서도 사용할 수 있는 기능이다. default를 각 타입에 사용할 경우 아래 표와 같은 값이 생성된다. t..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2mISm%2FbtsrSL3E0sy%2FKpm3xMRYVXUxWKVIJeEkB0%2Fimg.png)
[C#] 제네릭 메서드(Generic Method) 널(Null) 반환 방법
매개변수가 null이 아니면, 매개변수의 값을 반환하고 매개변수의 값이 null이면, null을 반환하는 코드다. T ReturnValue(T val) { if (val != null) { return val; } else { return null; } } 하지만, return null; 코드에서 에러가 발생한다 C#에서 null이 올 수 있는 데이터 타입이 있고 불가능한 데이터 타입이 존재한다. 기본적으로 숫자형 타입들은 Nullable 연산자를 사용하지 않으면, null값을 할당할 수 없다. 즉, 제네릭 타입은 null이 가능한 타입도 있고 불가능한 타입이 있으므로 null을 반환할 수 없다. 만약, 제네릭 메서드에서 null을 반환하고 싶은 경우 default(T)를 사용한다. T ReturnVal..
[C#] 자료형(Data Type)의 기본 값(default) 연산자
C# 7.1부터는 컴파일러가 자료형을 유추하여 기본값을 할당하는 default 리터럴이 추가되었으며, 코드를 심플하게 작성할 수 있다. default 연산자, 리터럴 default 연산자는 괄호 안에 자료형을 명시해준다. int num = default(int); Console.WriteLine(num); // 0 default 리터럴은 괄호를 생략할 수 있다. 컴파일러가 변수 num의 자료형을 유추하여 기본값을 할당한다. int num = default; Console.WriteLine(num); // 0 아래 표는 각 타입의 기본 값이다. 자료형(Data Type) 기본값 참조 형식 null 정수 숫자 유형 0 부동 소수점 숫자 유형 0 bool false char '\0' enum 0 struct ..
[C#] 리플렉션 (Reflection) 예시
리플렉션 개념 사용 방법 Assembly.GetType으로 접근하려는 Type 검색 Reflection을 사용하기 위해서는 Assembly.GetType을 통해 접근하고자 하는 클래스의 Type을 찾아야 한다. Type이라는 용어가 다소 생소할 수도 있는데, 클래스명 = Type이라고 생각하면 된다. public Type GetAuthDataManagerType() { //모든 assembly를 검색합니다. foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { var test3 = assembly.GetTypes(); foreach (var type in assembly.GetTypes()) { //찾는 Type이 있을 경우 반환합니다...
[C++] 테스트용 map<int, 포인터배열>
#include #include using namespace std; class Test { private: Test** arr = new Test * [10]; map m; public: int val = 0; Test() { cout
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5rsv0%2FbtsrCRDlVOW%2FbX7xtYAgUGL6AbG913YZC1%2Fimg.png)
C++ 참조자(Reference)의 이해
참조자(레퍼런스)란 C에서는 없던, C++에서 새로 생긴 개념. 포인터랑 의도하는 바는 같은데 포인터의 단점이 보완되어 출시된 것. C++ 문서에서는 포인터보다 특정 경우가 아니라면 대부분 참조자를 사용하길 권장한다. 값으로 전달하는 방식의 한계 1. 큰 구조체나 클래스를 함수에 전달할 때 인수의 복사본을 매개변수로 만든다. 2. 함수의 호출자에 값을 전달하는 건 반환값을 사용하는 게 유일한 방법이나 함수에서 인수를 수정하는 게 확실하고 효율적이다. → 그래서 참조를 통해 문제를 해결한다. 변수를 참조로 전달하려면 매개변수를 참조로 선언한다. 함수가 호출되면 y는 인수에 대한 참조가 된다. int x=5; addOne(x); //int &y=x; 이런 의미 void addOne(int& y) { y=y+..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCZYFz%2FbtsrTRg0nPz%2FmsMVrMCHWJGkVJKgNmZfL1%2Fimg.png)
C Call-by-Value(값에 의한 호출) & Call-by-Reference(참조에 의한 호출)의 이해
C++ 언어에서는 레퍼런스 혹은 참조자(&)라는 개념이 따로 있으므로, 이를 Call-by-Address(주소에 의한 호출)라고 하지만 C 언어라는 것에 한정을 두고 Call-by-Reference(참조에 의한 호출)의 명칭으로 설명한다. 포인터와 메모리에 대한 개념을 명확하게 알고 있다면 이에 대한 이해가 어렵지 않으나, 사실상 메모리에서 어떻게 주소와 값이 흘러가는지 제대로 파악을 할 수 없다면, Call-by-Value와 Call-by-Reference에 대하여 많은 어려움을 겪을 것이다. 1. Call-by-Value (값에 의한 호출) Call-by-Value는 함수에 인자를 변수에 대입된 값을 던져주는 것을 의미한다. 일단 아래의 코드를 보자. 다음과 같이 int a 변수에는 10을 대입하고,..