Lektion 11: lösningsförslag

  1. // 1
  2. interface IProduct
  3. {
  4. string Name { get; set; }
  5. double Price { get; set; }
  6. }
  7. class Car : IProduct
  8. {
  9. public string Name { get; set; }
  10. public double Price { get; set; }
  11. public int Horsepowers { get; set; }
  12. }
  13. class Computer : IProduct
  14. {
  15. public string Name { get; set; }
  16. public double Price { get; set; }
  17. public int Megabytes { get; set; }
  18. }
  19. class Shoe : IProduct
  20. {
  21. public string Name { get; set; }
  22. public double Price { get; set; }
  23. public int Size { get; set; }
  24. }
  25. static double TotalPrice(IProduct[] products)
  26. {
  27. double sum = 0;
  28. foreach (IProduct p in products)
  29. {
  30. sum += p.Price;
  31. }
  32. return sum;
  33. }
  34. // 2
  35. interface IProduct
  36. {
  37. string Name { get; set; }
  38. double Price { get; set; }
  39. void Enlarge(int amount);
  40. }
  41. class Car : IProduct
  42. {
  43. public string Name { get; set; }
  44. public double Price { get; set; }
  45. public int Horsepowers { get; set; }
  46. public void Enlarge(int amount)
  47. {
  48. Horsepowers += amount * 20;
  49. }
  50. }
  51. class Computer : IProduct
  52. {
  53. public string Name { get; set; }
  54. public double Price { get; set; }
  55. public int Megabytes { get; set; }
  56. public void Enlarge(int amount)
  57. {
  58. Megabytes += amount * 50000;
  59. }
  60. }
  61. class Shoe : IProduct
  62. {
  63. public string Name { get; set; }
  64. public double Price { get; set; }
  65. public int Size { get; set; }
  66. public void Enlarge(int amount)
  67. {
  68. Size += amount;
  69. }
  70. }
  71. static double TotalPrice(IProduct[] products)
  72. {
  73. double sum = 0;
  74. foreach (IProduct p in products)
  75. {
  76. sum += p.Price;
  77. }
  78. return sum;
  79. }
  80. static void Supersize(IProduct[] products)
  81. {
  82. foreach (IProduct p in products)
  83. {
  84. p.Enlarge(2);
  85. }
  86. }
  87. // 3
  88. interface IProduct
  89. {
  90. string Name { get; set; }
  91. double Price { get; set; }
  92. void Enlarge(int amount);
  93. }
  94. interface ISummary
  95. {
  96. string Summary { get; }
  97. }
  98. class Car : IProduct, ISummary
  99. {
  100. public string Name { get; set; }
  101. public double Price { get; set; }
  102. public int Horsepowers { get; set; }
  103. public void Enlarge(int amount)
  104. {
  105. Horsepowers += amount * 20;
  106. }
  107. public string Summary
  108. {
  109. get
  110. {
  111. return Name + " has " + Horsepowers + " horsepowers";
  112. }
  113. }
  114. }
  115. class Computer : IProduct, ISummary
  116. {
  117. public string Name { get; set; }
  118. public double Price { get; set; }
  119. public int Megabytes { get; set; }
  120. public void Enlarge(int amount)
  121. {
  122. Megabytes += amount * 50000;
  123. }
  124. public string Summary
  125. {
  126. get
  127. {
  128. return Name + " has " + Megabytes + " MB of disk space";
  129. }
  130. }
  131. }
  132. class Shoe : IProduct, ISummary
  133. {
  134. public string Name { get; set; }
  135. public double Price { get; set; }
  136. public int Size { get; set; }
  137. public void Enlarge(int amount)
  138. {
  139. Size += amount;
  140. }
  141. public string Summary
  142. {
  143. get
  144. {
  145. return Name + "is of size " + Size;
  146. }
  147. }
  148. }
  149. class Customer : ISummary
  150. {
  151. public string Name;
  152. public int Age;
  153. public string Summary
  154. {
  155. get
  156. {
  157. return Name + " is " + Age + " years old";
  158. }
  159. }
  160. }
  161. static double TotalPrice(IProduct[] products)
  162. {
  163. double sum = 0;
  164. foreach (IProduct p in products)
  165. {
  166. sum += p.Price;
  167. }
  168. return sum;
  169. }
  170. static void Supersize(IProduct[] products)
  171. {
  172. foreach (IProduct p in products)
  173. {
  174. p.Enlarge(2);
  175. }
  176. }
  177. static void ShowDatabase(ISummary[] entries)
  178. {
  179. foreach (ISummary entry in entries)
  180. {
  181. Console.WriteLine(entry.Summary);
  182. }
  183. }