FRONTMANFRONTMAN
  • 태그
  • 방명록
  • 글쓰기
  • 관리자
  • HOME
  • 태그
  • 방명록
Dart 함수 및 클래스 문법
hahekaku
Dart 함수 및 클래스 문법Language/Dart2025. 1. 25. 03:08@hahekaku
Table of Contents

Dart는 Google이 개발한 프로그래밍 언어로, 특히 Flutter 프레임워크의 기본 언어로 사용됩니다. Dart의 핵심 요소 중 하나는 함수와 클래스입니다. 이 글에서는 Dart에서 함수와 클래스를 작성하고 사용하는 방법을 기본부터 고급 개념까지 상세히 설명합니다. 함수와 클래스는 각각 프로그램의 동작과 구조를 담당하는 중요한 역할을 하므로, 이를 잘 이해하면 Dart를 효과적으로 활용할 수 있습니다.


함수(Function)

함수는 특정 작업을 수행하는 코드 블록입니다. Dart에서 함수는 main() 함수로 시작하며, 이는 프로그램의 진입점입니다. 함수는 매개변수, 반환 값, 그리고 다양한 함수 타입을 지원합니다.

함수 선언과 호출

Dart에서 함수를 선언하려면 return 타입, 함수 이름, 그리고 매개변수를 정의합니다. 다음은 간단한 함수 선언과 호출 예제입니다.

// 두 숫자를 더한 값을 반환하는 함수
int addNumbers(int number1, int number2) {
  return number1 + number2;
}

void main() {
  int result = addNumbers(10, 20);
  print('두 숫자의 합: $result'); // 출력: 두 숫자의 합: 30
}

위 코드에서 addNumbers 함수는 두 개의 int 값을 매개변수로 받아서 합계를 반환합니다.

선택적 매개변수(Optional Parameters)

Dart에서는 매개변수를 선택적으로 만들 수 있습니다. 이를 구현하려면 [] 또는 {}를 사용합니다.

위치 기반 선택적 매개변수

위치 기반 선택적 매개변수는 []로 정의하며, 기본값을 지정할 수도 있습니다.

String greet(String name, [String? title]) {
  return title != null ? '$title $name 님, 안녕하세요!' : '$name 님, 안녕하세요!';
}

void main() {
  print(greet('홍길동')); // 출력: 홍길동 님, 안녕하세요!
  print(greet('홍길동', '박사')); // 출력: 박사 홍길동 님, 안녕하세요!
}

이름 기반 선택적 매개변수

이름 기반 선택적 매개변수는 {}로 정의하며, 매개변수를 명시적으로 전달할 수 있습니다.

String greet(String name, {String? title}) {
  return title != null ? '$title $name 님, 반갑습니다!' : '$name 님, 반갑습니다!';
}

void main() {
  print(greet('이순신')); // 출력: 이순신 님, 반갑습니다!
  print(greet('이순신', title: '장군')); // 출력: 장군 이순신 님, 반갑습니다!
}

클래스(Class)

클래스는 객체 지향 프로그래밍(OOP)에서 중요한 개념으로, 객체의 설계도를 정의합니다. Dart는 객체 지향 언어로서 클래스와 객체를 사용하여 프로그램을 구조화할 수 있습니다.

클래스 선언과 객체 생성

Dart에서 클래스를 선언하려면 class 키워드를 사용합니다. 생성된 클래스는 인스턴스를 통해 사용됩니다.

class User {
  String name;
  int age;

  // 생성자(Constructor)
  User(this.name, this.age);

  // 메서드(Method)
  void introduce() {
    print('안녕하세요! 저는 $name이고, 나이는 $age살입니다.');
  }
}

void main() {
  User user = User('김유신', 30); // User 객체 생성
  user.introduce(); // 출력: 안녕하세요! 저는 김유신이고, 나이는 30살입니다.
}

