Geçenlerde bir 'x' şirketi için çalışıyordum. Bana bazı sorular gönderdiler ve sadece birini çözmemi söylediler.
Sorun şu ki -
Muaf tutulan kitaplar, yiyecekler ve tıbbi ürünler dışında tüm mallar için temel satış vergisi% 10 oranında uygulanır.
İthalat vergisi, muafiyet olmaksızın tüm ithal mallara% 5 oranında uygulanan ek bir satış vergisidir.
Öğeleri satın aldığımda, tüm öğelerin adını ve fiyatını (vergi dahil) listeleyen, öğelerin toplam maliyeti ve ödenen toplam satış vergisi tutarlarını içeren bir makbuz alırım.
Satış vergisi için yuvarlama kuralları,% n'lik bir vergi oranı için, p'lik bir raf fiyatının (en yakın 0.05'e yuvarlanmış np / 100) satış vergisi miktarını içermesidir.
" Çözümünüzün Tasarım Yönüyle ilgilendiklerini ve Nesne Yönelimli Programlama Becerilerimi değerlendirmek istediklerini söylediler ."
Bu kendi sözleriyle söyledikleri
- Çözüm için Java, Ruby veya C # kullanmanızı istiyoruz.
- Çözümünüzün TASARIM BOYUTU ile ilgileniyor ve Nesneye Yönelik Programlama Becerilerinizi değerlendirmek istiyoruz .
- Dış kitaplıkları veya araçları oluşturmak veya test etmek için kullanabilirsiniz. Özellikle, birim test kitaplıklarını kullanabilir veya seçtiğiniz dil için mevcut araçlar oluşturabilirsiniz (örneğin, JUnit, Ant, NUnit, NAnt, Test :: Unit, Rake vb.)
- İsteğe bağlı olarak, kodunuzla birlikte tasarımınızın ve varsayımlarınızın kısa bir açıklamasını da ekleyebilirsiniz.
- Lütfen web tabanlı bir uygulama veya kapsamlı bir kullanıcı arayüzü beklemediğimizi unutmayın. Aksine, basit, konsol tabanlı bir uygulama bekliyoruz ve kaynak kodunuzla ilgileniyoruz.
Bu yüzden aşağıdaki kodu verdim - yapıştırma kodunu kopyalayıp VS'de çalıştırabilirsiniz.
class Program
{
static void Main(string[] args)
{
try
{
double totalBill = 0, salesTax = 0;
List<Product> productList = getProductList();
foreach (Product prod in productList)
{
double tax = prod.ComputeSalesTax();
salesTax += tax;
totalBill += tax + (prod.Quantity * prod.ProductPrice);
Console.WriteLine(string.Format("Item = {0} : Quantity = {1} : Price = {2} : Tax = {3}", prod.ProductName, prod.Quantity, prod.ProductPrice + tax, tax));
}
Console.WriteLine("Total Tax : " + salesTax);
Console.WriteLine("Total Bill : " + totalBill);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
private static List<Product> getProductList()
{
List<Product> lstProducts = new List<Product>();
//input 1
lstProducts.Add(new Product("Book", 12.49, 1, ProductType.ExemptedProduct, false));
lstProducts.Add(new Product("Music CD", 14.99, 1, ProductType.TaxPaidProduct, false));
lstProducts.Add(new Product("Chocolate Bar", .85, 1, ProductType.ExemptedProduct, false));
//input 2
//lstProducts.Add(new Product("Imported Chocolate", 10, 1, ProductType.ExemptedProduct,true));
//lstProducts.Add(new Product("Imported Perfume", 47.50, 1, ProductType.TaxPaidProduct,true));
//input 3
//lstProducts.Add(new Product("Imported Perfume", 27.99, 1, ProductType.TaxPaidProduct,true));
//lstProducts.Add(new Product("Perfume", 18.99, 1, ProductType.TaxPaidProduct,false));
//lstProducts.Add(new Product("Headache Pills", 9.75, 1, ProductType.ExemptedProduct,false));
//lstProducts.Add(new Product("Imported Chocolate", 11.25, 1, ProductType.ExemptedProduct,true));
return lstProducts;
}
}
public enum ProductType
{
ExemptedProduct=1,
TaxPaidProduct=2,
//ImportedProduct=3
}
class Product
{
private ProductType _typeOfProduct = ProductType.TaxPaidProduct;
private string _productName = string.Empty;
private double _productPrice;
private int _quantity;
private bool _isImportedProduct = false;
public string ProductName { get { return _productName; } }
public double ProductPrice { get { return _productPrice; } }
public int Quantity { get { return _quantity; } }
public Product(string productName, double productPrice,int quantity, ProductType type, bool isImportedProduct)
{
_productName = productName;
_productPrice = productPrice;
_quantity = quantity;
_typeOfProduct = type;
_isImportedProduct = isImportedProduct;
}
public double ComputeSalesTax()
{
double tax = 0;
if(_isImportedProduct) //charge 5% tax directly
tax+=_productPrice*.05;
switch (_typeOfProduct)
{
case ProductType.ExemptedProduct: break;
case ProductType.TaxPaidProduct:
tax += _productPrice * .10;
break;
}
return Math.Round(tax, 2);
//round result before returning
}
}
girişi uncommnet ve farklı girişler için çalıştırabilirsiniz.
Çözümü sağladım ama reddedildim.
"Kod çözümü tatmin edici olmadığı için beni mevcut açık pozisyonlarımız için değerlendiremediklerini söylediler."
Lütfen burada eksik olanı bana yönlendirin. Bu çözüm iyi bir OOAD çözümü değil mi?
OOAD becerilerimi nasıl geliştirebilirim?
Son sınıf öğrencileri ayrıca mükemmel OOAD uygulamasının pratik olarak da çalışmayacağını söylüyor.
Teşekkürler