public static void Main()
TaxCalculator taxCal = new TaxCalculator();
Console.WriteLine("Enter your gross salary:");
int grossSalary = Convert.ToInt32(Console.ReadLine());
taxCal.Calculate(new IncomeTax());
taxAmount += taxCal.getTaxAmountFrom(grossSalary);
taxCal.Calculate(new SocialTax());
taxAmount += taxCal.getTaxAmountFrom(grossSalary);
Console.WriteLine("Your net salary is:");
Console.WriteLine(grossSalary - taxAmount + " IDR");
public static class TaxStatement
public const int noTax = 0;
public const int minAmountForCalculation = 1000;
public const int maxSocialAmountForCalculation = 3000;
public static class Percentage
public const double ten = 0.10;
public const double fifteen = 0.15;
int Calculate(int amount);
public class IncomeTax : ITax
public int Calculate(int grossAmount)
if (grossAmount > TaxStatement.minAmountForCalculation)
int taxableAmount = grossAmount - TaxStatement.minAmountForCalculation;
return (int)(taxableAmount * Percentage.ten);
return TaxStatement.noTax;
public class SocialTax : ITax
public int Calculate(int grossAmount)
if (grossAmount > TaxStatement.minAmountForCalculation)
int taxableAmount = grossAmount;
if (grossAmount > TaxStatement.maxSocialAmountForCalculation)
taxableAmount = TaxStatement.maxSocialAmountForCalculation - TaxStatement.minAmountForCalculation;
return (int)(taxableAmount * Percentage.fifteen);
return TaxStatement.noTax;
public class TaxCalculator
public void Calculate(ITax tax)
public int getTaxAmountFrom(int grossAmount)
return tax.Calculate(grossAmount);