본문 바로가기
반응형

C#프로그래밍11

11강. 인터페이스와 추상 클래스 (3) 인터페이스의 프로퍼티 인터페이스의 프로퍼티 인터페이스는 메소드 뿐 아니라 프로퍼티와 인덱서도 가질 수 있음 파생 클래스에서 프로퍼티와 인덱서를 반드시 구현해야 함 인터페이스의 프로퍼티 선언은 클래스의 자동구현 프로퍼티 선언과 동일 using System; namespace PropertiesInInterface { interface INamedValue { string Name{get;set;} string Value{get;set;} } class NamedValue : INamedValue {//INamedValue 인터페이스 프로퍼티 구현위해 자동구현 프로퍼티 이용 가능 public string Name{get;set;} public string Value{get;set;} } class MainA.. 2023. 5. 27.
11강. 인터페이스와 추상 클래스 (2) 다중 상속 여러 개의 인터페이스, 한꺼번에 상속하기 클래스는 "죽음의 다이아몬드" 문제 때문에, 여러 클래스 한꺼번에 상속할 수 없음 예제그림에서, 최초 클래스(Ridable)의 두 파생클래스(Car, Plane)가 존재하고, 이 두 파생클래스를 다시 하나의 클래스(MyVehicle)가 상속 했을 때, MyVehicle 클래스는 어느 Ride() 메소드를 물려 받을까? 인터페이스는 내용이 아닌 외형을 상속 “죽음의 다이아몬드” 문제 발생하지 않음 인터페이스의 다중 상속 지원 단순한 외형만 상속함으로 내부 구현은 상속자에게 맡김 클래스와 달리 인터페이스는 다중 상속이 허용 인터페이스의 메서드를 자식 클래스에서 구현할 때는 반드시 public 접근 제한자 명시 예를 들어, Notebook 클래스에서는 Com.. 2023. 5. 27.
11강. 인터페이스와 추상 클래스 (1) 인터페이스 (Interface) 인터페이스(Interface) 선언 인터페이스는 interface 키워드를 이용해서 선언 메소드, 이벤트, 인덱서, 프로퍼티만을 가질 수 있음 메소드, 이벤트, 인덱서, 프로퍼티의 구현부는 없음 접근 제한 한정자(e.g. private) 사용 불가 인터페이스는 인스턴스를 만들 수 없음 인터페이스를 상속받는 클래스의 인스턴스를 만드는 것은 가능 더보기 인터페이스는 청사진 클래스 (a.k.a Concrete 클래스)는 객체의 청사진 인터페이스는 클래스의 청사진 클래스가 해야하는 행동을 결정 : 즉, 클래스가 어떤 메소드를 가질지 결정 [특징] 가능한 멤버 : 메소드, 이벤트, 인덱서, 프로퍼티 대개 interface의 I로 시작하는 이름으로 명 구현부 없음 모두 public으.. 2023. 5. 23.
10강. 인덱서 (Indexer) & foreach가 가능한 객체 만들기 인덱서 (Indexer) 인덱서 인덱스(Index)를 이용해서 객체 내의 데이터에 접근하게 해주는 프로퍼티 객체를 마치 배열처럼 사용할 수 있게 지원 프로퍼티처럼 식별자를 따로 가지지 않음 인덱스를 통해 객체 내의 데이터에 접근 using System; using System.Collections; namespace Indexer { class MyList { private int[] array; public MyList() { array = new int[3]; } public int this[int index] //인덱서 { get { return array[index]; } set { if (index >= array.Length) { Array.Resize(ref array, index + 1);.. 2023. 4. 20.
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.
반응형