본문 바로가기
전공/C# 프로그래밍

1강. C# 언어와 .NET 플랫폼 소개

by 임 낭 만 2023. 4. 13.

<이것이 C#이다> 교재를 참고하였습니다.

C#과 .NET 플랫폼

C# 프로그래밍 언어

  • Microsoft 사의 앤더스 헤일스버그 (Anders Hejisberg) 개발
  • .NET Framework에 최적화
  • 객체지향 (Objected-Oriented) 언어
  • 다양한 플랫폼에서 동작
    • 윈도, 맥, 리눅스, 안드로이드, 아이폰 등
  • 프로그래머에게 높은 수준의 생산성 제공

 

.NET 플랫폼

  • 플랫폼(Platform)이란?
    • 응용프로그램을 실행하는 데 사용되는 하드웨어와 소프트웨어 집합
    • 예: 윈도, 맥, 안드로이드, 아이폰(iOS) 등등
  • 소프트웨어 플랫폼
    • 운영체제 차이에 따른 응용프로그램 실행환경 문제 해결

더보기

 플랫폼은 컴퓨터 시스템이나 소프트웨어의 구동 환경을 의미. 소프트웨어를 실행할 수 있는 운영체제나 런타임 환경, 하드웨어 구성 등을 모두 포함. 다양한 종류의 플랫폼이 존재하며, 각각의 플랫폼은 자체적인 특성과 제약 사항을 가지고 있음.

 소프트웨어 개발에서는 특정 플랫폼에서 실행되는 응용 프로그램을 개발하기 위해 해당 플랫폼에 맞는 언어와 도구를 사용해야 함.

CLR (Common Lanugage Runtime)

  • .NET 라이브러리와 함께 운영체제 위에 설치
  • 적시 (Just In Time) 컴파일
    • 소스코드 → 중간 언어 (IL: Intermediate Language) 코드 → 네이티브 코드
    • C# 외에 다양한 프로그래밍 언어 지원
    • 장점: 플랫폼에 최적화된 코드 생성
    • 단점: 실행 시 컴파일 부담

 

IL 코드 실행하는 CLR

  • C# 컴파일러는 소스코드에 대한 EXE 파일 생성
  • 생성된 EXE 파일
    • CLR을 메모리에 불러오는 코드 포함
    • 중간 언어(IL)로 변환된 소스코드 포함
  • 프로세스 (EXE 파일) 실행 시
    • CLR을 메모리에 적재
    • CLR이 중간언어로 된 .NET 코드를 실행

 

.NET 호환 언어

  • 중간 언어 (IL)로 변환되는 언어
    • 예 : C#, Visual Basic .NET, F#, C++ 등등
  • 호환 언어는 중간 언어로 변환되어 상호 호출이 가능
    • 메소드, 클래스 등을 공유 가능
  • 공용 타입 시스템 (CTS : Common Type System)
    • .NET 호환 언어는 CTS 규약을 만족하는 한도 내에 구현 가능
    • .NET 호환 언어가 CTS에서 정의된 모든 규격을 구현할 필요는 없음
  • 공용 언어 사양 (CLS: Common Language Specification)
    • .NET 호환 언어가 지켜야 할 최소한의 언어 사양

더보기

.NET 호환 언어는 .NET 프레임 워크를 지원하는 언어로, CLR에서 실행될 수 있는 중간 언어 코드를 생성할 수 있음.

.NET 호환 언어들이 공통된 중간 언어 코드를 생성할 수 있기 때문에, .NET 호환 언어로 작성된 코드는 서로 호환성이 있음. 한 언어로 작성된 코드를 다른 언어로 변환하거나, 다른 언어로 작성된 코드를 사용하는 것이 가능

.NET 라이브러리

  • 라이브러리(Library) 이란?
    • 응용프로그램을 만들 때 사용하는 미리 정의한 클래스 또는 서브루틴의 집합
    • 예: 화면에 글자 출력을 위한 메서드

  • .NET 클래스 라이브러리
    • 응용프로그램 개발을 위해 정의된 클래스, 네임스페이스, 인터페이스 집합
  • 네임스페이스 (Namespace)
    • 용도별/분야별 비슷한 라이브러리 코드를 묶음
  • 예: System.IO 네임스페이스
    • 파일 입출력을 다루는 각종 클래스, 구조체 등의 모음

 

