Advertisement
Guest User

Untitled

a guest
Jan 24th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. class OboraException(s:String) extends Exception(s)
  2.  
  3. class Zwierze private(private val gatunek:String, private val imie:String, private val rok:Int, var zakwaterowany:Boolean)
  4. {
  5. override def toString: String =
  6. {
  7. "Gatunek: "+ gatunek + ", " + "Imie: " + imie + ", " + "Rok: " + rok + "."
  8. }
  9.  
  10. override def equals(inne:Zwierze):Boolean =
  11. {
  12. gatunek==inne.gatunek&&imie==inne.imie&&rok==inne.rok
  13. }
  14. }
  15.  
  16. object Zwierze
  17. {
  18. def apply(gatunek:String, imie:String, rok:Int) = new Zwierze(gatunek, imie, rok, false)
  19. }
  20.  
  21. class Obora private(private val nr:Int, private val wlasciciel:String, private var lboks:Int, private var lista:List[Zwierze])
  22. {
  23.  
  24. def zakwateruj (zw:Zwierze) =
  25. {
  26. if (!zw.zakwaterowany&&lboks>0)
  27. {
  28. zw.zakwaterowany=true;
  29. lista=zw::lista;
  30. lboks = lboks-1;
  31. }
  32. else throw new OboraException("Brak pustych boksów.")
  33. }
  34.  
  35. def wykwateruj (zwierzak:Zwierze) =
  36. {
  37. if (zwierzak.zakwaterowany)
  38. {
  39. lista =
  40. {
  41. def wykwateruj_rec(ls:List[Zwierze], listapomocnicza:List[Zwierze], zwierzak:Zwierze):List[Zwierze] =
  42. ls match
  43. {
  44. case Nil => listapomocnicza reverse
  45. case head::tail => if (head.equals(zwierzak)) (tail:::listapomocnicza) reverse
  46. else wykwateruj_rec(tail, head::listapomocnicza, zwierzak)
  47. }
  48. wykwateruj_rec(lista,Nil,zwierzak);
  49. }
  50. zwierzak.zakwaterowany=false;
  51. lboks = lboks+1
  52. }
  53. else throw new OboraException("Zwierzak nie jest zakwaterowany.")
  54. }
  55.  
  56. def przenies(inna:Obora, zwierzak:Zwierze) =
  57. {
  58. wykwateruj(zwierzak);
  59. inna.zakwateruj(zwierzak);
  60. }
  61.  
  62. override def toString: String =
  63. {
  64. "Obora nr"+nr + " " + wlasciciel + " puste boksy: " + lboks + ", Lista zwierzat: " + ":" +lista
  65. }
  66.  
  67. }
  68. object Obora
  69. {
  70. var unikalnaliczba = 0;
  71. def iplusplus:Int =
  72. {
  73. unikalnaliczba = unikalnaliczba + 1;
  74. return unikalnaliczba
  75. }
  76.  
  77. def apply(wlasciciel:String, lboks:Int) = new Obora(iplusplus, wlasciciel, lboks, List())
  78. }
  79.  
  80. val z1 = Zwierze("Krowa", "Mućka", 2011)
  81. val z2 = Zwierze("Świnia", "Henryk XIII", 2013)
  82. val z3 = Zwierze("Kogut", "Idefons", 2015)
  83. val z4 = Zwierze("Kot", "Maurycy", 2009)
  84. val z5 = Zwierze("Krowa", "Bożydar", 2014)
  85. val z6 = Zwierze("Owca", "Brunhilda", 2015)
  86.  
  87. val o = Obora("Nowak", 5)
  88. o.zakwateruj(z1)
  89. o.zakwateruj(z2)
  90. o.zakwateruj(z3)
  91. o.zakwateruj(z4)
  92. o.zakwateruj(z5)
  93. o.zakwateruj(z6)
  94. o.zakwateruj(z6)
  95. println(o)
  96. o.wykwateruj(z5)
  97. println(o)
  98.  
  99. val o2 = Obora("Maciek", 3)
  100.  
  101. o.przenies(o2, z3)
  102.  
  103. println(o)
  104. println(o2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement