반응형
1. 변수
변수 선언
Dart에서는 변수 선언 시 var, final, const 키워드를 사용합니다.
- var: 타입을 명시하지 않고 변수 선언 시 사용하며, 초기화 시 타입이 결정됩니다.
- final: 한 번 할당되면 변경할 수 없는 변수입니다.
- const: 컴파일 타임 상수로, 한 번 할당되면 변경할 수 없습니다.
var name = 'Bob'; // 타입 추론
String name = 'Bob'; // 명시적 타입 선언
final name = 'Bob'; // 한 번만 할당 가능
const pi = 3.14; // 컴파일 타임 상수
데이터 타입
Null safety
String? nullableName; // null 가능
String nonNullableName = 'Bob'; // null 불가능
데이터 타입
- 기본 데이터 타입:
Dart는 정적 타입 언어로, 기본 데이터 타입이 있습니다.
- int: 정수 타입
- double: 부동 소수점 타입
- String: 문자열 타입
- bool: 논리 타입
- List: 배열 타입
- Map: 키-값 쌍 타입
int number = 42;
double height = 1.75;
String greeting = 'Hello, Dart!';
bool isVisible = true;
List<int> numbers = [1, 2, 3, 4];
Map<String, int> ages = {'John': 30, 'Jane': 25};
컬렉션
List<int> numbers = [1, 2, 3];
Set<String> uniqueNames = {'Alice', 'Bob', 'Charlie'};
Map<String, int> scores = {'Alice': 90, 'Bob': 85};
함수
- 함수 선언과 사용
int add(int a, int b) {
return a + b;
}
// 화살표 함수
int multiply(int a, int b) => a * b;
// 선택적 매개변수
void greet(String name, {String? greeting}) {
print('${greeting ?? 'Hello'}, $name!');
}
// 기본값 매개변수
void introduce(String name, {int age = 30}) {
print('$name is $age years old.');
}
객체 지향 프로그래밍 개념
- 클래스와 객체:
Dart는 객체 지향 언어로, 클래스와 객체를 지원합니다.
클래스는 객체의 청사진이며, 객체는 클래스의 인스턴스입니다.
class Person {
String name;
int age;
Person(this.name, this.age);
void introduce() {
print('My name is $name and I am $age years old.');
}
}
var person = Person('Alice', 25);
person.introduce();
상속
Dart에서는 상속을 통해 클래스를 확장할 수 있습니다.
class Student extends Person {
String school;
Student(String name, int age, this.school) : super(name, age);
@override
void introduce() {
super.introduce();
print('I study at $school.');
}
}
인터페이스와 추상 클래스:
추상 클래스는 직접 인스턴스를 생성할 수 없으며, 다른 클래스가 이를 상속받아 구현해야 합니다.
abstract class Shape {
double getArea();
}
class Circle implements Shape {
double radius;
Circle(this.radius);
@override
double getArea() => 3.14 * radius * radius;
}
믹스인
mixin Logger {
void log(String message) {
print('LOG: $message');
}
}
class LoggableStudent extends Student with Logger {
LoggableStudent(String name, int age, String school) : super(name, age, school);
void study() {
log('Studying...');
}
}
요약
- 변수와 데이터 타입: var, final, const 키워드를 사용하여 변수를 선언하며, 기본 데이터 타입으로 int, double, String, bool, List, Map 등이 있습니다.
- 함수: Dart에서는 함수도 객체로 취급되며, 다양한 방법으로 함수를 선언하고 사용할 수 있습니다.
- 객체 지향 프로그래밍: 클래스와 객체를 사용하며, 상속, 추상 클래스, 인터페이스, 믹스인 등 객체 지향 개념을 지원합니다.
- Dart 공식 웹사이트
- URL: https://dart.dev
- 이 사이트는 Dart에 대한 모든 정보의 중심지입니다.
- Dart 언어 투어
- URL: https://dart.dev/guides/language/language-tour
- Dart 언어의 주요 기능과 문법을 간단히 둘러볼 수 있습니다.
- Dart 프로그래밍 언어 명세
- URL: https://dart.dev/guides/language/spec
- 언어의 공식 명세를 제공합니다.
- Dart API 참조
- URL: https://api.dart.dev
- Dart 표준 라이브러리의 API 문서를 제공합니다.
- Dart 패키지
- URL: https://pub.dev
- Dart와 Flutter 패키지의 공식 저장소입니다.
- DartPad
- URL: https://dartpad.dev
- 브라우저에서 직접 Dart 코드를 작성하고 실행해볼 수 있는 온라인 도구입니다.
- Dart 튜토리얼
- URL: https://dart.dev/tutorials
- 다양한 주제에 대한 상세한 튜토리얼을 제공합니다.
- Effective Dart
- URL: https://dart.dev/guides/language/effective-dart
- Dart 코드를 효과적으로 작성하는 방법에 대한 가이드라인을 제공합니다.
반응형
'프론트엔드 > Flutter' 카테고리의 다른 글
flutter 앱에서 자주 사용되는 주요 위젯 종류 모음 (0) | 2024.07.16 |
---|---|
flutter 개발 시 유용한 코드 스니펫 (0) | 2024.07.15 |
flutter 앱 빌더 및 레퍼런스 모음 (0) | 2024.07.14 |
스마트폰 개발자 옵션 활성화 (0) | 2024.07.14 |
flutter 프로젝트 구조 및 에뮬레이터 실행 (0) | 2024.07.11 |