online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
using System; using System.Text; // Product public class House { public string Gate { get; set; } public string Roof { get; set; } public string Walls { get; set; } public string Garage { get; set; } public string Pool { get; set; } public string Garden { get; set; } public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine("House specifications:"); sb.AppendLine($"Gate: {Gate}"); sb.AppendLine($"Roof: {Roof}"); sb.AppendLine($"Walls: {Walls}"); if (!string.IsNullOrEmpty(Garage)) sb.AppendLine($"Garage: {Garage}"); if (!string.IsNullOrEmpty(Pool)) sb.AppendLine($"Pool: {Pool}"); if (!string.IsNullOrEmpty(Garden)) sb.AppendLine($"Garden: {Garden}"); return sb.ToString(); } } // Abstract Builder public abstract class HouseBuilder { protected House house = new House(); public House Build() => house; public abstract HouseBuilder BuildGate(); public abstract HouseBuilder BuildRoof(); public abstract HouseBuilder BuildWalls(); public virtual HouseBuilder BuildGarage() { return this; } public virtual HouseBuilder BuildPool() { return this; } public virtual HouseBuilder BuildGarden() { return this; } } // Concrete Builder for Basic House public class BasicHouseBuilder : HouseBuilder { public override HouseBuilder BuildGate() { house.Gate = "Basic Gate"; return this; } public override HouseBuilder BuildRoof() { house.Roof = "Basic Roof"; return this; } public override HouseBuilder BuildWalls() { house.Walls = "Basic Walls"; return this; } } // Concrete Builder for Luxury House public class LuxuryHouseBuilder : HouseBuilder { public override HouseBuilder BuildGate() { house.Gate = "Fancy Gate"; return this; } public override HouseBuilder BuildRoof() { house.Roof = "Luxury Roof"; return this; } public override HouseBuilder BuildWalls() { house.Walls = "Marble Walls"; return this; } public override HouseBuilder BuildGarage() { house.Garage = "2-Car Garage"; return this; } public override HouseBuilder BuildPool() { house.Pool = "Infinity Pool"; return this; } public override HouseBuilder BuildGarden() { house.Garden = "Landscaped Garden"; return this; } } // Director public class Director { private HouseBuilder builder; public Director(HouseBuilder builder) { this.builder = builder; } public void ChangeBuilder(HouseBuilder builder) { this.builder = builder; } public House ConstructBasicHouse() { return builder.BuildGate() .BuildRoof() .BuildWalls() .Build(); } public House ConstructLuxuryHouse() { return builder.BuildGate() .BuildRoof() .BuildWalls() .BuildGarage() .BuildPool() .BuildGarden() .Build(); } } // Client code public class Client { public static void Main(string[] args) { Director director = new Director(new BasicHouseBuilder()); Console.WriteLine("Basic House:"); House basicHouse = director.ConstructBasicHouse(); Console.WriteLine(basicHouse); director.ChangeBuilder(new LuxuryHouseBuilder()); Console.WriteLine("Luxury House:"); House luxuryHouse = director.ConstructLuxuryHouse(); Console.WriteLine(luxuryHouse); } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue