Initial Commit (w/ Ch1Duck first implementation)

This commit is contained in:
2025-10-30 14:46:26 +01:00
commit 695fb26ce4
11 changed files with 129 additions and 0 deletions

11
Ch1Duck/Ch1Duck.csproj Normal file
View File

@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<LangVersion>latestmajor</LangVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

19
Ch1Duck/Duck.cs Normal file
View File

@@ -0,0 +1,19 @@
namespace Ch1Duck;
public abstract class Duck(IFlyBehaviour flyBehaviour, IQuackBehaviour quackBehaviour) {
public abstract void Display();
public void PerformFly() {
flyBehaviour.Fly();
}
public void PerformQuack() {
quackBehaviour.Quack();
}
}
public class MallardDuck() : Duck(new FlyWithWings(), new NormalQuack()) {
public override void Display() {
Console.WriteLine("I'm a real Mallard duck");
}
}

17
Ch1Duck/Fly.cs Normal file
View File

@@ -0,0 +1,17 @@
namespace Ch1Duck;
public interface IFlyBehaviour {
void Fly();
}
public class FlyWithWings: IFlyBehaviour {
public void Fly() {
Console.WriteLine("I'm flying!");
}
}
public class FlyNoWay: IFlyBehaviour {
public void Fly() {
Console.WriteLine("I can't fly");
}
}

7
Ch1Duck/Program.cs Normal file
View File

@@ -0,0 +1,7 @@
// See https://aka.ms/new-console-template for more information
using Ch1Duck;
Duck mallard = new MallardDuck();
mallard.PerformQuack();
mallard.PerformFly();

23
Ch1Duck/Quack.cs Normal file
View File

@@ -0,0 +1,23 @@
namespace Ch1Duck;
public interface IQuackBehaviour {
void Quack();
}
public class NormalQuack: IQuackBehaviour {
public void Quack() {
Console.WriteLine("Quack");
}
}
public class MuteQuack : IQuackBehaviour {
public void Quack() {
Console.WriteLine("<< Silence >>");
}
}
public class Squeak: IQuackBehaviour {
public void Quack() {
Console.WriteLine("Squeak");
}
}