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