Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Teorija
- Programavimo kalbų istorija
- 1. Karta 1954 – 1958 : Fortran -1, Algol -58, IPL V, flomatic
- 2. 1959 – 1961 : Fortran -2, Algol -60, Cabol, LISP
- 3. 1962-1970: PL/1, Algol 68, Pascal, Simula, Ada
- Įvairių kartų programų architektūra
- • 1k + 2k pradžia
- • 2k + 3k pradžia
- • Pasirodo programos sudarytos iš keletos modulių, kiekvienos modulis turi tokią struktūrą:
- Objekto sąvoka ir pavyzdžiai
- • Objektų pavyzdžiai: žmogus, gyvūnas, mokykla, valstybė, atomas, molekulė, banko sąskaita, dokumentas
- • 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)
- • Panaudodamas metodus, objektas gali pakeisti savo savybes ir kitų jei leidžiama
- • Tokiu atvėju sakoma, kad vienas objektas kitam siunčia pranešimą.
- • Pvz.: Dekanas siunčia pranešimą studentas, kad perkeliamas į kitą kursą (dekanas – objektas, studentas – objektas, į kitą kursą – savybė)
- • Objektai gali dirbti tiek su savo, tiek su kitų duomenimis.
- • Objektas per metodus gali siųsti pranešimus, t.y. iškviesti kito objekto metodą ir siųsti sau pranešimą.
- • Įvairiais tikslais požiūris į objektą gali būti skirtingas.
- • Klasė – struktūra, kurioje nurodyta kokias savybes ir metodus turės objektai. (objektų struktūros aprašas)
- Paprasčiausio objekto programavimas Ruby kalboje (būdingų operatorių naudojimas)
- • Objekto kūrimas atlieka 2 veiksmus:
- 1. Randa atmintyje pakankamai laisvos vietos, į ją patalpina visus metodus ir rezervuoja vietą lokaliems kintamiesiems.
- 2. Iškviečia konstruktorių initialize ir per parametrus perduoda numatytas vertes
- • Objektui pranešimas siunčiamas – objektovardas.metodovardas()
- Paveldėjimo sąvoka ir būdingų operatorių pavyzdžiai
- • 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.
- • Išvestinė klasė gali turėti savo išvestinę klasę
- • Išvestinė klasė : class Cišvestinė < Cbazinė
- • 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.
- Objektų masyvas ir būdingų operatorių pavyzdžiai
- • Modeliuojama objektas kolba, kuriame yra objektas dalele. Dalelės šuolio ilgis priklauso nuo temperatūros.
- • 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.
- Objektų kompozicija ir būdingų operatorių pavyzdžiai
- Metodai setter ir getter ir būdingų operatorių pavyzdžiai
- • 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.
- • Iš objekto išorės kintamieji @pavardė ir @vaistas nėra matomi.
- • T. y., operatorius puts ligonis.@pavardė ar puts ligonis.pavardė neveiks.
- • 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.
- Praktinės užduotys
- Pateikti operatorių pavyzdžius klasės aprašymui, objekto sukūrimui ir jo naudojimui
- class CTemp
- def initialize(temp)
- @temp=temp
- end
- def metodas()
- @temp+=rand(-1..1)
- puts "temp=#{@temp}"
- end
- end
- TempA=CTemp.new(2)
- TempA.metodas()
- Pateikti operatorių pavyzdžius, iliustruojančius paveldėjimą
- class CTempA
- def Tekstas()
- puts "Tevas"
- end
- end
- class CTempB < CTempA
- def Tekstas()
- for i in 1..2
- puts "Vaikas"
- end
- end
- end
- TempA=CTempA.new()
- TempA.Tekstas()
- TempB=CTempB.new()
- TempB.Tekstas()
- Pateikti operatorių pavyzdžius, iliustruojančius objektų masyvo naudojimą
- class Cdalele
- def initialize(x,y)
- @x=x
- @y=y
- end
- def Suolis()
- @x+=rand(-1..1)
- @y+=rand(-1..1)
- puts "x=#{@x} y=#{@y}"
- end
- end
- daleles=Array.new(20) {|i| i=Cdalele.new(0,0)}
- for suolionr in 1..3
- puts "Daleles nr #{suolionr}"
- for i in 0...4
- daleles[i].Suolis()
- end
- puts "\n"
- end
- Pateikti operatorių pavyzdžius, iliustruojančius objektų kompoziciją
- class Cdalele
- def initialize(x,y)
- @x=x
- @y=y
- end #def init
- def Suolis(temp)
- if temp<20
- @dx=0
- @dy=0
- end
- if ((temp>=20) and (temp<=200) )
- @dx=1
- @dy=1
- end
- if temp>200
- @dx=3
- @dy=3
- end
- @x+=rand(-@dx..@dx)
- @y+=rand(-@dy..@dy)
- print "x=", @x, " y=", @y, "\n"
- end #Suolis
- end # CDalele
- class Ckolba
- def initialize()
- @dalele=Cdalele.new( 15,2) # sukuriama viena dalele
- @dalele.Suolis(0)
- end # def init
- def Sildymas(temp)
- @temp=temp
- print "temperatura =", @temp, "\n"
- @dalele.Suolis(@temp)
- end # def Sildymas
- end # Ckolba
- kolba=Ckolba.new()
- kolba.Sildymas(20)
- kolba.Sildymas(300)
- Pateikti operatorių pavyzdžius, iliustruojančius setter ir getter taikymą
- class Temp
- def Tekstas=(tek)
- @Tekstas=tek
- end
- def Tekstas
- @Tekstas
- end
- end
- zmogus=Temp.new
- zmogus.Tekstas="Jonaitis"
- puts "Mano pavardė " + zmogus.Tekstas
- class Temp
- attr_reader :Tekstas
- attr_writer :Tekstas
- end
- zmogus=Temp.new
- zmogus.Tekstas="Jonaitis"
- puts "Mano pavardė " + zmogus.Tekstas
Add Comment
Please, Sign In to add comment