본문 바로가기

전체 글

(25)
에빙하우스의 망각곡선 보호되어 있는 글입니다.
컬렉션 (ArrayList, Queue, Stack, Hashtable) A. 컬렉션(Collection) 같은 성격을 띄는 데이터의 모음을 담는 자료구조를 말한다. .NET 프레임워크는 배열외에도 다양한 컬렉션을 제공하며, 대표적으로 4가지가있다. 1. ArrayList 2. Queue 3. Stack 4. Hashtable 1. ArrayList 배열과 비슷하게 동작하지만, 차이점은 용량을 미리 지정할 필요없이 자동으로 용량이 늘어나거나 줄어든다. - Add() : 컬렉션의 마지막에 요소를 추가한다. - RemoveAt() : 특정 인덱스의 요소를 제거한다. - Insert() : 원하는 위치에 새 요소를 삽입한다. ArrayList list = new ArrayList(); list.Add(10); list.Add(20); list.Add(30); list.RemoveA..
배열 (선언 및 사용, 초기화, System.Array 클래스, 2차원/다차원 배열, 가변배열) A. 배열의 선언 및 사용법 int[] array = new int[5]; int sum; foreach(int score in array) sum+=score; int average= sum/array.length(); B. 배열의 초기화방법 3가지 //1번째 : 기본 string[] array1 = new string[3]{"a","b","c"}; //배열 객체를 초기화하는 {}블록을 컬렉션 초기자(Collection Initializer)라고 한다. //2번째 : 배열의 용량생략 string[] array2 = new string[]{"a","b","c"}; //3번째 : new 연산자, 배열의 용량 모두를 생략 string[] array3 = {"a","b","c"} * 작성시 3번째 방법이 편하..
프로퍼티 - 2 (인터페이스의 프로퍼티, 추상 프로퍼티) A. 인터페이스의 프로퍼티 인터페이스는 메소드 뿐만아니라 프로퍼티와 인덱서도 가질수 있다. 마찬가지로 파생클래스에서는 필수적으로 구현이 되어야한다. 인터페이스의 프로퍼티 선언은 클래스의 자동구현 프로퍼티 선언과 모습이 동일하다는 점만 주의해서 사용. interface INamedValue { string Name{get;set;} string Value{get;set;} } class NamedValue : INamedValue //인터페이스를 상속하므로 반드시 Name과 Value를 구현해야하며, 자동구현프로퍼티를 사용해도된다. { public string Name{get;set;} public string Value{get;set;} } B. 추상클래스와 프로퍼티 추상클래스는 구현된 프로퍼티와 추상프..
프로퍼티 - 1 (구현과 사용법, 자동구현 프로퍼티, 프로퍼티와 생성자, 무명형식) A. 프로퍼티의 구현과 사용법 자바에서는 private 필드를 접근할수있도록 하기위해 아래와 같이 GetXXX(), SetXXX() 메소드를 구현해서 사용했었다. class MyClass { private int myField; public int GetMyField(){return myField;} public void SetMyField(int NewValue){myField=NewValue;} } 하지만, C#에서는 접근자(accessor)라는 더 나은 구현법 ( get{}, set{} ) 을 제공한다. class MyClass { private int myField; public int MyField //접근한정자 데이터형식 프로퍼티명 { get { return myField; } set { my..
추상 클래스 (클래스와 인터페이스의 사이) abstract 키워드로 선언되며, 추상 클래스는 인터페이스와는 달리 "구현" 을 가질 수 있다. 하지만, 클래스와는 달리 인스턴스는 만들 수 없다.(인터페이스와 동일) 즉, 인터페이스와 클래스의 사이. 구현된 메소드를 가질 수 있지만, 추상 메소드(Abstract Method)도 가질수있어서 인터페이스의 역할도 할 수 있게 한다. +) 추상메소드는 구현시 override 키워드를 사용한다. 추상 클래스의 모든 메소드는 한정자를 명시하지 않을시 private 이며, C#컴파일러가 public, protected, internal, protected internal 중 하나로 수식될것을 강요한다. * 추상클래스를 사용하는 이유 추상 클래스를 사용하는 프로그래머가 그 기능을 정의하도록 강제하는 기능을한다. ..
인터페이스 (선언과 사용법, 상속, 다중상속) A. 인터페이스(interface)의 선언과 사용법 선언시 메소드 구현부가 없으며, 접근제한 한정자를 사용할 수 없고, 모든것이 public으로 선언된다. 또한, 인터페이스는 인스턴스도 만들 수 없다. 하지만, 상속받는 클래스의 인스턴스를 만드는것은 가능하며, 이때 조건으로는 인터페이스에 선언되어있는 모든 메소드( 및 프로퍼티)를 구현해줘야하며, 이 메소드들은 public 한정자로 수식해야한다. * 인터페이스 작명법은 인터페이스의 이름앞에 'I'를 붙이는것이 관례 interface ILogger //ConsoleLogger, FileLogger클래스는 ILogger를 상속하며, WriteLog() 메소드를 구현 { void WriteLog(string log); } class ConsoleLogger :..
클래스 - 4 (중첩클래스, 분할클래스, 확장메소드, 구조체, 튜플) A. 중첩클래스 (Nested Class) 중첩 클래스는 클래스내에 선언된 클래스이다. Class OuterClass { Class NestedClass { } } - 특징 : 자신이 소속된 클래스의 private멤버에도 자유롭게 접근할수있다. - 장점, 사용하는 상황? 1. 클래스 외부에 공개하고 싶지 않은 형식을 만들고자 할 때 2. 현재 클래스의 일부분처럼 표현할 수 있는 클래스를 만들고자 할때 class Configuration { List listConfig = new List(); public void SetConfig(string item,string value) { ItemValue iv = new ItemValue(); iv.SetValue(this, item, value); } publ..