아디봉의.net
오늘은 OOP의 이론 중의 하나인 분할 정복에 대해서 (예제를 만들어 보며) 이야기 해보겠습니다. 아시다시피 ‘분할 정복’이란 커다란(복잡한) 문제를 작은(단순한) 문제들로 나눈 후, 나뉜 작은 문제들의 해를 구한 다음에, 이를 다시 결합하여 원래 문제의 해를 구하는 방법을 말합니다. 이는 OOP에서 말하는 캡슐화의 기반이 됩니다. 즉 수 많은 작업(메서드)이 있더라도 이를 몇 개의 클래스로 묶어 클래스 내부에서 처리하도록 하면(단순해진 작은 문제의 해를 구함), 외부에서는 각 클래스가 하는 일에 대해 구체적으로 알 필요가 없이 클래스 간의 통신만 관리하는(작은 문제들의 해를 결합) 식으로 문제를 단순화시킬 수 있다는 것입니다. 여기서 중요한 것은 클래스 간의 ‘통신’(OOP 용어로는 메시지 전달) 입니..
Delegate 유언장 과 같은기능이다. 유언장에는 일련의 지시들이 있다. 예를 들면 고지서에 요금을 내고, 자선단체에 기부도 좀하고 나머지는 내고양이에게 물려준다. 이유언장은 죽기전에 써야하고 안전한곳에 잘두어야 하며 , 죽고난후에 대리인이 이 유언장의 내용을 처리해준다. 즉 적절한 시점에 실행되어야 할 이련의 일들이라는 것이다. 리턴타입과 타입파라미터만 같다면, 조건에 맞는다면, 어떠한 메소드라도 실행시킬 수 있다. 특정한때 --> 이벤트 가 갑자기 떠올라야한다. ^^ 선언 : delegate void simpleDelegate(); 선언된 것중 delegate만 제거하면 메소드 랑 같다. c언어에서라면 함수(실제로는 함수포인터라고 할 수 있지만 형태는 함수의 형태와 같다.)라고 할수 있다. 리턴타입..
1.1 소스코드 class Program { string name; public string Name { get { return name; } } decimal price; public decimal Price { get { return price; } } public Program(string name, decimal price) { this.name = name; this.price = price; } public static ArrayList GetSampleProducts() { ArrayList list = new ArrayList(); list.Add( new Program("전남에 물폭탄 털어지붓다..", 3.4m)); list.Add(new Program("이런저런!! ",1.1m)); l..
제네릭(클래스나 메서드에 사용할 타입을 파라미터화 할수 있게 해준다는것 ) 일반메서드 안에서 사용할 값을 넘기는 것과 비슷하게 제네릭 타입과 메서드에서 사용할 타입을 지정할 수 있도록 파라미터들이 있다. 제네릭이 필요한 이유라면 C#1에서 소스코드에서 캐스팅을 많이 최소화 하기위함 이라고 할수 있겠다. 보통 캐스팅은 변수나 메서드 선언하는 시점에 하는데 제네릭을 사용하면 사용자 올바르지 않은 캐스팅을 막을수 있다. 또 제네릭에서 제공하는 새로운 정보를 이용하면 생산성을 높일수 있다. 더많은 검사가 컴파일시에 일어난다. 일반적인 타입사용하는장소에 타입파라미터(실제타입을 대입할수있는장소)를 대신사용한다. 타입파라미터는 제네릭 선언부의 꺽쇠()괄호 사이에 넣어주고 여러개의 파라미터는 , 콤마를 이용해 구..
1-1 SqlTransaction 을 이용한 방법 SqlConnection conn = new SqlConnection(커넥션 스트링); conn.Open(); SqlTransaction transaction = new SqlTransaction(); SqlCommand command = new SqlCommand(); command.Transaction = transaction; try{ command.CommandText = “insert into ….”; command.ExecuteNonQuery(); command.CommandText = “update xxx set …….. where … “; command.ExecuteNonQuery(); transaction.Commit(); }catch(E..