위 코드에서 User 클래스는 name과 age라는 두 개의 속성을 가집니다. introduce 메서드를 사용하여 자기소개 메시지를 출력할 수 있습니다.

네임드 생성자(Named Constructor)

Dart에서는 여러 생성자를 정의하기 위해 네임드 생성자를 사용할 수 있습니다.

class User {
  String name;
  int age;

  // 기본 생성자
  User(this.name, this.age);

  // 네임드 생성자
  User.withDefaultName(this.age) : name = '기본 이름';

  void introduce() {
    print('안녕하세요! 저는 $name이고, 나이는 $age살입니다.');
  }
}

void main() {
  User user1 = User('강감찬', 40);
  User user2 = User.withDefaultName(25);

  user1.introduce(); // 출력: 안녕하세요! 저는 강감찬이고, 나이는 40살입니다.
  user2.introduce(); // 출력: 안녕하세요! 저는 기본 이름이고, 나이는 25살입니다.
}

Getter와 Setter

클래스 속성을 안전하게 접근하고 수정하려면 getter와 setter를 사용합니다.

class User {
  String _name; // 프라이빗 속성
  int _age;

  User(this._name, this._age);

  // Getter
  String get name => _name;

  // Setter
  set name(String newName) {
    _name = newName;
  }

  void introduce() {
    print('안녕하세요! 저는 $_name이고, 나이는 $_age살입니다.');
  }
}

void main() {
  User user = User('을지문덕', 50);
  print(user.name); // 출력: 을지문덕

  user.name = '안중근';
  user.introduce(); // 출력: 안녕하세요! 저는 안중근이고, 나이는 50살입니다.
}

요약

  • 함수는 작업을 분리하고 재사용성을 높이는 데 사용됩니다.
    • Dart에서는 위치 기반 매개변수와 이름 기반 매개변수를 지원합니다.
  • 클래스는 데이터를 캡슐화하고, 메서드와 속성을 활용하여 객체를 조작할 수 있게 합니다.
    • 네임드 생성자와 getter, setter를 통해 클래스의 유연성을 높일 수 있습니다.

저작자표시 비영리 동일조건 (새창열림)

'Language > Dart' 카테고리의 다른 글

Dart에서 비동기 처리 (Future와 async/await)  (0) 2025.01.25
Dart 연산자와 조건문, 반복문  (0) 2025.01.20
Dart 변수와 데이터 타입  (0) 2025.01.20
Dart란?  (0) 2025.01.20
Language/Dart 추천 글
more
  • Dart에서 비동기 처리 (Future와 async/await)
    Dart에서 비동기 처리 (Future와 async/await)2025.01.25
  • Dart 연산자와 조건문, 반복문
    Dart 연산자와 조건문, 반복문2025.01.20
  • Dart 변수와 데이터 타입
    Dart 변수와 데이터 타입2025.01.20
  • Dart란?
    Dart란?2025.01.20
FRONTMAN

검색

250x250

방문자 수

Total
Today
Yesterday

카테고리

  • 분류 전체보기 (54)
    • Language (48)
      • JavaScript (15)
      • TypeScript (14)
      • Python (14)
      • Dart (5)
      • Java (0)
    • FE (6)
      • WEB (4)
      • React (0)
      • Flutter (1)
    • CS (0)
      • Algorithm (0)
      • Network (0)
    • DevOps (0)

공지사항

  • 전체보기

최근 글

인기 글

태그

  • 파이썬
  • async
  • 웹
  • tuple
  • web
  • js
  • 자바스크립트
  • 리스트
  • Modules
  • Object
  • 타입
  • typeScript
  • frontend
  • Interface
  • await
  • list
  • export
  • JavaScript
  • Flutter
  • 타입스크립트
  • Import
  • Python
  • Type
  • OOP
  • function
  • nodejs
  • CLASS
  • DART
  • inline frame
  • npm

최근 댓글

FRONTMAN :: hahekaku
CopyrightBluemivDesigned byBluemiv

티스토리툴바