본문 바로가기
반응형

Dart/Dart Programming language55

[고급] Dart제네릭 프로그래밍/ 제네릭의 한계와 제약 조건 Dart에서 제네릭(Generic)은 매우 유용한 기능으로, 코드의 재사용성을 높이고 타입 안전성을 보장하는 데 큰 역할을 합니다.그러나 제네릭은 만능이 아니며, 몇 가지 한계와 제약 조건이 있습니다. 이 글에서는 Dart 제네릭의 한계와 이를 어떻게 관리할 수 있는지에 대해 알아보겠습니다.1. 제네릭의 한계1.1 런타임 시 타입 정보 손실 (Type Erasure)Dart에서는 제네릭 타입 정보가 런타임에 유지되지 않고, 컴파일 시에 제거되는 특성이 있습니다.이를 타입 소거(Type Erasure)라고 합니다. 이로 인해 런타임에 제네릭 타입에 대한 정보에 접근할 수 없게 됩니다.void checkType(T item) { if (item is List) { print("List of T"); .. 2024. 9. 8.
[고급] Dart제네릭 프로그래밍/ 제네릭 클래스와 함수 작성 방법 - 단계별 예제와 설명 Dart는 타입 안전성과 코드 재사용성을 제공하는 강력한 언어로, 제네릭(Generic)은 이러한 이점을 극대화할 수 있는 중요한 기능입니다. 이번 글에서는 제네릭 클래스를 작성하고 제네릭 함수를 만드는 방법에 대해 설명하겠습니다.초보자도 이해하기 쉽게 단계별로 설명할 테니, 끝까지 따라와 보세요!1. 제네릭 클래스 작성하기제네릭 클래스는 클래스 내부에서 다양한 타입을 처리할 수 있도록 하는 구조입니다. 제네릭 클래스를 사용하면 동일한 로직을 여러 타입에 적용할 수 있어 코드 재사용성을 높일 수 있습니다.1.1 기본 구조제네릭 클래스는 다음과 같은 기본 구조를 가집니다.class ClassName { T value; ClassName(this.value); void showValue() { p.. 2024. 9. 8.
[중급] Dart 클래스 심화/연산자 오버로딩과 메소드 체이닝 활용법 1. 연산자 오버로딩 (Operator Overloading)1.1 연산자 오버로딩이란?연산자 오버로딩은 우리가 일반적으로 사용하는 수학적 연산자(예: +, -, *, / 등)를 클래스에서 재정의할 수 있는 기능입니다. 이 기능을 사용하면, 객체를 더하거나 빼는 등의 연산을 클래스 내에서 정의한 대로 사용할 수 있습니다.1.2 연산자 오버로딩 예제예를 들어, Vector라는 2D 벡터를 나타내는 클래스를 만들고 벡터끼리 더하는 기능을 구현해 보겠습니다.class Vector { final double x; final double y; Vector(this.x, this.y); // + 연산자 오버로딩 Vector operator +(Vector other) { return Vector(x .. 2024. 9. 6.
[중급] Dart 클래스 심화/ 팩토리 생성자와 Singleton 패턴 활용법 Dart에서는 객체 생성과 관리에 대한 다양한 패턴을 제공합니다.이 글에서는 팩토리 생성자와 Singleton 패턴을 통해 객체 생성과 관리를 어떻게 효율적으로 할 수 있는지 설명하고, 이를 Dart 코드에서 어떻게 구현할 수 있는지 살펴보겠습니다.1. 팩토리 생성자 (Factory Constructor)팩토리 생성자는 객체의 인스턴스를 직접 생성하지 않고, 특정 조건에 따라 객체를 반환하는 특수한 형태의 생성자입니다.팩토리 생성자는 객체 생성의 논리를 중앙에서 관리할 수 있게 하며, 여러 객체의 재사용, 캐싱 등의 작업을 수행할 수 있습니다.1.1 팩토리 생성자 정의 및 사용팩토리 생성자는 factory 키워드를 사용하여 정의합니다. 팩토리 생성자는 실제 객체를 생성하거나 캐시된 객체를 반환할 수 있습.. 2024. 9. 6.
[중급] Dart 클래스 심화/Mixins와 with 키워드 활용법 Dart의 Mixins와 with 키워드는 코드 재사용성을 높이고, 클래스의 기능을 확장하는 데 유용한 도구입니다.이 글에서는 Mixins의 개념과 with 키워드의 사용 방법을 설명하고, 이를 활용하여 효율적이고 유지보수성 높은 코드를 작성하는 방법을 소개하겠습니다.1. Mixins란?Mixins는 여러 클래스 간에 공통된 기능을 공유할 수 있는 방법입니다. 클래스가 직접 상속받지 않고도 기능을 추가할 수 있도록 합니다. Mixins는 주로 반복적인 코드의 재사용을 목적으로 사용됩니다.1.1 Mixins 정의 및 사용Mixins는 mixin 키워드를 사용하여 정의합니다. Mixins는 일반적으로 메서드와 필드를 정의하며, 다른 클래스에서 with 키워드를 사용하여 적용합니다.mixin Logger { .. 2024. 9. 6.
[중급] Dart 클래스 심화/ 추상 클래스와 인터페이스 이해하기 Dart는 객체 지향 프로그래밍 언어로, 추상 클래스와 인터페이스를 통해 코드의 구조를 보다 명확하고 유연하게 설계할 수 있습니다.이 글에서는 Dart에서 추상 클래스와 인터페이스의 개념을 설명하고, 이를 활용하여 코드의 재사용성과 유지보수성을 높이는 방법을 알아보겠습니다.1. 추상 클래스1.1 추상 클래스란?추상 클래스는 직접 인스턴스를 생성할 수 없는 클래스입니다. 추상 클래스는 공통된 속성과 메서드를 정의하여 다른 클래스들이 이를 상속받아 구체적인 구현을 제공하도록 합니다.추상 클래스는 일부 메서드에 대한 구현을 제공할 수도 있지만, 일반적으로 메서드 시그니처만 정의하고, 구체적인 구현은 자식 클래스에서 제공합니다.1.2 추상 클래스 정의 및 사용Dart에서 추상 클래스는 abstract 키워드를 .. 2024. 9. 6.
반응형