본문 바로가기
프로그래밍/c#

C# 언어의 특징 - "객체 지향"편

by ® 2020. 11. 17.
반응형

C#은 캡슐화 (encapsulation), 상속 (inheritance), 다형성 (polymorphism)을 아우르는 객체지향 패러다임을 풍부하게 구현한다.

 

통합 타입 시스템 (unified type system)

C#의 모든 타입은 궁극적으로 공통된 기본 타입을 공유한다. 즉, 모든 타입은 동일한 기본 기능을 공유한다. 예를 들어, C#의 어떤 타입의 인스턴스든 ToString 메서드를 이용해 string으로 변환할 수 있다.

 

클래스와 인터페이스 (classes and interfaces)

기존 순수 객체지향 패러다임에는 클래스만 있다. 하지만 C#에는 더 다양한 타입들을 제공하며 이 중 하나가 interface다. Interface는 멤버들에 대한 구현 (implementation)을 제외하면 클래스와 비슷하다.

 

프로퍼티, 메서드와 이벤트 (properties, methods, and events)

기존 순수 객체지향 패러다임에는 메서드만 있지만, C#에는 프로퍼티와 이벤트가 있다. 프로퍼티는 버튼의 색과 같이 객체 상태를 캡슐화한 함수 멤버이고, 이벤트는 객체 상태 변화를 단순화하는 함수 멤버이다.

 

 

C#은 기본적으로 객체지향언어이지만, 함수형 프로그래밍 (functional programming) 패러다임도 사용합니다.

 

함수를 값처럼 다룸 (functions can be treated as values)

delegates를 사용하여 함수들 간에 함수를 값처럼 주고 받을 수 있다.

 

*순수 함수*를 위한 패턴을 지원 (C# supports patterns for purity)

함수형 프로그래밍의 핵심은 선언적 패턴 (declarative pattern)을 위해 변수 (variable)의 사용을 피하는 것이다.

 

C#은 함수형 프로그래밍을 도울 수 있는 핵심 기능들은 가지는데, 예를 들어 람다식 (lambda expression)과 쿼리식 (query expression)이 있다. 또한, 불변 (immutable) 타입을 쉽게 정의할 수 있다.

 

*순수함수*: 함수의 아웃풋이 인수에 의해서만 결정되는 함수. 즉, 함수 외부의 다른 상태값과 독립적이어서 동일한 인수에 대해 항상 같은 아웃풋을 출력하게 된다.

반응형

'프로그래밍 > c#' 카테고리의 다른 글

[C# 간단정리] Value Type vs. Reference Type  (0) 2020.11.17

댓글