Baru-baru ini saya mencoba untuk perusahaan 'x'. Mereka mengirimi saya beberapa pertanyaan dan mengatakan kepada saya untuk menyelesaikan hanya satu.
Masalahnya seperti ini -
Pajak penjualan dasar berlaku dengan tarif 10% untuk semua barang, kecuali buku, makanan, dan produk medis yang dikecualikan.
Bea masuk adalah pajak penjualan tambahan yang berlaku atas semua barang impor dengan tarif 5%, tanpa pengecualian.
Ketika saya membeli barang, saya menerima tanda terima yang mencantumkan nama semua barang dan harganya (termasuk pajak), diakhiri dengan biaya total barang, dan jumlah total pajak penjualan yang dibayarkan.
Aturan pembulatan untuk pajak penjualan adalah bahwa untuk tarif pajak n%, harga rak p berisi (np / 100 dibulatkan ke dekat 0,05) jumlah pajak penjualan.
"Mereka mengatakan kepada saya, mereka tertarik dengan Aspek Desain solusi Anda dan ingin mengevaluasi Keterampilan Pemrograman Berorientasi Objek saya ."
Inilah yang mereka katakan dengan kata-kata mereka sendiri
- Untuk solusinya, kami ingin Anda menggunakan Java, Ruby atau C #.
- Kami tertarik dengan ASPEK DESAIN solusi Anda dan ingin mengevaluasi Keterampilan Pemrograman Berorientasi Objek Anda .
- Anda dapat menggunakan pustaka atau alat eksternal untuk membangun atau menguji tujuan. Secara khusus, Anda dapat menggunakan pustaka pengujian unit atau alat build yang tersedia untuk bahasa pilihan Anda (misalnya, JUnit, Ant, NUnit, NAnt, Test :: Unit, Rake, dll.)
- Secara opsional, Anda juga dapat menyertakan penjelasan singkat tentang desain dan asumsi Anda bersama dengan kode Anda.
- Mohon dicatat bahwa kami TIDAK mengharapkan aplikasi berbasis web atau UI yang komprehensif. Sebaliknya, kami mengharapkan aplikasi berbasis konsol yang sederhana dan tertarik dengan kode sumber Anda.
Jadi saya berikan kode di bawah ini - Anda cukup menyalin kode tempel dan menjalankannya di VS.
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
}
}
Anda dapat membatalkan input dan menjalankan input yang berbeda.
Saya memberikan solusinya tetapi saya ditolak.
"Mereka berkata, mereka tidak dapat mempertimbangkan saya untuk posisi terbuka kami saat ini karena solusi kode tidak memuaskan."
Tolong bimbing saya apa yang hilang di sini. Apakah solusi ini bukan solusi OOAD yang baik.
Bagaimana cara meningkatkan keterampilan OOAD saya.
Senior saya juga bilang aplikasi OOAD yang sempurna juga tidak akan bekerja secara praktis.
Terima kasih