C# 21

C# 객체지향 문법 [다형성]

객체지향의 4대 특징은 일반적으로 추상화, 캡슐화, 상속, 다형성이다.객체지향 언어에서 보통 추상화는 '클래스'를 통해 제공된다.다형성(polymorphism)은 '여러가지 형태를 띈다'는 것인데 메서드 오버라이드와 메서드 오버로드를 통해 다형성에 대해 공부할 수 있다.메서드 오버라이드현실 세계를 객체지향 개념을 이용해 모델링하면, 포유류 안에 사자, 고래, 인간 등이 포함된다.ex)class Mammal{ public void Move() { Console.WriteLine("이동한다."); }}class Lion : Mammal{}class Whale : Mammal{}class Human : Mammal{}그런데 객체들이 움직이는 방법이 각각 다르다. Lion은 네 발로..

C# 2025.05.17

C# 객체지향 문법 [상속]

현실 세계를 보면 인간과 침팬지는 영장류에 속하고, 영장류와 고래, 기린 등은 포유류에 속한다. 이런 식으로 어떤 공통적인 특징이 있고 그 특징을 상속(inheritance)받아 다른 세부적인 항목을 정의하는데, 일상적인 많은 객체가 이런 '계층적'인 관계를 따른다.상속이라는 개념이 없을 때 노트북, 데스크톱, 넷북 클래스는 다음과 같이 개별적으로 메서드와 상태 값을 정의해야 한다.public class Notebook{ bool powerOn; public void Boot(){} public void shutdown(){} public void Reset(){} bool finerScan; //public 특화 멤버 필드 추가 public bool HasFing..

C# 2025.05.15

C# 객체지향 문법 [캡슐화]

관련성이 있는 데이터와 그 데이터를 다루는 메서드를 객체 안에 구현하는 것이 일반적인 통념이고, 더 나아가서는 객체의 밖에서 알 필요가 없는 내부 멤버를 숨기기도 하는데, 이를 두고 캡슐화(encapsulation)라는 용어를 사용한다.double pi = 3.14;double GetAreaOfCircle(double radius) //원의 넓이를 반환하는 함수{ return radius * radius * pi;}void Print(double value){ Console.WriteLine(GetAreaOfCircle(value));}Print(10); //출력 결과: 314객체가 없어 파일로 구분해줄 수 있다.ex) 모든 코드를 math.c라는 파일안에 넣어 둘 수 있다. 어찌 보면 파일로..

C# 2025.05.13

C# 객체지향 문법 [생성자, 종료자, 정적멤버, 인스턴스 멤버, 네임스페이스]

생성자C# 클래스에는 특별한 용도의 메서드가 있다.클래스에 생성자 메서드를 추가하면 객체가 '생성'되는 시점에 해당 메서드가 자동으로 호출된다. 이런 점에서 생성자는 다른 여타 메서드와 구별된다는 특징이 있다.class 클래스_명{ 접근_제한자 클래스_명(타입 매개변수명, ....) { }}//생성자는 이름이 클래스명과 동일하며 반환타입을 명시하지 않는다는 점을 제외하면 //일반 메서드를 정의하는 방법을 따른다.(constructor를 줄여서 ctor라고 부르기도 한다.)반환 타입이 없고 클래스 이름과 동일한 public Person 메서드를 정의해두면 코드에서 new Person을 실행하는 시점에 해당 메서드의 코드가 실행된다.-> 생성자에는 말 그대로 객체를 생성하는 시점에 실행되야 할 코..

C# 2025.05.13

C# 객체지향 문법 [클래스, 필드, 메서드]

'책'이라는 개념을 보면, 어떤 공통적인 특징을 만족해야 '책'이라고 부를 수 있는가?책에는 '제목'이 있다. 이와 마찬가지로 'ISBN 식별자', '내용', '저자', '페이지 수'가 책에 포함될 수 있다.이러한 특징을 C#의 자료형으로 나타내는 것이 가능하다.책제목stringISBN 식별자decimal내용string저자string페이지 수int특정 사물의 특징 중에는 자료형으로 표현할 수 있는 여러 가지 값이 존재하고, 객체지향에서는 이를 속성(attribute)라고 한다.사물의 특징에는 속성만 있는 것은 아니다. 인간이라는 범주에 속하는 영희라는 객체가 책과 상호작용할 때 대표적으로 '책을 펼치고', '책을 덮는다'는 행위(behavior)를 한다.이러한 행위까지 포함한다면 책은 다음과 같은 특징으..

C# 2025.05.12

C# [제어문]

선택문C#의 선택문(selection statements)으로 if와 switch 구문이 있다. 두 단어 모두 C#의 예약어이며 그에 따른 일정한 형식의 문법이 있다.bool 자료형이 나오는 C# 연산자를 알아야 하는데, 전형적인 선택문에는 반드시 '조건'이 따르게 되고, 그 조건의 평가는 참/거짓으로 나오기 때문이다.관계 연산자, 논리 연산자연산의 결과가 참/거짓으로 나오는 C#의 연산자로는 관계 연산자(relational operator)와 논리 연산자(logical operator)가 있다.6가지 관계 연산자관계 연산자평가 방식예제>좌측 피연산자가 우측 피연산자보다 크면 참, 같거나 작으면 거짓bool result = 10 > 20; //거짓좌측 피연산자가 우측 피연산자보다 작으면 참, 같거나..

C# 2025.05.09

C# [배열]

배열(array)이란 무엇이고 왜 필요한가?개발자를 편리하게 만들어주는 것이 배열이다.개발자가 관리해야할 제품의 수의 양이 많다면 코드의 양도 증가하는데, 배열을 사용해 이 문제를 해결 할 수 있다.int box1 = 1000;int box2 = 2000;int box3 = 3000;//이렇게 관리하는 것이 아닌 배열을 선언해 사용한다.int[] boxs = new int[5];string[] names = new string[1000];new라는 예약어와 함께 배열을 정의하기 위한 대괄호(square bracket) 문장부호를 볼 수 있다.C#에서 new 키워드는 참조 형식과 함께 사용되는 경우 그에 필요한 메모리 힙(Heap)에 할당하는 역할을 한다.변수를 선언할 때 대괄호를 사용하면 해당 변수가 배..

C# 2025.05.07

C# [기본 문법 요소]

각 프로그래밍 언어는 저 마다 나름의 문법과 어휘 구조를 가지고 있다.C#도 예외는 아니며, 한 가지 집고 넘어가야 할 것이 바로 '예약어(또는 키워드)', '식별자', '리터럴' 개념이다.예약어, 키워드예약어(reversed word) 또는 키워드(keyword)는 C# 언어에서 문법을 표현하기 위해 미리 예약된 단어를 의미한다.예약어 예시)sbyte, byte, short, ushort, int, uint, long, ulongfloat, double, decimalchar, stringbool식별자식별자(identifier)는 프로그래밍을 하면서 임의로 선택해서 이름을 지을 수 있는 단어를 말한다.namespace ConsoleApp2; class Program { static void Ma..

C# 2025.05.07

C# [형 변환]

각 자료형은 서로 변환하는 것이 가능할 수도 있고 그렇지 않을 수도 있다.부가적인 코드를 지정하지 않고 자연스럽게 형 변환(Type Conversion)되는 것을 '암시적 변환'이라고 한다.개발자가 명시적으로 형 변환임을 알리는 것을 '명시적 변환'이라고 한다.암시적 변환 1바이트의 byte 데이터가 2바이트의 short 형에 대입된다면 문제되는 것이 있는가?- 없다. byte 데이터에는 0 ~ 255 범위의 수가 담기는데, short 형 데이터에는 -32,768 ~ 32767 범위의 값을 담을 수 있기 때문이다.이 처럼 범위가 작은 데이터 타입에서 그 값을 충분히 담을 수 있는 큰 타입으로 형 변환하는 것은 컴파일러가 '암시적 변환(Implicit conversion)'으로 간주해서 오류 없이 컴파일 ..

C# 2025.05.05

C# [기본 자료형]

자료형(Data Type)은 프로그램에서 데이터를 담을 수 있는 일정한 형식을 말하며, 기본 자료형(Built-in-Types)은 개발자가 별도로 코드를 만들지 않아도 C# 언어에서 자체적으로 제공하는 데이터 형식을 의미한다.정수형 기본 타입컴퓨터는 0과 1이라는 비트(bit)로 구성되어 이씩 때문에 오직 '숫자'만이 의미가 있다. 컴퓨터 세상에서는 모든 것이 숫자인데, 알파벳조차 'A' = 65, 'B' = 64... 같은 식으로 각각 대응되는 숫자로 '약속'되어 있다.비트가 표현하는 경우의 수로 인해 8비트는 2^8 = 256, 16비트는 2^16 = 65,536처럼 숫자 표현도 정해져 있다.C#뿐만 아니라 일반적인 프로그래밍 언어에서 이러한 규칙은 공통적으로 적용되며, 데이터 자료형에 따라 비트를 ..

C# 2025.05.04