Qpel

ruby teorija

Jun 5th, 2018
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.10 KB | None | 0 0
  1. Teorija
  2. Programavimo kalbų istorija
  3. 1. Karta 1954 – 1958 : Fortran -1, Algol -58, IPL V, flomatic
  4. 2. 1959 – 1961 : Fortran -2, Algol -60, Cabol, LISP
  5. 3. 1962-1970: PL/1, Algol 68, Pascal, Simula, Ada
  6. Įvairių kartų programų architektūra
  7. • 1k + 2k pradžia
  8.  
  9.  
  10. • 2k + 3k pradžia
  11.  
  12. • Pasirodo programos sudarytos iš keletos modulių, kiekvienos modulis turi tokią struktūrą:
  13.  
  14.  
  15.  
  16. Objekto sąvoka ir pavyzdžiai
  17. • Objektų pavyzdžiai: žmogus, gyvūnas, mokykla, valstybė, atomas, molekulė, banko sąskaita, dokumentas
  18. • Objektai gali būti ir materialūs, ir nematerialūs. Objektas sudarytas iš duomenų apie jį patį, dar vadinami savybėmis/atributais ir poprogramių vadinamais metodais. Objektas – savybių ir metodų rinkinys (savybes keičia metodai)
  19. • Panaudodamas metodus, objektas gali pakeisti savo savybes ir kitų jei leidžiama
  20. • Tokiu atvėju sakoma, kad vienas objektas kitam siunčia pranešimą.
  21. • Pvz.: Dekanas siunčia pranešimą studentas, kad perkeliamas į kitą kursą (dekanas – objektas, studentas – objektas, į kitą kursą – savybė)
  22. • Objektai gali dirbti tiek su savo, tiek su kitų duomenimis.
  23. • Objektas per metodus gali siųsti pranešimus, t.y. iškviesti kito objekto metodą ir siųsti sau pranešimą.
  24. • Įvairiais tikslais požiūris į objektą gali būti skirtingas.
  25. • Klasė – struktūra, kurioje nurodyta kokias savybes ir metodus turės objektai. (objektų struktūros aprašas)
  26. Paprasčiausio objekto programavimas Ruby kalboje (būdingų operatorių naudojimas)
  27. • Objekto kūrimas atlieka 2 veiksmus:
  28. 1. Randa atmintyje pakankamai laisvos vietos, į ją patalpina visus metodus ir rezervuoja vietą lokaliems kintamiesiems.
  29. 2. Iškviečia konstruktorių initialize ir per parametrus perduoda numatytas vertes
  30. • Objektui pranešimas siunčiamas – objektovardas.metodovardas()
  31. Paveldėjimo sąvoka ir būdingų operatorių pavyzdžiai
  32. • Aprašant naują panašią aprašytą klasę, užrašome naujoje klasėje tik tuos metodus, kurie skiriasi ir taip pat naujus metodus. Šitoks naujos klasės aprašymas vadinamas paveldėjimu. Pirmoji klasė kurią aprašome pilnai vadinama bazine (parent). O kita klasė, kurioje aprašome skirtumus – išvestinė (child). Taigi galima pasakyti išsvetinė klasė iš bazės paveldi metodus ir savybes.
  33. • Išvestinė klasė gali turėti savo išvestinę klasę
  34. • Išvestinė klasė : class Cišvestinė < Cbazinė
  35. • Jeigu išvestinėje klasėje aprašome metodą tuo pačiu vardu kaip bazinėje, tai aprašytasis metodas kompiuterio atmintyje perrašomas paveldėtojui.
  36. Objektų masyvas ir būdingų operatorių pavyzdžiai
  37. • Modeliuojama objektas kolba, kuriame yra objektas dalele. Dalelės šuolio ilgis priklauso nuo temperatūros.
  38. • Jei temperatūra <20, tai dalelės maksimalus šuolio ilgis yra nulinis, jei tamperatūra [20, 200], tai maksimalus šuolio ilgis lygus 1, o esant didesnei temperatūrai maksimalus šuolio ilgis lygus 3.
  39.  
  40. Objektų kompozicija ir būdingų operatorių pavyzdžiai
  41. Metodai setter ir getter ir būdingų operatorių pavyzdžiai
  42. • Tarkime, kokioje nors medicinos programų sistemoje yra naudojama klasė Ligonis ir jos egzempliorus objektas ligonis. Žinoma, objektas turi turėti duomenis apie ligonio pavardę ir vaistus. Tarkime, tai @pavardė ir @vaistas.
  43. • Iš objekto išorės kintamieji @pavardė ir @vaistas nėra matomi.
  44. • T. y., operatorius puts ligonis.@pavardė ar puts ligonis.pavardė neveiks.
  45. • Dar tarkime, kad šie duomenys turi būti perduodami objektui ligonis ne jo sukūrimo (inicijavimo) metu, o vėliau. Bet jei vėliau bandytumėme priskirti vertę ligonis.pavardė="Jonaitis" arba ligonis.@pavardė="Jonaitis" irgi gautumėme klaidos pranešimą. Juk duomuo @pavardė nėra matomas iš išorės.
  46. Praktinės užduotys
  47. Pateikti operatorių pavyzdžius klasės aprašymui, objekto sukūrimui ir jo naudojimui
  48. class CTemp
  49. def initialize(temp)
  50. @temp=temp
  51. end
  52. def metodas()
  53. @temp+=rand(-1..1)
  54. puts "temp=#{@temp}"
  55. end
  56. end
  57.  
  58. TempA=CTemp.new(2)
  59. TempA.metodas()
  60.  
  61. Pateikti operatorių pavyzdžius, iliustruojančius paveldėjimą
  62. class CTempA
  63. def Tekstas()
  64. puts "Tevas"
  65. end
  66. end
  67.  
  68. class CTempB < CTempA
  69. def Tekstas()
  70. for i in 1..2
  71. puts "Vaikas"
  72. end
  73. end
  74. end
  75.  
  76. TempA=CTempA.new()
  77. TempA.Tekstas()
  78. TempB=CTempB.new()
  79. TempB.Tekstas()
  80.  
  81. Pateikti operatorių pavyzdžius, iliustruojančius objektų masyvo naudojimą
  82. class Cdalele
  83. def initialize(x,y)
  84. @x=x
  85. @y=y
  86. end
  87. def Suolis()
  88. @x+=rand(-1..1)
  89. @y+=rand(-1..1)
  90. puts "x=#{@x} y=#{@y}"
  91. end
  92. end
  93.  
  94. daleles=Array.new(20) {|i| i=Cdalele.new(0,0)}
  95.  
  96. for suolionr in 1..3
  97. puts "Daleles nr #{suolionr}"
  98. for i in 0...4
  99. daleles[i].Suolis()
  100. end
  101. puts "\n"
  102. end
  103.  
  104. Pateikti operatorių pavyzdžius, iliustruojančius objektų kompoziciją
  105. class Cdalele
  106. def initialize(x,y)
  107. @x=x
  108. @y=y
  109. end #def init
  110.  
  111. def Suolis(temp)
  112. if temp<20
  113. @dx=0
  114. @dy=0
  115. end
  116. if ((temp>=20) and (temp<=200) )
  117. @dx=1
  118. @dy=1
  119. end
  120. if temp>200
  121. @dx=3
  122. @dy=3
  123. end
  124. @x+=rand(-@dx..@dx)
  125. @y+=rand(-@dy..@dy)
  126. print "x=", @x, " y=", @y, "\n"
  127. end #Suolis
  128.  
  129. end # CDalele
  130.  
  131. class Ckolba
  132. def initialize()
  133. @dalele=Cdalele.new( 15,2) # sukuriama viena dalele
  134. @dalele.Suolis(0)
  135. end # def init
  136.  
  137. def Sildymas(temp)
  138. @temp=temp
  139. print "temperatura =", @temp, "\n"
  140. @dalele.Suolis(@temp)
  141. end # def Sildymas
  142. end # Ckolba
  143.  
  144. kolba=Ckolba.new()
  145. kolba.Sildymas(20)
  146. kolba.Sildymas(300)
  147.  
  148. Pateikti operatorių pavyzdžius, iliustruojančius setter ir getter taikymą
  149.  
  150. class Temp
  151. def Tekstas=(tek)
  152. @Tekstas=tek
  153. end
  154. def Tekstas
  155. @Tekstas
  156. end
  157. end
  158.  
  159. zmogus=Temp.new
  160. zmogus.Tekstas="Jonaitis"
  161. puts "Mano pavardė " + zmogus.Tekstas
  162.  
  163.  
  164.  
  165. class Temp
  166. attr_reader :Tekstas
  167. attr_writer :Tekstas
  168. end
  169.  
  170. zmogus=Temp.new
  171. zmogus.Tekstas="Jonaitis"
  172. puts "Mano pavardė " + zmogus.Tekstas
Add Comment
Please, Sign In to add comment