Récemment, j'ai été l'essayer pour une société "x". Ils m'ont envoyé une série de questions et m'a dit de le résoudre seul.
Le problème, c'est comme ça -
De base de la taxe de vente est applicable au taux de 10% sur toutes les marchandises, à l'exception des livres, de la nourriture et de soins médicaux, les produits qui en sont exemptés.
Droit à l'importation additionnel de la taxe de vente applicable sur toutes les marchandises importées à un taux de 5%, sans exception.
Quand j'ai acheter des articles que je reçois un reçu qui indique le nom de tous les articles et leur prix (y compris l'impôt) avec, pour finir, le coût total des items, et le total des montants de taxes de vente payées.
Les règles d'arrondi pour la taxe de vente sont que pour un taux d'imposition de n%, un prix de vente de p contient (np/100 arrondi à 0,05) du montant de la taxe de vente.
"Ils m'ont dit, ils sont intéressés par l' Aspect de la Conception de votre solution et vous souhaitez évaluer mon Orientée Objet de la Programmation des Compétences."
C'est ce qu'ils ont dit dans leurs propres mots
- Pour la solution, nous voudrions vous utilisez Java, Ruby ou C#.
- Nous nous sommes intéressés à l'ASPECT de la CONCEPTION de votre solution et souhaitez évaluer votre la Programmation Orientée Objet, des Compétences.
- Vous pouvez utiliser des bibliothèques externes ou des outils pour construire ou à des fins de test. Plus précisément, vous pouvez utiliser les tests unitaires des bibliothèques ou de construire des outils disponibles pour la langue de votre choix (par exemple, JUnit, Ant, NUnit, NAnt, Test::Unit, Râteau, etc.)
- Vous pouvez également inclure une brève explication de votre conception et les hypothèses ainsi que votre code.
- Veuillez noter que nous n'attendons PAS une application web ou complète de l'INTERFACE utilisateur. Plutôt, nous nous attendons à une simple console en fonction de l'application et de l'intéressé dans votre code source.
Donc, je fournis ci-dessous de code, vous pouvez juste copier coller le code et l'exécuter dans 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
}
}
vous pouvez uncommnet de saisie et d'exécution pour les différentes entrées.
J'ai fourni la solution, mais j'ai été refusée.
"Ils ont dit, ils sont incapables de me considérer pour nos positions ouvertes au fait que le code de la solution n'est pas satisfaisante."
Merci de me guider ce qui manque ici. Est-ce la solution n'est pas une bonne OOAD solution.
Comment puis-je améliorer mon OOAD compétences.
Mes aînés dit aussi parfait OOAD application ne fonctionnera pas pratiquement.
Merci