-
Classes
A class in programming is like a group of people. For example, if you have a group of friends, each person in the group is called a "friend". In programming, we call each person in the group a "class". Just like your friends might all have different names and personalities, classes can also have different names and qualities. So when you write code, you can create different classes with different names and abilities to do things.
-
-
Object Classes
import std.stdio : write, writeln;
import std.string;

class Person {
	string name;
	int age;

	this(string name, int age) {
		this.name = name;
		this.age = age;
	}

	void greet() {
		write("Hello my name is ", this.name);
	}
}

void main()
{
	Person human = new Person("John", 36);

	writeln(human.name); // John
	writeln(human.age); // 36
	human.greet(); // Hello my name is John
}
-
-
-
Trait Classes
import std.stdio : writeln;
import std.string;

mixin template HasFlippers() {
	string swim() {
		return "can swim";
	}
}

mixin template HasFeathers() {
	string fly() {
		return "can fly";
	}
}

class Duck {
	mixin HasFlippers;
	mixin HasFeathers;
}

class Seal {
	mixin HasFlippers;
}

void main() {
	Duck a = new Duck();
	writeln(a.swim()); // can swim
	writeln(a.fly()); // can fly

	Seal b = new Seal();
	writeln(b.swim()); // can swim
}
-
-
-
Interface Classes
import std.stdio : writefln;
import std.math.constants;

interface Shape {
	double area();
}

class Rectangle : Shape {
	double width;
	double height;

	this(double width, double height) {
		this.width = width;
		this.height = height;
	}

	double area() {
		return this.width * this.height;
	}
}

class Circle : Shape {
	double radius;

	this(double radius) {
		this.radius = radius;
	}

	double area() {
		return PI * this.radius * this.radius;
	}
}

void main()
{
	Rectangle a = new Rectangle(3, 5);
	Circle b = new Circle(4);

	writefln("area of a is %f", a.area()); // area of a is 15.000000
	writefln("area of b is %f", b.area()); // area of b is 50.265482
}
-
-
-
Struct Classes
import std.stdio : writeln;
import std.string;

struct Person {
	string name;
	int age;

	this(string name, int age) {
		this.name = name;
		this.age = age;
	}
}

void main()
{
	Person human = Person("John", 36);

	writeln(human.name); // John
	writeln(human.age); // 36
}
-
-
-
Enum Classes
import std.stdio : write;

enum Days {
	Sunday,
	Monday,
	Tuesday,
	Wednesday,
	Thursday,
	Friday,
	Saturday
}

void main()
{
	int day = 4;

	if (day == Days.Saturday || day == Days.Sunday) {
		write("a weekend");
	} else {
		write("a weekday"); // a weekday
	}
}

-
-