본문 바로가기
카테고리 없음

Dart 문법: 객체 지향 프로그래밍, 클래스, 생성자, 선택적 매개변수

by 빛나는개발자 2023. 8. 25.
반응형

 

Dart는 객체 지향 프로그래밍 언어입니다. 이 글에서는 Dart에서의 클래스, 객체, 생성자, 선택적 매개변수, 카스케이드 연산자에 대해 알아보겠습니다.

클래스와 객체

클래스는 객체를 생성하기 위한 틀이며, 객체는 클래스의 인스턴스입니다. 현실 세상에 존재하는 대부분의 것을 클래스로 표현 가능하다. 클래스는 설계도와 같이 속성을 가지며, 클래스의 속성에 맞는 값을 가진 객체를 생성할 수 있다.


class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
}

var john = Person('John', 30);

생성자

생성자는 클래스의 인스턴스를 생성할 때 호출되는 특별한 메서드입니다.


class Person {
  String name;
  int age;
  
  Person(this.name, this.age);
}

선택적 매개변수

Dart에서는 명명된 매개변수나 위치 매개변수를 선택적으로 사용할 수 있습니다.


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

greet(name: 'John', title: 'Mr.');

카스케이드 연산자

카스케이드 연산자(..)를 사용하여 하나의 객체에 여러 작업을 연이어 수행할 수 있습니다.


class Counter {
  int count = 0;
  
  void increment() {
    count++;
  }
}

var myCounter = Counter()
  ..increment()
  ..increment()
  ..increment();

 

객체 지향 프로그래밍 (Object-Oriented Programming)

객체 지향 프로그래밍 (OOP)은 코드를 객체로 구조화하는 프로그래밍 패러다임입니다. 이 접근 방식은 코드의 재사용성, 확장성, 유지 보수성을 높이는 데 유용합니다.

기본 원칙

OOP는 크게 캡슐화, 상속, 다형성의 세 가지 기본 원칙을 따릅니다.

캡슐화 (Encapsulation)

캡슐화는 객체의 상태와 행동을 하나로 묶고, 외부에서의 직접적인 접근을 제한하는 것입니다.


class BankAccount {
  double _balance;
  
  BankAccount(this._balance);
  
  double get balance => _balance;
  
  void deposit(double amount) {
    _balance += amount;
  }
}
상속 (Inheritance)

상속을 통해 기존 클래스의 속성과 기능을 새로운 클래스에 전달할 수 있습니다.


class Animal {
  void eat() {
    print('Eating...');
  }
}

class Dog extends Animal {
  void bark() {
    print('Woof!');
  }
}
다형성 (Polymorphism)

다형성은 같은 이름의 메서드가 다른 동작을 수행할 수 있게 하는 것입니다.


void printArea(Shape shape) {
  print('The area is ${shape.area()}');
}

class Shape {
  double area() {
    return 0;
  }
}

class Circle extends Shape {
  double radius;
  Circle(this.radius);
  
  @override
  double area() {
    return 3.14159 * radius * radius;
  }
}
반응형