SHARE
TWEET

Bookshop

HristoGrigorov Apr 22nd, 2017 121 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _02.BookShop
  8. {
  9.     public class Book
  10.     {
  11.         private string author;
  12.         private string title;
  13.         private double price;
  14.  
  15.         public Book(string author, string title, double price)
  16.         {
  17.             this.setAuthor(author);
  18.             this.setTitle(title);
  19.             this.setPrice(price);
  20.         }
  21.  
  22.         public string Author
  23.         {
  24.             get { return this.author; }
  25.             protected set
  26.             {
  27.                 var names = value.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  28.  
  29.                 if (names.Length > 1 && char.IsDigit(names[1][0]))
  30.                 {
  31.                     throw new ArgumentException("Author not valid!");
  32.                 }
  33.                 this.author = value;
  34.             }
  35.         }
  36.  
  37.         public string Title
  38.         {
  39.             get { return this.title; }
  40.             protected set
  41.             {
  42.                 if (value.Length < 3)
  43.                 {
  44.                     throw new ArgumentException("Title not valid!");
  45.                 }
  46.  
  47.                 this.title = value;
  48.             }
  49.         }
  50.  
  51.         public virtual double Price
  52.         {
  53.             get { return this.price; }
  54.             protected set
  55.             {
  56.  
  57.                 if (value <= 0 )
  58.                 {
  59.                     throw new AggregateException("Price not valid!");
  60.                 }
  61.                 this.price = value;
  62.             }
  63.         }
  64.  
  65.         private void setPrice(double price)
  66.         {
  67.             this.Price = price;  
  68.         }
  69.  
  70.         private void setTitle(string title)
  71.         {
  72.             this.Title = title;  
  73.         }
  74.  
  75.         private void setAuthor(string author)
  76.         {
  77.             this.Author = author;
  78.         }
  79.  
  80.         public override string ToString()
  81.         {
  82.             StringBuilder sb = new StringBuilder();
  83.  
  84.             sb.Append("Type: ").Append(this.GetType().Name)
  85.                 .Append(Environment.NewLine)
  86.                 .Append("Title: ").Append(this.Title)
  87.                 .Append(Environment.NewLine)
  88.                 .Append("Author: ").Append(this.Author)
  89.                 .Append(Environment.NewLine)
  90.                 .Append("Price: ").Append($"{ this.Price:F1}")
  91.                 .Append(Environment.NewLine);
  92.  
  93.             return sb.ToString();
  94.         }
  95.     }
  96.  
  97.     public class GoldenEditionBook : Book
  98.     {
  99.         public GoldenEditionBook(string author, string title, double price)
  100.             : base(author, title, price)
  101.         {
  102.         }
  103.  
  104.         public override double Price
  105.         {
  106.             get
  107.             {
  108.                 return base.Price * 1.3;
  109.             }            
  110.         }
  111.     }
  112.     public class Startup
  113.     {
  114.         public static void Main()
  115.         {
  116.             try
  117.             {
  118.                 string author = Console.ReadLine();
  119.                 string title = Console.ReadLine();
  120.                 double price = double.Parse(Console.ReadLine());
  121.  
  122.                 Book book = new Book(author, title, price);
  123.                 GoldenEditionBook goldenEditionBook = new GoldenEditionBook(author, title, price);
  124.  
  125.                 Console.WriteLine(book);
  126.                 Console.WriteLine(goldenEditionBook);
  127.             }
  128.             catch (ArgumentException ae)
  129.             {
  130.                 Console.WriteLine(ae.Message);
  131.             }
  132.  
  133.         }
  134.     }
  135. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top