3-4.Dartのクラスとオブジェクト

1. オブジェクト指向プログラミング(OOP)とは

オブジェクト指向プログラミング(OOP)は、プログラムをオブジェクトの集合として構築する方法です。
オブジェクトはデータ(プロパティ)とそれに関連する操作(メソッド)を持つエンティティです。
OOPの主要な概念には、クラス、オブジェクト、継承、ポリモーフィズムなどがあります。

2. クラスとは

クラスは、オブジェクトの設計図です。
クラスは、オブジェクトのプロパティ(データ)とメソッド(関数)を定義します。

クラスの定義

Dartでは、classキーワードを使用してクラスを定義します。

Dart
class Person {
  // プロパティ(フィールド)
  String name;
  int age;

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

この例では、Personクラスはnameageというプロパティを持ち、greetというメソッドを定義しています。

3. オブジェクトとは

オブジェクトは、クラスのインスタンスです。
オブジェクトは、クラスに基づいて作成され、クラスで定義されたプロパティとメソッドを持ちます。

オブジェクトの作成

クラスのインスタンス(オブジェクト)を作成するには、newキーワードを使用するか、省略することもできます。

Dart
void main() {
  Person person = Person(); // または Person person = new Person();
  person.name = 'Alice';
  person.age = 30;
  person.greet(); // Hello, my name is Alice and I am 30 years old.
}

4. コンストラクタ

コンストラクタは、オブジェクトを初期化するための特別なメソッドです。クラスと同じ名前を持つメソッドとして定義されます。コンストラクタを使用することで、オブジェクトのプロパティを簡単に初期化することができます。

デフォルトコンストラクタ

デフォルトのコンストラクタは、引数を持たず、特に定義しなくても自動的に提供されます。

Dart
class Person {
  String name;
  int age;

  // デフォルトコンストラクタ(自動的に提供される)
  Person();

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

パラメータ付きコンストラクタ

パラメータ付きコンストラクタを定義することで、オブジェクトのプロパティを初期化することができます。

Dart
class Person {
  String name;
  int age;

  // パラメータ付きコンストラクタ
  Person(this.name, this.age);

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

void main() {
  Person person = Person('Bob', 25);
  person.greet(); // Hello, my name is Bob and I am 25 years old.
}

5. メソッド

メソッドは、オブジェクトの操作を定義する関数です。クラス内で定義され、オブジェクトのプロパティにアクセスしたり、操作を行ったりすることができます。

メソッドの定義と呼び出し

Dart
class Calculator {
  // メソッド
  int add(int a, int b) {
    return a + b;
  }

  int subtract(int a, int b) {
    return a - b;
  }
}

void main() {
  Calculator calc = Calculator();
  int sum = calc.add(10, 5);
  int difference = calc.subtract(10, 5);
  
  print('Sum: $sum'); // Sum: 15
  print('Difference: $difference'); // Difference: 5
}

6. プロパティ

プロパティは、オブジェクトの状態やデータを保持するための変数です。クラス内で定義され、オブジェクトの一部として機能します。

プロパティのアクセス

Dart
class Car {
  String brand;
  String model;
  int year;

  void displayInfo() {
    print('Brand: $brand, Model: $model, Year: $year');
  }
}

void main() {
  Car car = Car();
  car.brand = 'Toyota';
  car.model = 'Corolla';
  car.year = 2021;
  
  car.displayInfo(); // Brand: Toyota, Model: Corolla, Year: 2021
}

7. 例題

例題1: クラスとオブジェクトの基本

Dart
class Animal {
  String name;
  int age;

  void displayInfo() {
    print('Name: $name, Age: $age');
  }
}

void main() {
  Animal dog = Animal();
  dog.name = 'Buddy';
  dog.age = 5;
  dog.displayInfo(); // Name: Buddy, Age: 5

  Animal cat = Animal();
  cat.name = 'Whiskers';
  cat.age = 3;
  cat.displayInfo(); // Name: Whiskers, Age: 3
}

例題2: パラメータ付きコンストラクタ

Dart
class Book {
  String title;
  String author;
  int year;

  Book(this.title, this.author, this.year);

  void displayInfo() {
    print('Title: $title, Author: $author, Year: $year');
  }
}

void main() {
  Book book = Book('1984', 'George Orwell', 1949);
  book.displayInfo(); // Title: 1984, Author: George Orwell, Year: 1949
}

例題3: メソッドを使った操作

Dart
class Rectangle {
  double width;
  double height;

  Rectangle(this.width, this.height);

  double area() {
    return width * height;
  }

  double perimeter() {
    return 2 * (width + height);
  }
}

void main() {
  Rectangle rect = Rectangle(5.0, 3.0);
  print('Area: ${rect.area()}'); // Area: 15.0
  print('Perimeter: ${rect.perimeter()}'); // Perimeter: 16.0
}

↓次回内容:

3-5.Dartのコンストラクタ

1. コンストラクタとは
コンストラクタは、クラスのインスタンス(オブジェクト)を作成するときに呼び出される特別なメソッドです。コンストラクタを使用することで、オブジェクトのプロパティを初期化したり、初期設定を行ったりすることができます。Dartでは、コンストラクタはクラスと同じ名前を持ちます。
2. デフォルトコンストラクタ
クラスにコンストラクタを定義しない場合、Dartは自動的に引数のないデフォルトコンストラクタを提供します。

コメントを残す