동영상 강의/C# 언어 동영상 강의

[C# 동영상 강의] 4. 클래스(Class)

언제나휴일 2016. 4. 9. 12:27
반응형

[C# 동영상 강의] 4. 클래스(Class)



다루는 내용

클래스

OOP (캡슐화, 상속, 다형성)



대본


슬라이드 1

본 강의에서는 C#에 기본 문법에 대해서 살펴보기로 하겠습니다.


슬라이드 2

클래스는 변수나 메서드 및 이벤트들을 그룹화하여 사용자 지정 형식을 만드는 형식입니다.

이를 통해 런타임 시에 개체를 생성할 수 잇으므로 개체에 대한 청사진이라 할 수 있습니다.

클래스를 통해 데이터 및 동작을 정의할 수가 있으며 개체들은 CLR에 의해 관리가 되어 더 이상 해당 개체를 참조하는 변수가 없게되면 CLR에서 가비지 수집 대상으로 표시를 합니다.

클래스를 통해 다음과 같은 OOP의 세 기둥을 표현할 수 있습니다.

멤버를 그룹화하여 디자인하는 캡슐화와 기반 형식을 통해 파생된 형식을 정의하는 상속, 런 타임시에 다양한 모양으로 동작할 수 있게 하는 다형성이 OOP의 세 기둥입니다.


슬라이드 3

캡슐화는 OOP의 첫 번째 기둥으로 여러 형식의 멤버들을 하나의 클래스의 멤버로 정의하여 디자인을 하는 것을 말합니다.

캡슐화 할 수 있는 멤버로는 다음과 같은 것들이 있습니다.

필드는 클래스 범위에 선언된 변수를 얘기를 하며 상수는 컴파일 시에 값이 설정되는 필드 또는 속성입니다.

메서드는 수행할 수 있는 작업을 정의를 하는 것으로 입력 매개 변수와 반환 값을 포함합니다.

이벤트는 키보드 누름이나 특정 메소드 작업 완료와 같은 사건에 대한 정보를 다른 개체에게 알릴 수 있는 역할을 하며 delegate를 이용하여 정의되고 트리거됩니다.

C#에서는 연산자 오버로드를 제공하고 있는데 오버로드된 연산자 또한 클래스의 멤버로 간주합니다.

또한, 배열을 사용하는 것처럼 인덱스를 사용하면 개체를 인덱싱 할 수도 있습니다.

그리고, 개체를 생성할 때 개체의 데이터를 초기화를 하는 생성자와 소멸 시에 CLR에 의해 호출되는 메서드로 소멸자가 있는데 비관리 코드를 혼용하여 프로그래밍을 할 때 특정 개체에서 해제해야 할 리소드 등을 처리를 하는 경우와 같이 특별한 경우에 사용을 하게 됩니다. 특정 형식 내부에서만 해당 클래스의 개체가 사용이 된다면 해당 형식 내에서 정의를 할 수도 있을 것입니다.


슬라이드 4

상속은 OOP의 두 번째 기둥으로 다른 클래스에 정의된 것을 통해 새로운 형식을 확장 및 수정하는 것을 얘기합니다.

이 때 기반이 되는 클래스를 기본 클래스라 하며 확장 및 수정된 클래스를 파생 클래스라 얘기를 합니다.

앞서 형식 강의에서 얘기했듯이 C#의 모든 형식은 System.Object에서 파생이 되었습니다.

파생 클래스에서는 언제나 기본 클래스의 멤버를 그대로 사용해야 하는 것은 아닙니다.

기본 클래스에 virtual로 메서드를 선언하며 파생 클래스에서 override를 통해 재 정의가 가능합니다.

또한, 기본 클래스에서 abstract으로 메서드를 선언하면 해당 클래스는 개체를 생성할 수 없는 추상 클래스가 되며

파생 클래스에서 이를 override를 통해 재 정의를 하면 비로소 개체를 생성할 수 있는 구체화된 클래스가 됩니다.

그리고, abstract으로 클래스 선언을 하면 해당 클래스는 추상 클래스가 됩니다.

마지막으로 sealed로 클래스를 선언하면 해당 클래스로부터 파생된 클래스를 정의할 수 없게 봉인됩니다.

 

슬라이드 5

OOP의 세 번째 기둥인 다형성은 선언된 변수 형식과 참조된 개체의 형식이 다를 수 있고 변수를 통해 호출되는 메서드의 행위가 다를 수 있다는 것을 얘기합니다.

이는 파생 클래스의 개체를 기본 클래스 형식의 변수로 관리를 함으로써 개체 관리를 용이하게 하는 특징에서 부터 발생을 하고 있으며 또한 기본 클래스의 virtual 메서드에 대한 재 정의 및 파생 클래스에서 new를 통해 기본 클래스의 멤버를 은폐 시킬 수 있기 때문입니다.


실습




  앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 

2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.
 

반응형