반응형 C#25 8강. 배열 (2) 2차원 배열 2차원 배열 선언 2개의 차원(세로+가로)으로 원소를 배치하는 2차원 배열 1차원 배열을 원소로 갖는 배열 차원의 길이를 뒤에서부터 읽어 해석 int[2, 3] → 길이가 3인 1차원 배열을 요소로 갖는 길이가 2인 2차원 배열 2차원 배열 초기화 2차원 배열의 원소 접근 첫 번째 차원과 두 번째 차원의 인덱스를 대괄호 [ ] 사이에 같이 입력 using System; namespace _2DArray { class MainApp { static void Main(string[] args) { //2차원 배열의 첫 번째 초기화 방법 int[,] arr = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } }; //배열의 형식과 길이 명시 for (int i = 0; i.. 2023. 4. 19. 8강. 배열 (1) 배열 배열 (Array) 같은 데이터 형의 다수의 데이터를 한번에 다뤄야 하는 경우 각각의 데이터에 대한 변수를 선언한다면 코드의 양 증가 배열 변수 한 개로 다수의 데이터 관리 가능 같은 성격을 띤 다수의 데이터를 한 번에 다뤄야 하는 경우 : 수많은 변수 대신 그만큼의 용량을 가진 변수 하나로 해결한다면? 같은 형식의 복수 인스턴스를 저장할 수 있는 형식 참조 형식으로써 연속된 메모리 공간을 가리킴 반복문, 특히 for/foreach문과 함께 사용하면 효율 향상 꺽쇠 가로 [ ] 안에 배열의 크기를 지정하여 다음과 같이 선언 배열의 출력과 연산 다수의 변수 선언과 배열 사용의 비교 using System; namespace ArraySample { class MainApp { static void M.. 2023. 4. 19. 7강. 객체지향 프로그래밍과 클래스 (6)튜플 튜플 여러 필드를 담을 수 있는 구조체 : 형식의 이름을 갖지 않음, 임시적으로 사용할 복합 데이터 형식 선언에 적합 튜플 선언 : 명명되지 않은 선언 기본적으로는 구조체, 즉 값 형식 형식 이름 없이 선언하여 사용 프로그램 전역에서 사용할 형식에는 부적합 튜플 : 명명되지 않은 튜플 (Unnamed Tuple) 필드를 담을 수 있는 형식 이름이 없는 구조체 프로그램 전체에 사용할 형식 선언이 아닌 즉석에서 사용할 복합 데이터 형식 값 형식으로 생성된 지역을 벗어나면 스택에서 소멸되므로 메모리 사용 부담이 적음 명명되지 않은 튜플 (Unnamed Tuple) 튜플 사용할 때 필드의 이름을 지정하지 않음 명명되지 않은 선언 : Item1, Item2, ...ItemN 튜플 : 명명된 튜플 (Named Tu.. 2023. 4. 19. 7강. 객체지향 프로그래밍과 클래스 (5)중첩 클래스, 분할 클래스, 확장 메소드, 구조체 클래스 간의 형식 변환 클래스 간의 형식 변환 타입을 정의하는 것은 “단위 (unit)”를 사용하는 프로그램에 유용 예를 들어, 원, 달러, 엔화와 같은 통화 (currency) 단위 사용의 경우 모든 종류의 통화를 하나의 타입으로 지정하면 금전 계산에 오류 발생의 여지 있음 아래 코드에서 달러를 엔화에 그대로 대입하면 계산의 오류 발생 원화와 엔화에 대한 클래스 정의 서로 다른 클래스의 객체를 바로 대입할 수 없음 클래스 간의 형식 변환 : implicit 연산자 서로 다른 클래스의 객체 사이의 형식 변환 가능 즉, 두 객체 사이의 대입 연산자 (=) 사용 가능 암시적, 명시적 형식 변환 모두 가능 통화 (currency) 예에서 환율을 적용한 계산 가능 using System; namespace Ty.. 2023. 4. 18. 7강. 객체지향 프로그래밍과 클래스 (4)다형성 다형성 Introduction to 다형성 (Polymorphism) 부모 클래스 객체가 자식 클래스 메소드를 사용하려면, 자식 클래스로 형식 변환 필요 조건문 통해 자식 클래스 타입을 구별하고 해당 타입의 메소드 호출 다형성은 형식변환 수행 없이 자식 클래스 메소드 호출 지원 using System; namespace IntroPolymor { class Animal { public int Age { get; set; } public Animal() { this.Age = 0; } public void Eat() { Console.WriteLine("냠냠 먹습니다."); } public void Sleep() { Console.WriteLine("쿨쿨 잠을 잡니다."); } } class Dog : A.. 2023. 4. 18. 7강. 객체지향 프로그래밍과 클래스 (3)상속성 상속성 Introduction to 상속 (Inheritance) 현실 세계에서 많은 객체가 계층적 관계를 따름 한 객체가 다수의 다른 객체의 공통된 특성을 가지고 있음 예를 들어, 노트북, 데스크톱, 넷북이라는 타입을 정의 공통적으로 부팅, 전원 끄기, 리셋 등 컴퓨터로의 공통된 동작 수행 상속이라는 개념이 없으면, 각각 개별적으로 메서드와 상태 값 정의 상속 (Inheritance) 클래스는 다른 클래스로부터 유산을 물려받을 수 있음 즉, 필드나 메소드, 프로퍼티 같은 (클래스의)멤버를 물려받음 상속하는 쪽을 부모(또는 기반) 클래스, 상속 받는 쪽을 자식(또는 파생) 클래스 클래스 이름 옆에 콜론(:) 과 상속받을 클래스 이름 작성 “protected” 접근 제한자는 클래스 멤버를 외부에 접근 차단.. 2023. 4. 17. 이전 1 2 3 4 5 다음 반응형