# 뇌를 자극하는 C# 프로그래밍
콜렉션
- ArrayList
- Queue
- Indexer
foreach가 가능한 객체를 만들기
학생 성적 출력 코딩
컬렉션이란?
같은 성격을 띄는 데이터의 모음을 담는 자료구조
배열도 .NET 프레임워크가 제공하는 컬렉션 자료구조 중 하나
ArrayList
ArrayList list = new ArrayList();
list.Add( 10 );
list.Add( 20 );
list.Add( 30 );
list.RemoveAt( 1 ); // 20을 삭제
list.Insert( 25, 1 ); // 25를 1번 인덱스에 삽입. 즉, 10 과 30 사이에 25를 삽입
ArrayList 클래스
상속계층구조라고 한다. 다양한 형식의 객체를 담을 수 있는 이유는 다음의 Add()
,lnsert() 메소드의 선언을 보면 알 수 있다.
public virtual int Add( object value)
public virtual void lnsert( int index, object value)
objec 형식의 매개 변수를 받는데 모든 형식은 object을 상속하므로 object 형식으로 간주될 수 있다 그래서 Add()메소드에 int 형식의 데이터를 넣더라도 정수 형식 그대로 입력되는 것이 아니라 object 형식으로 박싱(Boxing) 되어 입력되는 것인데 string 형식도 마찬가지이다. 반대로 ArrayList의 요소에 접근해서 사용할 때는 원래의 데이터 형식으로 언박싱(Unboxing)이 이루어지게 됩니다. 박싱과 언방싱은 작지 않은 오버헤드를 요구하는 작업인데 ArrayList가 다루는 데이터가 맣으면 많아질수록 이러한 성능의 저하는 더욱 늘어나게 됩니다. 이것은 ArrayList만의 문제가 아니라 앞으로 살펴볼 stact, Queue,Hashtable 등의 컬렉션도 갖고 있습니다.
Hashtable
->키(Key)와 값(Value)으로 이루어진 데이터를 다룰 때 사용.
->키를 헤싱(Hashing)를 통해 테이블 내의 주소를 계산.
->다루기 간편하고 탐색속도도 빠름
Hashtable ht = new Hashtable();
ht["book"] = "책";
ht["cook"] = "요리사";
ht["tweet"] = "지저귀다";
Console.WriteLine( ht["book"] ) ;
Console.WriteLine( ht["cook"] );
Console.WriteLine( ht["tweet"] );
인덱서!!<-오늘의 수업중 가장 중요한 부분이다.
->인덱서(lndexer)는 인덱스(lndex)를 이용해서 객체 내의 데이터에 접근하게 해주는 프로퍼티
->인덱서 선언 형식
class 클래스이름
{
한정자 인덱서형식 this[형식 index]
{
get
{
// index를 이용하여 내부 데이터 반환
}
set
{
// index를 이용하여 내부 데이터 저장 }
}
}
프로퍼티란 데이터의 은닉을 위한 것이다.
인덱서란 인덱서는 프로퍼티처럼 식별자를 따로 가지지 않습니다.
프로퍼티가 이름을 통해 객체 내의 데이터에 접근하게 해준다면, 인덱서는 인덱스를 통해 객체 내의 데이터에 접근하게 해주는데 지정한 인덱스보다 배열의 크기가 작다면 인덱스에 맞춰 배열의 크기를 재조정한다. 프로퍼티란 객체 내의 접근할 수 있도록 하는 통로역활인데 인덱서도 프로퍼티처럼 객체 내의 데이터에 접근할 수 있도록 하는 통로인데 프로퍼티와 다른점 이라면“인덱스(index)"를 이용한다는 사실이다.
p333. 배열과 컬렉션,그리고 인덱서
예제부분이 너무 길기 때문에 생략 하였습니다. p335쪽 참고하시면 될 것 같습니다.
C++ 수업은 자율학습으로 대체하였습니다
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
Car 클래스 수업자료 (1) | 2015.06.11 |
---|---|
20150610-31번-차윤도 C#-일반화프로그래밍,예외처리하기 C++-클래스 (6) | 2015.06.10 |
2015.06.09(화) 주재민 (5) | 2015.06.09 |
20150609 - c++ 파일분활 (0) | 2015.06.09 |
20150605 - 26번 임현수 배열, default 매개변수, 복사생성자 (5) | 2015.06.07 |
20150603 - 23번 이량경 friend, 정적{this, static)/객체복사, this, 접근한정자, Base, 상속, ISAS,오버라이딩,메소드 숨기기, 중첩분할 클래스, 확장메소드, 구조체 (7) | 2015.06.04 |
20150602 - 22번 윤재희 C #:객체 지향 프로그래밍과 클래스 C++ 타입변환, 캡슐화 (8) | 2015.06.02 |
20150601 - 21번 우대희 <매개 변수 / 상수멤버 초기화> (3) | 2015.06.01 |