Advertisement
Guest User

inits

a guest
Apr 29th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 6.59 KB | None | 0 0
  1. // struct Point {
  2. //   var x: Int
  3. //   var y: Int
  4. //   // тук ти се дава init(x: Int, y: Int)
  5. // }
  6. //
  7. // struct Point3D {
  8. //   var x: Int = 1
  9. //   var y: Int = 1
  10. //   var z: Int = 1
  11. //   // тук ти дават празен init(), който просто ще инициализира трите пропъртита с 1
  12. //   // и освен това ти се дава и init(x: Int, y: Int, z: Int) като по-горе
  13. // }
  14. //
  15. // class Point2D {
  16. //   var x: Int
  17. //   var y: Int
  18. //   // тук не ти се дава никакъв init и задължително (!!) трябва да си създадеш
  19. // }
  20. //
  21. // class Point2D {
  22. //   var x: Int?
  23. //   var y: Int?
  24. //   // тук ти се дава САМО init(), който слага и двете на nil
  25. //   // причината е, че и двете имат default стойност (nil)
  26. // }
  27. //
  28. // class Point2D {
  29. //   var x: Int = 2
  30. //   var y: Int = 1
  31. //   // същото като горното
  32. //   // причината е същата като горната
  33. // }
  34.  
  35. class Shape {
  36.   var numberOfSides: Int
  37.   var name: String
  38.  
  39.   init() {
  40.     numberOfSides = -1
  41.     name = "няма такава форма..."
  42.   }
  43.   // този конструктор премахва (ако са създадени) всички автоматично създадени
  44.   // конструктори
  45.  
  46.   init(nSides: Int, name: String) {
  47.     numberOfSides = nSides
  48.     self.name = name
  49.   }
  50. }
  51.  
  52. class Rectangle: Shape {
  53.   var width: Int = 2
  54.   var height: Int = 2
  55.   // тоя мизерен клас, тъй като няма свои конструктори и всичките му
  56.   // пропъртита имат стойности по подразбиране, получава
  57.   // всички конструктори на родителския клас
  58. }
  59.  
  60. // class Circle: Shape {
  61. //   var radius: Int
  62. //   // тоя клас е още по-мизерен и не взима конструкторите на
  63. //   // родителския, защото пропъртито му няма стойност
  64. //   // по подразбиране
  65. //
  66. //   // ако го оставиш така даже няма да се компилира
  67. //   // затова съм го коментирал
  68. // }
  69.  
  70. class Pentagon: Shape {
  71.   var sideLength: Int = 1
  72.  
  73.   init(sideLength: Int) {
  74.     self.sideLength = sideLength
  75.     super.init()
  76.   }
  77.   // след като направиш този конструктор (дори sideLength в случая да има default стойност)
  78.   // се премахват всички автоматично наследени конструктори
  79.   // т.е. разполагаш само с този
  80. }
  81. print("regular shape ----------------------")
  82. let a = Shape()
  83. print("name of regular shape \(a.name)")
  84.  
  85. print("rectangle ----------------------")
  86. let b = Rectangle()
  87. print("width of rectangle \(b.width)")
  88. print("height of rectangle \(b.width)")
  89.  
  90. print("second rectangle----------------------")
  91. let c = Rectangle(nSides: 4, name: "Правоъгълник")
  92. print("name of second rectangle \(c.name)")
  93. print("number of sides \(c.numberOfSides)")
  94.  
  95. print("pentagon-----------------")
  96. let d = Pentagon(sideLength: 2)
  97. print("name of polygon \(d.name)")// struct Point {
  98. //   var x: Int
  99. //   var y: Int
  100. //   // тук ти се дава init(x: Int, y: Int)
  101. // }
  102. //
  103. // struct Point3D {
  104. //   var x: Int = 1
  105. //   var y: Int = 1
  106. //   var z: Int = 1
  107. //   // тук ти дават празен init(), който просто ще инициализира трите пропъртита с 1
  108. //   // и освен това ти се дава и init(x: Int, y: Int, z: Int) като по-горе
  109. // }
  110. //
  111. // class Point2D {
  112. //   var x: Int
  113. //   var y: Int
  114. //   // тук не ти се дава никакъв init и задължително (!!) трябва да си създадеш
  115. // }
  116. //
  117. // class Point2D {
  118. //   var x: Int?
  119. //   var y: Int?
  120. //   // тук ти се дава САМО init(), който слага и двете на nil
  121. //   // причината е, че и двете имат default стойност (nil)
  122. // }
  123. //
  124. // class Point2D {
  125. //   var x: Int = 2
  126. //   var y: Int = 1
  127. //   // същото като горното
  128. //   // причината е същата като горната
  129. // }
  130.  
  131. class Shape {
  132.   var numberOfSides: Int
  133.   var name: String
  134.  
  135.   init() {
  136.     numberOfSides = -1
  137.     name = "няма такава форма..."
  138.   }
  139.   // този конструктор премахва (ако са създадени) всички автоматично създадени
  140.   // конструктори
  141.  
  142.   init(nSides: Int, name: String) {
  143.     numberOfSides = nSides
  144.     self.name = name
  145.   }
  146. }
  147.  
  148. class Rectangle: Shape {
  149.   var width: Int = 2
  150.   var height: Int = 2
  151.   // тоя мизерен клас, тъй като няма свои конструктори и всичките му
  152.   // пропъртита имат стойности по подразбиране, получава
  153.   // всички конструктори на родителския клас
  154. }
  155.  
  156. // class Circle: Shape {
  157. //   var radius: Int
  158. //   // тоя клас е още по-мизерен и не взима конструкторите на
  159. //   // родителския, защото пропъртито му няма стойност
  160. //   // по подразбиране
  161. //
  162. //   // ако го оставиш така даже няма да се компилира
  163. //   // затова съм го коментирал
  164. // }
  165.  
  166. class Pentagon: Shape {
  167.   var sideLength: Int = 1
  168.  
  169.   init(sideLength: Int) {
  170.     self.sideLength = sideLength
  171.     super.init()
  172.   }
  173.   // след като направиш този конструктор (дори sideLength в случая да има default стойност)
  174.   // се премахват всички автоматично наследени конструктори
  175.   // т.е. разполагаш само с този
  176. }
  177. print("regular shape ----------------------")
  178. let a = Shape()
  179. print("name of regular shape \(a.name)")
  180.  
  181. print("rectangle ----------------------")
  182. let b = Rectangle()
  183. print("width of rectangle \(b.width)")
  184. print("height of rectangle \(b.width)")
  185.  
  186. print("second rectangle----------------------")
  187. let c = Rectangle(nSides: 4, name: "Правоъгълник")
  188. print("name of second rectangle \(c.name)")
  189. print("number of sides \(c.numberOfSides)")
  190.  
  191. print("pentagon-----------------")
  192. let d = Pentagon(sideLength: 2)
  193. print("name of polygon \(d.name)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement