C# 18

이것이 C#이다 Chapter 08 인터페이스와 추상 클래스

8.1 인터페이스의 선언 인터페이스(Interface)는 클래스와는 다르게 메소드, 이벤트, 인덱서, 프로퍼티만을 가질 수 있다. 게다가 구현부가 없다. 인터페이스는 접근 한정자를 사용할 수 없고 모든 것이 public으로 선언된다. 인스턴스도 만들 수 없다. interface 인터페이스_이름 { 반환_타입 메소드_이름1(매개변수 목록); 반환_타입 메소드_이름2(매개변수 목록); 반환_타입 메소드_이름3(매개변수 목록); // ... } interface ILogger { void WriteLog(string message); } 인터페이스는 인스턴스를 가질 수 없지만, 이 인터페이스를 상속받는 클래스의 인스턴스를 만드는 것은 가능하다. 파생클래스는 인터페이스에 선언된 모든 메소드(및 프로퍼티)를 구현..

공부/C# 2024.03.06

이것이 C#이다 Chapter 07 클래스

7.1 객체지향 프로그래밍과 클래스 객체지향 프로그래밍(Object Oriented Programming, OOP)은 코드 내 모든 것을 객체(Object)로 표현하려는 프로그래밍 패러다임이다. 여기서 객체는 세상의 모든 것을 지칭한다. 모든 것을 그대로 표현하는 것이 아닌 추상화(객체의 주요 특징만 뽑아낸다)시켜서 표현한다. 객체는 '속성'과 '기능'을 갖는다. 속성은 데이터로 기능은 메소드로 표현한다. 즉, 객체는 데이터와 메소드로 이루어진다. 클래스(Class)는 객체를 만들기 위한 청사진이라고 볼 수 있다. 클래스는 객체가 가지게 될 속성과 기능을 정의하지만 실체를 가지지 않는다. 만들어진 실체(Instance)를 영어 발음 그대로 '인스턴스'라고 부른다. 클래스는 복합 데이터 타입 객체지향적인 ..

공부/C# 2024.02.27

이것이 C#이다 Chapter 06 메소드로 코드 간추리기

6.1 메소드란? 메소드는 객체지향 프로그래밍 언어에서 사용하는 용어. C/C++ 에서는 함수(Function)라 부르기도 하고, 파스칼에서는 프로시저(Procedure)라 불렀다. 또는 서브루틴(Subroutine)이나 서브 프로그램(Subprogram)이라 부르는 언어도 있다. 엄밀히 말하면 의미 차이가 존재하지만, 큰 맥락에서는 같은 것을 지칭한다고 볼 수 있다. 메소드는 일련의 콛르르 하나의 이름 아래 묶은 것이다. 이렇게 묶은 코드는 메소드의 이름을 불러주는 것으로 실행할 수 있다. ('메소드를 호출(call)한다'고 한다) class 클래스_이름 { 한정자 반환_타입 메소드_이름(매개변수_목록) { // 실행할 코드 return 메소드_결과 // 메소드 결과의 데이터 타입은 메소드의 반환 타입..

공부/C# 2024.02.26

이것이 C#이다 Chapter 05 코드의 흐름 제어하기

5.1 분기문 분기문(Branching Statement)은 프로그램의 흐름을 조건에 따라 여러 갈래로 나누는 흐름 제어 구문 C# 에서는 if, swith 두 가지 분기문 제공 1. if, else, else if // if 문 if(조건식) 참인_경우에_실행할_코드; if(조건식) { // 참인 경우에 // 실행할 // 코드 } // if-else 문 if(조건식) 참인_경우에_실행할_코드; else 거짓인_경우에_실행할_코드; // if - else if - else 문 if(조건식1) 조건식1이_참인_경우에_실행할_코드; else if(조건식2) 조건식1이_거짓이고_조건식2가_참인_경우에_실행할_코드; else 위의_조건식들이_거짓인_경우에_실행할_코드; 2. if 문 중첩해서 사용하기 분기문이나..

공부/C# 2024.02.25

이것이 C#이다 Chapter 04 데이터를 가공하는 연산자

4.1 C#에서 제공하는 연산자 둘러보기 분류 연산자 산술 연산자 +, -, *, /, % 증가/감소 연산자 ++, -- 관계 연산자 , ==, !=, = 논리 연산자 &&, ||, ! 조건 연산자 ?: null 조건부 연산자 ?., ?[] 비트 연산자 , &, |, ^, ~ 할당 연산자 =, +=, -=, *=, /=, %=, &=, |=, ^=, = null 병합 연산자 ?? 4.2 산술 연산자 산술 연산자는 두 개의 피연산자가 필요하다. 이를 이항 연산자(Binary Operator)라고 한다. 산술 연산자의 우선순위는 수학에서의 사직연산 우선순위와 같다. 연산자 설명 지원 타입 + 양쪽 피연산자를 더한다. 모든 수치 데이터 타입 - 왼쪽 피연산자에서 오른쪽 피연산자를 뺀다. 모든 수치 데이터 타입..

공부/C# 2024.02.23

이것이 C#이다 Chapter 03 데이터 보관하기

3.1 다양한 데이터의 종류C#은 크게 기본 데이터 형식(Primitive Type)과 복합 데이터 형식(Complex Data Type)을 지원그와 동시에 값 형식, 참조 형식으로 분류 가능 3.2 변수'담을 데이터 타입에 따라 크기를 갖는 공간'// (데이터 형식) (식별자)int x;선언(Declare): 식별자라는 이름으로 변수 생성 초기화(Initialization): 변수에 최초의 데이터를 할당하는 것C#은 초기화를 강제 리터럴Literal은 '문자 그대로의' 라는 뜻을 가진 형용사컴퓨터 과학에서 리터럴(Literal)은 고정값을 나타내는 표기법을 의미int a = 3; // 변수: a, 리터럴: 3string s = "안녕" // 변수: s, 리터럴: "안녕" 3.3 값 ..

공부/C# 2024.02.18

이것이 C#이다 Chapter 02 처음 만드는 C# 프로그램

using System;usingC#의 키워드 중 하나지시문(Directive)로 사용될 때는 네임스페이스와 관련된 일을 하고, 문장(Statement)로 쓰일 때는 개체의 범위를 정의할 때 사용한다.using System;using SCG = System.Collections.Generic;class Program{ class Test : IDisposable { public Test() {} public void Dispose() {} } static void Main() { // 지시문(Directive) // 1) 네임스페이스 Console.WriteLine("Hello World!"); // u..

공부/C# 2024.02.10