본문 바로가기

C#/Knowledge

(27)
인터페이스 , 열거형 enums [ 인터페이스 ]클래스는 단일 상속만을 지원하지만, 인터페이스는 다중 상속을 지원 추상적인 동작만 정의하고, 구현을 갖지 않는다 [ Enums ]서로 관련된 상수들의 집합을 정의할 때 사용열거형의 각 상수는 정수 값으로 지정
제너릭 [ 제너릭 ]클래스나 메서드를 일반화시켜 다양한 자료형에 대응할 수 있는 기능C#에서는 형태의 키워드를 이용하여 제너릭을 선언제너릭 클래스나 메서드에서 사용할 자료형은 선언 시점이 아닌 사용 시점에 결정제너릭 클래스나 메서드를 사용할 때는 대신 구체적인 자료형을 사용 제너릭을 두개 이상 사용하는 경우
클래스의 상속 및 다형성 / 추상 클래스 [ 상속 ]기존의 클래스(상위 클래스) 를 확장하거나 재사용하여 새로운 클래스(하위 클래스) 를 생성자식 클래스는 부모 클래스의 멤버(필드, 메서드, 프로퍼티 등)를 상속받아 사용C#에서 다중 상속은 불가능 [ 다형성 ]다형성은 가상 메서드와 같은 의미로 볼 수 있다.부모 클래스에서 정의되고 자식 클래스에서 재정의할 수 있는 메서드가상 메서드는 virtual 키워드를 사용하여 선언되며, 자식 클래스에서 필요에 따라 override로 재정의될 수 있다. [ 오버라이딩 ]부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 재정의하는 것을 의미 ( 위 사진에서 사용 )이는 상속 관계에 있는 클래스 간에 발생하며, 메서드의 이름, 매개변수 및 반환타입이 동일해야만 함오버라이딩을 통해 자식 클래스는 부모 클래스..
클래스 & 객체지향 프로그래밍 [ 객체지향 프로그래밍 OOP ]캡슐화 : 관련된 데이터와 기능을 하나의 단위로 묶는 것상속 :  기존의 클래스를 확장하여 새로운 클래스를 만드는 메커니즘다형성 : 하나의 인터페이스나 기능을 다양한 방식으로 구현하거나 사용할 수 있는 능력추상화 : 복잡한 시스템이나 개념을 단순화하여 필요한 기능에 집중객체 : 클래스로부터 생성된 실체 [ 클래스 ]데이터와 메서드를 하나로 묶은 사용자 정의 타입 [ 필드 / 메서드 ] [ 생성자 / 소멸자 ] [ 프로퍼티 ] 객체의 필드에 직접 접근하지 않고, 간접적으로 값을 설정하거나 읽을 수 있도록 함필드와 마찬가지로 객체의 상태를 나타내는 데이터 역할을 하지만, 외부에서 접근할 때 추가적인 로직을 수행
구조체 [구조체]struct 키워드를 사용하여 여러 개의 데이터를 묶어서 하나의 사용자 정의 형식으로 만들기 위한 방법구조체는 변수를 선언하여 사용할 수 있음구조체의 멤버에는 접근할 때 . 연산자를 사용 함스태틱에 넣어야 하므로 자료형 앞에 퍼블릭을 넣어야 오류가 발생하지 않는다
메서드 [ 메서드 ] 일련의 코드 블록으로 메서드를 활용해서 코드를 줄일 수 있음메소드와 함수는 유사한 개념이지만, 프로그래밍 언어의 패러다임에 따라 약간의 차이가 있음객체 지향 프로그래밍에서는 주로 메소드를 사용절차 지향 프로그래밍이나 함수형 프로그래밍에서는 함수를 사용 하지만 이 둘을 동일하게 취급할 수도 있음 [ 메서드 구조 ] 접근제한자   메서드에 접근할수 있는 범위를 지정리턴타입   메서드가 반환하는 값의 타입을 고려해야만 한다. 반환 값이 없을 경우 void를 사용메서드명   호출하기 위해 사용하는 이름파라미터    매개변수는 메서드 선언부에 지정되며 메서드가 호출될 때 전달되는 값을 받아들이기 위한 역할 이를 통해 메서드는 호출될 때마다 다양한 입력 값을 받아들이고, 해당 값들을 기반으로 작업을 ..
배열과 컬렉션 [ 배열 ]동일한 자료형의 값들이 연속적으로 저장되는 자료 구조 구버전 메이플스토리 캐릭터 생성 시 랜덤 주사위 시스템을 생각하고 로직을 작성해 보자( 단, 스탯의 합산 값은 고려하지 않는다 )주사위 스탯최솟값 = 4       최댓값 = 13  다차원 배열주어진 코드에서 Console.WriteLine(array);를 사용하여 배열을 출력하려고 시도하였지만,이렇게 하면 배열의 주소가 출력되는 것이 기본 동작이다.배열을 원하는 형태로 출력하려면 배열의 각 요소를 개별적으로 접근하여 출력해야 한다.따라서, 배열의 각 요소를 개별적으로 출력하는 방법을 사용해야 한다. foreach조건식을 쓰지 않고 해당 배열을 처음부터 끝까지 반복할때 사용 [ 컬렉션 ]자료를 모아 놓은 데이터 구조 List 가변적인 크기를..
반복문 [ 반복문 ]일련의 명령문을 반복해서 실행하는 제어문 ① for 문 ② while 문 for  vs  While ③ do-while 문 ④ foreach 문 ⑤ 중첩 반복문 ⑥ break / continue [ 반복문 심화 과정 ]ex ) 랜덤 뽑기 시스템
조건문 [ 조건문 ]주어진 조건식의 결과에 따라 프로그램의 제어 흐름을 변경하는 제어문 ① if 문 / else if 문 / else 문바람의나라를 예로 들어 로직을 작성현철중검의 요구 스탯은 힘 40이다 ② 중첩 조건문하나의 조건문 안에 또 다른 조건문이 포함된 형태의 조건문사실 현철중검은 전사만 착용할 수 있음을 활용하여 로직을 작성 ③ switch 문식의 결과에 따라 다른 코드 블록을 실행하는 제어문 ④ 3항 연산자조건식의 결과에 따라 두 값을 선택하는 연산자 [ 조건문 심화 과정 ]ex ) 로그인 시스템 ex ) 랭크 시스템 [ 조건부 논리 연산자 ] && (And 연산자) 사실 현철중검은 전사만 착용할 수 있다.그러므로 전사이면서 힘 요구치를 만족시켜야만 착용할 수 있다는 이야기이다.교집합을 생각해보면..
연산자와 문자열 처리 [ 연산자 종류 ] [ 문자열 처리 기능 및 메서드 ]
변수와 자료형 새로 만든 프로젝트에 모든 내용을 지운다.그다음에 "Hi"; 와 2024; 를 입력해 보았다.우리가 입력한 숫자와 문자를 데이터 라고 표현하겠다. F5를 눌러 실행시킨 결과 빨간줄이 생겼다. 에러가 발생한 것을 확인할 수 있다.빨간줄이 나온 이유는 형식에 맞지않아서 발생한 문제라고 볼 수 있다.우리는 앞으로 이 것을 자주 보게 될 것이다.작성한 “Hi” 라는 문자는 코딩영역에서 혼자 살아남을 수 없는 친구이다.코딩영역에 데이터를 추가를 하면 지금처럼 에러가 발생한다.하지만 이전 코딩을 보면 Console.Write(); 안에서는 에러가 발생하지 않았다.이 부분이 바로 데이터가 안전하게 있을 수 있는 공간이다.하지만 Console.Write(); 의 본래 목적은 프로그램에 표시를 해주는 기능이다.그러므로 ..
프로그래밍 기본 요소 [ Hello World 구조 확인 ]using은 C#에서 기본적으로 제공하는 네임스페이스(System 네임스페이스)를 사용하기 위한 코드이며,Console 클래스를 사용하기 위해 필요함namespace는 코드를 구성하는 데 사용되며, 클래스 및 기타 네임스페이스의 컨테이너class 는 C# 클래스를 정의하는 키워드이며, 클래스 이름은 Program로 지정static void Main()은 C#의 진입점(entry point)Main 메서드는 프로그램이 시작할 때 자동으로 호출되는 메서드Main 메서드는 프로그램 실행에 필수적Console.WriteLine("Hello World");는 콘솔에 출력할 내용을 지정하는 코드WriteLine 메서드는 새 줄을 시작하고 출력할 문자열을 인자로 받음..