반응형

C# 소스 코드 57

[C#] 6.2.4 가상화 virtual, 재정의 override

6.2.4 가상화 virtual, 재정의 override new 키워드로 기반 클래스의 멤버를 무효화 할 때는 사용하는 변수 형식의 멤버가 사용됩니다. 이러한 특징은 기반 형식의 변수로 다양한 파생 개체를 참조할 때 실제 개체에 정의된 멤버가 사용되지 않으므로 다형성의 장점을 충분히 사용하지 못합니다. C#에서는 기반 형식에서 정의한 멤버를 파생 형식에서 재정의하면 변수의 형식이 아닌 개체의 형식의 멤버가 동작하게 virtual 키워드와 override 키워드를 제공합니다. 기반 형식에서 virtual 키워드를 명시하여 멤버를 선언하면 가상 멤버가 됩니다. 이때 파생 형식에서 기반 형식의 가상 멤버를 재정의할 때는 override 키워드를 명시합니다. ▶ virtual로 가상 메서드 선언, overrid..

[C#] 4. 원형 패턴(Prototype Pattern) - 구현

4. 원형 패턴(Prototype Pattern) 4. 4 구현 이제 원형 패턴에 대한 예제 프로그램을 구현해 봅시다. 구현 순서는 줌 렌즈, 줌 렌즈 생산 라인, 렌즈 공장과 테스트 코드 순서로 구현할께요. 4.4.1 줌 렌즈 여기에서는 원형 패턴을 사용할 것이므로 다양한 줌 렌즈를 일반화 관계를 사용하지 않고 하나의 ZoomLens 클래스에서 속성만 다르게 주고 자신을 복사하는 메서드를 제공하기로 할게요. 이에 줌 렌즈의 생성자에서는 줌 레벨의 최소값과 최대값, 초점 거리의 최소값과 최대값을 인자로 전달받아 생성하도록 할게요. 원형 패턴을 사용하지 않고 일반화 관계를 사용한다면 많으 수의 파생 클래스가 필요할 것입니다. C#에서는 이와 같이 자신을 복제 가능한 형식들을 위해 IConeable 인터페이..

[C#] 2. 빌더 패턴(Builder Pattern) - 구현

2. 빌더 패턴(Builder Pattern) 2. 4 구현 이제 빌더 패턴에 대한 예제 프로그램을 구현해 봅시다. 구현 순서는 사진, 사진 빌더, 카메라 순으로 하겠습니다. 2.4.1 사진 사진은 피사체와 이에 대한 이미지를 갖는 형식으로 정의를 할께요. ▶Picture.cs namespace Builder { abstract class PictureBuilder { public Picture Picture { get; protected set; } public abstract void SetSubject(string subject); //상을 맺히는 기능 public abstract void Change();//이미지를 수정하는 기능 } } SmoothBuilder에서는 약속한 기능을 구체적으로 구현..

[C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 구현

1. 추상 팩토리 패턴 (Abstract Factory Pattern) 1. 4 구현 이제 구체적으로 구현해 봅시다. 먼저, 카메라와 렌즈를 구현하고 팩토리 부분을 구현한 후에 마지막으로 테스터를 구현합시다. 1.4.1 렌즈 렌즈의 기능은 ITake 인터페이스로 정의하고 상을 맺히는 기능을 약속합시다. EvLens와 HoLens는 ITake를 기반으로 상을 맺히는 기능을 구체적으로 구현합시다. 이처럼 인터페이스를 정의하고 이를 기반으로 구현하면 표준화된 인터페이스를 사용할 수 있어서 사용방법을 익히는 비용을 줄일 수 있습니다. ▶ITake.cs using System; namespace AbstractFactory { class EvLens:ITake { public void Take() //ITake에..

[ADO.NET] SqlDataAdapter

SqlDataAdapter SqlDataAdapter는 SQL 데이터 소스와 DataSet 간의 연결에 사용합니다. Fill 메서드를 이용하여 데이터 소스의 데이터를 얻어와 DataSet을 채우고 Update 메서드를 이용하여 DataSet의 데이터로 데이터 소스의 데이터를 일치시키게 합니다. SqlDataDataper에 검색, 추가, 변경, 삭제에 사용할 SqlCommand를 초기에 설정한 후에 데이터 소스의 데이터를 Fill 메서드를 이용해 DataSet을 채우고 이 후에 작업은 DataSet으로 데이터를 관리하다가 데이터 소스를 변경할 필요가 있을 때 Update 메서드를 이용하여 데이터 소스에 반영시키는 것이 일반적인 사용입니다. ▷클래스 상속 계층System.Object System.Marsha..

[ADO.NET] DataView 클래스를 사용 예 - 도서 관리 프로그램

DataView 사용 예 이번에는 DataView 개체를 사용하는 간단한 예를 살펴볼게요. 여기에서는 Books 테이블에서 특정 저자가 쓴 책들을 ISBN 순으로 정렬한 DataView 개체를 생성한 후에 새로운 DataRowView 개체를 생성하여 추가하고 기존에 있던 데이터를 변경하는 예제입니다. 먼저 Books 테이블에서 저자가 홍길동인 책들을 ISBN 순으로 정렬한 DataView 개체를 생성합니다.DataView dv = new DataView(dt, "Author='홍길동'", "ISBN", DataViewRowState.CurrentRows); 그리고 DataView 개체에 있는 정보를 출력해 보면 Books 테이블에 있는 데이터 중에 저자가 홍길동인 책들만 ISBN 순으로 출력됨을 확인할 ..

[ADO.NET] DataSet과 XML을 이용한 출판사 별 도서 관리 프로그램 만들기

DataSet DataSet은 ADO.NET 핵심 구성 요소로 프로그램 내의 논리적 DB로 데이터 집합과 관계로 구성합니다. DataTable은 메모리 상의 하나의 테이블을 표현하는 개체이고 DataSet은 메모리 상의 DB를 표현하는 개체입니다. 따라서 DataSet은 여러 개의 테이블과 관계들의 집합체라고 볼 수 있습니다. DataSet 개체를 구성할 DataTable 개체들은 Tables 컬렉션에 보관하고 관계는 Relations 컬렉션에 보관합니다. DataSet 개체도 DataTable 처럼 스키마와 데이터를 저장하거나 읽어와서 구성하는 메서드를 제공합니다. DataSet 클래스에는 DataSet 개체를 생성할 때 사용하는 생성자를 제공합니다.public DataSet ( );public Dat..

[ADO.NET] DataTable 클래스와 XML을 이용한 도서 관리 프로그램 만들기

DataTable 클래스와 XML을 이용한 도서 관리 프로그램 만들기 DataTable 클래스에서는 메모리 상의 테이블입니다. ADO.NET 에서는 논리적 DB를 XML 형태로 저장하고 로딩할 수 있게 기술을 지원하고 있습니다. DataTable 클래스에도 WriteXml, WriteXmlSchema, LoadXml, LoadXmlSchema 메서드를 제공하여 메모리 상의 테이블 구조와 내용을 XML 형태로 저장하고 로딩할 수 있습니다. public void WriteXml(Stream stream);public void WriteXml(string filename);;public void WriteXml(TextWriter writer);public void WriteXml(XmlWriter write..

[ADO.NET] DataTable 개체에 행 추가

DataTable 개체에 행 추가 이번에는 DataTable 개체에 행을 추가하는 방법을 알아봅시다. DataTable 클래스에는 Rows 컬렉션 속성을 제공하고 있으며 추가한 Row 개체를 보관하는 컬렉션입니다. 따라서 DataTable 개체에 행을 추가할 때는 Row 클래스를 이용합니다. 그런데, Row 개체는 DataTable 개체에 설계한 구조에 맞아야 하기 때문에 직접 생성할 수 없고 DataTable 개체의 NewRow 메서드를 이용하여 설계한 구조에 맞는 Row 개체를 생성합니다.DataRow dr = dt.NewRow(); 그리고 DataRow 개체에 열마다 원하는 값을 지정합니다.dr["ISBN"] = isbn;dr["Title"] = title;dr["Author"] = author;d..

[ADO.NET] DataTable 클래스 개체 생성과 테이블 구조 설계

DataTable ADO.NET에서는 논리적인 데이터 집합을 디자인하고 데이터를 관리할 수 있는 DataTable 클래스를 제공하고 있습니다. DataTable은 DataSet을 구성하는 주요 개체로 프로그램 메모리 상의 한 개의 테이블입니다. 여기에서는 DataTable 개체를 생성하여 테이블을 설계하고 해당 개체를 이용하여 데이터를 관리하는 방법을 살펴볼게요. ▷클래스 상속 계층System.Object System.ComponentModel.MarshalByValueComponent System.Data.DataTable DataTable 개체 생성과 테이블 구조 설계 DataTable은 개체를 생성한 후에 테이블의 구조를 설계한 후에 사용합니다. 테이블의 구조를 설계한다는 것은 열을 추가하는 것과 ..

반응형