전체 글

전체 글

    [C#] C#과 OOP(Object-Oriented Programming) - 2. 클래스 라이브러리 (Class library)

    [C#] C#과 OOP(Object-Oriented Programming) - 2. 클래스 라이브러리 (Class library)

    2. 클래스 라이브러리 (Class library) 클래스 라이브러리는 대게 독립적으로 실행될 수 있는 Application보다는 다른 Application에서 기능을 활용할 수 있는 DLL과 같은 형태로 배포되는데 .NET이 가장 대표적인 '클래스 라이브러리'의 모음이라고 할 수 있습니다. Visual Studio Code를 사용하는 경우 프로젝트를 '클래스 라이브러리'형태로 생성하려면 'classlib'옵션을 사용해 프로젝트를 생성해야 합니다. dotnet new classlib -o mylibrary 예제에서 프로젝트의 이름은 'mylibrary'로 하였습니다. 프로젝트를 생성한 뒤 프로젝트의 *.csproj파일을 보면 net6.0 enable enable TargetFramework가 net6.0..

    [C#] C#과 OOP(Object-Oriented Programming) - 1. 객체지향프로그래밍 개념

    1. OOP 실제 세계에서의 '객체(Object)'라 함은 '사람' 혹은 '자동차'와 같은 사물에 비유될 수 있습니다. 많은 프로그래밍 언어에서 이러한 '객체(Object)'를 표현하기 위해 OOP(Object-Oriented Programming)라는 개념을 도입하고 있고 그중 C#에서는 class와 struct와 같은 키워드를 사용해 이러한 Object를 코드로서 표현하고 있습니다. OOP는 프로그래밍에서 다음과 같은 특징을 가집니다. 캡슐화(Encapsulation) : 객체는 대상에 따라 필요한 데이터와 동작(Action)을 가질 수 있습니다. 예를 들어 '자동차'를 표현하는 경우 '속도' 혹은 '색상'과 같은 값(데이터)를 가질 수 있으며 '주행', '정지'와 같은 동작을 가질 수 있습니다. 캡..

    [C#] 예외처리

    [C#] 예외처리

    1. 예외처리 위의 Parse()메서드를 설명할 때 이미 Runtime에러가 발생하는 경우를 봤었는데 이런 경우를 '예외가 발생했다.'라고도 표현합니다. 예외가 발생하면 try ~ catch를 사용하는 경우 에러를 제어할 수 있는 여지가 주어지지만 그렇지 않다면 stack trace를 포함한 예외 관련 메시지를 출력하고 Application의 동작은 중지됩니다. try { string s = "abc"; int i = int.Parse(s); } catch { } 예제에서처럼 try ~ catch는 예외가 발생할 수 있는 코드 전체를 try { } 안에서 실행하도록 할 수 있으며 예외가 발생되는 경우만 catch { } 내부로 처리가 이루어지게 됩니다. 위에서 'Unhandled exception'가 발..

    [C#] 형변환

    프로그래밍에서 특정 형식의 데이터를 다른 형식으로 형 변환하는 경우는 흔한 일중 하나입니다. 예를 들어 사용자로부터 입력받은 값은 string형식인데 해당 값을 사칙연산으로 계산하기 위해 int형식으로 바꾸는 경우입니다. ※ 형 변환을 언급할 때 Casting과 Convert라는 말이 자주 사용되는데 이 둘은 같은 의미를 가집니다. 형 변환이 크게 명시적인 형태와 명시적인 형태 이 2가지로 이루어집니다. 암시적인 형 변환은 대부분 자동적으로 변환되는 것으로 기존에 변수가 가진 값의 손실이 없이 완벽하게 변환되는 경우로 안전하게 처리될 수 있습니다. 하지만 명시적인 형변환은 직접 형 변환을 코드로 구현해 처리하는 것으로 이런 경우는 상황에 따라 기존 값의 일부 손실이 있을 수 있습니다. ● 숫자 형식에 대..

    [C#] 흐름제어

    1. 분기문 (selection statements) ● if if는 분기문이라 하여 말 그대로 Boolean 식을 평가한 후 처리를 분기하는 제어문입니다. if (Boolean식) { } else if (Boolean식) { } else { } if의 Boolean식이 True라면 중괄호({})안의 코드를 실행하게 됩니다. else if나 else는 선택적이며 if의 결과가 false인 경우 실행될 수 있습니다. 이때 else if문은 다른 if문에서 의존하지 않는 새로운 Boolean 식을 평가할 수 있습니다. 또한 if문은 필요하다면 여러 개로 중첩될 수 있습니다. if문을 비롯한 다른 제어문이나 반복문에도 해당될 수 있는 내용으로 실행되는 구문의 영역이 한 줄에 불과하다면 중괄호({})는 생략될 ..

    [C#] 연산자

    ● 산술 연산자 연산자는 변수나 실제값에 해당하는 피연산자를 더하거나 곱하는 등의 연산을 수행하며 일반적으로 다른 변수에 할당 가능한 또 다른 값을 반환합니다. 연산자 중 이항 연산자는 연산에 필요한 피연산자가 최소 2개 이상은 되어야 하는 연산자임을 의미하며 int i = 10; int j = 20; int result = i + j; 가(+), 감(-), 승(*), 제(/) 연산을 위해서 가장 많이 사용되는 연산자입니다. 참고로 % 는 나머지를 의미합니다. int i = 10; int j = 20; int result = i % j; 단항 연산자는 단 하나의 피연산자를 필요로 합니다. int i = 10; int result = ++i; 단항 연산자는 대표적으로 변수의 값을 1만큼 증가시키는 ++와 ..

    [C#] C# 개요 - 3. 기타 Console Application 관련

    [C#] C# 개요 - 3. 기타 Console Application 관련

    4. Console Application 추가사항 Console형식의 App은 화려하고 편리한 GUI를 지원하지는 않지만 간단하게 특정 기능을 테스트하고 코드를 학습하기 위한 좋은 선택이 될 수 있으며 이미 이전의 예제에서 Console프로젝트를 생성해 사용해 왔습니다. 하지만 때로는 Console상에서 어떤 결과를 출력할 때 다소 불편한 상황이 전개될 수 있는데 이를 위해 몇 가지 보완할 수 있는 방법을 알아보고자 합니다. ● 번호가 매겨진 선택적 매개변수의 사용 (numbered positional arguments) 'numbered positional arguments'는 Write()나 WriteLine() 메서드를 통해 문자열을 출력하는 경우 특정 포맷으로 형식화할 수 있는 방법 중에 하나가 ..

    [C#] C# 개요 - 2. 변수

    3. 변수 Application은 기본적으로 필요한 Data를 Memory에서 다루기 위해 '변수'를 사용합니다. 데이터는 파일이나 DB혹은 외부의 사용자 입력 등 다양한 곳에서 들어올 수 있지만 이렇게 입력된 데이터를 처리하기 위해서는 어딘가에 해당 데이터를 저장해야 하고 이러한 수단에서 '변수'를 활용하는 것입니다. 다만 '변수'는 Application이 종료되면 Memory에서 제거되므로 이를 지속적으로 저장하기 위해서 파일이나 DB 등을 별도로 이용할 수 있습니다. '변수'는 사용하고자 하는 type에 따라 Memory를 차지하는 크기가 달라집니다. 가능한 한 작은 type을 사용하면 그만큼 적은 Memory를 할당받게 되지만 그렇다고 해서 작은 크기의 '변수'가 그렇지 않은 '변수'보다 항상 처..