반응형

Dart 란

 

Dart는 모든 플랫폼에서 사용할 수 있는 앱을 개발하기 위해 탄생한 클라이언트 최적화된 언어

구글에서 201110월에 공개했으며 멀티 플랫폼 상에서 동작되도록 하는 앱을 개발하기 위해 디자인됨

Dart의 목표는 다양한 종류의 기기에서 동작되도록 하는 것

 

특징

기본적으로 C언어의 문법과 비슷하며 Java, C#, Javascript와 같은 구조를 갖춤

DVM(Dart VM), 네이티브 컴파일링을 통해 모바일, 데스크탑, 웹 등의 환경에서 앱 실행을 지원

Flutter라는 프레임워크의 주 언어로 사용됨

 

주요 특징

 

1. 간결하고 강력한 문법: Dart는 이해하기 쉽고 생산성을 높이는 간결한 문법을 가지고 있습니다.

2. 정적 타입 언어: Dart는 정적 타입 언어로, 컴파일 타임에 타입 검사를 수행합니다. 이를 통해 코드의 안전성을 높이고 버그를 줄일 수 있습니다.

3. 클래스 기반 객체 지향: Dart는 객체 지향 언어로, 클래스와 상속을 지원합니다.

4. 동시성 지원: asyncawait 키워드를 통해 비동기 프로그래밍을 간단하게 구현할 수 있습니다.

5. 크로스 플랫폼: Dart는 모바일, 웹, 데스크탑 등 여러 플랫폼에서 실행될 수 있습니다.

6. 빠른 컴파일 속도: Dart는 JIT(Just-In-Time) 컴파일과 AOT(Ahead-Of-Time) 컴파일을 지원하여 빠른 실행 속도를 제공합니다.

 

공식지원 IDE

안드로이드 스튜디오

인텔리제이

VS Code 

변수 선언

void main() {
  int a = 10;
  double b = 3.14;
  String name = "Dart";
  bool isActive = true;

  print(a);
  print(b);
  print(name);
  print(isActive);
}

함수 정의

void main() {
  printGreeting('John');
  int result = add(2, 3);
  print('Sum: $result');
}

void printGreeting(String name) {
  print('Hello, $name');
}

int add(int a, int b) {
  return a + b;
}

조건문과 반복문

void main() {
  int number = 5;

  if (number > 0) {
    print('Positive');
  } else if (number < 0) {
    print('Negative');
  } else {
    print('Zero');
  }

  for (int i = 0; i < 5; i++) {
    print('i: $i');
  }

  int j = 0;
  while (j < 5) {
    print('j: $j');
    j++;
  }
}

 

클래스와 객체

void main() {
  var person = Person(name: 'John', age: 30);
  person.greet();
}

class Person {
  String name;
  int age;

  Person({required this.name, required this.age});

  void greet() {
    print('Hello, my name is $name and I am $age years old.');
  }
}

 

객체 지향 프로그래밍

 

Dart는 객체 지향 프로그래밍(OOP)을 지원합니다. OOP는 코드 재사용성과 확장성을 높이는 데 도움이 됩니다. Dart에서는 클래스, 상속, 다형성, 추상화 등을 통해 OOP를 구현할 수 있습니다.

void main() {
  var dog = Dog(name: 'Buddy', age: 3);
  dog.bark();
  dog.describe();
}

class Animal {
  String name;
  int age;

  Animal({required this.name, required this.age});

  void describe() {
    print('This is $name and it is $age years old.');
  }
}

class Dog extends Animal {
  Dog({required String name, required int age}) : super(name: name, age: age);

  void bark() {
    print('Woof! Woof!');
  }
}

 

비동기 프로그래밍

 

Dart는 비동기 프로그래밍을 간단하게 구현할 수 있는 키워드인 asyncawait를 제공합니다. 이를 통해 비동기 작업을 쉽게 처리할 수 있습니다.

 

void main() async {
  print('Fetching data...');
  String data = await fetchData();
  print('Data: $data');
}

Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2));
  return 'Hello from the future!';
}

 

그 외 특징

- 모든 변수는 객체이며 모든 객체는 클래스의 인스턴스임

  - 숫자, 함수, Null도 객체로 취급

- Dart 2 버전부터 Null Safety를 소개하고 있음

- Dart는 데이터 타입을 가지고 있음

- Dart는 Generic 타입을 지원

- Dart는 main()과 같은 top-level 함수를 지원

- Dart는 public, protected, private와 같은 키워드를 지원하지 않음

  - 만약 식별자 이름 앞에 언더바(_)를 붙이면 라이브러리에서 private으로 설정할 수 있음

- Dart는 삼항 연산자를 지원

 

레퍼런스

1. Dart 공식 사이트: Dart 언어의 공식 사이트로, Dart에 대한 기본적인 소개와 문서, 튜토리얼 등을 제공합니다.

Dart 공식 사이트

2. Dart 언어 투어: Dart 언어의 문법과 기능을 체계적으로 설명하는 가이드입니다.

Dart 언어 투어

3. Dart 패키지 문서: Dart 패키지 및 라이브러리에 대한 문서입니다.

Dart 패키지 문서

4. Dart API 문서: Dart의 코어 라이브러리 및 API에 대한 상세한 문서입니다.

Dart API 문서

5. Dart Null Safety 문서: Dart의 Null Safety 기능에 대한 소개와 사용 방법을 설명하는 문서입니다.

Dart Null Safety 문서

6. Dart Code Labs: Dart와 Flutter를 배우기 위한 실습형 튜토리얼입니다.

Dart Code Labs

7. Dart GitHub 리포지토리: Dart 언어의 소스 코드와 관련 자료를 확인할 수 있는 GitHub 리포지토리입니다.

Dart GitHub 리포지토리

 

반응형

+ Recent posts