.NET Framework의 프레임 워크

  • 프레임워크 (Framework)
    • 제어 역전이 있는 대규모의 라이브러리
    • 응용 프로그램 개발에 바탕이 되는 템플릿과 같은 역할
    • 예: 윈도 폼 (Windows Forms) 템플릿

  • 제어역전 (Inversion of Control: IoC)
    • 응용프로그램의 초기화부터 종료까지 흐름을 사용자 코드가 아닌 프레임워크에 의해 관리
    • 윈도 폼 예: 프레임워크는 필요 시에만 사용자 코드 호출 (e.g., 버튼 클릭 또는 리스트 박스 선택 요소 변경)

제어 역전 : 제어권이 개발자에서 프레임 워크나 라이브러리 같은 외부 컴포넌트로 넘어가는 것.

C# 프로그램 개발 - GUI (Graphical User Interface)

  • 윈도 폼 (Windows Forms)
    • 윈도우 UI (User Interface)를 가지는 프로그램
    • 기존 C++의 Win32 API 또는 MFC를 C#으로 옮겨 놓은 형태
    • 그림 그리듯 버튼 또는 콤보 박스와 같은 GUI 개발 가능
  • WPF (Windows Presentation Foundation)
    • .NET 3.0부터 제공하는 GUI 프레임워크
    • 윈도 폼보다 더 다양한 효과 제공

윈도우 폼

 

C# 프로그램 개발 - 웹 (Web)

  • ASP.NET 웹 개발 프레임워크
    • ASP.NET 초기에는 주로 WebForms 사용
    • 현재는 테스트 및 유지 관리가 쉬운 ASP.NET MVC가 널리 사용
  • ASP.NET MVC
    • Model : 데이터 및 로직 처리
    • View : 프로그램 외관, 결과 표현
    • Controller :
      • 사용자 입력/요청을 받음
      • Model를 통해 데이터 접근
      • View 생성하여 결과 리턴

 

C# 프로그램 개발 - 게임 (Game)

  • 기존에는 데스크톱/콘솔 게임 개발을 위한 언어는 C++로 한정
  • 최근 게임 서버/클라이언트 개발을 위해 C# 언어도 널리 사용
  • 게임 클라이언트
    • 유니티 (Unity) 엔진 사용
    • 모바일/데스크톱/콘솔 개발
  • 게임 서버
    • 많은 수의 사용자 지원
    • 다량의 데이터 실시간 전송 및 처리
    • 예 : MMORPG

 

C# 프로그램 개발 - IoT (Internet of Things)

  • 사물 인터넷 (IoT)
    • 다양한 사물에 센서와 통신기능 내장, 인터넷 연결 기술
    • 은행 ATM 기계 또는 지하철 전광판 등에 활용
  • Microsoft의 윈도 10 IoT
    • 윈도 임베디드 버전
    • 라즈베리파이 같은 싱들보드 컴퓨터에 활용 가능
    • C#을 이용해 IoT 앱 개발


C# 예제 코드

기본 소스코드 파악하기

  • 기본 소스코드 해석을 통해 C# 프로그램의 골격 이해
  • “using”
    • C# 언어 규격에 미리 정의 된 키워드
  • “System”
    • C# 코드가 기본적으로 필요로 하는 클래스를 담고 있는 네임스페이스
    • “Console” 클래스 포함
  • using System;
    • System 네임스페이스 내 클래스 사용을 컴파일러에 알리는 역할

using System;

namespace FirstProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}
  • namespace FirstProgram { }
    • 네임스페이스 생성

  • 다른 네임스페이스 내에서 Program 클래스 사용 방법
    • using FirstProgram;” 사용 또는 “네임스페이스_이름.클래스_이름” 형태로 이용. (즉, FirstProgram.Program)
  • class Program { }
    • 클래스는 C# 프로그램을 구성하는 기본 단위
    • 클래스는 데이터와 데이터를 처리하는 기능(예: 메소드)로 구성
    • 기본코드에는 클래스 내 “Main()” 메소드 포함
  • static void Main(string[] args)
    • 프로그램의 진입점 (Entry Point)
    • 프로그램 시작하면 실행, 이 메소드가 종료되면 프로그램도 종료
    • static” 한정자 : static 키워드로 수식된 코드는 프로그램이 처음 구동될 때부터 메모리에 할당
    • void” 메소드의 반환 형식
    • string[] args” : 실행파일(FirstProgram.exe) 실행하는 명령어와 함께 입력되는 문자열 매개변수

'전공 > C# 프로그래밍' 카테고리의 다른 글

5강. 코드 흐름 제어  (0) 2023.04.16
4강. 데이터 가공을 위한 연산자  (1) 2023.04.16
3강. 문자열 다루기  (0) 2023.04.16
2강. 데이터 타입 (2)  (0) 2023.04.15
2강. 데이터 타입 (1)  (2) 2023.04.14

댓글