Web-aplikaciebis damusaveba monacemta bazebis safuzvelze (ASP.NET, ADO.NET, C#)

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Web-aplikaciebis damusaveba monacemta bazebis safuzvelze (ASP.NET, ADO.NET, C#)"

Transkript

1 saqartvelos teqnikuri universiteti gia surgulaze, ekaterine Turqia, irakli bulia Web-aplikaciebis damusaveba monacemta bazebis safuzvelze (ASP.NET, ADO.NET, C#) registrirebulia stu-s saredaqciosagamomcemlo sabwos mier Tbilisi 2014

2 uak saxelmzrvanelosi gadmocemulia maikrosoftis firmis axali programuli platformis bazaze Seqmnili Web-aplikaciebis agebis instrumentuli sasualebani da servis-funqciebi ASP.NET paketis safuzvelze. SemoTavazebulia.NET platformis koncefcia gankutvnilia pirvel rigsi, martvis sainformacio sistemebis (Management Information Systems) specialobis magistrantebisatvis, agretve Teoriuli da praqtikuli informatikisa da sxva dargebis specialistebisatvis, doqtorantebis da studentebisatvis, romlebic martvis avtomatizebuli sistemebis daproeqtebas da kvlevas awarmoeben. recenzenti: t.m.d.,prof. r. samxaraze prof. g. surgulazis redaqciit სტუ-ს IT-კონსალტინგის ცენტრი (online გამოცემა 2014) ISBN (print გამოცემა 2009) 2

3 Georgian Technical University GIA SURGULADZE, EKATERINE TURKIA IRAKLI BULIA DEVELOPMENT A WEB-APPLICATIONS ON THE BASIS OF DATABASES (ADO.NET, ASP.NET, C#) Supported by DAAD (Germany) s t u Hu-Be IT Consulting Center of GTU, Tbilisi, 2014 (online) ISBN (print, 2009) 3

4 gia surgulaze informatikis fakultetis `martvis avtomatizebuli sistemebis~ mimartulebis xelmzrvaneli, sruli profesori, teqnikis mecnierebata doqtori. 50 wignis da 150-ze meti samecniero nasromis avtori informaciuli teqnologiebis sferosi. germaniis humboldtisa da niurnberg-erlangenis univrsitetebis miwveuli profesori. ekaterine Turqia stu-s informatikis fakultetis `martvis avtomatizebuli sistemebis~ mimartulebis asoc. profesori, teqnikis mecnierebata kandidati. 30-ze meti samecniero nasromis da wignis avtori biznesprocesebis modelirebisa da daproeqtebis sferosi. germaniis DAAD araertgzis grantis mflobeli. irakli bulia stu-s `martvis avtomatizebuli sistemebis~ katedris doqtoranti, yofili kursdamtavrebuli da magistri, `respublika~ bankis web-developeri. aqvs didi praqtikuli gamocdileba daprogramebis obieqt-orientirebuli da vizualuri C#, C++, VB enebis gamoyenebis saqmesi, sxvadasxva kompiuteruli proeqtebis realizaciasi monacemta bazebit NET-platformaze. 4

5 s a r C e v i Sesavali I Tavi. NET teqnologiis arsi da obieqt-orientirebuli daprogramebis ZiriTadi cnebebi 1.1. daprogramebis Tanamedrove platformebi da enebi platforma.net saereto tipebis sistema (CTS) NET-platformis komponentebi da misi danartis struqtura 1.2. obieqt-orientirebuli daprogrameba da polimorfizmi Sesavali obieqt-orientirebul daprogramebasi wevrebis gadatvirtva polimorfizmis realizacia interfeisebit polimorfizmis realizacia memkvidreobit II Tavi. C#.NET ena da integrirebuli garemo 2.1. C# enis samusao garemo konsolis rejimsi 2.2. C# kodis ageba da testireba 2.3. C# enis gasareburi sityvebi 2.4. C# enis monacemta ZiriTadi tipebi 2.5. C# enis tipebis gardaqmnis ZiriTadi funqciebi (metodebi) 2.6. C# enis masivebi (koleqciebi) 2.7. C# enis operaciebi 2.8. C# enasi brzanebata nakadebis martva 2.9. C# kodis magaliti C# enasi obieqturi da komponenturi daprogramebis koncefcia C# enis obieqtebi da klasebi komponent-orientirebuli daprogrameba C# kodsi Secdomebisa da gamosaricx movlenata damusaveba

6 2.12. C# kodis organizeba saxelta sivrcis daxmarebit moqmedebis da xilvadobis areebi Visual Studio.NET C# enis vizualuri komponentebi C# enis vizualuri komponentebit formebis agebis magalitebi III Tavi. Visual Studio.NET Framework-is WEB-gverdebis agebis instrumenti ASP.NET 3.1. Sesavali ASP.NET sistemasi 3.2. ASP.NET-is sabazo arqiteqtura 3.3. ASP gverdis kodis magalitebi 3.4. Web.UI.Page klasi 3.5. ASP.NET-Si mdgomareobata martva 3.6. ASP.NET aplikaciis Seqmnis etapebi 3.7. axali veb-gverdis Seqmna 3.8. axali gverdis damateba Seblonis garese 3.9. funqcionaluri veb-gverdis Seqmna serveruli kontrolebis gamoyeneba Web-kontrolebis gamoyeneba Response obieqtis gamoyeneba serveruli funqciis gamoyeneba serveruli kontrolebis gamoyeneba Web-gverdis movlenebis damusavebis procedurasi Web-gverdis vizualuri da programuli nawilebis gancalkeveba interaqtiuli Web-gverdis Seqmna konfiguraciis failebi da mati ierarqia HTTP konveieris Sinagani struqtura. klasebi, movlenebi, spec-dammusaveblebi da modulebi Secdomebis diagnostika. trasireba da monitoris mwarmoeblurobis mtvlelebi. gamartvis procesi

7 3.20. SemowmebaTa sistema klientisa da serveris mxares ASP.NET paketsi monacemebtan musaoba monacemta badeebi (cxrilebi), sortireba da redaqtireba. Sablonebi da mati elementebi ASP.NET paketis martvis specializebuli elementebi. klasebi System.Web.UI.Control da HtmlTextWriter klientis scenaris generacia martvis Sedgenili da momxmarebelta elementebi ASP.NET paketsi mdgomareobata tipebi. danartebisa da seansebis mdgomareobebi Web-is usafrtxoeba ASP.NET-Si. serveris, klientebis, formebis da rolebis autentifikacia. parolebis Senaxva IV Tavi. ADO.NET-is sasualebit monacemebtan mierteba 4.1. gamoyofil monacemebtan mimartva 4.2. ADO.NET monacemta arqiteqtura 4.3. ADO.NET programuli paketi monacemta bazebtan samusaod 4.4. ADO.NET obieqturi modelis struqtura 4.5. monacemebtan mimartva 4.6. monacemta bazastan mierteba 4.7. interfeisis damusavebis sademonstracio magaliti 4.8. sademonstracio magaliti SQL Server bazis, ADO.NET draiveris da C# enis gamoyenebit 4.9. testirebis nimusi literatura

8 Sesavali kompiuteruli industria da sainformacio teqnologiebi ganvitarebis marali tempebit xasiatdeba. msoflio bazarze gamocnda ara erti axali aparaturuli (Hardware) da programuli (Software, Groupware) sistemebi. winamdebare saxelmzrvanelosi gadmocemulia maikrosoftis firmis axali programuli NET platformis bazaze Seqmnili Web-aplikaciebis agebis instrumentuli sasualebani da servis-funqciebi ASP.NET paketis safuzvelze. SemoTavazebulia am platformaze C#.NET enis integrirebuli garemo da mis safuzvelze ASP.NET da ADO.NET programuli kodebis martva. pirvel TavSi mocemulia.net platformis zogadi koncefcia da musaobis principebi Visual Studio.NET Framework garemosi. agretve obieqt-orientirebuli daprogramebis ZiriTadi cnebebi. meore TavSi gadmocemulia C#.NET enis safuzvlebi da komponentur-vizualuri daprogramebis elementebi. mesame Tavi exeba ASP.NET paketis safuzvelze vebgverdebis agebis metodebisa da instrumentebis gacnobas. SemoTavazebulia praqtikuli magalitebi aspx da C# kodirebisatvis Visual Studio.NET garemosi. meotxe TavSi gadmocemulia ADO.NET paketis obieqtebis, kodebis da misi funqciebis arweris magalitebi, SQL Server monacemta bazastan kavsirebisa da C#.NET enis safuzvelze interfeisebis daproeqtebis da agebis ilustraciebi. wigni gankutvnilia martvis sainformacio sistemebis (Management Information Systems) specialobis magistrantebisatvis, agretve Teoriuli da praqtikuli informatikisa da sxva dargebis specialistebisatvis, doqtorandebis da studentebisatvis, romlebic martvis avtomatizebuli sistemebis daproeqtebas da kvlevas awarmoeben. 8

9 I Tavi.NET teqnologiis arsi da obieqt-orientirebili daprogramebis ZiriTadi cnebebi 1.1. daprogramebis Tanamedrove platformebi da enebi obieqt-orientirebuli, komponentur-vizualuri daprograme-bis Tanamedrove informaciuli teqnologiebidan gansakutrebuli aqtualobit xasiatdeba firmis `maikrosofti~ programuli platforma Visual Studio.NET (programebit C#, VB, C++, J++). aseti integrirebuli programuli paketebis gamoyenebis mizania rtuli sistemebis modelireba, konstruireba da realizacia unificirebuli programirebis koncefciis gamoyenebit. wignis mocemul TavSi mokled ganixileba am ori programuli sistemis ZiriTadi arsi, danisnuleba, struqtura da gamoyenebis samusao garemo platforma.net maikrosoftis uaxlesi programuli teqnologia.net (dot-net) platformis saxit sul ufro fartod ikidebs fexs msoflios mowinave qveynebis sauniversiteto-samecniero da sawarmoo firmebis biznesis sferoebsi. igi gamoiyeneba Windows, Unix da Linux operaciuli sistemebisatvis..net platforma Seiqmna specialurad ganawilebuli gamoyenebiti sistemebis asagebad didi moculobis informaciis dasamusaveblad klient-server arqiteqturis bazaze. igi aris gamoyenebiti programuli danartebis (API) samusao garemo, romelic 9

10 SeTanxmebulad funqcionirebs Windows-operaciul sistemastan (ix. nax.1.1) nax.1.1 naxazidan Cans, rom Windows-sistema usualod musaobs C++, VB, Java da sxva enebze daweril programul APIdanarTebTan (Application Programming Interface-gamoyenebiTi danartebis daprogramebis interfeisi), romlebic realizebulia rogorc umartavi kodebi (unmanaged code). amastanave igi musaobs C#.NET, C++.NET, VB.NET da a.s., zogadad.net-platformis mier martvad (managed code) programul danartebtan. martvasi igulisxmeba is, rom es kodebi amusavdeba usualod.net-is mier, imarteba mati procesebisa da monacemta nakadebi, miewodeba Sesasruleblad sawiro damxmare resursebi da a.s. 10

11 principsi, NET-platforma asrulebs `operaciuli sistemis~ garkveul funqciebs da moqnilad funqcionirebs Windows-Tan. amave naxazze sayuradreboa TviT NET-platformis bloki. romelsic ZiriTadi qvebloki Based Class.NET aris am platformis sabazo klasebis biblioteka (umravlesoba dawerilia C#-enaze). igi srulad obieqt-orientirebulia, Sedgeba obieqtta ertobliobisgan, romeltaganac TiToeulSi realizebulia gansazrvrul metodta jgufebi. magalitad, fanjrebisa da formebis asaxva (Windows GUI), monacemta failebtan urtiertoba (ADO.NET), veb-gverdebis organizeba da internettan kavsiri (ASP.NET) da sxv. amave bloksi nacvenebia.net-runtime - platformis samusao garemo (romelsic sruldeba programa), anu CLR(Common Language Runtime) da mas Sesrulebis saerto garemosac uwodeben. esaa programuli uzrunvelyofa momxmarebelta gamoyenebiti programebis Sesasruleblad. CTS saerto tipebis sistemaa (Common Type System), romlis safuzvelzec NET-platforma uzrunvelyofs daprogramebis sxvadasxva enis Tavsebadobas. amastanave CTS arwers momxmarebelta klasebis gansazrvris wesebsac. IL Sualeduri gardaqmnis enaa (Intermediate Language). programebi, romelta sawyisi kodebi dawerilia, magalitad C#, C++, J++ an VB enebze.net-si, kompilatori am martvad kodebs gadaiyvans Sualedur IL-enaze, romeltac Semdeg CTS swrafad akompilirebs manqanur kodsi. amgvarad, obieqturi kodebi IL-enis sasualebit ise miireba, rom matsi araa dafiqsirebuli, Tu romel enazea dawerili sawyisi kodi. CLS enis saerto specifikaciaa (Common Language Specification), anu im standartebis minimaluri ertoblioba, romelic uzrunvelyofs kodebtan mimartvas.net-is 11

12 nebismieri enidan. am enebis yvela kompilators gaacnia CLS mxardawera. JIT (Just-In-Time) esaa Sualeduri kodis kompilaciis faza manqanur kodsi. saxelwodeba miutitebs imaze, rom kodis mxolod im calkeuli nawilebis kompilacia xdeba, romlebic sawiroa programis Sesasruleblad drois mocemul momentsi saerto tipebis sistema (CTS) maikrosoftis NET-platformisa da IL-Sualeduri enis arsebobis koncefciis safuzvelia ZiriTadad enis obieqtorientuloba da saerto tipebis sistemis arseboba, romeltac kompilatorebi flobs. C# (`si Sarf~) ena obieqt-orientirebuli enebis erterti axali da mzlavri warmomadgenelia, romelic Seiqmna specialurad NET-platformisaTvis da Tavsebadia Windowsis Tanamedrove versiebtan da internettan. am enazea realizebuli NET-platformis umravlesi sabazo klasebi. rogorc cnobilia, C++ ena kompilirdeba asemblerul kodsi, C# ena ki - Sualedur IL-enaSi. IL-enis danisnulebaa platformuli da enobrivi damoukideblobis ganxorcieleba obieqt-orientirebul garemosi. Java-enac uzrunvelyofs platformul (Windows, Unix, Linux) damoukideblobas, magram misi bait-kodis Sesrulebis etapze igi interpretirdeba (IL -ki kompilirdeba). NET-platformisaTvis enobrivi Tavsebadoba xorcieldeba IL enasi arsebuli tipebis didi raodenobit, romlebic organizebulia tipta ierarqiis obieqtorientirebuli principebit. 1.2 naxazze ilustrirebulia 12

13 tipta aseti ierarqia memkvidreobitobis kavsiris gamoyenebit. movitanot zogierti komentari, romelic axsnis naxazs: - tipi aris sabazo klasi, romelic zogadad asaxavs nebismier tips; - tipi mnisvnelobit aris sabazo klasi, romelic zogadad asaxavs nebismier tips mnisvnelobit; nax.1.2. tipebis zogadi sistema - CaSenebuli tipebi mnisvnelobit aris standartuli sabazo tipebi, romlebic arwers ricxvebs, simboloebsa da logikur mnisvnelobebs; - CamoTvliT tipi aris CamonaTvalTa ertoblioba, romelsic TiToeul mnisvnelobas Seesabameba ricxviti mnisvneloba (0,1,... da a. S.) misi mdebareobis mixedvit; 13

14 - momxmareblis mier gansazrvruli tipi aris sawyis kodsi (momxmareblis programasi) arwerili tipebi, romlebic inaxeba mnisnelobebit (esaa magalitad, struqturebi). - tipi mititebit aris monacemta nebismieri tipebi, romeltanac mimartva xorcieldeba mimtiteblebit da inaxeba nakadsi; - TviTaRweradi tipebi aris tipebi, romlebic asaxavs informacias TavianT Sesaxeb; - TviTaRweradi tipebi aris tipebi, romlebic asaxavs informacias TavianT Sesaxeb; - masivebi aris nebismieri tipi, romelic Seicavs obieqtebis masivs; - tipebi klasebit aris TviTaRweradi tipebi, romlebic araa masivebi; - delegatebi - tipebia, romlebic damusavda mimtitebelta Sesanaxad klasis metodebisatvis; - mnisvnelobit SefuTuli tipebi aris tipebi mnisvnelobit, romlebic droebit daiyvaneba tipebamde mimtiteblit, rata Senaxul iqnas nakadsi; - momxmareblis mier gansazrvruli tipebi mititebit aris tipebi, gansazrvruli sawyis kodsi, rogorc tipebi mititebit. programasi esaa magalitad, nebismieri klasi NET-platformis komponentebi da misi danartis struqtura rogorc arvnisnet,.net platformis sabazo klasebis didi nawili dawerilia C# enis gamoyenebit, amitomac sailustracio magalitebs am enaze gavuketebt komentars...net platformis komponentebidan ert-erti mtavari blokia Assembly (anawyobi, nakrebi), romelic logikurad 14

15 aertianebs kods, resursebs da metamonacemebs. igi logikuri da ara fizikuri erteulia, radgan SeuZlia motavsdes ramdenime failsi. aset SemTxvevaSi arsebobs erti mtavari faili, romelsic inaxeba informacia danarcenebze. 1.3 naxazze nacvenebia programuli danartis (Application) Sesabamisi nakrebis zogadi ierarqiuli struqtura agregaciis kavsiris gamoyenebit. nax.1.3. nakrebis zogadi struqtura naxazidan Cans, rom nakrebi 1 an ramdenime (1..*) modulisgan (module) Sedgeba. swored modulsi inaxeba danartis an bibliotekis kodi, misi metamonacemebit. modulebi Seicavs tipebs. esaa kodis Sablonebi (klasebi), romlebsic inkafsulirebulia garkveuli monacemebi da metodebi. rogorc wina paragrafsi vaxsenet, tipebi ori saxisaa: mimtiteblebit (anu klasebi) da mnisvnelobebit (anu struqturebi). 15

16 tipebs aqvt velebi, Tvisebebi da metodebi. veli gamoyofs mexsierebis adgils Sesabamis monacemta tipisatvis. Tvisebebi velebis msgavsia, orondac mati danisnulebaa Sesabamis monacemta sawyisi mnizsvnelobebis gansazrvra da kontroli. metodebi gansazrvravs monacemta dasamusaveblad klasis qcevas, anu reaqcias garedan Semosul Setyobinebaze (motxovnaze). Setyobineba inaformaciaa, romelic ama Tu im movlenis Sedegad formirdeba. programuli nakrebi SeiZleba iyos ori tipis: kerzo da saerto gamoyenebis. pirvel SemTxvevaSi nakrebi instalirdeba kerzo momxmarebls katalogsi da mastan sxva mimartvebi gamoricxulia. saerto gamoyenebis nakrebi Seicavs programul bibliotekebs, romeltac iyenebs sxvadasxva danarti. aq sawiroa specialuri dacvis meqanizmebis gamoyeneba (saxelebis koliziisa da nakrebta versiebis kontrolis TvalsazrisiT). klasebs Soris saxelta koliziis armofxvris miznit.net platforma iyenebs `saxelta sivrces~. saxelta sivrce (namespace): esaa monacemta tipebis ubralo dajgufeba. yvela monacemta tipis saxels mocemul saxelta sivrcesi avtomaturad emateba prefiqsi, romelic Sedgenilia saxelta sivrcis dasaxelebisgan. aseve SesaZlebelia Cadgmuli saxelta sivrceebis Seqmna. magalitad, sabazo klasebis umravlesobisatvis, romlebic zogadi gamoyenebistvisaa danisnuli, motavsebulia saxelta sivrcesi System, veb-gverdebisatvis - System.Web da a.s. C#-is programis teqstis magalitze SeiZleba Semdegi komentaris gaketeba: namespace Magazia.Web // aq mititebulia saxeli Magazia.Web public class Checkout : PageBase // da a.s. 16

17 danartta areebi (application area) aris.net platformis mnisvnelovani elementi. mati danisulebaa ertdroulad da ertmanettan momusave danartebis izolacia, rata ar moxdes monacemta arasasurveli damusaveba. programuli danartebis izolaciisatvis Windows gamoiyenebs `procesis~ cnebas, romelic misamartebis sivrces exeba. yovel process gamoeyofa 4 gigabaiti virtualuri mexsiereba. isini diskze sxvadasxva fizikuri misamartebitaa da ar gadaikveteba. procesebs aqvs miniwebuli gansazrvruli privilegiebi da operaciuli sistema akontrolebs mat, Tu romel operacias romeli procesis gamoyeneba SeuZlia. danartta areebis gamoyenebis idea mdgomareobs imasi, rom procesebs Soris moxerxdes monacemta gacvla. amitomac procesi iyofa ramdenime danartis ared. TiToeul danartis aresi Tavsdeba erti danartis kodi..net platformis mnisvnelovani sasualebaa JIT (Just-In- Time) kompilatori. igi axorcielebs programuli kodis calkeuli nawilis droulad kompilirebas (sawiroebis SemTxvevaSi). Visual Studio.NET aris programuli sistemebis damusavebis integrirebuli garemo, romelsic SesaZlebelia kodebis dawera, kompilireba da gamartva VB.NET, C++.NET, C#.NET, ASP.NET, ADO.NETO da sxva teqnologiebit. axla movitanot C++ da C# martivi kodebi, rata davinaxot msgavseba-gansxvaveba am enebis sintaksebs Soris: 17

18 18

19 1.2. obieqt-orientirebuli daprogrameba da polimorfizmi Sesavali obieqt-orientirebul daprogramebasi.net garemosi daprogrameba dafuznebulia obieqtebze. obieqti (object) aris programuli konstruqcia, romelsic inkafsulirebulia logikurad dakavsirebuli monacemebisa da metodebis ertoblioba. obieqtebi avtonomiuri elementebia, isini iqmneba SabloniT (template), romelsac obieqtorientirebul daprogramebis TeoriaSi klass (class) uwodeben..net-is sabazo klasebis biblioteka aris klasta ertoblioba, romelic gamoiyeneba obieqtebis Sesaqmnelad momxmareblis kerzo aplikaciasi. amastanave programuli paketi Visual Studio sasualebas izleva Seiqmnas sakutari klasebi kerzo programebistvis. obieqtebi, wevrebi da abstragireba: obieqti programuli konstruqciaa, romelic asaxavs gansazrvrul arss (Entity). esaa realur samyarosi arsebuli obieqtebi, magalitad, adamianebi, manqanebi, firmebi, cxovelebi, frinvelebi, mcenareebi, institutebi, kompiuterebi da a.s. yovel obieqts aqvs gansazrvruli, mistvis damaxasiatebeli funqcionaloba da Tvisebebi. programul aplikaciasi obieqti SeiZleba iyos forma, martvis elementi, mag., Rilaki, komboboqsi, bazastan SeerTeba da sxv. amgvarad, obieqti aris dasrulebuli funqcionaluri erteuli, romelic Seicavs yvela monacems da yvela funqcias, romlebic aucilebelia im amocanis gadasawyvetad, romlistvisac es obieqti gamoiyeneba. realuri samyaros obieqtebis warmodgenas programuli obieqtebit uwodeben abstragirebas (abstraction). 19

20 klasebi, rogorc obieqtta Sablonebi: klasi aris ertgvarovan obieqtta ertoblioba, romelic am ertobliobis struqturas asaxavs. klasi gansazrvravs obieqtta wevrebs da mat yofaqcevas, agretve sawyis monacemta mnisvnelobebs, sawiroebis SemTxvevaSi. klasis egzemplaris Seqmnisas kompiuteris mexsierebasi Seiqmneba am klasis asli. aseti saxit Seqmnil klasis egzemplars uwodeben obieqts. daprogramebis enasi misi Seqmna xdeba operatorit new. magalitad: // gamocxaddes cvladi MyDataForm tipit DataForm DataForm MyDataForm; // Seiqmnas obieqts egzemplari DataForm da // Caiweros igi cvladsi MyDataForm MyDataForm = new DataForm( ); obieqtebi da wevrebi: obieqtebi Sedgeba wevrebisgan, romeltac ekutvnis Tvisebebi, velebi, metodebi da movlenebi. isini gansazrvravs obieqtis monacemebs da funqcionalobas. velebi da Tvisebebi Seicavs obieqtis monacemebs, romlebic mis mdgomareobas asaxavs. metodebi gansazrvravs moqmedebebs, romelta Sesruleba SeuZlia obieqts. movlenebi ki warmoadgens Setyobinebebs, romeltac miirebs obieqti an gadascems sxva obieqtebs. movlenis danisnulebaa gaaaqtiuros obieqtis esa Tu is metodi, romelic gadaamusavebs mis monacemebs. magalitad, obieqtistvis `avtomobili~ Tvisebebi da velebia: modeli, feri, asaki, sawvavis_xarji da a.s. es monacemebi asaxavs obieqtis mdgomareobas. metodis magalitebia: sicqaris_gadartva, muxruwis_dawera, rulis_mobruneba da sxv., isini obieqtis qcevas 20

21 gansazrvravs. avtomobilistvis movlenebi miireba Setyobinebis saxit garedan (mag., informacia gzis mosaxvevis Sesaxeb, an sicqaris SezRudvis Sesaxeb) an manqanis mdgomareobis amsaxveli naturebidan (mag., wylis gadaxureba, sawvavis damtavreba da a.s.). obieqturi modelebi: martiv obieqtebs aqvs ramdenime Tviseba da metodi, aseve erti-ori movlena. rtul obieqtebs gaacnia meti raodenoba Tvisebebis, metodebisa da movlenebis, agretve mat SeiZleba hqondes `Svili~ obieqtebic, romlebzec SeuZlia pirdapiri mimartvis ganxorcieleba. magalitad, martvis elements TextBox, aqvs Tviseba Font, romelic aris Fonttipis obieqti. am TvalsazrisiT, nebismieri Form klasis egzemplari moicavs masze gantavsebul martvis elementebs (Controls ertoblioba). `msobeli-svili~ Cadgmuli obieqtebis ierarqia, romelic qmnis obieqtis struqturas, aris obieqturi modeli (object model). magalitad, obieqti avtomobili Sedgeba ramdenime `Svili~ obieqtisgan: Zravi, borblebi, Zara da a.s. obieqtis avtomobili yofaqceva, romeltac `Svili~ obieqtistvis Zravi TvisebaSi cilindrebis raodenoba aqvs 4 da 8, iqneba gansxvavebuli. `Svili~ obieqti SeiZleba Sedgebodes Tavis sakutari `Svili~ obieqtebisgan da a.s. magalitad, avtomobili -> Zravi -> santlebi. inkafsulacia: obieqt-orientirebuli daprogramebis (ood) ert-erti sabazo principia inkafsulacia, romlis arsi mdgomareobs obieqtis realizaciis gamoyofasi misi interfeisisgan. anu programuli danarti (aplikacia) urtiertqmedebs obieqttan 21

22 misi interfeisis sasualebit, romelic Sedgeba Ria Tvisebebisa da metodebisagan. obieqtebi ertmanettan urtiertmoqmedebs TavianTi Ria TvisebebiT da metodebit, amitomac obieqts unda hqondes yvela aucilebeli monacemi da metodebis ertoblioba, am monacemta dasamusaveblad. interfeisma ar unda misces obieqtis Siga monacemebtan wvdomis ufleba, rac gamoricxavs am SemTxvevaSi obieqtis Siga monacemebistvis public-modifikatoris gamoyenebas (gamoiyeneba privat). polimorfizmi: polimorfizmi mravalformianobas nisnavs da mas obieqt-orientirebul daprogramebasi gansakutrebuli roli aqvs. polimorfizmis sasualebit SesaZlebelia ertidaigive gaxsnili interfeisis sxvadasxvagvari realizacia sxvadasxva klassi. anu polimorfizmis sasualebit SesaZlebelia obieqtis metodebisa da Tvisebebis gamozaxeba mati realizaciis miuxedavad. magalitad, obieqti mzroli urtiertqmedebs obieqttan avtomobili imave saxelis mqone Ria interfeisis sasualebit. Tu sxva obieqti, magalitad, satvirto an sportuli_manqana flobs am Ria interfeisis mxardaweras, masin obieqts mzroli SeuZlia mattanac urtiertqmedeba, miuxedavad interfeisis gansxvavebuli realizaciisa polimorfizmis realizaciis ori ZiriTadi midgoma arsebobs: interfeisebis da memkvidreobitobis gamoyenebit. ganvixilot TviToeuli cal-calke. interfeisi (interface) esaa SeTanxmeba, romelic obieqtis yofaqcevas gansazrvravs. igi adgens klasis wevrta sias, magram arafers ambobs mati realizaciis Sesaxeb. obieqtsi dasasvebia ramdenime interfeisis realizacia, xolo ertidaigive interfeisi SeiZleba realizebul iqnas sxvadasxva klassi. 22

23 nebismier obieqtebs, romlebsic realizebulia romelime interfeisi, SeuZlia ertmanettan urtiertmoqmedeba misi sasualebit. magalitad, obieqtsi avtomobili, romelzec Cven vsaubrobt, SeiZleba IDrivableinterfeisis realizacia (interfeista saxelebi mirebulia daiwyos `I~ asoti), metodebit: mozraoba_win, mozraoba_ukan, gacereba. igive interfeisi SeiZleba realizdes sxva klasebsic, rogoricaa, magalitad, satvirto_manqana an kateri. Sedegad, am obieqtebs SeuZlia urtiertmoqmedeba obieqttan mzroli. es ukanaskneli mtlianad uxilavia interfeisis realizaciistvis, romeltanac igi moqmedebs, mistvis cnobilia mxolod interfeisi. memkvidreobitoba izleva axali klasebis Seqmnis sasualebas arsebulis bazaze. amastanave axal klasebsi nebadartulia Zveli klasebis sruli funqcionalobis CarTva da, sawiroebis SemTxvevaSi, SesaZlebelia mati wevrebis modificirebac. klasi, romelic gamocxadebulia sxva klasis safuzvelze, uwodeben warmoebul klass (derived class). yovel klass SeiZleba hqondes mxolod erti pirdapiri winapari misi sabazo klasi (base class). warmoebul klass aqvs sabazo klasis wevrebis ertoblioba. aseve SesaZlebelia axali wevrebis damateba da Zveli wevrebis (memkvidreobit mirebuli) realizaciis cvlilebac. warmoebuli klasebi inarcunebs Tavisi sabazo klasis yvela maxasiatebels da unari aqvs sxva obieqtebtan iseti urtiertmoqmedebisatvis, rogorc sabazo klasis egzemplarebs. magalitad, sabazo klasidan avtomobili SeiZleba wsrmoebuli klasis sportuli_avtomobili gamocxadeba, romelic Tavis mxriv, rogorc sabazo klasi, SeZlebs axali warmoebuli klasis sportuli_kabrioleti gamocxadebas. yovel warmoebul klassi dasasvebia axali wevrebis (Tvisebebi, metodebi, movlenebi) Semotana, amstanave isini inarcunebs sawyisi sabazo klasis avtomobili funqcionalobas ucvleli formit. 23

24 wevrebis gadatvirtva gadatvirtvis Sedegad SesaZlebelia klasis ramdenime wevris Seqmna ertidaimave saxelit, orond gansxvavebuli signaturit (moqmedebit). gadatvirtvas ufro xsirad iyenebn metodebisatvis, xolo realizebila aseve operatorebis gadatvirtvac. am paragrafsi Cveni mizania klasis gadatvirtuli wevrebis Seqmna. magalitad, Tu klass swirdeba iseti wevri, romelsac SeuZlia sxvadasxva parametrebis mireba, eqneba Semdegi saxe: public void Display(int DisplayValue) // realizacia gamotovilia es metodi ifunqcionirebs normalurad, Tu mis cvlads miewoda mteli tipis mnisvneloba. sxva tipis (mag., striqonuli cvladi), an ertze meti parametris SemTxvevaSi is verar Seasrulebs Tavis saqmes. amitomac iyeneben gadatvirtvas, anu ramdenime metodis Seqmnas erti saxelit. gadatvirtul metodebs SeuZlia ertnairi tipis mnisvnelobebis dabruneba, mati gamocxadeba ertnairi wvdomis modifikatorebit, magram gadatvirtuli metodebis signaturebi unda iyos gansxvavebuli. gadatvirtuli metodis gamozaxebisas Sesrulebis garemo amowmebs gadacemul argumentebis tipebs, adarebs argumentebis sias arsebul gadatvirtul metodta signaturebtan da izaxebs imas, romlis signaturac daemtxveva argumentta sias. Tu arc erti ar daemtxva, masin formirdeba Secdoma. 24

25 gadatvirtuli metodebis Seqmna: gadatvirtuli metodebi iqmneba iseve, rogorc yvela sxva metodi. upirvelesad yovlisa sawiroa metodis gamocxadeba rarac saxelit, wvdomis modifikatorit, dasabrunebeli mnisvnelobis tipit da argumentebis siit. gadatvirtul metods unda hqondes igive saxeli, rac aqvs arsebul metods, orond mas eqneba sxva signatura. magalitad: // gadatvirtuli metodis magaliti public void DisplayMessage(int I) MessageBox.Show(I.ToString()); // Semdeg metods aqvs igive saxeli da sxva signatura public void DisplayMessage(string S) MessageBox.Show(S); aq gansazrvrulia ori metodi ertnairi saxelit, orond sxvadasxva signaturit da realizaciit. DisplayMessage metodis gamozaxebisas Sesrulebis garemo Seamowmebs gadacemul argumentis tips. Tu esaa String, masin is gamoizaxebs me-2 metods, xolo Tu int, - 1-els. amgvarad, gadatvirtuli metodis Sesaqmnelad sawiroa axali metodis gamocxadeba Zveli saxelit, orond signatura ar unda emtxveodes arcert Zvels. wvdomis modifikatorisa da dasabrunebeli tipistvis es SezRudvebi moxsnilia. Semdeg axali metodistvis iwereba realizacia. operatorebis gadatvirtva: momxmareblis monacemta tipebtan musaobisas mosaxerxebelia aritmetikuli da logikuri operatorebis 25

26 gansazrvra, agretve Sedarebis operatorebisa, romlebic musaobs arnisnul tipebtan. ganvixilot Semdegi struqtura: public struct HoursWorked float RegularHours; float OvertimeHours; aseti martivi struqturis gamoyeneba SesaZloa buraltrul aplikaciasi samusao saatebisa da zedmeti saatebis (zeganakveturi samusaos) arricxvis miznit. magram aseti struqturis ramdenime egzemplartan musaobisas SesaZloa sirtuleebis armoceneba. magalitad, davusvat, rom sawiroa aseti struqturis ori egzemplaris mnisvnelobata Sejameba. aset SemTxvevaSi aucilebelia axali metodis dawera, romelsac SeeZleba misi gadawra. Tu sawiroa sami an meti egzemplaris mnisvnelobata Sejameba, masin es axali metodi unda gamovizaxot ramdenjerme, rac araefeqturia. C# sasualebas izleva ganisazrvros operatoris qceva momxmarebelta monacemeta tipebis dasamusaveblad. magalitad, Tu sawiroa struqturis Sejameba Cveni magalitistvis, SesaZlebelia `+~ operatoris gadatvirtuli versiis Seqmna, rac moitxovs am operatorsi aucilebeli funqcionalobis Camatebas. gadatvirtuli operatorebi iqmneba gasareburi sityvit operator, romelsac Semdegi sintaksi aqvs: public static type operator op (Argiment1[, Argument2]) // realizacia sadac type tipia, romeltanac musaobs operatori. is amavdroulad aris operatoris mier dabrunebuli 26

27 mnisvnelobis tipi; Argiment1 da Argiment2 operatoris argumentebia. unaruli operatori amusavebs ert arguments type tipit. binaruli operatorebi Txoulobs or arguments, romeltagan erti mainc type tipisaa. op - es TviT operatoria, magalitad, +, -, >, <,! = da a.s.. gadatvirtuli operatorebi unda gamocxaddes public da static modifikatorebit, rata sxva momxmareblebma SeZlon mati gamoyeneba. gadatvirtuli operatori unda gamocxaddes momxmareblis monacemta tipis gansazrvris SigniT, romeltanac unda imusaos operatorma. Cven ganvixilet gadatvirtuli operatoris magaliti struqturastan, magram igi gamoiyeneba aseve klasebtan. axla ganvixilot gadatvirtuli operatori `+~, romelic Seiqmna zemot HoursWorked struqturastan samusaod: public struct HoursWorked float RegularHours; float OvertimeHours; // gadatvirtuli operatori gamocxadebul unda iqnas klasis gansazrvrebasi, // romeltanac man unda imusaos public static HoursWorked operator + (HoursWorked a, HoursWorked b) HoursWorked Result = new HoursWorked( ); Result RegularHours = a.regularhours + b.regularhours; Result OvertimeHours = a.overtimehours + b.overtimehours; return Result; 27

28 gadatvirtul operators programasi iyeneben iseve, rogorc sxva Cveulebriv operators. qvemot nacvenebia kodis magaliti, romelic asrulebs HoursWorked struqturis ori egzemplaris Sekrebas. // gatvaliswinebulia, rom cvladebi Sunday da Monday Seicavs HoursWorked // struqturis egzemplarebs, romlrbic inicirebulia Sesabamisi mnisvnelobebit. HoursWorked total = new HoursWorked(); total = Sunday + Monday; gadatvirtuli metodebis msgavsad SesaZlebelia gadatvirtuli operatorebis gansxvavebuli realizaciebis Seqmna, im pirobit, rom mati signaturebi gansxvavebulia. davusvat, rom HoursWorked struqturisatvis dagvwirda int tipis mnisvnelobis damateba velisatvis NormaIHours `+~ operatoris sasualebit. aseti amocanis gadawra SeiZleba kidev erti gadatvirtuli `+~ operatoris versiis SeqmniT. public struct HoursWorked float RegularHours; float OvertimeHours; // gadatvirtuli operatoris Zveli versia (ix. wina magaliti) public static HoursWorked operator + (HoursWorked a, HoursWorked b) HoursWorked Result = new HoursWorked( ); Result RegularHours = a.regularhours + b.regularhours; Result OvertimeHours = a.overtimehours + b.overtimehours; return Result; // gadatvirtuli operatoris axali realizaciis versia 28

29 public static HoursWorked operator + (HoursWorked a, int b) HoursWorked Result = new HoursWorked( ); Result RegularHours = a. RegularHours + b; Result OvertimeHours = a. OvertimeHours + B. OvertimeHours; return Result; vizual C# it gadatvirtuli operatoris Sesaqmnelad sawiroa Semdegi moqmedebebi: 1. gamocxaddes gadatvirtuli operatori klasis an struqturis gansazrvrebis SigniT, romeltanac unda imusaos man, gasareburi sityvit operator. gadatvirtuli operatori aucileblad unda gamocxaddes public da static modifikatorebit. Tu operatori binarulia, masin mis ert arguments mainc unda hqondes igive tipi, rac aqvs dasabrunebel mnisvnelobas. 2. daiweros operatoris realizacia. reziume: gadatvirtvis sasualebit xerxdeba ramdenime metodis Seqmna ertidaimeve saxelit, orond sxvadasxva realizaciit. gadatvirtuli metodebi gansxvavdeba ertmenetisgan signaturebit, magram SeiZleba hqondes wvdomis ertnairi doneebi da dasabrunebel mnisvnelobata tipebi. isini cxaddeba Cveulebrivi metodebis msgavsad. C# programebsi SeiZleba arastandartuli versiis operatorebis gansazrvra, romelta danisnulebaa momxmarebelta tipebtan musaoba. gadatvirtuli operatorebi aucileblad unda gamocxaddes public da static modifikatorebit da gasareburi sityvit operator. 29

30 polimorfizmis realizacia interfeisebit interfeisebi gansazrvravs klasis yofaqcevas. erti da igive interfeisi SeiZleba realizebul iqnas sxvadasxva klasebsi, rac uzrunvelyofs mat urtiertmoqmedebis SesaZleblobas, amgvarad polimorfizmis koncefciis ganxorcielebas. am paragrafsi ganvixilavt interfeisebis gamocxadebisa da realizebis sakitxebs, agretve Tu rogor urtiertmoqmedebs obieqtebi interfeisebis sasualebit. Cvens konteqstsi interfeisi aris garkveuli SeTanxmeba. nebismieri obieqti, romelsic realizebulia mocemuli interfeisi, garantirebulad Seicavs realizacias wevrebisatvis, romlebic gamocxadebulia am interfeissi. Tu obieqts aqvs romelime interfeisi, masin nebismieri sxva obieqti, romelsic realizebulia es interfeisi, flobs SesaZleblobas imoqmedos mastan. interfeisi gansazrvravs mxolod wevrebs, romlebic obieqtsia realizebuli. TviT interfeisis gansazrvrebasi araferia natqvami misi wevrebis realizaciaze. igi Seicavs mxolod parametrebisa da dasabrunebel mnisvnelobata tipebis arweras. interfeissi gamocxadebuli wevrebis realizacia mtlianad da srulad ekisreba klass, romelsic TviT es interfeisia realizebuli. amgvarad, sxvadasxva obieqtebsi interfeisis ertidaigive wevrebi realizebulia sruliad gansxvavebulad. ganvixilot, magalitad, interfeisi IShape, romelic gansazrvravs ertadert metods CalculateArea. amastanave klasi Circle, romelsic realizebulia es interfeisi, gaitvlis figuris fartobs sruliad gansxvavebulad, vidre klasi Square, romelsic aseve realizebulia es interfeisi. miuxedavad amisa, obieqts, romelsac swirdeba urtiertqmedeba IShape s gamoyenebit, SeuZlia metodis CalculateArea gamozaxeba Circle an Square klasidan da miiros koreqtuli Sedegi. 30

31 interfeisebis gansazrvra: interfeisi ganisazrvreba gasareburi sityvit interface. magalitad: public interface IDrivable aq gamocxadebulia IDrivable interfeisi wevrebis garese. interfeisis wevri-metodebi ganisazrvreba metodis Cveulebrivi signaturit, orond wvdomis modifikatorebis (public, private,...) garese. modifikatori, romelic interfeisistvisaa mocemuli, vrceldeba mis yvela wevrze. ganvixilot interfeisis wevri-metodebis gamocxadebis magaliti. public interface IDrivable void GoForward(int Speed); void Halt(); int DistanceTraveled( ); metodebis msgavsad interfeissi ganisazrvreba wevri- Tvisebebic. amisatvis gamoiyeneba specialuri metodebi: mimrebi-metodi (getter) da damyenebeli-metodi (setter). TvisebaTa gansazrvra mtavrdeba mnisvnelobis tipis mititebit, romelsac Tviseba abrunebs. magalitad: public interface IDrivable // sxva wevrebis gansazrvra aq gamotovilia int FuelLevel get; 31

32 // es Tviseba rom iyos misawvdomi mxolod wasakitxad, unda gamocxaddes aq metodi set Tvisebebisgan gansxvavebit, velebi ar SeiZleba iyos interfeisis wevrebi. esaa garantia imisa, rom klasebi, romlebic interfeisebis sasualebit urtiertmoqmedebs, ver ganaxorcielebs mimartvas obieqtis Siga monacemebtan. interfeisebi gansazrvravs agretve movlenebs, romlebsac is obieqtebi agenerirebs, romlebsic es interfeisia realizebuli. nebismieri klasi, romelic interfeiss uketebs realizacias, valdebulia misces realizaciis sasualeba am interfeisis yvela wevr-movlenas. magram obieqtebistvis, romlebic am interfeisis sasualebit urtiertmoqmedebs, arasavaldebuloa massi gamocxadebuli yvela movlenis damusaveba. C# moitxovs movlenebistvis tipi-delegatebis danisvnas. magalitad: public interface IDrivable // sxva wevrebis gansazrvra aq gamotovilia event System.EventHandler OutOfFuel; interfeisis gansazrvra xdeba gasareburi sityvit interface da emateba misi wevrebis: metodebis, Tvisebebis da movlenebis signaturebi. interfeisebi - polimorfizmis mirwevis sasualeba: nebismieri obieqti, romelsic realizabulia romelime interfeisi, SeuZlia urtiertqmedeba sxva obieqtebtan, romeltac swirdebat es interfeisi. magalitad: public void GoSomewhere(IDrivable v) // realizacia gamotovilia 32

33 aq gamocxadebul metodistvis aucilebelia, rom mis argumentsi iyos realizebuli IDrivable interfeisi. Sedegad, am metods SeiZleba gadaeces nebismieri obieqti, romelsic realizebulia es interfeisi, amavdroulad es es obieqti aracxadad gardaiqmneba am interfeisis tipad. obieqtebistvis, romlebic urtiertqmedebs ertmenettan matsi realizebuli interfeisis sasualebit, xelmisawvdomia mxolod am interfeisis wevrebi. garda amisa, nebadartulia obieqtebis cxadi saxit gardaqmna interfeisis tipad, romlebsic realizebulia romelime interfeisi. magalitsi nacvenebia Truck obieqtis gardaqmna IDrivable interfeisis tipad. imisatvis rom es procedura Sesruldes, sawiroa Truck obieqtsi realizebul iyos IDrivable interfeisi. Truck mytruck = new Truck(); Idivable myvehicle; // Truck obieqtis gardaqmna IDrivable interfeisis tipad myvehicle = (IDivable)myTruck; interfeisebis realizacia: C#-is programasi interfeisis sarealizaciod gamoiyeneba ` : ~. magalitad, public class Truck : IDrivable // realizacia gamotovilia klassi SesaZlebelia ramdenime interfeisis realizacia. aseti klasis gamocxadebis dros sawiroa interfeisebis mititeba mzimis sasualebit: public class Truck : IDrivable, IFuelBurning, ICargoCarrying 33

34 // realizacia gamotovilia Tu klassi an struqturasi realizebulia romelime interfeisi, aucilebelia mieces realizaciis SesaZlebloba mis yvela wevrs. es wesi vrceldeba masinac, Tu relizebulia ramdenime interfeisi. interfeisis wevrebis realizacia: C#-is klasebsa da struqturebsi gamocxadebuli interfeisis wevrebis realizacia xdeba Semdegnairad. amisatvis gansazrvraven wevrs saxelit, romelic emtxveva interfeisis wevris saxels. amavdroulad, klasis es wevri cxaddeba wvdomis imave donit, romlitac gamocxadebulia interfeisi. momdevno magaliti asaxavs metodis realizacias, rogorc interfeisis wevrisa: public interface IDrivable void GoForward(int Speed); public class Truck : IDrivable public void GoForward(int Speed) // realizacia gamotovilia aseti saxit realizebuli interfeisis wevrebi misawvdomia rogorc interfeisis, aseve klasistvis. Sedegad, am wevrebis gamozaxeba SesaZlebelia obieqtis gardaqmnis Semdeg (romelsic interfeisia realizebuli) mis sakutar tipsi an am interfeisis tipsi. 34

35 garda amisa, interfeisis realizacia klassi SeiZleba cxadad. aseti saxit realizebuli wevrebi misawvdomia mxolod obieqtis gardaqmnis Semdeg interfeisis tipsi. interfeisis wevris cxadi saxit realizaciistvis sawiroa klassi gamocxaddes imave saxelis wevri, interfeisis sruli saxelis mititebit. qvemot nacvenebia cxadad realizebuli GoForward metodi, romelic aris IDrivable interfeisis wevri. public class Truck : IDrivable void IDrivable.GoForward(int Speed) // realizacia gamotovilia rogorc vxedavt, gamocxadebul wevrs ara aqvs wvdomis modifikatori. vinaidan es wevri realizebulia cxadad, misi wvdomis done ganisazrvreba TviT interfeisis modifikatorit. amgvarad, C#-is programasi interfeisis realizaciistvis sawiroa: 1. gamocxaddes klasi sawiro interfeis(eb)it ` : ~ -is gamoyenebit. 2. daiweros realizacia interfeisis yvela wevrisatvis: - imisatvis, rom wevri iyos misawvdomi klasisa da interfeisistvis, igi gamocxaddes igive saxelit, wvdomis donit da signaturit, rogoric aqvs interfeisis Sesabamis wevrebs; - imisatvis, rom wevri gavxadot misawvdomi mxolod interfeisidan, igi unda gamocxaddes interfeisis sruli saxelit (modifikatori araa savaldebulo). 35

36 polimorfizmis realizacia memkvidreobitobit memkvidreobitoba sasualebas izleva gamocxaddes axali klasi arsebuli klasis safuzvelze da gadasces axal klass misi yvela wevri da funqcionaloba. amgvarad SesaZlebelia klasebis Seqmna, romlebsic realizebul iqneba sabazo SesaZleblobebis ertoblioba, xolo Semdeg gamoyenebul iqnas isini warmoebuli klasebis gamosacxadeblad, sxvadasxva, magram dakavsirebuli funqciebis Sesasruleblad. winamdebare paragrafsi gavecnobit memkvidreobitobis gamoyenebas warmoebuli klasebis Sesaqmnelad sabazo klasebis safuzvelze, axali realizaciis Seqmnas sabazo klasebis wevrebistvis, agretve abstraqtuli sabazo klasebis gamocxadebas. memkvidreobitoba: memkvidreobitoba gvazlevs sasualebas Seiqmnas klasebi, romlebic realizebas uketebs saerto (zogad) SesaZleblobaTa ertobliobas. amastanave, specializebuli klasebi, romeltac warmoebul klasebsac uwodeben, STamomavlebia erti zogadi klasis, romelic sabazo klasia. amboben, rom warmoebuli klasebi afartoeben sabazo klasis SesaZleblobebs. sabazo klassi inkafsulirebulia zogadi funqcionaloba, romelic gaacnia yvela misgan warmoebul klass. amastanave, warmoebul klasebs aqvs damatebiti SesaZleblobebi, romlebic unikaluria TviToeuli warmoebuli klasistvis. magalitad, klasi avtomobili zogadia da igi flobs sabazo klasis yvela funqcionalobas (obieqtebs, metodebs, movlenebs). mis safuzvelze SeiZleba SevqmnaT warmoebuli klasi satvirto avtomobili, romelic memkvidreobit SeiZens sabazosgan mtlian funqcionalobas. damatebiti SesaZleblobebis saxit massi realizebul iqneba iseti 36

37 Tvisebebi, romlebic mxolod mistvisaa damaxasiatebeli, magalitad, tvirtis_saxe, tvirtamweoba da a.s. F polimorfizmi da warmoebuli klasebi: warmoebuli klasi SeiZleba gavaigivot mis sabazo klastan. magalitad, klasis satvirto avtomobili yvela obieqti aris amavdroulad obieqti klasisa avtomobili. polimorfizmi memkvidreobitobis dros mdgomareobs imasi, rom warmoebuli klasis nebismieri egzemplari mzadaa Seasrulos misi sabazo klasis funqciebi. nebismieri warmoebuli klasi SeiZleba aracxadad gardaiqmnas Tavisi sabazo klasis obieqtsi, amastanave yvela wevri, realizebuli warmoebul klassi miuwvdomeli iqneba. misawvdomi iqneba mxolod sabazo klasis wevrebi. warmoebuli klasebis Seqmna: warmoebul klasebs acxadeben ` : ~ simboloti. magalitad: public class PickupTruck : Truck // realizacia gamotovebulia warmoebul klass mxolod erti winapari hyavs (sabazo klasi), magram massi damatebit dasasvebia erti an ramdenime interfeisis realizeba. Tu vacxadebt warmoebul klass, romelsic ramdenime interfeisia realizebuli, masin isini unda CamoiTvalos mimdevrobit (`, ~-ebit) ` : sabazo_klasis_saxeli~-is Semdeg. magalitad: public class FourwheeIDrivePickupTruck : PickupTruck, IFourwheeIDrive // realizacia gamotovebulia 37

38 warmoebuli klasis gamocxadebis Semdeg SeiZleba daematos mas axali wevrebi, romlebic arastandartul SesaZleblobebs arealizebs. CabeWdili klasebis Seqmna: zogjer sawiroa iseti klasebi, romlebic ver Sesasrulebs sabazo klasis rols. magalitad, specializebuli klasebi, romlebic sawiroa usualod momxmareblis aplikaciis komponentebis saxit gamosayeneblad. isini gamousadegari iqneba sxva programistebistvis, vinaidan mat ar SeuZlia gadasces Tavis STamomavlebs raime sasargeblo funqcionaloba. aseti klasebi cxaddeba gasareburi sityvit sealed. magalitad: public sealed class AClass // realizacia gamotovebulia memkvidreobit gadacemuli wevrebi: rogorc arnisnuli iyo, warmoebuli klasi flobs misi sabazo klasis mtel funqcionalobas. warmoebul klassi SeiZleba ara mxolod axali wevrebis Camateba, aramed sabazodan memkvidreobit mirebuli wevrebis realizaciis Secvla dasmuli amocanebis gadasawyvetad. sabazo klasidan memkvidreobit mirebuli wevrebis gansazrvrebis SecvliT (override), xerxdeba mati realizaciis Secvla. C# - Si SesaZlebelia wevrebis damalva (hide), romlebic memkvidreobitaa mirebuli sabazo klasidan. samagierod realizdeba axali wevri imave saxelit da signaturit, orondac sxva maxasiateblebit gansxvavebuli. 38

39 gansazrvrebis Secvla SeiZleba mxolod Tvisebebisa da metodebisatvis, romlebic mirebulia sabazo klasidan. cvladebisa da movlenebisatvis gansazrvrebis Secvla dausvebelia. wevris axal realizaciasi signatura, dasabrunebeli mnisvnelobis tipi da wvdomis done unda emtxveodes gansazrvrebasecvlil wevris imave mnisvnelobebs. magalitad: // sabazo klass aqvs GoForward metodi public class SportsCar : Car public override void GoForward(int Speed) // realizacia gamotovebulia gansazrvrebasecvlili wevris gamozaxebisas im wevris magivrad, romelic sabazo klasidanaa memkvidreobit mirebuli, gamoizaxeba am wevris axali realizacia, gamozaxebis konteqstisgan damoukideblad. magalitad, Tu warmoebuli klasis egzemplaris gardaqmnis Semdeg misi sabazo klasis tipsi gamozaxebul iqneba gansazrvrbasecvlili metodi, mainc Sesruldeba am metodis axali realizacia. gamozaxebuli wevri ganisazrvreba obieqtit da ara cvladis tipit. sabazo klasis wevris gansazrvrebis Sesacvlelad igi unda moinisnos gasareburi sityvit virtual, winaarmdeg SemTxvevaSi wevrebi itvleba fiqsirebulad da mati gansazrvrebis Secvla ar SeiZleba. magalitad: public virtual void OverrideMe() // realizacia gamotovebulia sabazo klasis wevrebis damalva C#-Si. 39

40 rogorc arvnisnet, C#-is programasi SesaZlebelia sabazo klasidan memkvidreobit mirebuli wevris Secvla sxva wevrit, romelsac sruliad gansxvavebuli realizacia eqneba. am xerxs uwodeben `damalvas~ (hiding). axali wevris tipi da signatura unda iyos igive, rogoric Casanacvlebel damalul wevrs aqvs, magram wvdomis done, dasabrunebel mnisvnelobis tipi da realizacia SeiZleba gansxvavdebodes. Tu axali metodis saxeli emtxveva arsebulidan ert-erts, magram mati signaturebi gansxvavdeba, masin axali metodi ganixileba rogorc arsebuli metodis gadatvirtuli versia, amastanave es ukanaskneli rceba misawvdomi. imisatvis, rom davmalot sabazo klasidan memkvidreobitmirebuli wevri, aucilebelia gasareburi sityvis new gamoyeneba. magalitad: // sabazo klasi public class MyBaseClass public string MyMethod(int I) // realizacia gamotovebulia // warmoebuli klasi public class MyInheritedClass : MyBaseClass // es funqcia Caanacvlebs MyMethod metods sabazo klasidan. // mas igive signatura, magram sxva wvdomis done da dasabrunebeli mnisvnelobis tipi aqvs internal new int MyMethod(int I) // realizacia gamotovebulia 40

41 Tavsebadobis ganxorcieleba damalul wevrebze: sabazo klasis damaluli wevris realizacia xdeba miuwvdomeli, mas cvlis axali realizacia, SesaZloa sul sxva maxasiateblebit, rac zogjer mnisvnelovan gavlenas axdens sxva obieqtebtan urtiertqmedebis dros. obieqti, romelic izaxebs funqcias MyMethod (ix. wina magaliti), elodeba mnisvnelobas string tipit, magram Tu funqcia daabrunebs int s, masin mosalodnelia Secdoma. amitomac, Zalze safrtxiloa damaluli wevrebis gamoyeneba da mxolod masin unda mivmartot mas, roca uewveli garantiaa, rom Tavsebadoba ar dairrveva. rig SemTxvevebSi sabazo klasis damalul wevrebis realizaciaze mimartva mainc xerxdeba. saidan iqneba wevri gamozaxebuli sabazodan Tu warmoebulidan, damokidebulia cvladis tipze da ara obieqtze, rogorc amas adgili hqonda gansazrvrebasecvlili wevris SemTxvevaSi. magalitad: // gamoiyeneba klasebi MyBaseClass da MyInheritedClass (ix. wina kodi) MyInheritedClass X = new MyInheritedClass( ); MyBaseClass Y; // cvladebi X da Y miutitebs axla ertidaimave obieqts, magram mati tipebi gansxvavebulia. Y = X; // X -is cvladis tipia MyInheritedClass, amitom moimdegno stiqonit // gamoizaxeba realizacia warmoebuli klasidan. Y.MyMethod(42); // Y -is cvladis tipia MyBaseClass, amitom moimdegno stiqonit // gamoizaxeba realizacia sabazi klasidan. Y.MyMethod(42); rogorc vxedavt, usualod cvladis tipi gansazrvravs, Tu romeli wevri iqneba gamozaxebuli, damaluli 41

42 warmoebulidan, Tu sawyisi sabazodan. es uzrunvelyofs wevris realizaciis modificirebas polimorfizmis principis daurrvevlad. warmoebuli klasebis gamocxadebisas damaluli wevrebis axali realizacia ar gadaicema memkvidreobit, warmoebul klass gadaecema sabazo klasis Sesabamisi wevrebis realizacia. sabazo klasis wevrebze wvdomis mireba: gansazrvrebasecvlili an damaluli wevrebis gamocxadebisas zogjer sawiroa wvdoma sabazo klasis am wevris realizaciaze. amisatvis iyeneben gasarebur sityvas base. magalitad: // aq demonstrirebulia sabazo klasis realizaciis gamozaxeba // gansazrvrebasecvlili metodidan MyMethod( ). public override void MyMethod( ) base.mymethod( ); // realizacia gamotovebulia daculi wevrebi: klasebis wevrebze wvdoma, rogorc adre arvnisnet, xorcieldeba wvdomis doneebit: public SesaZlebelia mimartva aplikaciis nebismieri adgilidan, agretve gare klasebidanac; internal wvdoma xorcieldeba mxolod wevrebze lokaluri nakrebidan; private wvdoma SesaZlebelia mxolod klasis SigniT. SesZlebelia kidev wvdomis ori done: protected da protected internal romlebic ar ganxilula. klasebis wevrta xilvadobis areebi, romlebic gamocxadebulia gasareburi sityvebit protected da private 42

43 msgavsia, erti gansxvavebit, rom pirvel SemTxvevaSi wevrebi misawvdomia warmoebuli klasebistvisac. magalitad: // sabazo klassi gansazrvrulia ori metodi: // wvdomis doneebit protected da private public class BaseClass // metodi private-wvdomis donit ar SeiZleba gamovizaxot warmoebuli klasebidan private void Method1( ) // realizacia gamotovebulia // metodi protected-wvdomis donit SeiZleba gamovizaxot warmoebuli klasebidan protected void Method2( ) // realizacia gamotovebulia // klasi, warmoebuli BaseClass -idan public class InheritedClass : BaseClass public void Demo( ) // aseti gamozaxeba dasasvebia, radgan protected ar krzalavs BaseClass is wevrebze mimartvas. this.method2( ); // aseti gamozaxeba iwvevs kompilaciis Secdomas, vinaidan gamoyenebulia private wvdomis done. this.method1( ); wvdomis done protected internal aris modifikatorebis protected da internal hibridi. amitomac klasis wevri, romelic gamocxadebulia protected internal it, misawvdomia am klasis 43

44 da sxva klasis wevrebistvisac, romlebic amave nakrebsia am klastan, agretve misi warmoebuli klasebis wevrebistvisac. abstraqtuli klasebi da wevrebi: komponentebis Seqmnis dros zogjer sawiroa klasebi, romlebic gvtavazobs gansazrvrul SesaZleblobaTa ertobliobas, ucvleli saxit gamosayeneblad. xolo am klasis sxva wevrebis realizaciaze pasuxs ageben mati warmoebuli klasebi. aset SesaZleblobas flobs abstraqtuli (abstract) klasebi, romeltac SeuZlia mxolod sabazo klasebis rolis Sesruleba. abstraqtuli klasebi hgavs interfeisebs, magram mat bevri saerto aqvs Cveulebriv klasebtan. abstraqtuli klasis egzemplaris Seqmna ar SeiZleba, igi gamosadegia mxolod warmoebuli klasebis gamocxadebistvis. abstraqtuli klasi izleva klasis srul realizacias, an mis nawils an saertod aravitar realizacias. interfeisebic da abstraqtuli klasebic Seicavs wevrebis arweras, romlebic realizebul unda iqnas warmoebul klasebsi, orond interfeisisgan gansxvavebit, mxolod ert abstraqtul klass SeuZlia iyos warmoebuli klasis winapari. abstraqtuli klasebi izleva mxolod srulad realizebul wevrebs, agretve im wevrebs, romelta realizaciaze pasuxismgebelia warmoebuli klasebi. 44

45 II Tavi C#.NET ena 2.1. C# enis samusao garemo konsolis rejimsi.net Frameworks SDK platformaze C# ( si Sarf~) enis programebis Sesaqmnelad, kompilaciisa da testirebisatvis ZiriTadad gamoiyeneba ori rejimi: konsolis (nax.2.1), romelic MsDos da Unix operaciuli sistemebis garemos mogvagonebs da komponentur-vizualuri (nax.2.2), romelsac Windows, Linux da sxv. nax.2.1. Console mode nax.2.2. Windows Application 45

46 Tanamedrove sistemebis msgavsad grafikuli interfeisebi gaacnia. orive rejimi TavisTavad saintereso da mnisvnelovania. pirvelsi SesaZlebelia C# programuli modulebis Seqmna da testireba, analizi da Secdomebis diagnostika, standartuli modulebis bibliotekis Seqmna misi Semdgomi mravaljeradi gamoyenebisatvis. meore rejimsi iqmneba didi proeqtebi (Applications), romelta swrafad damusavebas da testirebas Zalze mdidari vizualur komponentta bibliotekis arseboba ganapiroebebs. Cven mokled ganvixilavt orive rejims da warmovadgent im ZiriTad sakitxebs, romlebic aucilebelia C#.NET enaze programuli modulebisa da proeqtebis asagebad. pirvel rigsi sawiroa kargad gaverkvet C#-kodis Sedgenilobasa da struqturasi, cvladebisa da konstantebis tipebsa da mati mnisvnelobebis diapazonebsi, operaciebsa da funqciebsi, obieqt-orientirebuli da komponenturvizualuri metodebis koncefciebsa da mat realizaciasi. swored am sakitxebs ganvixilavt winamdebare Tavis paragrafebsi ilustraciebita da programuli listingebit C# -kodis ageba da testireba konsolis rejimsi C# - programis sawyisi teqsti unda momzaddes romelime teqstur redaqtorsi, mag., NotePad-Si (nax.2.3). programis teqsts gafartoveba (failis tipi) dauyendeba sc. C# - is kompilatoria csc, romelic konsolis rejimsi gamoizaxeba da argumentad mietiteba teqsturi failis saxeli, anu Cvens SemTxvevaSi Myfirst.cs (nax.2.4-a). kompilaciis Semdeg, Tu kodsi araa sintaksuri Secdomebi, miireba gamomavali kompilirebuli kodi, romelsac Sesrulebad fails (exe) uwodeben. 46

47 nax.2.3 nax.2.4. a-kompilaciis da b - testirebis etapebi am musa failis amusavebit (konsolis rejimsi gamoizaxeba igi saxelit, mag., Myfirst), miireba saboloo Sedegebi (nax.2.4-b). OK Rilakze dawkapunebit dasruldeba programis Sesruleba. Tu programasi sintaksuri Secdomebia, masin sawiroa dabruneba isev teqstur redaqtorsi, am Secdomebis povna da 47

48 Casworeba. Semdeg testirebis procesi ganmeorebit Catardeba, sasurveli Sedegebis mirebamde. striqoni MessageBox.Show(«By-By!»); emsaxureba informacia - Setyobinebis gamotanas Windows stilsi C# enis gasareburi sityvebi 1-el cxrilsi mocemulia C# enis ZiriTadi gasareburi sityvebis nusxa, romelta gamoyeneba aqtiurad xdeba programul modulebsi. rogorc vxedavt, mravali matgani msgavsia C, C++ da Java enata operatorebisa. axalia, magalitad, namespace, romelsac gansakutrebuli danisnuleba aqvs da mas calke paragrafi miezrvneba. rekomendebulia, rom ar gamoiyenot upirobo gadasvlis goto-operatori, igi arrvevs struqturuli daprogramebis principebs. mis sanacvlod programasi sasurvelia if..elese if - ganstoebata, for, while, do while - ciklebisa da switch - gadamrtvelis gamoyeneba. enis dajavsnul~ sityvebsi gansakutrebuli adgili uwiravs monacemta tipebis operatorebs, romeltac momdevno paragrafsi ganvixilavt. 48

49 49

50 2.4. C# enis monacemta ZiriTadi tipebi monacemta tipebis arwerit iwyeba yvela programa, Tuki massi gamoiyeneba simbolur-striqonuli, mtelricxva an namdvilricxva monacemebi. me-2 cxrilsi motanilia C# enasi monacemta gamoyenebuli tipebis nusxa. sawiroa mcire komentaris gaketeba. 50

51 - CamoTvliTi tipi (enum): mag., enum friends nino, gio, dito, mito, sico; simravlesi pirveli iqneba 0, meore 1 da a.s. am elementta - decimal tipi (double-sgan gansxvavebit) gamoiyeneba meti sizustisatvis fulad-safinanso angarisebsi da ricxvs miewereba sufiqsi M an m. mag., decimal d = 37.15m; C#-enaSi Semotanilia tipi string, Unicode-simboloTa striqonia. romelic magalitad, string a= Hello, b= My friend ; Console.WriteLine(a+b); //Sedegi: Hello My friend. ganvixilot interaqtiuli programis magaliti, romelsic xdeba monacemebis Setana konsolis brzanebis striqonidan da gamotana ekranze (nax.2.5): /*P1.cpp Input-Output */ using System; class WhoIsWho static void Main() string Name; int Age=0; decimal Money=0.0m; Console.Write( \awhat is your name? : ); Name = Console.ReadLine(); Console.Write( \ahow old are you? : ); Age = Convert.ToInt16(Console.ReadLine()); Console.Write( \ayour salary? : ); Money = Convert.ToDecimal(Console.ReadLine()); // Output results - Console.WriteLine( Hello, 0!\n, Name); 51

52 Console.Write( Your age=0 years \n, Age); Console.Write( Your money=0 dollars \n,money); Console.Write( In Year=0 dollars\n, Money*12); // programasi gamoyenebulia tipebis gardaqmnis metodebi: //Convert.ToInt16(),Convert.ToDecimal(). konsolze gamoitanilia programis kompilaciisa da Sedege-bis magaliti. nax C# enis tipebis gardaqmnis ZiriTadi funqciebi (metodebi) arsebobs monacemta tipebis gardaqmnis aracxadi (implicit) da cxadi (explicit) sasualebani. pirvelis SemTxvevaSi monacemta gardaqmna xdeba programistis Carevis garese. cxrilsi nacvenebia es SesaZleblobani. 52

53 tipebis aracxadi gardaqmnis cxrili tipebis cxadi gardaqmnis cxrili 53

54 C#-enaSi gansakutrebit sayuradreboa striqonuli cvladebis tipis string gamoyeneba. rogorc wina paragrafis programul magalitsi ganvixilet, monacemebis Setanisas Console.ReadLine( ) metodit, igi mtel da fulad ricxvebs Rebulobs simboloebis striqonis saxit. monacemta tipis cxadi gardaqmnis metodit, magalitad Convert.ToDecimal(Console.ReadLine()); miireba ricxviti tipebi da SesaZlebeli xdeba mati matematikur operaciebsi gamoyeneba. asetivea Convert.ToInt16(), Convert.ToFloat() da a.s. metodebi C# enis masivebi (koleqciebi) masivebi Seesabameba klasta koleqciebs, romlebic Cadgmulia C# enasi da konstruqciulad emsaxureba ertgvarovan (erti tipis) monacemta moxerxebuli organizebis sakitxebs. masivebi SeiZleba iyos ert-, or- an mraval-ganzomilebiani, an Tavisufali ( jagged ). ertganzomilebiani masivis (veqtoris) gamocxadebis zogadi formati asetia: Type[ ] Array_Name [memory]; sadac tipis Semdeg mietieba masivis saxeli da am masivistvis sawiro mexsiereba. es ukanaskneli yoveltvis araa sawiro. magalitad, qvemot nacvenebia samstriqoniani masivis gamocxadeba mnisvnelobebis miniwebit: string[ ] Vector = new string[3] black, red, green ; n-ganzomilebiani masivebisatvis gamoiyeneba kvadratul frcxilebsi TiToeuli ganzomilebis mzimit gamoyofa. magalitad: int[, ] Matrica =new int [5,5]; Tavisufali masivebi mravalganzomilebiania, romeltagan TiToeulSi elementta ganzomileba gansxvavebulia. aseti sasualeba mosaxerxebelia mexsierebis ekonomiurad gamosayeneblad. magalitad: 54

55 int[ ][ ] myjaggedarray = new int [ ][ ] new int[ ] 1,3,5,7,9, new int[ ] 0,2,4,6, new int[ ] 11,22 ; 2.7. C# enis operaciebi enasi gamoiyeneba sxvadasxva tipis operaciebi, kerzod aritmetikuli, logikuri, striqonebis gadabmis, inkrementdekrementis, wazvris, relaciuri, obieqtebis Seqmnis da sxv. qvemot csrilsi mocemulia es operaciebi, xolo momdevno paragrafebsi mokled ganvixilavt mat danisnulebas. C# Operators Operator category Operators Arithmetic + - * / % Logical (boolean and bitwise) & ^! ~ && true false String concatenation + Increment, decrement Shift << >> Relational ==!= < > <= >= Assignment = += -= *= /= %= &= = ^= <<= >>= Member access. Indexing [ ] Cast ( ) Conditional?: Delegate concatenation and removal Object creation Type information Overflow exception control Indirection and Address + - new as is sizeof typeof checked unchecked * -> [ ] & 55

56 2.8. C# enasi brzanebata nakadebis martva enebsi gansakutrebuli danisnuleba aqvs struqturuli daprogramebis elementebs, romlebic kodis brzanebebis (operatorebis, procedurebisa da metodebis Sesrulebis) mimdevrobas gansazrvravs. aseti operatorebs miekutvneba: 1. ganstoebis (pirobiti gadasvlis operatorebi): 2. gadamrtveli: switch( ). 3. ciklebis : if, if..else, if..else..if while( ), do..while( ), for( ), foreach( ). bolo operatori ar yofila C, C++ da Java enebsi, amitom mas aq ganvixilavt detalurad. sintaksi Semdegia: foreach (type identifier in expression) // operatorebi; sadac expression aris koleqciis (masivis) dasaxeleba, romlis SigniTac xorcieldeba cikluri mozraoba. magalitad: foreach (string Name in ListOfNames) Console.WriteLine( \t0, Name); 4. upirobo gadasvlis operatri (goto), romlis gamoyenebac araa rekomendebuli struqturuli daprogramebis TvalsazrisiT; 5. ciklebidan an gadamrtvelis case-blokebidan gamosvlis operatori (break); 56

57 6. ciklebsi logikuri pirobis Sesamowmeblad usualo gadasvla (continue) sxva arasawiro operatorebis gamotovebit; 7. mtavari programidan an metodebidan gamosvlis operatori (return). igi xsirad gamoiyeneba kodsi. misi erti SemTxveva nacvenebia qvemot: public static int Main(string[ ] args) // programis operatorebi; return 0; Main-programa abrunebs mtel (int) mnisvnelobas, amitomac misi normalurad damtavrebis SemTxvevaSi konsols return it gadaecema C# kodis magaliti ganixileba martivi C#-programis teqsti, romelic Sesasvlelze Txoulobs ori mteli ricxvis (x da y) Setanas da Semdeg angarisobs mat jams, namravls, gansazrvravs maqsimalur da minimalurs mat Soris. pirveli ori operacia realizebulia Cvens pfogramasi Sum da Product qveprogramebis saxit. maqsimalur da minimalur mnisvnelobebs ki igi Rebulobas programul bibliotekasi arsebuli standartuli funqciebit (metodebit). using System; namespace Calcul public class SimpleCalculator public static void Main() int x, y; Console.Write( Input \n ); 57

58 Console.Write( First number: ); x=convert.toint32(console.readline() ); Console.Write( Second number: ); y=convert.toint32(console.readline() ); Console.Write( Result s: \n ); Console.WriteLine( Sum = + Sum(x,y)); Console.WriteLine( Product = + Product(x,y)); Console.WriteLine(«Diff = «+ Dif(x,y)); Console.WriteLine(«Division = «+ Divis(x,y).ToString(«F2»)); Console.WriteLine(«Rest = «+ Module(x,y)); Console.WriteLine(«Max number = «+ Math.Max(x,y)); Console.WriteLine(«Min number = «+ Math.Min(x,y)); public static int Sum(int a, int b) int sumtotal; sumtotal=a+b; return sumtotal; public static int Product(int a, int b) int producttotal; producttotal=a * b; return producttotal; public static int Dif(int a, int b) int diftotal; diftotal=a-b; return diftotal; public static double Divis(int a, int b) double divisetotal; divisetotal=a / Convert.ToDouble(b); return divisetotal; public static int Module(int a, int b) 58

59 int modulerest; modulerest=a % b; return modulerest; Sedegebi mocemulia 2.6 naxazze. nax C# enasi obieqturi da komponenturi daprogramebis koncefcia C#-ena, rogorc sxva Tanamevdrove programuli paketebi, aris obieqt-orientirebuli da komponenturi stilis mqone instrumenti. ganvixilot es ori koncefcia, rac SemdgomSi ufro gasagebs gaxdis komponenturvizualuri daprogramebis metodis gamoyenebis efeqturobas. ara-obieqtorientirebuli daprogramebis stili cnobilia procedurul-orientirebuli daprogramebis saxit (magalitad, Basic, Pascal, C da sxv.), fartod gamoiyeneboda avtomatizebuli sistemebis agebis adrindel etapze (90-ian wlebamde). mattvis damaxasiatebeli iyo procedurebis wera operatorebis doneze, xolo monacemebi inaxeboda matgan 59

60 damoukideblad. daprogramebis aseti stili gamosadegia mcire zomis proeqtebis asagebad. C-ena, rogorc Unix-qseluri operaciuli sistemis deda ena~, kargi struqturuli da sistemuri (asembleruli) Tvisebebis mqone instrumenti, gafartovda axali, obieqt-orientirebuli TvisebebiT (inkafsulacia, memkvidreobitoba, polimorfizmi, abstraqcia) da iqca Tanamedrove programist-profesionalebis C++ mzlavr instrumentad. am enis ZiriTadi elementebia klasebi, obieqtebi da metodebi, romelta safuzvelzec ariwereba sistemis mdgomareoba (statika) da misi qceva (dinamika). komponenturi daprogrameba yuradrebas amaxvilebs vizualur-modulur elementebze, rogorebicaa magalitad, Tvisebebi (Properties), interfeisebi (Interfaces) da movlenebi (Events). interfeisebis danisnulebaa klasebs Soris metodebis inicializeba da gadacema. Tvisebebi gansazrvravs klasis komponentebisatvis ama Tu im interfeistan mimartvis uflebas. movlenebi gamoiyeneba garkveuli situaciebis arsawerad, romelta Sedegad unda amusavdes Sesabamisi metodebi. axla ganvixilot es sakitxebi ufro detalurad C# enis obieqtebi da klasebi C#-enaSi obieqtebis warmodgena xdeba iseti tipit, rogoricaa klasi. klasis atributebi igivea rac velebi, xolo klasis funqciebi metodebia, romelta sasualebitac C#-Si ariwereba klasis qceva. magalitad, class Lector int LecID; string Gvari_S; string Status; float Xelfasi; char Tel[14]; 60

61 void Lekciis_chatareba( ) // qcevis realizacia void Xelfasis_ageba( ) // qcevis realizacia obieqtebi, TavianTi tipebisa da ganzogadebis mixedvit jgufdeba klasebad. Tu klasta Soris arsebobs garkveuli ierarqiuli kavsiri, igi SeiZleba iyos memkvidreobiti. magalitad, klasebi Lector da Student Seicavs msgavs atributebs, rogorebicaa Gvari, Saxeli, Dabad_Tarigi, Misamarti, Tel da a.s. gansxvavebaa is, rom students ar aqvs Tanamdeboba (Status), xelfasi da sxv., agretve mas ar gaacnia metodebi leqciis_kitxva da xelfasis areba. Tavis mxriv, klass Student eqneba studbiletis_nomeri, jgufi, kursi, sasualo_reitin-guli_bali da a.s. aseve Cven SegviZlia arvwerot klasebi magistranti (Magister), doqtoranti (Doctorand), TanamSromeli (Employe) da sxv. yvelas eqneba rogorc saerto damaxasiatebeli Tvisebebi (atributebi), aseve gansxvavebuli, mxolod mistvis damaxasiatebeli. Tu yvela klasis saerto Tvisebebs gavitant calke, xolo kerzos davtovebt am klasis obieqtebtan, mivirebt 2.7 naxazze mocemul ierarqiul models. aseti modeli asaxavs memkvidreobit kavsirebs (samkutxataviani isrebi) klasebs Soris. aq klasi Person aris abstraqtuli da Sedgeba sami atributisa da ori metodisgan. igi ganzogadebaa klasebisa, obieqtebit `yvela adamiani~ (da ara cxoveli, frinveli), romelta Soris zogi leqtoria, zogi studenti, zogic magistranti da doqtoranti. es ukanasknelebi Seesabameba konkretul klasebs da mat yvelas aqvs is atributebi da metodebi, romlebic 61

62 abstraqtul klassi iyo. aseve, rogorc arvnisnet, mat aqvs kidev damatebuli TavianTi konkretuli atributebi da metodebi, rac ar aqvs Tavis ierarqiulad zemdgom (msobel) klass. nax komponent-orientirebuli daprogrameba komponent-orientirebuli daprogrameba aris obieqtorientirebuli metodi, igi efuzneba kodebis (programebis) ganmeorebit gamoyenebis koncefcias. rogorc arvnisnet, ZiriTad elements klasi warmoadgens. igi realizebulia kodis sasualebit. amgvarad, kodebis ganmeorebad gamoyenebastan usualo kavsiri swored klasebsa da klastasoris damokidebulebebs aqvs. am TvalsazrisiT SeiZleba ganvixilot iseti cnebebi, rogoricaa: - klasta urtiertqmedeba (obieqtebis donezec ki); - klasta kategoriebi (magalitad, matematikuri, grafikuli da a.s.); - klasebis biblioteka, romelic aertianebs erti kategoriis klasebs; - klasis resursebi, romlebic araa programebi (audiovizualuri komponentebi); 62

63 - klasis failebi, esaa klasebis an mati bibliotekebis kompiutersi fizikuri realizaciis Sedegad mirebuli komponentebi..net teqnologiasi C#-kodebis ganmeorebadi gamoyenebis ZiriTadi elementia nakrebi (assembly), amitomac mas komponentsac uwodeben. rogorc arvnisnet (nax.1.3), nakrebi aris logikuri paketi, romelic Sedgeba MsIL-kodis, metamonacemebisa da resursebisagan (magalitad, gamosaxulebebi) C# kodsi Secdomebisa da gamosaricx movlenata damusaveba Tu programis musaobis processi iqmneba sagangebo (kodis Sesrulebis aranormaluri) situacia da kompiuteri unda Camoekidos~, anu adamianis Caurevlad igi ver gadawyvets ra qnas, masin am dros aucilebelia aseti gamosaricxi SemTxvevis~ armofxvra. SesaZlebelia winaswar iqnas gansazrvruli arasasurvel situaciata nusxa da mati Tavidan acilebis variantebi. magalitad, nulze gayofa, tipebis araswori gardaqmna, mimartva ararsebul failtan da a.s. aseti Secdomebis analizis meqanizmi gamoiyeneba TiTqmis yvala Tanamedrive enasi da mat Soris C# ic. Secdomis armocenisa da satanado ardgeniti funqciis Sesrulebis proceduras programuli wyvetis~ damusavebasac uwodeben..net-teqnologiasi aseti funqciebi miekutvneba System.Exception klass. am konstruqciis zogadi sintaksi C# Si try, catch da finaly operatorebs iyenebs: try // kodis bloki specpirobebis dasamusaveblad 63

64 catch( 1-wyvetis_klasi, wyvetis_obieqtis_ident.) // 1-wyvetis_klasis dasamusavebeli kodi catch( 2-wyvetis_klasi, wyvetis_obieqtis_ident.) // 2-wyvetis_klasis dasamusavebeli kodi... finaly // yvela SemTxvevaSi Sesasrulebeli kodi amgvarad, try bloks SeiZleba hqondes: - erti an ramdenime catch bloki da arcerti an erti finaly bloki; - erti finaly bloki da arcerti catch bloki C# kodis organizeba saxelsivrcis daxmarebit saxelsivrce (namespace) metad mnisvnelovani elementia C# enasi. igi xels uwyobs kodis logikurad swor organizacias da programuli konfliqtebis Semcirebas sxvadasxva identifikatorebs Soris. C# enasi yvela programa iyenebs using System operators, rac miutitebs System-saxelTa sivrceze. mis qves motavsebulia klasebi, romlebic qmnis saxelta qvesivrces, magalitad: System.Console, System.Data, System.Exception da a.s. sabazo klasta metodebze mimartva xdeba saxelsivrcis gamoyenebit. magalitad: System.Console.WriteLine( ). 64

65 axla ganvixilot saxelta sivrcis direqtivebi. esaa C# enis iseti elementebi, romlebic identificirebas uketebs saxelta sivrces. aq gamoiyeneba ori direqtiva: using (gamoiyenebs) da alias (fsevdonimi). magalitad: using System; class ABC static void Main( ) // ekranze gamotana Console.WriteLine( Hello, Penguin! ); fsevdonimis direqtivis sasualebit SesaZlebelia kodsi mocemuli saxelta sivrcis sxva saxelit gamoyeneba. magalitad: using System; using MyAlias = MyCompany.Proj.Nested; // alias-is magaliti namespace MyCompany.Proj public class MyClass public static void DoNothing( ) namespace Nested // a nested namespace public class ClassInNestedNameSpace public static void SayHello() System.Console.WriteLine( Hello, Penguin! ); 65

66 public class UnNestedClass public static void Main( ) MyAlias.ClassInNestedNameSpace.SayHello(); // using alias // Sedegi Hello, Penguin! moqmedebis da xilvadobis areebi programasi spec-blokebis organizebit SesaZlebelia monacemta (cvladebis) lokaluri moqmedebis areebisa da mati xilvadobis (kodis sxva nawilidan) areebis gamoyeneba. es metad sawiro sakitxia mexsierebis efeqturi martvisatvis. magalitad, monacemebi klasis, interfeisis da struqturis blokebsi gamocxaddeba kodis ert adgilas, magram mati gamoyeneba SeiZleba sxva adgilas aseti blokebis daxmarebit. metodebis, Tvisebebisa da indeqsatorebistvis ki aucilebelia am monacemta gamocxadeba usualod mati amusavebis win. e.i. isini damalulia kodis sxva nawilistvis. magram SeiZleba mati xelaxla gamocxadeba this-operaciit, rac metad efeqturia. magalitad: using System; using amyalias=system.security.permissions.fileiopermissionaccess; public class AliasMag amyalias fileaccess; public AliasMag() fileaccess=amyalias.allaccess; public static int Main(string[] args) AliasMag myalias=new AliasMag(); myalias.printmyalias(); return 0; 66

67 public void printmyalias() string fileaccess = this.fileaccess.tostring(); Console.WriteLine( IO Access:0, fileaccess); aq ganixileba klasis wevrebis (mag., fileaccess, romlis tipi arweril iqna fsevdonimit amyalias-it) nebadartuli da akrzaluli xelaxali gansazrvrebis SemTxvevebi. printmyalias() metodis moqmedebis aris SigniT amyalias-is wevris fileaccess-is xilvadoba damalulia am metodsi Semotanili (gamocxadebuli) striqonuli lokaluri cvladis saxelit string fileaccess. aset SemTxvevaSi printmyalias() metodis SigniT mimartva fileaccess-ze nisnavs am lokaluri cvladis gamoyenebas. magram Tu sawiroa ara es lokaluri, aramed AliasMag klasis fileaccess-is gamoyeneba, masin aucilebelia this-operaciis CarTva striqonit: string fileaccess = this.fileaccess.tostring(); dasasrul SeiZleba arvnisnot, rom saxelta sivrce, moqmedebisa da xilvadobis areebi, es C# enis is komponentebia, romelta swori gamoyenebit SeiZleba efeqturi programebis Seqmna. ertmanetsi Cadgmuli saxelta sivrceebis, monacemta moqmedebisa da xilvadobis diapazonebis martvis sakitxebi metad mnisvnelovania didi proeqtebis organizebis processi. mati daxmarebit miirweva kodebis efeqturi gamoyenebis damatebiti SesaZleblobebi. 67

68 2.14. VS C# enis vizualuri komponentebi _ teqstis asaxva formaze komponenti gamoiyeneba formaze teqstis dasawerad. teqstis SerCeva xdeba Text Tvisebis sasualebit, xolo fontisa da teqstis zomis SerCeva Font TvisebiT. aseve SeiZleba teqstis feris Secvla ForeColor TvisebiT. nax. 2.8 _ Rilaki warwerit komponents aqvs Rilakis danisnuleba. mas SeiZleba mieniwos sxvadasxva brzanebebi. magalitad Rilakze Tagus dawkapunebit daixuros is forma romelzedac motavsebulia es Rilaki (nax.1.14). private void button1_click(object sender, System.EventArgs e) Close(); 68

69 _ striqonis Setanis veli formaze komponenti gamoiyeneba usualod formaze teqstis Sesatanad. Text Tvisebis sasualebit TextBox-Si SeiZleba SevitanoT teqsti, romelic formis gaaqtiurebis Semdeg gamocndeba an davtovot carieli. ganvixilot magaliti. formaze motavsebulia komponentebi: TextBox1, Label1 da Button1. Rilakze dawerit Label- Si gamocndeba is teqsti romelsac SevitanT TextBox is sasualebit (nax.2.9). nax.2.9 xolo Rilakis brzanebas eqneba Semdegi saxe: private void button1_click(object sender, System.EventArgs e) label1.text=textbox1.text; _ mtavari meniu komponentis sasualebit xdeba mtavari menius ageba. gadmogvaqvs komponenti formaze da Text Tvisebis sasualebit 69

70 vadgent menius, xolo Semdeg vaaqtiurebt formas da Menu TvisebaSi vabavt komponents (nax.2.10). nax _ martvis elementi ori mdgomareobit _ radio Rilaki ori mdgomareobit _ qmnis formaze logikurad dakavsirebul komponentebis konteiners komponentsi SeiZleba ikos gaertianebuli rogorc RadioButton-ebi aseve CheckBox-ebi (nax.2.11). nax.2.11 _ grafikuli gamosaxuleba komponenti gamoiyeneba formaze (an komponentze) grafikuli gamosaxulebis gamosatanad. failis mibma xdeba komponentis Image TvisebiT. 70

71 _ teqsturi striqonebis siis are komponentsi velebis Camateba xdeba Items TvisebiT. _qmnis teqsturi striqonebis dinamikur sias da redaqtirebis ares monacemebs vamatebt Items TvisebiT. komponentsi, CamoSlamde SegviZlia gamovacinot sawyisi monacemi Text TvisebiT an davtovot carieli (nax.2.12). nax.2.12 _ mravalgverdiani dialogis organizeba urtiertgadafarvis principit. komponentze gverdis damateba xdeba AddTab TvisebiT, xolo gverdis saxelis dasarqmevad unda moinisnos gverdi, romelsac saxels ucvlit da CavweroT Text TvisebaSi. TiTeul gverdze SegviZlia davamatot komponenti (nax.2.13). 71

72 nax.2.13 _qmnis TariRisa da drois redaqtirebis ares _ qmnis Tvis kalendars nax

73 2.15. C# enis vizualuri komponentebit formebis agebis magalitebi konkretuli saproblemo sferos martvis avtomatizebuli sistemis agebis processi gansakutrebuli adgili uwiravs am sferosi arsebuli dokumentebis safuzvelze momxmarebelta dialoguri interfeisebisa da sabewdi formebis atomatizaciis amocanis gadawyvetas. vizualuri komponentebi NET-is integrirebul C# paketsi izleva farto SesaZleblobebs da Zalze moqnilia. am instrumentit avtorebis mier agebul iqna, magalitad, sasamartlo saqmeta warmoebis avtomatizebuli sistemis dialoguri formebi (nax ). nax.2.15 `mosamartlis registraciis~ RilakiT gamoitaneba axali fanjara, romelic 2.16 naxazzea nacvenebi da massi SesaZlebelia informaciis wakitxva, Setana an koreqtireba. `axali saqmis registraciis~ RilakiT ki SeiZleba 2.17 naxazze nacvenebi formit visargeblod. monacemebi, romlebic Seitaneba an koreqtirdeba am da sxva formebze, Tavsdeba sistemis monacemta bazasi da SesaZlebelia mati Semdgomi gamoyeneba. formis Sesabamisi Form1.cs - kodis fragmenti nacvenebia paragrafis bolos. 73

74 nax.2.16 nax

75 // Form1.CS // using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace WindowsApplication1 /// <summary> /// Summary description for Form1. /// </summary> public class Form1 : System.Windows.Forms.Form this.tabpage1 = new System.Windows.Forms.TabPage(); this.tabpage2 = new System.Windows.Forms.TabPage(); this.groupbox1 = new System.Windows.Forms.GroupBox(); this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.button3 = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.button4 = new System.Windows.Forms.Button(); this.button5 = new System.Windows.Forms.Button(); this.treeview1 = new System.Windows.Forms.TreeView(); this.richtextbox1=new System.Windows.Forms.RichTextBox(); this.label1 = new System.Windows.Forms.Label(); this.textbox1 = new System.Windows.Forms.TextBox(); this.label2 = new System.Windows.Forms.Label(); this.datagrid1 = new System.Windows.Forms.DataGrid(); this.tabcontrol1.suspendlayout(); this.tabpage1.suspendlayout(); this.tabpage2.suspendlayout(); this.groupbox1.suspendlayout(); this.panel1.suspendlayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGri d1)).begininit(); this.suspendlayout(); // mainmenu1 this.mainmenu1.menuitems.addrange(new System.Windows.Forms.MenuItem[ ] this.menuitem1, this.menuitem2,this.menuitem3); // menuitem1 this.menuitem1.index = 0; this.menuitem1.text = "საბეჭდი ფორმები"; this.menuitem1.click += new System.EventHandler (this.menuitem1_click); // menuitem2 this.menuitem2.index = 1; this.menuitem2.text = "კლავიატურის დრაივერი"; 75

76 // menuitem3 this.menuitem3.index = 2; this.menuitem3.text = "დახმარება"; // tabcontrol1 this.tabcontrol1.anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Fo rms.anchorstyles.top System.Windows.Forms.AnchorStyles.Bottom) System.Windows.Forms.AnchorStyles.Left))); this.tabcontrol1.controls.add(this.tabpage1); this.tabcontrol1.controls.add(this.tabpage2); this.tabcontrol1.font = new System.Drawing.Font("AcadNusx", F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.tabcontrol1.location = new System.Drawing.Point(8, 32); this.tabcontrol1.name = "tabcontrol1"; this.tabcontrol1.selectedindex = 0; this.tabcontrol1.size = new System.Drawing.Size(224, 400); this.tabcontrol1.tabindex = 0; // tabpage1 this.tabpage1.controls.add(this.groupbox1); this.tabpage1.font = new System.Drawing.Font("AcadNusx", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.tabpage1.location = new System.Drawing.Point(4, 22); this.tabpage1.name = "tabpage1"; this.tabpage1.size = new System.Drawing.Size(216, 374); this.tabpage1.tabindex = 0; this.tabpage1.text = "saqme"; // tabpage2 this.tabpage2.controls.add(this.treeview1); this.tabpage2.location = new System.Drawing.Point(4,25); this.tabpage2.name = "tabpage2"; // button4 this.button4.font = new System.Drawing.Font("AcadNusx", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.button4.location = new System.Drawing.Point(0, 0); this.button4.name = "button4"; this.button4.size = new System.Drawing.Size(80, 23); 76

77 this.button4.tabindex = 0; this.button4.text = "filtri "; // button5 this.button5.font = new System.Drawing.Font("AcadNusx", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.button5.location = new System.Drawing.Point(88, 0); this.button5.name = "button5"; this.button5.tabindex = 1; this.button5.text = "Zebna"; // treeview1 this.treeview1.font = new System.Drawing.Font("AcadNusx", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.treeview1.imageindex = -1; this.treeview1.location = new System.Drawing.Point(0, 0); this.treeview1.name = "treeview1"; this.treeview1.nodes.addrange(new System.Windows.Forms.TreeNode[] new System.Windows.Forms.TreeNode("saqmesTan dakavsirebuli moqmedi pirebi", new System.Windows.Forms.TreeNode[] new System.Windows.Forms.TreeNode("advokati"))); this.treeview1.selectedimageindex = -1; this.treeview1.size = new System.Drawing.Size(240, 368); this.treeview1.tabindex = 0; // richtextbox1 this.richtextbox1.anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Fo rms.anchorstyles.top System.Windows.Forms.AnchorStyles.Bottom) System.Windows.Forms.AnchorStyles.Right))); C#-is programis teqstisatvis, zogadad 2.18 naxazze warmodgenilia misi Sedgenilobis konstruqciuli sqema. aq mititebulia TiToeuli using-direqtivis danisnuleba. 77

78 nax.2.18 saertod,.net platformis mnisvnelovani elementia `danartta areebi~. mati danisulebaa ertdroulad da ertmanettan momusave danartebis izolacia, rata ar moxdes monacemta arasasurveli damusaveba. programuli danartebis izolaciisatvis Windows gamoiyenebs `procesis~ cnebas, romelic misamartebis sivrces exeba. yovel process gamoeyofa 4 gigabaiti virtualuri mexsiereba. isini diskze sxvadasxva fizikuri misamartebitaa da ar gadaikveteba. procesebs aqvs miniwebuli gansazrvruli privilegiebi da operaciuli sistema akontrolebs mat, Tu romel operacias romeli procesis gamoyeneba SeuZlia. 78

79 III Tavi VISUAL STUDIO.NET FRAMEWORK-is WEB-gverdebis agebis instrumenti ASP.NET 3.1. Sesavali ASP.NET sistemasi ASP.NET (Active Server Pages aqtiuri serveruli gverdebi) aris NET-platformis nawili da teqnologia, romelic dinamikurad qmnis dokumentebs Web-serverze, roca isini moitxoveba HTTP-s sasualebit. ASP.NET teqnologia analogiuria PHP, ColdFusion da sxv. teqnologiebis, magram mat Soris mnisvnelovani gansxvavebacaa. ASP.NET, rogorc misi dasaxeleba gvicvenebs, Seiqmna specialurad NET platformastan sruli integraciis miznit, romlis nawilic itvaliswinebs C# enis mxardaweras. rogorc cnobilia, Web-gverdebis dasaprogrameblad gamoiyeneba iseti scenarebis enebi, rogoricaa VBScript an JScript. es skriptuli enebi musaobda, magram xsirad garkveul problemebs uqmnida daprogramebis `namdvili enebis programistebs sxvadasxva administratoruli davalebata Sesrulebisas, rac saboloo jamsi aisaxeboda sistemis mwarmoeblurobis daqveitebasi. maralganvitarebuli enebis gamoyenebis SemTxvevaSi, magalitad, SesaZlebelia musaobis procesis uzrunvelyofa sruli serveruli obieqturi modelit. ASP.NET axorcielebs mimartvas gverdis yvela mmartvel elementtan, rogorc zogadad garemos obieqtebtan. serveris mxaresac ki xorcieldeba wvdoma.net is yvela sawiro klastan. gverdebis martvis elementebi funqcionaluria da faqtobrivad, SesaZlebelia yvelafris gaketeba, rasac Windows-is formis klasebtan vaketebdit, rac ufro moqnils xdis sistemas. amis gamo ASP.NET-is gverdebs, romlebic qmnis HTML Sedgenilobas, xsirad uwodeben Webformebs. 79

80 3.2. ASP.NET is sabazo arqiteqtura ASP.NET gamoiyenebs internetis informaciul servers (IIS Internet Information Server) HTTP motxovnebze sapasuxo Sinaarsis misawodeblad. ASP.NET gverdebi motavsebulia failebsi.aspx gafartoebit. misi sabazo arqiteqtura ix. 3.1 naxazze. nax.3.1. sabazo arqiteqtura ASP.NET-is damusavebis dros misawvdomia.net-is yvela klasi, specialuri komponentebi, Seqmnili C# an sxva enebze, monacemta bazebi da a.s. faqtobrivad, saxezea yvela is SesaZlebloba, romelsac iyenebs C# danartis agebisas. e.i., C#-is gamoyeneba ASP.NET-Si efeqturs xdis danartis Sesrulebas. ASP.NET faili SeiZleba Seicavdes nebismier elements Semdegi siidan: - instruqciis damusaveba serveristvis; - kodebi enebze: C#, VB.NET, Jscript.NET an sxv., romelta mxardawera xdeba.net platformit; - Sinaarsi nebismieri formit, romelic generirdeba resursis saxit HTML it; - ASP.NET -is Cadgmuli serveruli martvis elementebi. 80

81 amgvarad, SesaZlebelia ASP.NET failis arseboba, romelic mxolod erti striqonisgan Sedgeba, magalitad, Hello:, yovelgvari sxva kodis an instruqciis garese. amis safuzvelze iqmneba dasabrunebeli HTML gverdi, romelsic motavsebulia arnisnuli teqsti. amgvarad, ASP.NET-is birtvia.net-is klasebis ertoblioba, romelic emsaxureba HTTP motxovnebis damusavebas. zogierti matgani am klasebidan gansazrvrulia sistemur nakrebsi (Assembly), rogorc.net-is sabazo klasebis bibliotekis nawili. zogi SeiZleba motavsebuli iyos globaluri kesis nakrebsi (GAC Global Assembly Cache), zogic SeiZleba CaitvirTos lokaluri nakrebidan, romelic gantavsebulia danartis virtualur katalogsi. yvela klasi, romlebic emsaxureba HTTP motxovnebs, CaitvirTeba danartis domensi (danartis are Application area) ASP.NET-is musa processi, da urtiertqmedebs ertmanettan, aformirebs motxovnebze pasuxebs. 3.2 naxazi asaxavs ASP.NET-is sabazo arqiteqturas doneebis mixedvit. igi 3.1 naxazis detalurad asaxsneladaa Semotanili. nax.3.2. sabazo arqiteqtura doneebis mixedvit 81

82 ASP.NET-is ZiriTadi siaxle mis winamorbedebtan SedarebiT isaa, rom aq yvla arsi aisaxeba klasis sasualebit, romelic nakrebidan CaitvirTeba. danartebis ageba ASP.NET-Si xdeba klasebis konstruirebit, romlebic urtiertmoqmedebs sxva klasebtan. zogi klasi iwarmoeba platformis sabazo klasebidan, zogs SeuZlia interfeisebis realizeba am platformasi, zogic urtiertqmedebs platformis sabazo klasebtan mati metodebis gamozaxebis gzit. ASP.NET-is klasikuri sintaksi isev SenarCunebulia, orondac misi kodebi, romlebic inaxeba nakrebis failebsi serveris mxares, gardaqmnilia klasebis gansazrvrebis saxit ASP gverdis kodis magalitebi qvemot, 3.1 listingsi mocemulia tradiciuli ASP gverdis martivi magaliti, romelsic JavaScript -is serveruli kodi Serwymulia HTML is statikur kodtan. am magalitsi nacvenebia ertdroulad ramdenime kodirebis metodika serveris mxares. kodsi motavsebulia scenaris bloki, romelic runat=server atributitaa warmodgenili da romelic Seicavs Add( ) funqcias. listingi 3.1: ASP gverdis magaliti <! -- faili test.asp -- > <%@ language = JScript %> <script language= JScript runat=server> function Add(x, y) return x + y; </script> <html> <body> <h1> ASP-is testirebis gverdi </h1> <h2> 2+2=<%=Add(2,2) %> </h2> <table border=2> <% 82

83 for (var i=0; i<10; i++) %> <tr><td> striqoni <%=i%> sveti-0 </td> <td> striqoni <%=i%> sveti-1 </td> </tr> <% %> </table> <% Response.Write( <h2> Cawerilia usualod Response-Si </h2> ); %> </body> </html> serveris mxareze sintaksi <%= gamoiyeneba Add() metodis gamosazaxeblad da Sedegis gamosatanad h2 elementsi, xolo scenaris sintaksi serveris mxareze <% ki cxrilis 10 striqonis programulad generirebisatvis. Cadgmuli obieqti Response gamoiyeneba am striqonebis bolosi h2 elementis programulad dasamateblad. ASP.NET-Si faili.asp miirebs faili.aspx tips, xolo kodis teqsti da Sedegebi iqneba msgavsi. ASP.NET- Si JScript-is enastan ertad gamoiyeneba sxva enebic, magalitad, C#.NET, VB.NET. 3.2 listingsi nacvenebia C#-is varianti: listingi 3.2: aspx gverdis magaliti C#-is da Page direqtivis gamoyenebit <! -- faili test.aspx -- > Page language = C# %> <script runat=server> function Add(int x, int y) return x + y; </script> <html> <body> <h1> ASP.NET-is testirebis gverdi </h1> <h2> 2+2=<%=Add(2,2) %> </h2> <table border=2> 83

84 <% for (var i=0; i<10; i++) %> <tr><td> striqoni <%=i%> sveti-0 </td> <td> striqoni <%=i%> sveti-1 </td> </tr> <% %> </table> <% Response.Write( <h2> Cawerilia usualod Response-Si </h2> ); %> </body> </html> direqtivasi Page ufro xsirad atavseben gverdis donis atributebs, romlebitac imarteba ASP.NET gverdebis gamotana. tradiciuli ASP (listingi 3.1.asp) da axali ASP.NET (listingi 3.2.aspx) Sedarebisas ganszxvaveba mati musaobis mwarmoeblurobasia. ASP aris interpretatori da yoveli axali gasvebisas misi JScript da HTML programebi interpretirdeba musa failebsi, rac moitxovs dros. ASP.NET ki kompilatoria, igi ertxel (pirveli Sesrulebis dros) qmnis musa failebs da Semdeg inaxavs mas kompilirebuli saxit.net is klasebsi. kompilirebuli klasi Seicavs rogorc serveruli scenarebis kodebs, aseve statikur HTML kodebs. Semdegi gasvebisas es kodebi itvirteba musa programebis saxit, ritac uzrunvelyofilia maralmwarmoebluroba. amgvarad, SeiZleba vtqvat, rom yoveltvis, rodesac iqmneba ASP.NET gverdi, masin iqmneba axali klasi Web.UI.Page klasi rogorc avrnisnet, yoveli gverdi kompilirdeba klasis gansazrvrebasi. amitomac sainteresoa, Tu rogor iqmneba klasi da rogor imarteba es procesi. 84

85 Cveni pirveli magalitistvis gamovitanot gverdis tipi da misi sabazo tipi. 3.3 naxazze nacvenebia.aspx faili da misi gamotana brouzerit. gverdis tipi da misi sabazo tipi damotanilia GetType( ) metodit da BaseType TvisebiT. <! -- faili ShowPageType.aspx -- > <%@ Page language = C# %> <html> <body> <h2> Show Page Type </h2> <% Response.Output.Write( <p>page type 0 </p>, this.gettype()); Response.Output.Write( <p>page base type 0 </p>, this.gettype().basetype); %> </body> </html> nax.3.3..aspx-faili da Sedegi VS-brouzerSi 85

86 3.5. ASP.NET-Si mdgomareobata martva ASP.NET-is gverdebis damaxasiatebeli Tvisebaa is, rom mat ar gaacnia mdgmareoba. Cveulebrivad aravitari informacia ar inaxeba serverze momxmarebelta motxovnebs Soris (Tumca arsebobs metodebi, romeltac sawiroebis SemTxvevaSi amis gaketeba SeuZlia). es sakitxi, Tavidan ucnaurad Cans, radgan mdgomareobebis martva interaqtiuli seansebistvis metad mnisvnelovania momxmareblistvis. am TvalsazrisiT ASP.NET gvtavazobs metad moxerxebul sasualebas aseti problemis gverdis asavlelad da seansebis martvis TiTqmis gamwvirvale procesis gansaxorcieleblad. arsebitad, informacia Web-formaze martvis elementebis mdgomareobata Sesaxeb (monacemebi, Setanili teqstur velebsi, amonarcevi komboboqsebidan da a.s.) inaxeba mdgomareobata asaxvis damalul velebsi (viewstate), romlebic gverdis Semadgeneli nawilia. igi generirdeba serveris mier da gadaecema momxmarebels. Tu SemdgomSi sawiro iqneba formis monacemta gadagzavnis tipis serveruli damusaveba, masin xdeba am informaciis dabruneba (postback) serverze. aq es informacia gamoiyeneba gverdis obieqturi modelis xelmeored Sesavsebad, lokaluri cvlilebebis xelit ganxorcielebis SesaZleblobiT (SemdgomSi am sakitxs praqtikulad SevexebiT). 86

87 3.6. ASP.NET აპლიკაციის შექმნის ეტაპები ASP.NET აპლიკაციის შესაქმნელად საჭიროა შემდეგი საფეხურების შესრულება: 1. პროგრამების პანელიდან ავირჩიოთ: Start->Programs->Microsoft Visual Studio.NET 2003 nax პროგრამის გაშვების შემდეგ აირჩიეთ მენიუს პუნქტი: File -> New -> Project. nax გაიხსნება ახალი პროექტების ტიპის არჩევის ფანჯარა. Project Types ფანჯარაში აირჩიეთ Visual C# Project, ხოლო Templates ფანჯარაში ASP.NET Web Application. Location ველში 87

88 შემდეგ აკრიფეთ აპლიკაციის სახელი, ამ შემთხვევაში აპლიკაციის სახელია FirstASPApplication. შემდეგ ღილაკი OK. nax Visual Studio შექმნის აპლიკაციას და გახსნის Microsoft Visual C#.NET გარემოში. nax.3.7 შექმნილ პროექტს შექმისთანავე შეიცავს რამდენიმე ფაილს: AssemblyInfo.cs Global.asax Web.config 88

89 WebForm1.aspx და WebForm1.aspx.cs AssemblyInfo.cs არის შეიცავს ინფორმაციას აპლიკაციის შესახებ, როგორიცაა აპლიკაციის სახელი, ავტორი, ვერსია და სხვა. Global.asax ფაილი ემსახურება აპლიკაციის დონის მოვლენების დამუშავებას, როგორიცაა შეცდომების დაჭერა, ახალი სესიის შექმნა, სესიის დასრულება და სხვა. Web.config არის XML ფაილი რომელიც შეიცავს აპლიკაციის კონფიგურაციის მონაცემებს: სესიის პარამეტრები, მონაცემთა ბაზასთან კავშირის პარამეტრები, მომხმარებლების ავტორიზაციასა და აუთენთიფიკაციის კონფიგურაციის პარამეტრები. WebForm1.aspx და WebForm1.aspx.cs ქმნიან ერთ ვებ-გვერდს. WebForm1.aspx ფაილი შეიცავს ვიზუალურ ელემენტებს, ხოლო WebForm1.aspx.cs ვებ-ფორმის კლასის მოვლენების დამუშავების მეთოდებს და ბიზნეს ლოგიკას. 5. შექმნილი ვებ-გვერდის ნახვა შესაძლებელია CTRL+F5 დაჭერით ან მენიუს პუნქტი Debug -> Start Without Debugging არჩევით: nax.3.8 გახსნილი ვებ-გვერდი ცარიელია, რადგან არ შეიცავს ვიზუალურ ელემენტებს ახალი ვებ-გვერდის შექმნა 89

90 შექმნილ აპლიკაციას დავამატოთ ახალი ASPX ვებ-გვერდი. ახალი ფაილის დამატება შესაძლებელია კლავიატურის ღილაკების კომბინაცის CTRL+SHIFT+A საშუალებით, ან მონიშნეთ პროექტი Solution Explorer ფანჯარაში, თაგუს მარჯვენა ღილაკზე დაჭერით გამოიძახეთ კონტექსტური მენიუ და აირჩიეთ: Add->Add New Item nax.3.9 გაიხსნება ახალი ფაილის არჩევის ფანჯარა, მარცხენა ფანჯარაში შესაძებელია ფაილების კატეგორიის არჩევა, ხოლო მარცხენაში ფანჯარაში წინასწარ განსაზღვრეული შაბლონებიდან შესაბამისი ტიპის ფაილების არჩევა. კატეგორიების ფანჯარაში აირჩიეთ UI ხოლო შაბლონების ფანჯარაში Web Form. Name ველში შეიყვანეთ ფაილის სასურველი სახელი: 90

91 nax.3.10 Open ღილაკზე დაჭერით პროექტს დაემატება ახალი ფაილი FirstPage.aspx და FirstPage.aspx.cs. გვერდი ავტომატურად გაიხსნება დიზაინის რეჟიმში. nax

92 3.8. ახალი გვერდის დამატება შაბლონის გამოყენების გარეშე შესძლებელია პროექტს დაემატოს ახალი ვებ-გვერდი შაბლონების გამოყენების გარეშე, ამისათვის გახსენით ახალი ფაილის დამატების ფანჯარა, მონიშნეთ Utility კატეგორია, შაბლონების ფანჯარაში აირჩიეთ Text file. Name ველში აკრიფეთ ფაილის სახელი და გაფართოება მიუთითეთ.aspx, მაგალითად აკრიფეთ BlankPage.aspx. nax.3.12 პროექტს დაემატება შესაბამის ფაილი რომელიც არის ცარიელი (არ შეიცავს HTML და C# კოდს) ფუნქციონალური ვებ-გვერდის შექმნა შევქმნათ ვებ-გვერდი რომელიც ვებ-ბრაუზერის ეკრანზე გამოტანს მიმდინარე თარიღსა და დროს: 92

93 1. შექმენით ASP.NET პროექტი და დაამატეთ ცარიელი ASPX გვერდი სახელით CurrentDate.aspx. 2. გახსენით ფაილი და აკრიფეთ შემდეგი ტექსტი: Page Language="C#" %> <html> <head> </head> <body> <p><%= System.DateTime.Now %></p> </body> </html> nax.3.13 გაუშვით პროექტი CTRL+F5 ღილაკების კომბინაციის აკრეფით, ან კონტექსტური მენიუში აირჩიეთ პუნქტი View in Browser. ვებ-ბრაუზერში დაინახავთ მიმდინარე თარიღს და დროს. მაგ.: :19:34. გვერდის დასაწყისში მოთავსებული Page Language="C#" %> მიუთითებს, რომ გვერდი უნდა დაკომპილირდეს C# ენის კომპილატორის საშუალებით. შესაძლებელია C# მაგივრად იყოს VB, რაც ნიშნავს, რომ გვერდის კოდი შექმნილია Visual Basic.Net ენით. ვებ-ბრაუზერში გვერდის გამოძახებისას, დირექტივაში მითითებული ენის კომპილატორი წაიკითხავს და შეასრულებს გვერდზე მოთავსებულ კოდს. <% %> ტეგებს შორის შესაძლებელია კოდის მოთავსება, რომელიც შესრულდება გვერდის გამოძახების პროცესში სერვერის მხარეს, ხოლო გამოსახულების შედეგი გადაეცემა ვებ-ბრაუზერს. გამოსახულება <%= System.DateTime.Now %> გვერდის გამოძახებისას დააბრუნებს მიმდინარე თარიღის და დროის მნიშვნელობას სერვერული კონტროლების გამოყენება ჩვეულებრივი HTML კონტროლების გარდაქმნა სერვერულ კონტროლებად შესაძლებელია მისთვის 2 ატრიბუტის დამატებით: Runat და ID. Runat ატრიბუტს მიენიჭება ყოველთვის მიენიჭება მნიშვნელობა Server, ხოლო ID ატრიბუტი წარმოადგენს 93

94 კონტროლის იდენტიფიკატორს-სახელს, რომლის საშუალებითაც შესაძლებელია მივმართოთ კონტროლს სერვერილი სკრიპტის კოდში. იგი უნდა იყოს უნიკალური და არ უნდა ემთხვეოდეს სხვა სერვერული კონტროლების იდენტიფიკატორებს. წინა მაგალითი შესაძლებელია შესრულებული იყოს სერვერული კონტროლის გამოყენებით: Page Language="C#" %> <% CurrentDate.InnerText = System.DateTime.Now.ToString(); %> <html> <head> </head> <body> <p id="currentdate" runat="server"></p> </body> </html> nax.3.14 <p> ტეგისთვის runat="server" ატრიბუტის მნიჭებით იგი გარდაიქმნა სერვერულ კონტროლად და შესაძლებელი გახდა გვერდის კოდში მისი მიმართვა Web-კონტროლების გამოყენება ვებ-კონტროლები სერვერული კონტროლების ნაირსახეობაა. ისინი HTML კონტროლების მსგავსია, ოგონდ უფრო მეტი, რთული თვისებები და მეთოდები გააჩნია. კლიენტის ვებ-გვერდზე ისინი გამოისახება როგორც ერთი ან რამდენიმე HTML კონტროლის სახით. გადავაკეთოთ წინა მაგალითი ვებ-კონტროლის გამოყენებით: <%@ Page Language="C#" %> <% CurrentDate.Text = System.DateTime.Now.ToString(); 94

95 %> <html> <head> </head> <body> <asp:label Runat="server" ID="CurrentDate"></asp:Label> </body> </html> nax.3.15 asp:label არის სერვერული კონტროლი რომელსაც გამოაქვს ტექსტი, რომელიც მას მიენიჭება Text ატრიბუტის საშუალებით Response ობიექტის გამოყენება Response ობიექტის მეთოდების საშუალებით შესაძლებელია კლიენტს ანუ ვებ-ბრაუზერს გაუგზავნოს მონაცემები. Page Language="C#" %> <html> <head> </head> <body> <% Response.Write(System.DateTime.Now); %> </body> </html> nax სერვერული ფუნქციის გამოყენება ვებ-გვერდზე სერვერული მეთოდები და ფუნქციები აღიწერება <script> ტეგის საშუალებით. Page Language="C#" %> <script runat="server"> string GetCurrentDateTime() return System.DateTime.Now.ToString(); 95

96 </script> <html> <head> </head> <body> <p><%=getcurrentdatetime()%></p> </body> </html> nax.3.17 ამ მაგალითში აღწერილია ფუნქცია GetCurrentDateTime(), რომელიც აბრუნებს მიმდინარე დროის მნიშველობას. ფუნქციის გამოძახება ხდება სერვერული სკრიპტის ტეგებს შორის სერვერული კონტროლების გამოყენება web-გვერდის მოვლენების დამუშავების პროცედურაში ASPX გვერდის გამოძახებისას ვებ-გვერდის ეკრანზე გამოტანამდე სრულდება რამდენიმე ეტაპი. გვერდზე სხვადასხვა მონაცემების გამოსატანად ძირითადად გამოიყენება გვერდის ჩატვირთვის ეტაპი: Page_Load. გვერდზე სერვერული მხარეს შესასრულებელი კოდი თავსდება <script> ტეგის საშუალებით, რომელსაც ენიჭება ატრიბუტი runat= server. Page Language= C# %> <html> <head> <script runat= server > void Page_Load(Object sender, EventArgs e) CurrentDate.Text = System.DateTime.Now.ToString(); </script> </head> <body> <asp:label Runat= server ID= CurrentDate ></asp:label> </body> </html> nax

97 3.15. Web-გვერდის ვიზუალური და პროგრამული ნაწილების განცალკევება ASP.NET გვერდები შესაძლოა შედგებოდეს 2 ფაილისგან: 1. ვიზუალური გვერდისგან, სადაც განთავსებულია HTML კოდი და კომპონენტები; 2. კოდის ფაილისგან, სადაც მუშავდება ვებ- ბრაუზერის მომხმარებლის მიერ ინიცირებული სხვადასხვა შეტყობინებები და ბიზნეს ლოგიკის პროცედურები და ფუნქციები. ეს მეთოდი ცნობილია Codebehind-ის სახელწოდებით. განვიხილოთ მაგალითი, ამ მეთოდის გამოყენებით: 1. შექმენით ახალი ვებ-აპლიკაცია ან გახსენით უკვე არსებული; 2. დაამატეთ ახალი ვებ-გვერდი VisualPage.aspx (ცარიელი ASPX ფაილი); 3. დაამატეთ ახალი C# ფაილი ProgramPage.cs (ცარიელი C# ფაილი); 4. VisualPage.aspx შეავსეთ HTML კოდით და სერვერული კონტროლებით: <%@ Page Language="C#" %> <html> <head> </head> <body> </body> </html> nax ProgramPage.cs ფაილში აკრიფეთ შემდეგი ტექსტი: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; public class ProgramPage : System.Web.UI.Page private void Page_Load(object sender, System.EventArgs e) 97

98 override protected void OnInit(EventArgs e) InitializeComponent(); base.oninit(e); private void InitializeComponent() this.load += new System.EventHandler(this.Page_Load); 6. VisualPage.aspx ფაილში <body></body> ტეგებს შორის დაამატეთ სერვერული კონტროლი: <body> <asp:label Runat="server" ID="CurrentDate"></asp:Label> </body> nax VisualPage.aspx გვერდის დასაწყისში დაამატეთ დირექტივა: Page language="c#" Codebehind="ProgramPage.cs" AutoEventWireup="false" Inherits="ProgramPage" %> ეს დირექტივა მიუთითებს, რომ ამ გვერდის მოვლენები დამუშავდება ფაილში ProgramPage.cs და გვერდის შესაბამისი კლასის სახელია ProgramPage. 8. VisualPage.aspx მოთავსებულია სერვერულ კონტროლზე მიმართვისთვის პროგრამის კოდში. საჭიროა ეს კონტროლი აღიწეროს ProgramPage.cs კლასში, ამიტომ მას დაამატეთ ველი: public class ProgramPage : System.Web.UI.Page protected System.Web.UI.WebControls.Label CurrentDate;... nax

99 System.Web.UI.WebControls.Label მიუთითებს რომ ამ ველის ტიპია სერვერული კონტროლი Label-ის კლასი. 9. მიმდინარე თარიღის და დროის გამოსატანად სერვერული კონტროლის საშუალებით გვერდის ჩატვირთვის მოვლენის დამუშავების პროცედურაში-Page_Load მეთოდში კონტროლის მიმართვა ხდება მისი იდენტიფიკატორის მიხედვით CurrentDate და მის ატრიბუტს Text მიენიჭება მიმდინარე თარიღი და დროის მნიშვნლეობა: private void Page_Load(object sender, System.EventArgs e) CurrentDate.Text = System.DateTime.Now.ToString(); nax ინტერაქტიული Web-გვერდის შექმნა შევქმნათ ვებ-გვერდი რომელზეც მომხმარებელი შეიყვანს საკუთარ მონაცემებს და გადააგზავნის სერვერზე. შექმენით ახალი ASP.NET აპლიკაცია სახელით Registration. დაამატეთ ფაილები Registration.aspx და Registration.aspx.cs. nax

100 ვებ-გვერდის მოთავსებულია სერვერული კონტროლები: form, asp:textbox, asp:textbox, asp:dropdownlist, asp:checkboxlist, asp:button, asp:label. გვერდის ჩატვირთვისადსს ღილაკზე დაჭერისას გამოიძახება onclick მოვლენაზე მიბმული მეთოდი Register_Click. გახსენით Registration.aspx და შეიყვანეთ შემდეგი კოდი: Page language="c#" Codebehind="Registration.aspx.cs" AutoEventWireup="false" Inherits="FirstASPApplication.Registration" %> <HTML> <HEAD> <title>რეგისტრაციის ფორმა</title> </HEAD> <body> <form method="post" runat="server" id="registration"> შეიყვანეთ საკუთარი მონაცემები: <table border="1"> <tr> <td>სახელი:</td> <td> <asp:textbox id="firstname" runat="server"></asp:textbox></td> </tr> <tr> <td>გვარი:</td> <td> <asp:textbox id="lastname" runat="server"></asp:textbox></td> </tr> <tr> <td>სქესი:</td> <td><asp:radiobuttonlist id="sex" runat="server" RepeatDirection="Horizontal"> <asp:listitem Value="მდედრობითი"></asp:ListItem> <asp:listitem Value="მამრობითი"></asp:ListItem> </asp:radiobuttonlist></td> </tr> <tr> <td>ქალაქი</td> <td><asp:dropdownlist id="city" runat="server"> <asp:listitem Value="თბილისი"></asp:ListItem> 100

101 <asp:listitem Value="ქუთაისი"></asp:ListItem> <asp:listitem Value="რუსთავი"></asp:ListItem> <asp:listitem Value="გორი"></asp:ListItem> <asp:listitem Value="ბათუმი"></asp:ListItem> <asp:listitem Value="თელავი"></asp:ListItem> </asp:dropdownlist></td> </tr> <tr> <td>ინტერესების სფერო:</td> <td> <asp:checkboxlist id="interests" runat="server"> <asp:listitem Value="საინფორმაციო ტექნოლოგიები"></asp:ListItem> <asp:listitem Value="სამართალმცოდნეობა"></asp:ListItem> <asp:listitem Value="ეკონომიკა და მენეჯმენტი"></asp:ListItem> <asp:listitem Value="სამშენებლო სფერო"></asp:ListItem> </asp:checkboxlist>æ/td> </tr> </table> <asp:button id="register" runat="server" Text="რეგისტრაცია"></asp:Button> <br /> <asp:label id="message" runat="server"></asp:label> </form> </body> </HTML> nax.3.24 გახსენით Registration.aspx.cs და შეიყვანეთ შემდეგი კოდი: using System; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; // გაგრძელება შემდეგ გვერდზე 101

102 namespace FirstASPApplication public class Registration : System.Web.UI.Page protected System.Web.UI.WebControls.TextBox FirstName; protected System.Web.UI.WebControls.TextBox LastName; protected System.Web.UI.WebControls.RadioButtonList Sex; protected System.Web.UI.WebControls.DropDownList City; protected System.Web.UI.WebControls.CheckBoxList Interests; protected System.Web.UI.WebControls.Label Message; protected System.Web.UI.WebControls.Button Register; private void Register_Click(object sender, System.EventArgs e) StringBuilder sb = new StringBuilder(); sb.append("თქვენი მონაცემები<br>"); sb.appendformat("სახელი: 0<br>", FirstName.Text); sb.appendformat("გვარი: 0<br>", LastName.Text); sb.appendformat("სქესი: 0<br>", Sex.SelectedValue); sb.appendformat("ქალაქი: 0<br>", City.SelectedValue); sb.append("ინტერესები: "); foreach(listitem item in Interests.Items) if(item.selected) sb.appendformat("0, ", item.value); sb.append("<br>მადლობთ რეგისტრაციისთვის"); Message.Text = sb.tostring(); override protected void OnInit(EventArgs e) InitializeComponent(); base.oninit(e); private void InitializeComponent() this.register.click += new System.EventHandler(this.Register_Click); nax

103 ვებ-გვერდი და მისი შესრულების შედეგი ჩანს 3.26 ნახაზზე: nax კონფიგურაციის ფაილები და მათი იერარქია. ვებ-აპლიკაციათა სერვერების ერთ-ერთი მთავარი მოთხოვნაა კონფიგურაციის მდიდარი და მოქნილი საშუალებების ქონა. ეს მექანიზმი საშუალებას იძლევა, რომ აპლიკაციის კოდში რომელიმე პარამეტრის მნიშვნელობა არ იყოს სტატიკურად აღწერილი და იყოს შესაძლებელი მისი ცვლილება აპლიკაციის კოდში შესწორებების შეტანის და რეკომპილაციის გარეშე. აგრეთვე ვებ სერვერების და აპლიკაციების ადმინისტრატორებს საშუალებას აძლევს ადვილად ცვალონ პარამეტრები აპლიკაციის გაშვების შემდეგ. კონფიგურაციის ფაილები არის XML ფორმატის, რომელიც შეიცავს აპლიკაციის კონფიგურაციის მონაცემებს: სესიის პარამეტრები, მონაცემთა ბაზასთან კავშირის პარამეტრები, მომხმარებლების ავტორიზაციასა და აუთენთიფიკაციის კონფიგურაციის პარამეტრები და სხვა. 103

104 კონფიგურაციის ფაილებში ცვლილებები ავტომატურად აღიქმება სისტემის მიერ და არ საჭიროებს სერვერის გადატვირთვას. უმეტეს შემთხვევაში კონფიგურაციის ფაილი მოთავსებულია აპლიკაციის ფესვურ დირექტორიაში. web.config არის სპეციალური ფაილი რომელშიც აღწერილი პარამეტრები გამოიყენება დირექტორიაში არსებული ფაილების და კლასების მიერ. კონფიგურაციის პარამეტრის მნიშვნელობის დადგენა ხდება კონგიგურაციის მთელი იერარქიის დონეების გავლით. თუ პარამეტრის მნიშვნელობა განსაზღვრულია სხვადასხვა დონეებზე, მაშინ მისი იერარქიაში ყველაზე ზედა დონეზე მინიჭებული მნიშვნელობა ASP.NET -ში არის კონფიგურაციის იერარქიული სტრუქტურა: სერვერის(მანქანური), ვებ-საიტის, აპლიკცაიის, აპლიკაციის ქვეკატალოგების დონეებზე. კონფიგურაციის ფაილების დონეები და შესაძლო ფიზიკური მისამართები: - მანქანური: C:\WinNT\Microsoft.NET\Framework\v.1.00\ config\machine.config - Web-სერვერის: C:\inetpub\wwwroot\web.config - Web-საიტის: D:\MyApplication\web.config - Web-საიტის ქვედირექტორიის: D:\MyApplication\MyDir \web.config machine.config და web.config ფაილების XML ფაილებია და ფესვური ელემენტია: <configuration>. კონფიგურაციის ფაილის მაგალითი: <?xml version="1.0" encoding="utf-8"?> <configuration> <appsettings> <add key="mysetting" value="mysettingvalue"></add> </appsettings> <system.web> <compilation defaultlanguage="c#" debug="true" /> <customerrors mode="remoteonly" /> <authentication mode="windows" /> <authorization> <allow users="*" /> 104

105 </authorization> <trace enabled="false" requestlimit="10" pageoutput="false" tracemode="sortbytime" localonly="true" /> <sessionstate mode="inproc" cookieless="false" timeout="20" /> <globalization requestencoding="utf-8" responseencoding="utf-8" /> </system.web> </configuration> კონფიგურაციის ფაილების საშუალებით შესაძლებელია განისაზღვროს ცალკეული ვებ-გვერდების და ქვედირექტორიების პარამეტრები <location> ტეგის საშუალებით: <configuration> <location path="englishpages"> <appsettings> <add key="bgcolor" value="red"></add> </appsettings> </location> <location path="englishpages/onejapanesepage.aspx"> <appsettings> <add key="bgcolor" value="green"></add> </appsettings> </location> </configuration> ამ შემთხვევაში EnglishPages ქვეკატალოგში არსებულ გვერდებზე BgColor პარამეტრს ენიჭება Red მნიშვნელობა. მხოლოდ OneJapanesePage.aspx გვერდზე ექნება BgColor პარამეტრს განსხვავებული მნიშვნელობა. შემდეგ მაგალითში კონფიგურაციის ფაილის საშუელაბით განსაძრვრულია რომ აპლიკაციის სესიის დასრულების დრო არის 20 წუთი. ანუ მომხმარებლის სესია დასრულდება მისი ბოლო აქტიურობიდან 20 წუთის შემდეგა და სესიაში დამახსოვრებული მონაცემები დაიკარგება. <configuration> <system.web> <sessionstate timeout="20" /> </system.web> </configuration> 105

106 შემდეგ მაალითში მოყვანილია თუ როგორ არის შესაძლებელი პროგრამის კოდში კონფიგურაციის პარამტრების მნიშვნელობის გაგება. კონფიგურაციის პარამეტრების წვდომისთვის გამოიყენება ConfigurationSettings კლასის სტატიკური ფუნქცია AppSettings. ამ შემთხვევაში კონფიგურაციის ფაილიდან ხდება მომხმარებლის მიერ განსაზღვრული პარამეტრის BgColor მნიშვნელობის დადგენა და მისი მინიჭება ვებ გვერდის BODY ტეგის BgColor ატრიბუტისთვის. // ფაილი web.config: <?xml version="1.0" encoding="utf-8"?> <configuration> <appsettings> <add key="bgcolor" value="red"></add> </appsettings> </configuration> // ფაილი WebForm6.aspx.cs: using System; using System.Web; using System.Configuration; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace NewProject public class WebForm1 : System.Web.UI.Page protected System.Web.UI.WebControls.Panel panel1; private void Page_Load(object sender, System.EventArgs e) String settingvalue = ConfigurationSettings.AppSettings["BgColor"]; panel1.backcolor = System.Drawing.Color.FromName(settingValue); 106

107 შედეგად გვერდის ჩატვირთვისას panel1 ელემენტის ფონური ფერი იქნება წითელი ნახ.3.27 ხოლო თუ web.cofig ფაილში შევცვლით BgColor-ის მნიშვნელობას სხვა ფერის დასახელებით, მაგალითად მწვანე ფერით: <add key="bgcolor" value="green"></add> შედეგად panel1 ელემენტის ფონური ფერი იქნება მწვანე: ნახ HTTP konveieri. misi Sinagani struqtura. klasebi, movlenebi, specializebuli dammusaveblebi da modulebi ASP.NET - ის პლატოფორმა აგებულია მოთხოვნების დამუშავების გაფართოებად არქიტექტურაზე, რომელსაც HTTP კონვეიერი ეწოდება. ყოველი გვერდის გამოძახებისას სრულდება კონვეიერში არსებული სხვადასხვა კლასების გამოძახება, რომლებიც ამ მოთხოვნის დამუშვებას ემსახურება. კონვეიერის გაფართოება სხვა კლასების დამატებით შესაძლებელია სამი გზით: 107

108 სპეციალიზებული აპლიკაციით, სპეციუალური დამმუშავებლით და სპეციუალური მოდულით. სპეციალური აპლიკაცია იქმნება ახალი კლასის შექმნით HttpApplication საბაზო კლასით. სპეციალური აპლიკაცია გამოიყენება აპლიკაციის დონის დავალებების შესასრულებლად სხვადასხვა მოვლენების დაჭერით და მათი დამუშავების გზით. ვებ პროექტში Global.asax ფაილის დამატებისას აპლიკაციას ემატება კლასი რომელიც წარმოადგენს სპეციალურ აპლიკაციას. ამ კლასის საშუალებით შესაძლებელია სხვადასხვა მოვლენების დაჭერა. მაგალითად, თითოეული მოთხვნის დაწყება და დასასრული, სესიის დაწყება და დასასრული, შეცდომის მოვლენა და სხვ. მასში არსებული ფუნქციონალობის და რესურსებზე წვდომა შესაძლებელია Page და HttpContext კლასების ApplicationInstance თვისების საშაუალებით. თუ აპლიაკცაის დავამატებთ ფაილს Globa.asax რომელშიც გადატვირთულია მეთოდები Application_BeginRequest, Application_EndRequest ამ აპლიკაციაში ყველა გვერდის გამოძახებისას გვერიდის ბოლოში გამოჩნდება გვერდის დამუშავების დრო: // ფაილი Globa.asax: using System; using System.Collections; using System.ComponentModel; using System.Web; using System.IO; using System.Data; using System.Web.SessionState; namespace NewProject public class Global : System.Web.HttpApplication protected void Application_BeginRequest(Object sender, EventArgs e) this.context.items["starttime"] = DateTime.Now; protected void Application_EndRequest(Object sender, EventArgs e) 108

109 DateTime start = (DateTime)this.Context.Items["startTime"]; TimeSpan ts = DateTime.Now - start; this.context.respsonse.output.write("<br />დამუშავების დრო შეადგენს=0",ts); ყოველი გვერდის ბოლოში იქნება შეტყობინება, რომელიც გვერდის გამოძახების დაწყებიდან მის გამოძახების დასრულებამდე გავიდა: ნახ.3.29 სპეციალური დამმუშავებელი არის კლასი რომლის ბაზური ინტერფეისია IhttpHandler. რომ შევძლოთ ამ დამმუშვებლის გამოძახება აგრეთვე საჭიროა კონფიგურაციის ფაილში ინფორმაციის დამატება, რომელიც მიუთითებს, თუ როდის უნდა მოხდეს ამ კლასის გამოძახება. ასეთი დამმუშავებლის შექმნის მარტივი ხერხია აპლიკაციაში ashx გაფართოების ფაილის დამატება, რაც კონფიგურაციაში დამატებითი პარამეტრების რეგისტრირებას აღარ საჭიროებს. შემდეგ სპეციალურ დამმუშავებელში რეალიზებულია კალკულაციის რამდენიმე ფუნქცია. // ფაილი CalcHandler: <%@ WebHandler Language="C#" Class="CalcHandler" %> using System; using System.Web; public class CalcHandler : IHttpHandler public void ProcessRequest(HttpContext context) int a = Int32.Parse(context.Request["a"]); int b = Int32.Parse(context.Request["b"]); switch(context.request["op"]) 109

110 case "add": context.response.output.write("0+1=2",a,b,a+b); break; case "substract": context.response.output.write("0-1=2",a,b,a-b); break; case "multiply": context.response.output.write("0*1=2",a,b,a*b); break; default: context.response.output.write("ოპერაციის ტიპი უცნობია"); break; public bool IsReusablegetreturn true; ამ დამმუშავებლის გამოყენება შესაძლებელია თუ გამოვიძახებთ ამ ფაილს და გადავცემთ მას საჭირო პარამეტრებს. მაგალითად: ნახ

111 3.19. Secdomebis diagnostika. trasireba da monitoris mwarmoeblurobis mtvlelebi. gamartvis procesi ASP.NET იძლევა აპლიკაციის მონიტორინგის და სხვადასხვა პრობლემების დიაგნოზის საშუალებას, როგორც შექმნის პროცესში ასევე მისი გაშვების შემდეგაც. ტრასირება ტრასირება საშუალებას იძლევა პროგრამის მუშაობის პროცესში შემოწმდეს სხვადასხვა ცვლადების მნიშვნელობები, გამოვიდეს შეტყობინებები, სესიის, აპლიკაციის, Cookies-ის მონაცემები და სხვა. ცალკეული ვებ-გვერდისთვის ტრასირების ჩასართავად გამოიყენება დირექტივა: Page Trace="true" %> // ფაილი WebForm1.aspx Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" Trace="true" %> <HTML> <HEAD> <title>webform1</title> </HEAD> <body> <form id="form1" method="post" runat="server"> <TABLE cellspacing="0" cellpadding="0" border="0"> <TR> <TD>სახელი:</TD> <TD> <asp:textbox id="txtfirstname" runat="server"></asp:textbox></td> </TR> <TR> <TD>გვარი:</TD> <TD> <asp:textbox id="txtlastname" runat="server"></asp:textbox></td> </TR> <TR> <TD>ასაკი:</TD> <TD> <asp:textbox id="txtage" runat="server"></asp:textbox></td> 111

112 </TR> <TR> <TD></TD> <TD> <asp:button id="btnsave" runat="server" Text="დამახსოვრება"></asp:Button></TD> </TR> </TABLE> </form> </body> </HTML> ღილაკზე დაჭერის შემთხვევაში მოხდება ტრასირების ინფორმაციაში მომხმარებლის მიერ საკუთარი მონაცემების დამატება, მაგალითად: Trace.Write("UserDefined", String.Format("Session[\"Age\"] = 0", Session["Age"])); Trace.Warn() მეთოდით გამოტანილი შეტყობინებები წითელი ფერისაა. ფაილი WebForm1.aspx-ის ფრაგმენტი: private void btnsave_click(object sender, System.EventArgs e) Session["FirstName"] = txtfirstname.text; Session["LastName"] = txtlastname.text; Session["Age"] = Int32.Parse(txtAge.Text); Trace.Warn("სესიაში შენახული მონაცემები:"); Trace.Write("UserDefined", String.Format("Session[\"FirstName\"] = 0", Session["FirstName"])); Trace.Write("UserDefined", String.Format("Session[\"LastName\"] = 0", Session["LastName"])); Trace.Write("UserDefined", String.Format("Session[\"Age\"] = 0", Session["Age"])); 112

113 ამ გვერდის ბრაუზერში ნახვისას გამოვა შემდეგი სახის ინფორმაცია (ნახ.3.30-ა,ბ): ნახ.3.30-ა ნახ.3.30-ბ შესაძლებელია აგრეთვე ტრასირების ჩართვა აპლიკაციის დონეზე: 113

114 <configuration> <system.web> <trace enabled="true" enabled="true" tracemode="sortbycategory" requestlimit="40" pageoutput="false" localonly="true" /> </system.web> </configuration> ამ შემთხვევაში ტრასირება ყველა გვერდისთვის არის ჩართული და მისი გამოტანა შესძლებელია trace.axd ფაილის გამოძახების საშუალებით, რომელიც უნდა მიეთითოს ვებ აპლიკაციის დასახელების შემდეგ. ამ დროს ინახება requestlimit პარამეტრით განსაზღვრული ვებ-გვერდების გამოძახების რაოდენობა. ნახ.3.31 View Details დაჭერით შესაძლებელია თითოელ ვებ გვერდის გამოძახებასთან დაკავშირებული ტრასირების ინფორმაციის მიღება. შეცდომების დამუშვება კონფიგურაციის ვებ-საიტის ფაილის დონეზე: 114

115 <configuration> <system.web> <customerrors mode="remoteonly" defaultredirect="/genericerror.htm"> <error statuscode="500" redirect="/error/callsupport.htm" /> <error statuscode="404" redirect="/error/notfound.aspx" /> <error statuscode="403" redirect="/error/noaccess.aspx" /> </customerrors> </system.web> </configuration> defaultredirect მიუთითებს, რომ თუ შეცდომების კოდების ჩამონათვალში გათვალისწინებული შეცდომისგან განსხვავებული შეცდომა მოხდება საიტი გადამისამართდეს მითითებულ გვერდზე. ვებ-გვერდის შეცდომის დამუშავება შესაძლებელია ვებ- გვერდის კლასის მეთოდში. ეს მეთოდი ავტომატურად გამოიძახება ამ გვერდზე შეცდომის შემთხვევაში: private void Page_Error(object sender, EventArgs e) Response.Write(Server.GetLastError().Message); Server.ClearError(); აპლიკაციის დონეზე შეცდომების დაჭერა და დამუშვება შესაძლებელია Global.asax ფაილში. იგი შეიცავს მეთოდს, რომელიც შეცდომის დროს გამოიძახება ავტომატურად. შემდეგ მაგალითში მოცემულია შეცდომის დამუშვება, შეცდომის შესახებ ინფორმაციის ჩაწერა Windows -ის მოვლენათა რეესტრში (EventLog): void Application_Error(Object sender, EventArgs e) String Message = "\n\nurl:\n + Request.Path + "\n\nmessage:\n " + Server.GetLastError().Message + "\n\nstack TRACE:\n" + Server.GetLastError().StackTrace; String LogName = "Application"; if (!EventLog.SourceExists(LogName)) 115

116 EventLog.CreateEventSource(LogName, LogName); EventLog Log = new EventLog(); Log.Source = LogName; Log.WriteEntry(Message, EventLogEntryType.Error); SemowmebaTa sistema klientisა da serveris mxares ASP.NET-ში სტანდარტულ კონტროლებს შორის არის აგრეთვე სერვერული კონტროლები, რომლებიც საშუალებას იძლევა შემოწმდეს მომხმარებლის მიერ ვებ-გვერდზე შეტანილი მონაცემები. არსებობს სხვადასხვა ტიპის შემოწმების კონტროლები, როგორიცაა მნიშვნელობის რაიმე განსაზღვრულ დიაპაზონში შემოწმება, განსაზღვრული შაბლონის მსგავსებაზე შემოწმება, აგრეთვე შემოწმება კონტროლში შეტანილია თუ არა მნიშვნელობა. შემოწმების კონტროლებია: RequiredFieldValidator - ამოწმებს შევსუებული თუ არა კონტროლი CompareValidator - ადარებს ორი კონტროლის მნიშნველობებს RangeValidator - ამოწმებს შეტანილი მნიშვნელობა არის თუ არა განსაზღვრულ საზღვრებში. RegularExpressionValidator - ამოიწმებს ეთანხმება თუ არა შეტანილი მნიშვნელობა განსაზღვრულ შაბლონურ გამოსახულებას. CustomValidator - საშუალებას იძლევა მომხმარებლის მიერ განისაზღვროს შემოწმების ლოგიკა. ValidationSummary - გამოაქვს შეტყობინება შეცდომების შესახებ, რომლებსაც აბრუნებს ვალიდაციის კონტროლები. შემოწმება, როგორც წესი ხდება სერვერის მხარეს, თუმცა თუ ვებ-ბროუზერს უზრუნველყოფს DHTML სტანდარტს, შესაძლებელია შესრულდეს შემოწმება კლიენტის მხარეს. ამ შემთხვევაში არ ხდება გვერდის გადაგზავნა სერვერზე, სანამ 116

117 ყველა შემოწმების კონტროლი არ იქნება დასაშვები. როცა კონტროლი არავალიდურია, მაშინ ეკრანზე გამოდის კონტროლის Text ატრიბუტის მნიშვნელობა. შემდეგ მაგალითში ნაჩვენებია RequiredFieldValidator შემოწმების კონტროლის გამოყენების ხერხი. ეს კონტროლი ამოწმებს შეტანილი არის თუ არა კონტროლში რაიმე მნიშვნელობა. თუ მომხმარებელი შეიტანს რაიმე მნიშვნელობას, მაშინ ის შემოწმების კონტროლი არის ვალიდური. თუ ყველა შემოწმების კონტროლი ვალიდურია, მაშინ ვებ გვერდიც ვალიდურია: <html> <head> <script language="c#" runat="server"> void ValidateBtn_Click(Object Sender, EventArgs E) if (Page.IsValid == true) lbloutput.text = "გვერდი ვალიდურია!"; else lbloutput.text = "ველის მნიშვნელობა ცარიელია"; </script> </head> <body> <form runat="server" ID="Form1"> <table> <tr> <td colspan="3"> <asp:label ID="lblOutput" Text="შეავსეთ ველი" runat="server" /><br> </td> </tr> <tr> <td align="right"> სახელი: </td> <td> <ASP:TextBox id="textbox1" runat="server" /> </td> <td> 117

118 <asp:requiredfieldvalidator id="requiredfieldvalidator2" ControlToValidate="TextBox1" Display="Static" Width="100%" runat="server" ErrorMessage="შეავსეთ ველი"> </asp:requiredfieldvalidator> </td> </tr> <tr> <td></td> <td> <ASP:Button id="button1" text="validate" OnClick="ValidateBtn_Click" runat="server" /> </td> <td></td> </tr> </table> </form> </body> </html> თუ მომხმარებელი ველს დატოვებს შეუვსებელს, მაშინ ღილაკზე დაჭერის შემდეგ: ნახ.3.32-ა ველის შევსების შემთხვევაში ღილაკზე დაჭერის შემდეგ გამოვა შემდეგი ეკრანი; ნახ.3.32-ბ განვიხილოთ CompareValidator (შედარების) კონტროლი. ეს კონტროლი ამოწმებს ორი სხვადასხვა ველის მნიშვნელობას. ამ 118

119 კონტროლის ატრიბუტში ControlToValidate მიეთთება კონტროლის იდენტიფიკატორი, რომლის მნიშვნელობაც უნდა შემოწმდეს, ხოლო ატრიბუტით ControlToCompare კონტროლის იდენტიფიკატორი, რომლის მნიშვნელობასთანაც უნდა შემოწმდეს. თუ ამ კონტროლების მნიშვნელობები აკმაყოფილებს შედარების პირობებს, მაშინ CompareValidator ის მნიშვნელობა ვალიდურია. Page clienttarget=downlevel %> <HTML> <HEAD> <script language="c#" runat="server"> void Button1_OnSubmit(Object sender, EventArgs e) if (comp1.isvalid) lbloutput.text = "Result: Valid!"; else lbloutput.text = "Result: Not valid!"; </script> </HEAD> <body> <form runat="server" ID="Form1"> <table> <tr> <td> String 1: <asp:textbox id="txtcomp" runat="server"></asp:textbox> </td> <td> String 2 <asp:textbox id="txtcompto" runat="server"></asp:textbox> </td> </tr> </table> <asp:button runat="server" Text="Validate" ID="Button1" onclick="button1_onsubmit" /> <br> 119

120 <asp:comparevalidator id="comp1" ControlToValidate="txtComp" ControlToCompare="txtCompTo" Type="String" runat="server" Operator="GreaterThan" /> <br> <asp:label ID="lblOutput" runat="server" /> </form> </body> </HTML> ნახ CustomValidator კონტროლის გამოყენება: CustomValidator კონტროლი ძირითადად გამოიყენება, მაშინ როცა ვალიდაციის სხვა სტანდარტული კონტროლების მიერ რაიმე პირობების შემოწმება ვერ ხერხდება. ამისთვის ეს კონტროლი იძახებს მომხარებლის მიერ განსაზღვრულ ფუნქციას, რომელშიც შესაძლებელია სხვადასხვა პირობის შემოწმება. შესაძლებელია განისაზღვროს როგორც კლიენტის მხარეზე შემოწმების ფუნქცია, ასევე სერვერულ მხარეზეც. ClientValidationFunction ატრიბუტით განისაზღვრება კლიენტური მხარის ფუნქცია, ხოლო OnServerValidate ატრიბუტით სერვერული მხარის. შემდეგ მაგალითში CustomValidator კონტროლის გამოყენებით მოწმდება შეყვანილი ციფრი ლუწია თუ კენტი. შემოწმება სრულდება როგორც კლიენტის ასე სერვერის მხარეს: <html> <head> <script language="c#" runat="server"> void ValidateBtn_OnClick(object sender, EventArgs e) if (Page.IsValid) lbloutput.text = "Page is valid!"; else 120

121 lbloutput.text = "Page is not valid! :-("; void ServerValidate(object source, ServerValidateEventArgs value) // even number? try int num = Int32.Parse(value.Value); if (num%2 == 0) value.isvalid = true; return; catch (Exception) value.isvalid = false; </script> </head> <body> <h3><font face="verdana">customvalidator Example</font></h3> <p> <form runat="server" ID="Form1"> <asp:label id="lbloutput" runat="server" Text="Enter an even number:" /><br> <p> <asp:textbox id="text1" runat="server" /> <asp:requiredfieldvalidator id="requiredfieldvalidator1" runat="server" ControlToValidate="Text1" ErrorMessage="Please enter a number" Display="Dynamic" ></asp:requiredfieldvalidator> <asp:customvalidator id="customvalidator1" runat="server" ControlToValidate="Text1" ClientValidationFunction="ClientValidate" OnServerValidate="ServerValidate" Display="Static"> Not an even number! </asp:customvalidator> <p> <asp:button text="validate" onclick="validatebtn_onclick" runat="server" ID="Button1" /> <script language="javascript"> function ClientValidate(source, arguments) 121

122 // even number? if (arguments.value%2 == 0) arguments.isvalid = true; else arguments.isvalid = false; </script> </form> </body> </html> - ValidationSummary კონტროლის გამოყენება: ამ კონტროლის საშუალებით შესაძლებელია ვალიდაციის კონტროლების შეტყობინებების გამოტანა ერთ სიაში ვებ გვერდის ერთ კონტრეტულ ადგილზე. სხვა ვალიდაციის კონტროლებს აქვთ განსაზღვრული შეცდომის შესახებ შეტყობინბეა, ატრიბუტით ErrorMessage. ამ ატრიბუტის მნიშვნელობა გამოჩნდება ValidationSummary კონტრლოში. ამ კონტრლის გამოყენებით კონტროლების მნიშვნელობების შედარების მაგალითი შესაძლებელია გადაკეთდეს შემდეგნაირად: <%@ Page clienttarget=downlevel %> <HTML> <HEAD> <script language="c#" runat="server"> void Button1_OnSubmit(Object sender, EventArgs e) if (comp1.isvalid) lbloutput.text = "Result: Valid!"; else lbloutput.text = "Result: Not valid!"; </script> </HEAD> <body> <form id="form1" runat="server"> <table> <tr> 122

123 <td>string 1: <asp:textbox id="txtcomp" runat="server"></asp:textbox></td> </tr> <tr> <td>string 2 <asp:textbox id="txtcompto" runat="server"></asp:textbox></td> </tr> </table> <asp:validationsummary id="validationsummary1" runat="server"></asp:validationsummary><asp:button id="button1" onclick="button1_onsubmit" runat="server" Text="Validate"></asp:button> <br> <asp:comparevalidator id="comp1" runat="server" Type="String" ControlToCompare="txtCompTo" ControlToValidate="txtComp" Operator="GreaterThan" ErrorMessage="არ არის მეტი!" Display="None"></asp:comparevalidator> <asp:label id="lbloutput" runat="server"></asp:label></form> </body> </HTML> ნახ

124 3.21. ASP.NET paketsi monacemebtan musaoba ASP.NET-ში მონაცემებთან მუშაობა საკმაოდ მარტივია. სტანდარტულ ელემენტებს შორის არის მონაცემების გამოტანის და დამუშვების ელემენტებიც. ამ ელემენტების თვისება DataSource და მეთოდი DataBind უზრუნველყოფენ მონაცემთა მიბმას კონტორლებზე. DataSource თვისებას ენიჭება მონაცემთა კოლექცია, მაგალითად მონაცემთა მასივი (კლასის ობიექტი, რომელშიც რეალიზებულია IDataReader ინტერფეისი), ან ობიექტი კლასისა DataSet. როდესაც მზადაა მონაცემების წყარო, რომ მოხდეს მისი წაკითხვა, იძახებენ მეთოდს DataBind(). ამის შემდეგ ელემენტი კითხულობს მონაცემებს და გამოაქვს ეკრანზე გამოტანისთვის საჭირო ფორმატით. მონაცემების მიბმას უზრულველყოფს სხვადასხვა ელემენტები, ისეთი მარტივი როგორიცაა, მაგალითად ListBox, CheckBoxList, RadioButtonList, DropDownList და სპეციალური ელემენტები DataGrid, DataList DataRepeater. ამ ელემენტებზე შესაძლებელია.NET-ში აღწერილი კოლექციის კლასების ობიექტების მიბმა. შემდეგ მაგალითშია ნაჩვენები, მონაცემების ელემენტებზე მიბმის ნიმუში. მონაცემები ინახება ArrayList ტიპის ობიექტში, რომელიც ებმება ელემენტების DataSource თვისებას და შემდეგ გმოიძახება ვებ-გვერდის DataBind() მეთოდი, რომლის საშუალებითაც სრულდება ამ ვებ გვერდზე არსებული ყველა ელემენტისთვის DataSource პარამეტრით მინიჭებული მონაცემების გამოტანა ვებ-ბრაუზერში. ფაილი WebForm12.aspx.cs: Page language="c#" Codebehind="WebForm12.aspx.cs" AutoEventWireup="false" Inherits="NewPRoject.WebForm12" %> <HTML> <HEAD> </HEAD> <body> <form id="form1" method="post" runat="server"> <asp:dropdownlist id="ddl1" runat="server"></asp:dropdownlist><br> <asp:listbox id="lb1" runat="server"></asp:listbox><br> 124

125 <asp:checkboxlist id="cbl1" runat="server"></asp:checkboxlist><br> <asp:radiobuttonlist id="rbl1" runat="server"></asp:radiobuttonlist> </form> </body> </HTML> ფაილი WebForm12.aspx.cs (ფრაგმენტი): public class WebForm12 : System.Web.UI.Page protected System.Web.UI.WebControls.DropDownList ddl1; protected System.Web.UI.WebControls.ListBox lb1; protected System.Web.UI.WebControls.CheckBoxList cbl1; protected System.Web.UI.WebControls.RadioButtonList rbl1; private void Page_Load(object sender, System.EventArgs e) if(!page.ispostback) ArrayList vals = new ArrayList(); vals.add("ჩანაწერი1"); vals.add("ჩანაწერი2"); vals.add("ჩანაწერი3"); vals.add("ჩანაწერი4"); ddl1.datasource = vals; lb1.datasource = vals; cbl1.datasource = vals; rbl1.datasource = vals; Page.DataBind(); ბრაუზერში გამოვა შედეგი: ნახ

126 ვებ-გვერდიდან მონაცემთა ბაზასთან დაკავშირება სრულდება ADO.NET ტექნოლოგიის გამოყენებით. არსებობს მონაცემების ბაზიდან ამოღების 2 მეთოდი: IDataReader ინტერფეისის ნაკადის და DataSet -ის კლასისი ობიექტის საშუალებით. ყველაზე ეფექტური მეთოდი მონაცემების ამოღების არის IDataReader ინტერფეისის ნაკადის საშუალებით. ამ დროს არ ხდება ამოღებული მონაცემების შენახვა (caching). შემდეგ მაგალითში შესრულდება ბაზიდან მონაცემების წაკითხვა და რეზულტატის DropDownList ელემენტში გამოტანა. DropDownList ელემენტს აქვს 2 თვისება DataTextField და DataValueField, პირველი მათგანი განსაზღვრავს მონაცემთა ცხრილში ველის დასახელებას, რომლის მნიშვნელობები გამოჩნდება ელემენტის ჩანაწერებში, ხოლო მეორე ელემენტის ჩანაწერთა მნიშვლეობების სვეტის დასახელებას. არსებულ მონაცემთა ბაზაში განსაზღვრულია ცხრილი Authors. ამ ცხრილიდან გამოგვაქვს ავტორის სახელები და მათი იდენტიფიკატორები. სიაში რომელიმე ჩანაწერის არჩევის შემდეგ, ღილაკზე დაჭერის შემთხვევაში ეკრანზე გამოგვავს ავტორის იდენტიფიკატორი. ფაილი Authors.aspx: <%@ Page language="c#" Codebehind="Authors.aspx.cs" AutoEventWireup="false" Inherits="NewProject.Authors" %> <HTML> <HEAD> <title>authors</title> </HEAD> <body> <form id="form1" method="post" runat="server"> <asp:dropdownlist id="ddlauthors" runat="server"></asp:dropdownlist> <asp:button id="btnselect" runat="server" Text="Button"></asp:Button><BR> <asp:label id="selvalue" runat="server"></asp:label> </form> </body> </HTML> ფაილი Authors.aspx.cs : using System; using System.Data; 126

127 using System.Data.SqlClient; using System.Web; using System.Web.UI.WebControls; namespace NewProject public class Authors : System.Web.UI.Page protected System.Web.UI.WebControls.Label selvalue; protected System.Web.UI.WebControls.Button btnselect; protected System.Web.UI.WebControls.DropDownList ddlauthors; private void Page_Load(object sender, System.EventArgs e) if(!ispostback) SqlConnection cn = new SqlConnection("server=(local);uid=sa;pwd= 1;database=Books"); SqlCommand cmd = cn.createcommand(); cmd.commandtext = "SELECT * FROM Authors"; try cn.open(); SqlDataReader reader = cmd.executereader(); ddlauthors.datasource = reader; ddlauthors.datatextfield = "Name"; ddlauthors.datavaluefield = "ID"; ddlauthors.databind(); finally cn.dispose(); private void btnselect_click(object sender, System.EventArgs e) selvalue.text = "თქვენ აირჩიეთ ავტორი: " + ddlauthors.selectedvalue; override protected void OnInit(EventArgs e) InitializeComponent(); 127

128 base.oninit(e); private void InitializeComponent() this.load += new System.EventHandler(this.Page_Load); btnselect.click +=new EventHandler(btnSelect_Click); ვებ-გვერდზე გამოდის ავტორების სია: ნახ.3.36 რომელიმე ჩანაწერის არჩევის და ღიალკზე დაჭერის შემდეგ გამოდის ეკრანზე ავტორის შესაბამისი იდენტიფიკატორი: ნახ

129 განვიხილოთ DataSet-ის ობიექტის საშუალებით მონაცემთა გამოტანის მეთოდი. DataSet - ის ობიქტი შესაძლებელია შეიცავდეს მონაცემების რამდენიმე ცხრილს, ამიტომ საჭიროა მიუთითოთ თუ რომელი ცხრილთან გვსურს კონკრეტულ შემთხვევაში მუშაობა. როდესაც DataSet მიებმევა რომელიმე ელემენტს, ამ ელემენტის DataMember ველის საშუალებით განისაზღვრება რომელი ცხრილის მიბმა არის საჭირო. თუ არ არის მითითებული, მაშინ აიღება პირველი ცხრილი. DataSet-ში არსებული მონაცემების ფილტრაციისა და სორტირებისთვის გამოიყენება DataView ობიექტი. შემდეგ მაგალითში ნაჩვენებია DataSet ობიექტის გამოყენება, მისი საშუალებით მონაცემების სორტირება და ფილტრაცია. ფაილი Employees.aspx: <%@ Page language="c#" Codebehind="Employees.aspx.cs" AutoEventWireup="false" Inherits="NewProject.Employees" %> <HTML> <HEAD> <title>employees</title> </HEAD> <body> <form id="form1" method="post" runat="server"> <asp:textbox id="txtfilter" runat="server"></asp:textbox> <asp:button id="btnfilter" runat="server" Text="ფილტრი"></asp:Button><BR> <asp:datagrid id="dgemployees" runat="server"></asp:datagrid>სორტირება: <asp:button id="btnsortbyid" runat="server" Text="ID"></asp:Button> ან <asp:button id="btnsortbylname" runat="server" Text="LastName"></asp:Button> </form> </body> </HTML> ფაილი Employees.aspx.cs: using System; using System.Data; using System.Data.SqlClient; using System.Web.UI.WebControls; 129

130 namespace NewProject public class Employees : System.Web.UI.Page protected System.Web.UI.WebControls.DataGrid dgemployees; protected System.Web.UI.WebControls.TextBox txtfilter; protected System.Web.UI.WebControls.Button btnfilter; protected System.Web.UI.WebControls.Button btnsortbylname; protected System.Web.UI.WebControls.Button btnsortbyid; protected DataSet _ds; private void Page_Load(object sender, System.EventArgs e) GetData(); if(!ispostback) BindGrid(); private void GetData() SqlConnection cn = new SqlConnection("server=(local);uid=sa;pwd=1; database=hr"); SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Employees", cn); _ds = new DataSet(); da.fill(_ds, "Employees"); private void BindGrid() dgemployees.datasource = _ds; dgemployees.databind(); override protected void OnInit(EventArgs e) InitializeComponent(); base.oninit(e); private void InitializeComponent() this.btnfilter.click += new System.EventHandler(this.btnFilter_Click); 130

131 this.btnsortbylname.click += new System.EventHandler(this.btnSortByLName_Click); this.btnsortbyid.click += new System.EventHandler(this.btnSortByID_Click); this.load += new System.EventHandler(this.Page_Load); private void btnfilter_click(object sender, System.EventArgs e) DataView dv = new DataView(_ds.Tables["Employees"]); dv.rowfilter = String.Format("LastName like '0%'", txtfilter.text.trim()); dgemployees.datasource = dv; dgemployees.databind(); private void btnsortbyid_click(object sender, System.EventArgs e) DataView dv = new DataView(_ds.Tables["Employees"]); dv.sort = "ID ASC"; dgemployees.datasource = dv; dgemployees.databind(); private void btnsortbylname_click(object sender, System.EventArgs e) DataView dv = new DataView(_ds.Tables["Employees"]); dv.sort = "LastName ASC"; dgemployees.datasource = dv; dgemployees.databind(); გვერდის პირველი ჩატვირთვისას გამოდის ვებ-ბრაუზერში შემდეგი მონაცემები: ნახ

132 თუ გვინდა გვარის მიხედვით გაფილტვრა უჯრაში შევიტანთ გვარის პირველ ასოს და დავაწვებით ღილაკს ფილტრი. შემდეგ შემთხვევაში გაფილტრულია ასო თ -თი: ნახ.3.39 სორტირება გვარის ან იდენტიფიკატორის საშუალებით სრულდება შესაბამის ღილაკებზე დაჭერით. გვარის მიხედვით სორტირების მაგალითი: ნახ

133 3.22. monacemta badeebi (cxrilebi), sortireba da redaqtireba. Sablonebi da mati elementebi შემდეგ მაგალითში ნაჩვენებია DataGrid ელემენტის საშაულებით მონაცემების გამოტანის და ცლილებების მაგალითი. ცხრილის მონაცემების რედაქტირებისთვის ელემენტს ემატება EditCommandColumn, მისი საშუალებით გამოიძახება ელემენტის სხვადსხვა მეთოდები მოვლენების შემთხევაში, როგორიცაა ჩანაწერის ცვლილება, ცვლიელების გაუქმება, ცვლილების დამახსოვრება. წაშლისთვის ემატება ღილაკი ButtonColumn რომელიც გადასცემს ბრძანებას Delete და იძახება შესაბამისი მეთოდი. ჩანაწერის განახლების ან წაშლისთვის იქმნება SQL ბრძანება- SqlCommand, და მისთვის საჭირო პარამეტერების გადაცემის შემდეგ გამოიძახება მისი მეთოდი ExecuteNonQuery, რომელიც მონაცემთა ბაზაში შეასრულებს ოპერაციას. ფაილი EmployeesEdit.aspx: Page language="c#" Codebehind="EmployeesEdit.aspx.cs" AutoEventWireup="false" Inherits="NewProject.EmployeesEdit" %> <HTML> <HEAD> <title>employees</title> </HEAD> <body> <form id="form1" method="post" runat="server"> <asp:datagrid id="dgemployees" DataKeyField="ID" runat="server" AutoGenerateColumns="False"> <Columns> <asp:editcommandcolumn ButtonType="LinkButton" UpdateText="დამახსოვრება" CancelText="უარფოფა" EditText="შეცვლა"></asp:EditCommandColumn> <asp:boundcolumn ReadOnly="True" DataField="ID" HeaderText="ID"></asp:BoundColumn> <asp:boundcolumn DataField="FirstName" HeaderText="სახელი"></asp:BoundColumn> <asp:boundcolumn DataField="LastName" HeaderText="გვარი"></asp:BoundColumn> <asp:boundcolumn DataField="Age" HeaderText="ასაკი"></asp:BoundColumn> 133

134 <asp:buttoncolumn Text="წაშლა" CommandName="Delete"></asp:ButtonColumn> </Columns> </asp:datagrid> </form> </body> </HTML> ფაილი EmployeesEdit.aspx.cs: using System; using System.Data; using System.Data.SqlClient; using System.Web.UI.WebControls; namespace NewProject public class EmployeesEdit : System.Web.UI.Page protected System.Web.UI.WebControls.DataGrid dgemployees; protected DataSet _ds; private void Page_Load(object sender, System.EventArgs e) if(!ispostback) BindGrid(); private void BindGrid() SqlConnection cn = new SqlConnection("server=(local);uid=sa;pwd=1; database=hr"); SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Employees", cn); _ds = new DataSet(); da.fill(_ds, "Employees"); dgemployees.datasource = _ds; dgemployees.databind(); override protected void OnInit(EventArgs e) InitializeComponent(); base.oninit(e); 134

135 private void InitializeComponent() this.dgemployees.cancelcommand += new System.Web.UI.WebControls.DataGridCommandEventHandler (this.dgemployees_cancelcommand); this.dgemployees.editcommand += new System.Web.UI.WebControls.DataGridCommandEventHandler (this.dgemployees_editcommand); this.dgemployees.updatecommand += new System.Web.UI.WebControls.DataGridCommandEventHandler (this.dgemployees_updatecommand); this.dgemployees.deletecommand += new System.Web.UI.WebControls.DataGridCommandEventHandler (this.dgemployees_deletecommand); this.load += new System.EventHandler(this.Page_Load); private void dgemployees_editcommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) dgemployees.edititemindex = e.item.itemindex; BindGrid(); private void dgemployees_cancelcommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) dgemployees.edititemindex = -1; BindGrid(); private void dgemployees_updatecommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) string updatecmd = "UPDATE Employees SET FirstName + " LastName Age "+ " WHERE ID=@id"; SqlConnection cn = new SqlConnection("server=(local);uid=sa;pwd=1;database=Books"); SqlCommand cmd = new SqlCommand(updateCmd, cn); cmd.parameters.add("@fname", ((TextBox)e.Item.Cells[2].Controls[0]).Text); cmd.parameters.add("@lname", ((TextBox)e.Item.Cells[3].Controls[0]).Text); cmd.parameters.add("@age", ((TextBox)e.Item.Cells[4].Controls[0]).Text); 135

136 dgemployees.datakeys[dgemployees.edititemindex]); try cn.open(); cmd.executenonquery(); dgemployees.edititemindex = -1; finally cn.dispose(); BindGrid(); private void dgemployees_deletecommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) string deletecmd = "DELETE FROM Employees WHERE ID=@id"; SqlConnection cn = new SqlConnection("server=(local);uid=sa;pwd=1;database=HR"); SqlCommand cmd = new SqlCommand(deleteCmd, cn); cmd.parameters.add("@id",dgemployees.datakeys[e.item.ite mindex]); try cn.open(); cmd.executenonquery(); finally cn.dispose(); BindGrid(); გვერდის ჩატვირთვის შემდეგ DataGrid ელემენტი (ნახ.3.41): ნახ

137 ღილაკზე შეცვლა დაჭერის შემდეგ გამოიძახება მეთოდი, რომელიც განსაზღვრულია DataGrid კომპონენისთვის Edit ბრძანების მიღები შემთხვევაში: private void dgemployees_editcommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) dgemployees.edititemindex = e.item.itemindex; BindGrid(); ამ მეთოდის გამოძახების შემდეგ შესაბამისი სსტრიქონი გადადის რედაქტირების რეჟიმში: ნახ.3.42 დამახსოვრება ღილაკზე დაჭერის შემდეგ გამოიძახება მეთოდი dgemployees_updatecommand. ამ მეთოდში მყარდება კავშირი მონაცემთა ბაზასთან SqlConnection ობიექტის საშუალებით, იქმნება SqlCommand რომელსაც გადაეცემა Sql ბრძანება და საჭირო პარამეტრები. cmd.executenonquery() მეთოდის გამოძახების საშჲალებით მონაცემთა ბაზაში შესაბამისი ჩანაწერი განახლდება. თუ არ არის საჭირო შეცვლილი მონაცემების ცვლილება უარყოფა ღილაკზე დაჭერის შემდეგ რედაქტირებადი სტრიქონი დაბრუნდება ჩვულებრივ რეჟიმში. წაშლა ღილაკზე დაჭერის შემთხვეაში გამიძახება მეთოდი dgemployees_deletecommand. ისევე როგორც ჩანაწერის განახლების შემთხვევაში აქაც იქმნება SqlCommand ობიექტი, გადეცემა შესაბამის Sql ბრძანება და cmd.executenonquery() მეთოდის გამოძახებით შესრულდება ჩანაწერის წაშლა ბაზაში. 137

138 შაბლონის საშუალებით მონაცემთა გამოტანას უზრუნველყოფს ელემენტები: DataList, Repeater. ჩანაწერების გამოტანისთვის წინასწარ განისაზღვრება შაბლონები (ასევე საკმარისია განისაზღვროს მხოლოდ ItemTemplate შაბლონი): ItemTemplate AlternatingItemTemplate SeparatorTemplate HeaderTemplate FooterTemplate EditItemTemplate SelectedItemTemplate DataList-ს აქვს საშუალება ჩანაწერები გამოიტანოს ჰორიზონტალური მიმდევრობით RepeatLayout პარამეტერსთვის Flow მნიშვნელობის მინიჭებით, ან ჩვეულებრივად Table მნიშვნელობის მინიჭებით. წინა მაგალითებში გამოყენებული მონაცემები გამოვიტანოთ DataList ის საშუალებით: // ფაილი EmployeesView.aspx: Page language="c#" Codebehind="EmployeesView.aspx.cs" AutoEventWireup="false" Inherits="NewProject.Employees" %> <HTML> <HEAD> <title>employees</title> </HEAD> <body> <form id="form1" method="post" runat="server"> <asp:datalist id="dlemployees" runat="server"> <ItemTemplate> <%#DataBinder.Eval(Container.DataItem, "FirstName")%> <%#DataBinder.Eval(Container.DataItem, "LastName")%> არის <%#DataBinder.Eval(Container.DataItem, "Age")%> წლის </ItemTemplate> </asp:datalist></form> </body> </HTML> 138

139 // ფაილი EmployeesView.aspx.cs: using System; using System.Data; using System.Data.SqlClient; using System.Web.UI.WebControls; namespace NewProject public class EmployeesView : System.Web.UI.Page protected System.Web.UI.WebControls.DataGrid dgemployees; protected System.Web.UI.WebControls.DataList dlemployees; protected DataSet _ds; private void Page_Load(object sender, System.EventArgs e) if(!ispostback) BindGrid(); private void BindGrid() SqlConnection cn = new SqlConnection("server=(local);uid=sa;pwd=a;database=Book s"); SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Employees", cn); SqlCommandBuilder bldr = new SqlCommandBuilder(da); _ds = new DataSet(); da.fill(_ds, "Employees"); dlemployees.datasource = _ds; dlemployees.databind(); override protected void OnInit(EventArgs e) InitializeComponent(); base.oninit(e); private void InitializeComponent() this.load += new System.EventHandler(this.Page_Load); 139

140 ვებ-ბრაუზერში გამოვა შედეგი: ნახ ASP.NET paketis martvis specializebuli elementebi. klasebi System.Web.UI.Control da HtmlTextWriter. klientis scenaris generacia ASP.NET-ში შესაძლებელია მოხმარებელმა თავად შექმნას სერვერული კონტროლები. ეს მას საშუალებას აძლევს მოახდინოს მომხმარებლის ინტერფეისის და სხვა ფუნქციონალობის ინკაპსულაცია კონტროლში, რომელის გამოყენება აპლიკაციაში მრავალჯერადად არის შესაძლებელი. მომხმარებლის კონტროლის შექმნა შესაძლებელია System.Web.UI.Control ბაზური კლასის გამოყენებით. ჩვეულებრივ უნდა გადაიტვირთოს მისი მეთოდი Render რათა შევძლოთ HTML კოდი გენერაცია. Render მეთოდს გადაეცემა HtmlTextWriter ობიექტი, რომლის საშუალებითაც ხდება HTML კოდის გენერაცია. მომხრებლის კონტროლებს კლასებს შესაძლებელია დაემატოს თვისებები, რომელთა საშალებითაც შესრულდება კონტროლის რომელიმე ველისთვის მნიშვნელობის მინიჭება ან ამ მნიშვნელობის გაგება. შემდეგ მომხმარებლის კონტროლს დამატებული აქვს 2 თვისება Message და Iterations. ამ თვისებებისთვის მნიშვნელობის მინიჭება ხდება ვებ გვერდის კოდში Message="გამარჯობათ", Iterations="3". კონტროლი გამოიტანს მითითებულ ტექსტს (Message) მითითებული რაოდენობით (Iterations): 140

141 ფაილი SimplePropertyPage.aspx: Register TagPrefix="SimpleControlSample" Namespace="NewProject" Assembly="NewProject" %> <html> <body> <form method="post" runat="server" ID="Form1"> <SimpleControlSample:SimpleProperty Message="Hello There" Iterations="3" runat="server" ID="Simpleproperty1" /> </form> </body> </html> // ფაილი SimpleProperty.cs: using System; using System.Web; using System.Web.UI; namespace NewProject public class SimpleProperty : Control private String _message; private int _iterations = 1; public String Message get return _message; set _message = value; public int Iterations get return _iterations; set _iterations = value; protected override void Render(HtmlTextWriter output) for (int i=0; i<_iterations; i++) output.write("<h1>" + _message + "</h1>"); ეკრანზე მიიღება შედეგი: 141

142 ნახ.3.44 HtmlTextWriter ობიექტს გააჩნია ასევე სხვა მეთოდები HTML კონტროლების გენერაციისთვის: RenderBeginTag(), AddStyleAttribute(), AddAttribute(). ამ მეთოდების გამოყენება უფრო აადვილებს HTML ბლოკების კონსტრუქტორების კოდის წერას. ფაილი SimpleTablePage.aspx: Register TagPrefix="SampleTableSample" Namespace="NewProject" Assembly="NewProject" %> <html> <body> <form method="post" runat="server" ID="Form1"> <SampleTableSample:SampleTable Rows="5" runat="server" ID="SampleTable1" /> </form> </body> </html> ფაილი SampleTable.cs: using System; using System.Web; using System.Web.UI; namespace NewProject public class SampleTable : Control private int _rows = 1; public int Rows set _rows = value; 142

143 protected override void Render(HtmlTextWriter output) output.addattribute("width", "50%"); output.addattribute("border", "1"); output.renderbegintag(htmltextwritertag.table); for (int i=0; i<_rows; i++) output.renderbegintag(htmltextwritertag.tr); output.renderbegintag(htmltextwritertag.td); output.write(string.format("სტრიქონი:0",i)); output.renderendtag(); output.renderendtag(); output.renderendtag(); ეკრანზე მივიღებთ შედეგს: ნახ

144 3.24. martvis Sedgenili da momxmarebelta elementebi თუ ელემენტი შეიცავს სხვა ელემენეტებსაც, ამ შემთხვევაში მათ შედგენილ ელემენტებს უწოდებენ. შედგენილი ელემენტების შექმნა შესაძლებელია ქველემენტების შექმნით და მათი დამატებით მშობელი ელემენტის Controls კოლექციაში. უნდა შესრულდეს Control კლასის CreateChildControls მეთოდის გადატვირთვა, რომელიც გამოიძახება ქველემენტების გენერაციისთვის. თუ კონტროლის გამოყენება მოხდება ერთ გვერდზე მრავალჯერადად, ამ შემთხვევაში საჭიროა, რომ ამ კონტროლში იყოს System.Web.UI.INamingContainer ინტერფეისი რეალიზებული. ეს უზრუნველყოფს ამ კონტროლის ეგზემპლარებისთის უნიკალური იდენტიფიკატორების უზრუნველყოფას. შემდეგ მაგალითში CreateChildControls მეთოდში ხდება კონტროლების გენერაცია. ფაილი Composition1.aspx: Register TagPrefix="CompositionSample" Namespace="NewProject" Assembly="NewProject" %> <html> <script language="c#" runat="server"> private void AddBtn_Click(Object sender, EventArgs e) MyControl.Value++; private void SubtractBtn_Click(Object sender, EventArgs e) MyControl.Value--; </script> <body> <form method="post" action="composition1.aspx" runat="server" ID="Form1"> <CompositionSample:Composition1 id="mycontrol" runat="server" /> <br> <asp:button text="add" OnClick="AddBtn_Click" runat="server" ID="Button1" NAME="Button1" /> 144

145 <asp:button text="subtract" OnClick="SubtractBtn_Click" runat="server" ID="Button2" NAME="Button2" /> </form> </body> ფაილი Composition1.cs: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace NewProject public class Composition1 : Control, INamingContainer public int Value get this.ensurechildcontrols(); return Int32.Parse(((TextBox)Controls[1]).Text); set this.ensurechildcontrols(); ((TextBox)Controls[1]).Text = value.tostring(); protected override void CreateChildControls() this.controls.add(new LiteralControl("<h3>" + "Value: ")); TextBox box = new TextBox(); box.text = "0"; this.controls.add(box); this.controls.add(new LiteralControl("</h3>")); ეკრანზე გამოდის ფორმა სადაც არის ტექსტური ველი და ორი ღილაკი: Add და Substract. Add ღილაკზე დაჭერით ტექსტურ ველში არსებული რიცხვი გაიზრდება 1-ით, ხოლო Substract ღილაკზე დაჭერით შემცირდება 1-ით. 145

146 ნახ.3.46 აქამდე განვიხილეთ შედგენილი ელემენტების შექმნის ხერხი მხოლოდ პროგრამული კოდის საშუალებით, თუმცა ასევე შესაძლებელია მათი შექმნა სპეციალური გვერდების საშუალებით, რომლებსაც მომხმარებელთა ელემენტებს უწოდებენ (user controls). ამ გვერდების გაფართოებაა.ascx, მათზე ძესაძლებელია სხვადასხვა HTML და სერვერული კონტროლების განთავსება. მომხმარებლის ელემენტების გამოყენება შესაძლებელია aspx გვერდებზე დირექტივის Src ატრიბუტის საშუალებით. თუ საჭიროა კონტროლის ჩატვირთვა პროგრამულად მაშინ გამოიყენება გვერდის მეთოდი LoadControl(), რომელსაც გადაეცემა მომხარებლის ელემენტის ფაილის მისამართი. ქვემოთ მოცემულია მომხმარებლის ელემენტის მაგალითი, რომლეშიც ხდება Label კონტროლისთვის ტექსტის ცვლილება: ფაილი WebUserControl1.ascx: Control Language="c#" AutoEventWireup="false" Codebehind="WebUserControl1.ascx.cs" Inherits="NewProject.WebUserControl1" TargetSchema=" ie5"%> <asp:label ID="lblMessage" Runat="server"></asp:Label> ფაილი WebUserControl1.ascx.cs: namespace NewProject using System; 146

147 public class WebUserControl1 : System.Web.UI.UserControl protected System.Web.UI.WebControls.Label lblmessage; public string Text setlblmessage.text = value; private void Page_Load(object sender, System.EventArgs e) override protected void OnInit(EventArgs e) this.load += new System.EventHandler(this.Page_Load); base.oninit(e); ამ კონტროლის გამოყენების მაგალითი aspx ვებ-გვერდზე: ფაილი WebUserControlPage.aspx: <%@ Page language="c#" %> <%@ Register TagPrefix="control" TagName="WebUserControl1" Src="WebUserControl1.ascx" %> <HTML> <script language="c#" runat="server"> void btnsubmit_click(object sender, EventArgs E) MyWebUserControl.Text = "მომხმარებლის კონტროლი შეიცვალა!"; </script> <HEAD> </HEAD> <body > <form id="form1" runat="server"> <control:webusercontrol1 id="mywebusercontrol" Text="მომხმარებლის კონტროლი" runat="server"></control:webusercontrol1> <br> 147

148 <asp:button id="btnsubmit" runat="server" OnClick="btnSubmit_Click" Text="Button"></asp:Button> </form> </body> </HTML> გვერდის ჩატვირთვისას ეკრანზე ჩანს (ნახ.3.13) კონტროლის საწყისი მდგომარეობა: ნახ.3.47 კომპოზიტური კონტროლის მაგალითი: CreateChildControls მეთოდში ხდება კონტროლების გენერაცია. Register TagPrefix="CompositionSampleControls" Namespace="CompositionSampleControls" Assembly="CompositionSampleControls" %> <html> <script language="c#" runat="server"> private void AddBtn_Click(Object sender, EventArgs e) MyControl.Value++; private void SubtractBtn_Click(Object sender, EventArgs e) MyControl.Value--; </script> <body> <form method="post" action="composition1.aspx" runat="server" ID="Form1"> <CompositionSampleControls:Composition1 id="mycontrol" runat="server" /> <br> 148

149 <asp:button text="add" OnClick="AddBtn_Click" runat="server" ID="Button1" NAME="Button1" /> <asp:button text="subtract" OnClick="SubtractBtn_Click" runat="server" ID="Button2" NAME="Button2" /> </form> </body> </html> using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace CompositionSampleControls public class Composition1 : Control, INamingContainer public int Value get this.ensurechildcontrols(); return Int32.Parse(((TextBox)Controls[1]).Text); set this.ensurechildcontrols(); ((TextBox)Controls[1]).Text = value.tostring(); protected override void CreateChildControls() this.controls.add(new LiteralControl("<h3>" + "Value: ")); TextBox box = new TextBox(); box.text = "0"; this.controls.add(box); this.controls.add(new LiteralControl("</h3>")); 149

150 3.25. ASP.NET paketsi mdgomareobata tipebi. danartebisa da seansebis mdgomareobebi HTTP პროტოკოლი არ იძლევა ვებ გვერდების მდგომარებობის შენახვის საშუალებას, რადგან გვერდების ყოველ ახალ მოთხოვნაზე სრულდება მონაცემების ახლიდან დამუშავება და გადაგზავნა, ამის შემდეგ სერვერზე არსებული ყველა მონაცემი იკარგება. მაგრამ არსებობს საჭიროება, რომ ხდებოდეს მდგომარეობის შენახვა გვერდების გამოძახებებს შორის. ASP.NET-ის ვებ-აპლიკაციებში არსებობს მდგომარეობების შენახვის სხვადასხვა ხერხი. აპლიკაციის მდგომარეობა განვიხილოთ აპლიკაციის მდგომარეობა (Application State). აპლიკაციის მდგომარეობაში ინახება გლობალური პარამეტერების მნიშვნელობები. ძირითადად აპლიკაციის პარამეტერებისთვის მნიშვნელობების მინიჭება ხდება Application_OnStart მეთოდში Global.asax ფაილში, ხოლო მათი შემდგომი ცვლილება ხდება ცალკეულ ASP.NET გვერდებზე. აპლიკაციის ცვლადების სიცოცხლის ხანგრძლოივობა ტოლია აპლიკაციის სიცოცხლის ხანგრძლივობისა. // ფაილი Global.asax: Import Namespace="System.Data" %> Import Namespace="System.IO" %> <script language="c#" runat="server"> void Application_Start(Object sender, EventArgs e) DataSet ds = new DataSet(); FileStream fs = new FileStream(Server.MapPath("schemadata.xml"), FileMode.Open,FileAccess.Read); StreamReader reader = new StreamReader(fs); ds.readxml(reader); fs.close(); DataView view = new DataView(ds.Tables[0]); Application["Source"] = view; </script> //ფაილი Application.aspx: 150

151 Import Namespace="System.Data" %> <html> <script language="c#" runat="server"> void Page_Load(Object Src, EventArgs E ) DataView Source = (DataView)(Application["Source"]); MySpan.Controls.Add(new LiteralControl(Source.Table.TableName)); MyGridView.DataSource = Source; MyGridView.DataBind(); </script> <body> <form runat="server"> <h3><font face="verdana">reading Data in Application_OnStart</font></h3> <h4><font face="verdana">xml Data for Table: <asp:placeholder runat="server" id="myspan"/></font></h4> <asp:gridview id="mygridview" runat="server" Width="900" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" EnableViewState="false" /> </form> </body> </html> //ფაილი SchemaData.xml: <NewDataSet> <Table> <ProductID>1001</ProductID> <CategoryID>1</CategoryID> <ProductName>Chocolate City Milk</ProductName> <ProductDescription>Chocolate City Milk Description</ProductDescription> <UnitPrice>2</UnitPrice> 151

152 <ImagePath>images/milk5.gif</ImagePath> <Manufacturer>Chocolate City</Manufacturer> </Table> <Table> <ProductID>1002</ProductID> <CategoryID>1</CategoryID> <ProductName>Bessie Brand 2% Milk</ProductName> <ProductDescription>Bessie Brand 2% Milk Description</ProductDescription> <UnitPrice>1.19</UnitPrice> <ImagePath>images/milk1.gif</ImagePath> <Manufacturer>Milk Factory</Manufacturer> </Table> </NewDataSet> ნახ.3.48 სესიის მდგომარეობა: მომხმარებლის სესიის განმავლობაში მნიშვნელობების შენახვისათვის გამოიყენება სესიის ცვლადებში. ეს ცვლადები არის ყველა მომხმარებლისთვის უნიკალური. აღსანიშნავია რომ სესიის ცვლადების მნიშვნელობები იკარგება სესიის დასრულებისთანავე. სესიის ცვლადებისთვი მნიშვნელობების მინიჭება აგრეთვე შესაძლებელია სესიის ინიციალიზების დროს Global.asax ფაილში. protected void Session_Start(Object sender, EventArgs e) Session["FirstName"] = "khatuna"; Session["LastName"] = "mazanashvili"; Session["Age"] = 25; ASP.NET გვერდზე შესაძლებელია სესიის ცვლადების გამოტანა Page_Load მეთოდში: 152

153 private void Page_Load(object sender, System.EventArgs e) if(!ispostback) txtfirstname.text = (string)session["firstname"]; txtlastname.text = (string)session["lastname"]; txtage.text = Session["Age"].ToString(); ნახ.3.49 შესაძლებელია სესიის მდგომარეობაში დამახსოვრება: ფრაგმენტი WebForm1.aspx.cs ფაილიდან: private void btnsave_click(object sender, System.EventArgs e) Session["FirstName"] = txtfirstname.text; Session["LastName"] = txtlastname.text; Session["Age"] = Int32.Parse(txtAge.Text); // ფაილი WebForm1.aspx: <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>webform1</title> </HEAD> 153

154 <body> <form id="form1" method="post" runat="server"> <TABLE cellspacing="0" cellpadding="0" border="0"> <TR> <TD>სახელი:</TD> <TD> <asp:textbox id="txtfirstname" runat="server"></asp:textbox></td> </TR> <TR> <TD>გვარი:</TD> <TD> <asp:textbox id="txtlastname" runat="server"></asp:textbox></td> </TR> <TR> <TD>ასაკი:</TD> <TD> <asp:textbox id="txtage" runat="server"></asp:textbox></td> </TR> <TR> <TD></TD> <TD> <asp:button id="btnsave" runat="server" Text="დამახსოვრება"></asp:Button></TD> </TR> </TABLE> </form> </body> </HTML> Cookies გამოყენება Cookies არის ფაილი რომელიც იქმნება კლიენტის კომპიუტერზე და გადაეცემა ვებ სერვერს სხვადსხვა გვერდების გამოძახებისას. მასში შესაძლებელია სხვადსხვა ინფორმაციის შენახვა, თუმცა მისი მაქსიმალური ზომა შეზღუდულია 4096 კილობაიტამდე. შემდეგ მაგალითში გვერდის ჩატვირთვისას მოწმდება გადმოეცა თუ არა კლიენტისგან ქუქი სახელით preferences1. თუ არ არის გადმოცემულიმაშინ იქმნება ახალი ქუქი და გადაეგზავნება კლიენტის კომპიუტერს. იგივე გვერდზე გამოიყენება GetStyle 154

155 ფუნქცია, რომელიც აბრუნებს ქუქიში დამახსოვრებულ ცალკეულ მნიშვნელობებს. ეს ფუნქცია გამოიყენება ვებ გვერდზე ფონტის სახელის, ფონის ფერის და ტექსტის ფერის დასაყენებლად. <html> <script language="c#" runat="server"> void Page_Load(Object sender, EventArgs E) if (Request.Cookies["preferences1"] == null) HttpCookie cookie = new HttpCookie("preferences1"); cookie.values.add("forecolor","red"); cookie.values.add("backcolor","beige"); cookie.values.add("fontname","verdana"); Response.Cookies.Add(cookie); protected String GetStyle(String key) HttpCookie cookie = Request.Cookies["preferences1"]; if (cookie!= null) switch (key) case "ForeColor" : return cookie.values["forecolor"]; break; case "BackColor" : return cookie.values["backcolor"]; break; case "FontName" : return cookie.values["fontname"]; break; return ""; </script> <style> body font: <%=GetStyle("FontName")%>; background-color: <%=GetStyle("BackColor")%>; </style> <body style="color:<%=getstyle("forecolor")%>"> 155

156 <h3><font face="verdana">storing Volatile Data with Client- Side Cookies</font></h3> text text text text...<br> </body> </html> ViewState-ის გამოყენება ნახ.3.50 ASP.NET-ში შესაძლებელია რომ თითოელმა კონტროლმა შეინახოს მისი შიგა მდგომარეობა გვერდების გამოძახებებს შორის ViewState-ის გამოყენებით. ViewState-ის საშუალებით ხდება ვებ- გვერდის გამოძახებებს შორის მონაცემების დამახსოვრება. შემდეგ მაგალითში, როდესაც მომხარებელი დააჭერს ღილაკს, ვებგვერდის ViewState-ში შეინახება მნიშვნელობა Hello!. <html> <head> <script runat="server" language="c#"> void Button1_Click(object sender, System.EventArgs e) ViewState["Text"] = "Hello!"; void Page_Load(object sender, System.EventArgs e) if(viewstate["text"]!=null) lbltext.text = ViewState["Text"].ToString(); </script> </head> <body> <form id="form1" method="post" runat="server"> <asp:label Runat="server" ID="lblText"></asp:Label> <asp:button id="button1" runat="server" OnClick="Button1_Click" Text="Button"></asp:Button> </form> </body> </html> 156

157 3.26. Web-is usafrtxoeba ASP.NET-Si. serveris, klientebis, formebis da rolebis autentifikacia. parolebis Senaxva ვებ აპლიკაციებში ხშირად საჭიროა მომხმარებელთა იდენტიფიკაცია და მათთვის სხვადასხვა რესურსებზე წვდომის უფლების განსაზღვრა. ASP.NET-ში არსებობს აუთენტიფიკაციის რამდენიმე მეთოდი: Windows, Forms, Passport. ეს მოთოდები განისაზღვრება კონფიგურაციის ფაილში authentication ტეგის mode ატრიბუტის საშუალებით: <configuration> <system.web> <authentication /> </system.web> </configuration> მეთოდები: <authentication mode="windows" /> <authentication mode="forms" /> <authentication mode="passport" /> <authentication mode="none" /> ვებ აპლიკაციაზე მომხმარებლის წვდომის უფლებას განსაზღვრავს authentication ელემენტი, ხოლო აპლიკაციის გარკვეულ ნაწილებზე განისაზღვრება authorization ელემეტით: deny და allow ქველემენტების საშუალებით: * განსაზღვრავს ყველა მომხმარებელს,? ანონიმურ მომხმარებლებს. მაგალითად, ანონიმურ მომხმარებელთათვის საიტზე წვდომის უფლების გასათიშად ვებ-საიტის კონფიგურაციის ფაილში ჩაიწერება: <configuration> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </configuration> შესაძებელია ცალკეულ მომხმარებელზე და მომხმარებელთა ჯგუფებზე წვდომის უფლების მინიჭება. შემდეგი ჩანაწერი 157

158 ნიშნავს, რომ წვდომის უფლება აქვთ someone და Admins ჯგუფში შემავალ მომხმარებლებს: <authorization> <allow users="someone" /> <allow roles="admins" /> <deny users="*" /> </authorization> შესძლებელია აგრეთვე ცალკეულ ვებ-გვერდებზე წვდომის უფლებების დაყენებაც: <location path="webpage.aspx"> <authorization> <allow roles="managers" /> <deny users="?" /> </authorization> </location> წინა ფრაგმენტი გვიჩვენებს, რომ webpage.aspx წვდომის უფლება აქვთ მხოლოდ managers ჯგუფის მომხმარებლებს. Forms მეთოდით მომხმარებელთა ავტორიზაციის დროს საჭიროა მომხმარებლის სარეგისტრაციო გვერდის მითითება: <configuration> <system.web> <authentication mode="forms"> <forms name=".aspxcookie" loginurl="login.aspx" protection="all" timeout="30" path="/"></forms> </authentication> </system.web> </configuration> ვებ საიტზე მომხმარებლების ავტორიზაციის მაგალითი: // ფაილი Web.config: <configuration> <system.web> <authentication mode="forms"> <forms name=".aspxuserdemo" loginurl="login.aspx" protection="all" timeout="60" /> </authentication> <authorization> <deny users="?" /> </authorization> <globalization requestencoding="utf-8" responseencoding="utf-8" /> </system.web> </configuration> // ფაილი Default.aspx: 158

159 Import Namespace="System.Web.Security " %> <html> <script language="c#" runat="server"> void Page_Load(Object Src, EventArgs E ) Welcome.Text = "Hello, " + User.Identity.Name; void Signout_Click(Object sender, EventArgs E) FormsAuthentication.SignOut(); Response.Redirect("login.aspx"); </script> <body> <h3><font face="verdana">using Cookie Authentication</font></h3> <form runat="server" ID="Form1"> <h3><asp:label id="welcome" runat="server" /></h3> <asp:button text="signout" OnClick="Signout_Click" runat="server" ID="Button1" NAME="Button1" /> </form> </body> </html> // ფაილი Login.aspx: <%@ Import Namespace="System.Web.Security " %> <html> <script language="c#" runat="server"> void Login_Click(Object sender, EventArgs E) //authenticate user: this samples accepts only one user with a //name of someone@ and a password of 'password' if((user .value=="someone")&&(userpass.value=="passwo rd")) FormsAuthentication.RedirectFromLoginPage(User .Valu e, PersistCookie.Checked); else Msg.Text = "Invalid Credentials: Please try again"; </script> 159

160 <body> <form runat="server" ID="Form1"> <h3><font face="verdana">login Page</font></h3> <table> <tr> <td> </td> <td><input id="user " type="text" runat="server" NAME="User " /></td> <td </td> </tr> <tr> <td>password:</td> <td><input id="userpass" type="password" runat="server" NAME="UserPass" /></td> <td> </td> </tr> <tr> <td>persistent Cookie:</td> <td><asp:checkbox id="persistcookie" runat="server" /> </td> <td></td> </tr> </table> <asp:button text="login" OnClick="Login_Click" runat="server" ID="Button1" NAME="Button1" /> <asp:label id="msg" ForeColor="red" Font- Name="Verdana" Font-Size="10" runat="server" /> </form> </body> </html> ნახ

161 IV Tavi ADO.NET-is sasualebit monacemebtan mimartva momxmarebelta programul aplikaciebs (danartebs) aucileblad esawiroebat urtiertqmedeba monacemta centralizebul bazebtan, monacemta sacavebtan XML formatit, an monacemta lokalur bazebtan, rodesac isini musaoben klientis manqanebze. ADO.NET-teqnologia gvtavazobs monacemebtan mimartvisatvis gamosayeneblad martiv, magram metad mzlavr sasualebebs, romlebic uzrunvelyofs sistemis resursebis maqsimalurad srul urtiertqmedebas. aq gavecnobit: - ADO.NET-is monacemebtan mimartvis ZiriTadi komponentebs; - TiToeuli komponentis rols; - ADO.NET-is monacemebtan mimartvis organizaciis arweras. sxvadasxva danartebi monacemebtan mimartvis organizaciisatvis ayenebs sxvadasxva motxovnebs. mnisvneloba ara aqvs imas, Tu ras aketebs danarti: asaxavs cxrilebis Sinaarss, Tu gadaamusavebs da ganaaxlebs monacemebs centralur SQL-serverze. ADO.NET azlevs momxmarebels monacemebtan mimartvis martiv da efeqtur sasualebebs realizaciis sxvadasxva scenarit gamoyofil monacemebtan mimartva monacemebtan mimartvis tradiciuli teqnologiebi Cveulebrivad axorcielebda monacemebis wvdomas wyarostan mudmivi miertebis gzit. aseti modelis gamoyenebisas aplikacia gaxsnis monacemta bazastan miertebas da ar daxuravs mas musaobis damtavrebamde. danartis sirtulis 161

162 zrdastan ertad izrdeba monacemta bazis klienetebis raodenobac, rac araefeqturs xdis bazastan mudmivi miertebis teqnologias, kerzod: - sistemuri resursebi gamoiyeneba araefeqturad. rac ufro meti mudmivad miertebuli (gaxsnili) failia, mit ufro dabalia sistemis mwarmoebluroba; - danartebi, romlebic iyenebs monacemebtan mimartvas mudmivi miertebis sasualebit, cudad masstabirebadia. aseti danartebi kargad emsaxureba or miertebul klients, 10-Tan ukve uwirs musaoba da 100-Tan saertod ver funqcionirebs. ADO.NET sistemasi es problemebi wydeba monacemebtan mimartvis iseti modelis gamoyenebit, rogoricaa gamoyofili monacemebi. aseti modelis SemTxvevaSi monacemta wyarostan mierteba gaxsnilia mxolod garkveuli procedurebis Sesasruleblad. magalitad, Tu aplikacias daswirda monacemebi bazidan, igi miuertdeba mas am monacemebis gadmotvirtvamde, Semdeg ki mierteba daixureba. aseve, rodesac xorcieldeba monacemta ganaxleba bazasi, mierteba wyarostan ganxorcieldeba UPDATE-brZanebis Sesrulebis damtavrebamde, Semdeg igi daixureba. amgvarad, monacemebtan miertebis drois (gaxsna-daxurvis periodi) SemcirebiT, ADO.NET uzrunvelyofs sistemuri resursebis ekonomiur gamoyenebas da monacemta wvdomis infrastruqturis masstabirebas, mwarmoeblurobis Semcirebis garese. EBA 4.2. ADO.NET monacemta arqiteqtura monacemebtan mimartva ADO.NET-Si xorcieldeba ori komponentit: - monacemta ertobliobit (obieqtit DataSet), romelsic monacemebi inaxeba lokalur kompiutersi; - monacemta mimwodeblit (provaiderit, Data Provider), romelic asrulebs Suamavlis funqcias programasa da monacemta bazas Soris. 162

163 obieqti DataSet: esaa monacemta warmodgena kompiuteris mexsierebasi monacemta wyarosgan izolirebulad. es obieqti SeiZleba ganvixilot, rogorc monacemta bazis fragmentis lokaluri asli (kopio). DataSet-Si monacemta CatvirTva SesaZlebelia nebismieri dasasvebi wyarodan, magalitad, SQL Server, Ms Access bazebidan an XML failidan. dasasvebia mexsierebasi am monacemebit manipulireba, agretve mati ganaxleba mtavari wyarosagan damoukideblad. obieqti DataSet Sedgeba DataTable obieqtta ertobliobisgan (is SeiZleba carielic iyos, anu ar Seicavdes arc ert DataTable-s). yoveli DataTable obieqti kompiuteris mexsierebasi asaxavs ert cxrils. misi struqtura Seicavs or ertobliobas: DataColumns, romelsic Tavsdeba cxrilis svetebi, da cxrilis SezRudvaTa ertoblioba. es ori ertoblioba qmnis cxrilis sqemas. DataTable obieqti Seicavs agretve DataRows ertobliobas, romelsic inaxeba DataSet-obieqtis monacemebi. garda amisa, DataSet obieqti Seicavs DataRelations ertobliobas, romelic uzrunvelyofs kavsirebis Seqmnas sxvadasxva cxrilis striqonebs Soris. DataRelations Seicavs DataRelation - obieqtta ertobliobas, romlebic gansazrvravs cxriltasoris kavsirebs (magalitad, 1:M kavsiris sarealizaciod). da bolos, DataSet obieqti Seicavs ExtendedProperties ertobliobas, romelsic Seinaxeba damatebiti monacemebi. monacemta provaideri: esaa urtiertdakavsirebul komponentta ertoblioba, romelic uzrunvelyofs efeqtur maralmwarmoeblur kavsirs monacemta bazastan..net Framework-s aqvs ori provaideri: SQL Server.NET Data Provider, romelic Seqmnilia SQL Server 7.0 an ufro maral versiebtan samusaod, da OleDb.NET Data Provider - sxva tipis monacemta bazebtan dasakavsireblad. 163

164 monacemta nebismieri provaideri Sedgeba msgavsi universaluri klasebis komponentebisgan: - Connection, romelic uzrunvelyofs monacemta bazastan miertebas; - Command, romelic gamoiyeneba monacemta wyaros samartavad. igi gamoiyenebs brzanebebs, romlebic ar abrunebs monacemebs, magalitad, INSERT, UPDATE da DELETE, an brzanebebs, romlebic abrunebs DataReader obieqts (magalitad, SELECT) ; - DataReader gamoiyeneba mxolod CanawerTa ertobliobis wasakitxad miertebuli monacemta wyarodan ; - DataAdapter Seavsebs gamoyofil obieqts DataSet an DataTable da ganaaxlebs mat Sedgenilobas. monacemebtan mimartva xorcieldeba Semdegnairad: obieqti Connection ayenebs danartis (aplikaciis) monacemta bazastan miertebas, romelic pirdapir misawvdomia Command da DataAdapter obieqtebistvis. Command obieqti uzrunvelyofs brzanebata Sesrulebas usualod monacemta bazasi. Tu Sesasrulebeli brzaneba abrunebs ramdenime mnisvnelobas, masin Command xsnis mattan mimartvas DataReader obieqtis sasualebit. mirebuli Sedegebi SesaZlebelia damusavdes usualod danartis kodit, an DataSet obieqtit, romelic Seivseba DataAdapter obieqtis daxmarebit. monacemta bazis ganaxlebistvis aseve gamoiyeneba Command da DataAdapter obieqtebi. obieqti Connection gvtavazobs miertebas monacemta bazastan. Visual Studio.NET s aqvs Connection-is ori klasi: SqlConnection, SesaerTeblad SQL Server 7.0 an ufro maral versiebtan, da OleDbConnection - sxva tipis monacemta bazebtan dasakavsireblad. monacemta bazastan kavsiris arxis gasaxneli aucilebeli monacemebi inaxeba Connection obieqtis ConnectionString TvisebaSi. es obieqti inaxavs agretve rig 164

165 metodebs, romlebic sawiroa monacemta dasamusaveblad tranzaqciebis gamoyenebit. obieqts Command aqvs ori kolasi: SqlCommand da OleDbCommand. igi uzrunvelyofs brzanebata gamoyenebas monacemta bazaze, romeltanac damyarebulia kavsiri (mierteba). aq SeiZleba gamoyenebul iqnas Senaxvadi procedurebi, SQL-is brzanebebi, agretve operatorebi mtliani cxrilebis misarebad. obieqts Command aqvs sami metodi : - Execute Non Query. iyenebs brzanebebs, romlebic ar abrunebs monacemebs, magalitad, INSERT, UPDATE da DELETE; - Execute Scalar. iyenebs motxovnebs monacemta bazisadmi, romlebic abrunebs mxolod ert mnisvnelobas; - Execute Reader. abrunebs sasedego ertobliobas Data Reader obieqtis sasualebit. obieqti DataReader gvtavazobs nakads monacemta bazis Canawerebis ertobliobit, orond mxolod erti mimartulebit wasakitxad. monacemta provaideris sxva komponentebisgan gansxvavebit DataReader-is egzemplarebis Seqmna pirdapir araa dasasvebi. misi mireba SeiZleba Command obieqtis Execute Reader metodebit: SqlCommand.ExecuteReader metodi abrunebs SqlDataReader obieqts, xolo metodi OleDbCommand.ExecuteReader ki - OleDbDataReader obieqts. Tu DataReader obieqtis Semcveli monacemebis Cawera diskze araa sawiro, masin es striqonebi SeiZleba pirdapir gadaegzavnos danarts. vinaidan drois nebismier momentsi mexsierebasi imyofeba mxolod erti striqoni, DataReader obieqtis gamoyeneba TiTqmis ar amcirebs sistemis mwarmoeblurobas, orond moitxovs monopolur mimartvas gaxsnil Connection-obieqtze DataReader obieqtis sasicocxlo droisganmavlobasi. 165

166 obieqti DataAdapter aris ADO.NET is ZiriTadi klasi, romelic uzrunvelyofs gamoyofil monacemebtan mimartvas. arsebitad, igi asrulebs Suamavlis funqciebs monacemta bazisa da DataSet-obieqtis urtiertqmedebistvis. Fill metodis gamozaxebisas DataAdapter obieqti Seavsebs monacemebit DataTable-s an DataSet-s monacemta bazidan. monacemebis damusavebis Semdeg, romlebic CatvirTulia mexsierebasi, SesaZlebelia modificirebuli Canawerebis motavseba monacemta bazasi, DataAdapter obieqtis Update metodis gamozaxebit. DataAdapter-s aqvs otxi Tviseba, romlebic warmoadgens monacemta bazis brzanebebs: - SelectCommand Seicavs teqsts an brzanebis obieqts, romelic axorcielebs monacemta bazidan amorcevas (magalitad, metodi Fill); - InsertCommand Seicavs teqsts an brzanebis obieqts, romelic axorcielebs striqonis Casmas cxrilsi; - DeleteCommand Seicavs teqsts an brzanebis obieqts, romelic axorcielebs striqonis waslas cxrilidan; - UpdateCommand Seicavs teqsts an brzanebis obieqts, romelic axorcielebs mnisvnelobata ganaxlebas monacemta bazasi; Update metodis gamozaxebisas yvela Secvlili monacemi kopirdeba DataSet-obieqtidan monacemta bazasi, Sesabamisi brzanebebis InsertCommand, DeleteCommand an UpdateCommand gamoyenebit ADO.NET programuli paketi monacemta bazebtan samusaod MS ADO.NET (Microsoft ActiveX Data Objects) aris firma maikrosoftis uaxlesi integrirebuli programuli teqnologia (klasebis biblioteka Visual Studio.NET paketsi), romelic gamoiyeneba internetsi struqturuli monacemebis gasacvlelad klient-server arqiteqturisatvis, monacemta bazebtan (magalitad, Oracle, SQL Server da sxv.) samusaod da momxmarebelta interfeisebis asagebad [5]. 166

167 Visual Studio.NET paketsi originalurad gamoiyeneba obieqt-orientirebuli daprogramebis enebi C#, Visual Basic, Java, Viasual C++, agretve XML ena Web aplikaciebis asagebad. SQL Server da ADO.NET programuli paketebi, rogorc monacemta bazebisa da bazebtan musaobis momxmarebelta interfeisebis damusavebis klasikuri instrumentuli sasualebani, flobs agretve jgufur CASE-teqnologiebs da UML-enas. misi sasualebit xorcieldeba efeqturi mravaldoniani gamoyenebiti sistemebis damusaveba monacemta bazebtan samusaod intraqselsa da internetsi ADO.NET-is obieqturi modelis struqtura sistemis obieqturi modeli ori nawilisgan Sedgeba: marcxena - miertebadi obieqtebi (connected objects) da marjvena - gancalkevebadi obieqtebi (disconnected obects). 4.1 naxazze nacvenebia ADO.NET obieqturi modelis Semadgeneli klasebi, romelta danisnulebasac mokled SevexebiT am paragrafsi. nax.4.1. ADO.NET is obieqtebis ierarqia 167

168 miertebadi obieqtebi usualod ukavsirdeba monacemta bazas, axorcielebs massi tranzaqciebs, monacemta Zebnas, ganaxlebas da gadacemas. gancalkevebadi obieqtebis danisnulebaa monacemta bazebidan mirebuli obieqtebis (cxrilebi, striqonebi, svetebis da a.s.) avtonomiurad damusaveba. ert-erti mtavari termini `monacemta mimwodebelia~ (DataProvider), romlidanac sistema Rebulobs monacemebs. amgvarad,.net-is monacemta mimwodebeli aris klasta ertoblioba, romelic uzrunvelyofs monacemta sacavebtan (Repository) urtiertqmedebas. am sistemasi monacemta ori mimwodebelia gatvaliswinebuli: SQL Client.NET Data Provider, romelic SQL Server monacemta bazastan musaobs, da OLE DB.NET Data Provider, romelic urtiertqmedebs monacemta sxvadasxva bazebtan OLE DB mimwodeblis sasualebit. monacemta yvela mimwodebeli ertidaimave sabazo klasebs iyenebs: Connection, Command, DataProvider, Parameter, Transaction, orondac TavianT konteqstsi. magalitad, Tu is SQL Server-ia, masin gveqneba SqlConnection, Tu OLE DB, masin OleDbConnection. - obieqti Connection gamoiyneba monacemta bazastan fizikuri kavsiris dasamyareblad (an am kavsiris gasawyvetad). obieqtis TvisebebSi mietiteba monacemta wyaros tipi, misi adgilmdebareoba da sxva parametrebi. - Command obieqtebi gamoiyneba monacemta bazastan SQLmoTxovnebis misawodeblad, Senaxvadi procedurebis (Stored Procedures) gamosazaxeblad, cxrilebisa (Tables) da warmodgenebis (Views) mnisvnelobebis misarebad, Sesacvlelad da dasabruneblad. magalitad, SqlCommand 168

169 obieqts aqvs ExecuteXmlReader metodi, romelic motxovnebis Sedegebs abrunebs XML-formatSi. - obieqti DataReader gamoiyneba motxovnebis safuzvelze monacemta bazidan Canawerebis swrafad amosarcevad da dasatvaliereblad. misi sasualebit CanawerebSi monacemta cvlileba ar xdeba. - obieqti Transaction gamoiyneba monacemta bazasi ertdroulad ramdenime mimdevrobiti cvlilebis gansaxorcieleblad. es ramdenime cvlileba jgufdeba rogorc erti mtliani procedura, romelsac tranzaqcias uwodeben. obieqts Connection aqvs metodi BeginTransaction, romelic qmnis Transaction obieqts. misi danisnulebaa jgufsi Semavali cvlilebebis ganxorcielebis damowmeba an uaryofa. Tu, magalitad, jgufsi ar Sesrulda yvela dagegmili cvlileba, masin tranzaqcia monacemta bazasi ar moaxdens nawilobriv Secvlili Canawerebis dafiqsirebas. - obieqti Parameter gamoiyeneba SQL-moTxovnis formirebis processi Where-konstruqciaSi `? ~ - markeris CasmiT (magalitad, Where Client_Id =?). e.i. SesaZlebeli iqneba yvela klientistvis am parametris gamoyeneba. - obieqti DataAdapter aris `xidi~ monacemta bazasa da ADO.NET modelis gancalkevebul obieqtebs Soris. magalitad, metodi DataAdapterFill axorcielebs monacemta efeqtur amorcevas bazasi Sesabamisi motxovnis safuzvelze, Semdeg ki es monacemebi musavdeba avtonomiurad DataSet an DataTable obieqtebit. bolos, Secvlili da gadamusavebuli monacemebi DataSet-is obieqtebidan DataAdapter-is sasualebit Caiwereba monacemta bazasi. DataAdapter-s aqvs ramdenime Tviseba, romlebic Command obieqtebia. magalitad, SelectCommand, aris motxovna DataSet obieqtis Sesavsebad. agretve InsertCommand, Update- Command da DeleteCommand, romlebic Seesabameba monacemta 169

170 bazasi axal, Secvlil an wasaslel CanawerTa Commandobieqtebs. cxrilebis Sevsebisa da monacemta cvlilebebis dafiqsirebis procesebisatvis bazasi DataAdapter-s gaacnia monitoringis Tvisebebi. magalitad, TableMapping - monacemta bazis cxrilebis Sedarebis metvalyureobis Tviseba, ColumnMapping - ki igive svetebisatvis. rogorc arvnisnet, monacemta misarebad bazidan aucilebelia zemoarwerili miertebadi obieqtebis gamoyeneba. mat dasamusaveblad (dalageba, Secvla da a.s.) ki aucilebelia gadavidet avtonomiur rejimsi, anu gamoviyenot ADO.NET-is gancalkevebadi obieqtebi. SevexoT mat mokled. - obieqti DataSet Seicavs monacemta ertobliobas. igi cxrilebis konteineria DataTable obieqtebisatvis. magalitad, mravaldonian sistemasi serveris monacemta bazastan ertxel mimartvis dros SesaZlebelia amovirciot ertdroulad ramdenime cxrili (konteinersi) da gadmovitanot Sedegebi. ramdenjerme mimartva arar iqneba sawiro. DataSet monacemebs amusavebs gancalkevebul rejimsi, DataRow obieqtit kesmexsierebasi. amgvarad, Tu moxda mati nawilis Secvla da sawiroa cxrilebis ukan dabruneba serversi, masin yvela cxrilis gadagzavna ukan araefeqturia da sistema gvtavazobs mxolod Secvlili nawilis dabrunebas, romelic xorcieldeba GetChanges metodit. aqve ganixileba Merge metodi, romelsac SeuZlia ori DataSet obieqtis Semcveli monacemebis gaertianeba ert obieqtad. es Zalzed mnisvnelovani momentia mravaldonian klient-server arqiteqturian sistemebistvis. DataSet obieqti inaxavs monacemebs XML-dokumentis saxit da swrafadac gardaqmnis mas. - obieqti DataTable monacemebs amusavebs svetebisa da Canawererbis (striqonebis) saxit. metodi DataAdapterFill 170

171 gamoiyeneba motxovnis safuzvelze mirebuli monacemebis mosatavseblad DataTable obieqtsi. - obieqti DataColumn aris cxrilis sveti. magram massi inaxeba ara realuri cxrilis svetis monacemebi, aramed am svetis Sesabamisi struqturis informacia (metamonacemebi). misi Tvisebebia Type, ReadOnly, AllowDBNull, Unique, Default, AutoIncrement. gamoiyeneba agretve Tviseba Expression, romelic gaangarisebadi svetebistvisaa gankutvnili da uzrunvelyofs formulis Caweras. - obieqti Constraint aris DataTable-obieqtis farglebsi erti an ramdenime svetis SezRudviebis monacemebi. magalitad, velis gansazrvra unikalurobaze. - obieqti DataRow cxrilis realur monacemebtan samusaod gamoiyeneba. arceuli cxrilis sawiro velis mnisvnelobis misarebad gamoiyeneba Item Tvieba. monacemta ganaxlebis procedurebisatvis gamoiyeneba metodi DataRowBeginEdit, Semdeg Item TviebiT moxdeba cvlileba da bolos, metodit EndEdit cvlilebebi Seinaxeba. Tu araa sawiro cvlilebebis Senaxva, masin gamoiyeneba metodi CancelEdit. - obieqti DataRelation axorcielebs cxriltasoris kavsirebs. misi sasualebit SesaZlebelia kaskaduri kavsirebis arwera `deda-svil~ cxrilebs Soris da, saboloo jamsi, monacemta mtlianobis uzrunvelyofa. yoveli cvlileba `deda~-cxrilsi asaxuli iqneba avtomaturad `SvilSi~. - obieqti DataView gamoiyeneba motxovnis safuzvelze mirebuli realuri cxrilis monacemebis warmosadgenad (dasatvaliereblad) sxvadasxva formit. magalitad, cxrilis striqonebis dalageba romelime velis mowesrigebit (Sort-Tviseba), an Canawerebis amorceva raime kriteriumit (Filter-Tviseba). rac mtavaria, es monacemebi realurad mexsierebasi ar Tavsdeba Sesanaxad. 171

172 4.5. monacemebtan mimartva Visual Studio.NET sistemas aqvs standartuli ostati programebisa da dizainerebis simravle, romelta sasualebitac advilad da efeqturad xorcieldeba monacemebtan wvdomis arqiteqtura danartebis damusavebis processi. amastanave ADO.NET obieqturi modelis yvela SesaZlebloba misawvdomia programulad, rac uzrunvelyofs arastandartuli funqciebis realizaciis an danartebis agebis SesaZleblobas, romlebic momxmarebelta motxovnilebebzea orientirebuli. am leqciasi Cven gavecnobit, Tu rogor davukavsirdet monacemta bazas ADO.NET is gamoyenebit, rogor amovirot sawiro monacemebi da gadavcet isini danarts. es sakitxebi SeiZleba Sesruldes Visual Studio.NET-is grafikuli instrumentebitac da programuladac monacemta bazastan mierteba aplikaciasi arsebobs monacemta bazastan miertebis ramdenime xerxi. yvelaze martivia amis ganxorcieleba Visual Studio.NET-is grafikuli instrumentit. monacemta wyarostan miertebisa da misi martvisatvis gamoiyeneba fanjara Server Explorer. igi 4.7. interfeisis damusavebis sademonstracio magaliti ZiriTadi amocana, romelsac Cven aq ganvixilavt, aris ADO.NET programuli paketis gamoyenebit momxmarebelta samusao interfeisis damusavebis sademonstracio magalitis ageba. amastanave, monacemta bazebis saxit unda gamoviyenot SQL Server paketit damusavebuli cxrilebi. 4.2 naxazze nacvenebia Start Microsoft Visual Studio NET-iT samusao sistemasi Sesvlis fanjara. 172

173 pirvel rigsi SevamowmoT monacemta bazastan kavsiri. amisatvis meniudan View Server Explorer-iT gamovitanot fanjara (nax.4.3) da avirciot HOMESERVER.BusinProc.dbo. gamocndeba SQL Server-is baza, cxrilebi da velebi. DIAGRAM1-is arcevit mivirebt cxrilebs kavsirebit, romelic identuria SQL Server-Si Cvens mier Seqmnili bazisa. amgvarad Tavsebadoba kargadaa realizebuli. 4.4 naxazze nacvenebia cxrilta kavsirebis fragmenti, mxolod mati sataurebis CvenebiT. axla daviwyot momxmareblis interfeisis (erti samusao formis) damusaveba. meniudan avirciot File New Project kombinacia da mivirebt 4.5 naxazze nacveneb fanjaras. aq SevarCevT saxels (Name), vincesterze Sesanax gzas da papkis saxels (Location). Template-Si avircevt Windows Application. Semdeg meniudan vircevt: File New Item da mivirebt 4.6 naxazze mocemul fanjaras. avirciot Data Form Wizard da ekranze gamocndeba axali forma (nax.4.7). aq RilakiT Next gadavalt Semdeg bijze (nax.4.8). 173

174 nax.4.2. ADO.NET sastarto fanjara 174

175 nax.4.3. monacemta bazastan dakavsireba 175

176 nax.4.4. SQL Server moncemta bazis asaxva ADO.NET-Si 176

177 nax.4.5. nax

178 nax.4.7. nax.4.8. SevarCioT monacemta bazis saxeli da Next. 178

179 monacemta bazastan kavsiris dasamyareblad 4.9 naxazis Sesabamisi fanjridan New Connection-Si SevarCevT saxels. amisatvis unda ganvixilot momdevno sami fanjara, Sesabamisad nax.4.10-a,b,g. rogorc vxedavt, Cven SevarCieT SQL Server-is monacemta provaideri. nax.4.9 nax.4.10-a 179

180 nax.4.10-b nax.4.10-g 180

181 4.8. sademonstracio magaliti MsSQL Server bazis, ADO.NET da C# is gamoyenebit ganvixilot magaliti SQL Server-is monacemta bazisatvis `fakulteti~ (nax ) cxrilebit `studentebi~, `jgufebi~, `leqtorebi~ da `katedrebi~. nax MsSQL Server bazis struqtura 181

182 nax MsVisual Studio bazastan mierteba 182

183 nax ADO.NET bazis diagrama 183

184 nax ADO.NET bazis cxrilebi 184

185 nax C# -is interfeisi 185

186 nax Visual Studio-C# -is Sedegebi Sedegad miireba C#.NET is ori fanjara, romlis cxrilebic dakavsirebulia SQL Server-is monacemta bazastan ADO.NET provaideris sasualebit. 186

ეს პროექტი დაფინანსებულია ევროკავშირის მიერ. wameba. Sedegebi, diagnostika, eqspertiza da reabilitacia. (saxelmzrvanelo klinicistebisatvis)

ეს პროექტი დაფინანსებულია ევროკავშირის მიერ. wameba. Sedegebi, diagnostika, eqspertiza da reabilitacia. (saxelmzrvanelo klinicistebisatvis) ეს პროექტი დაფინანსებულია ევროკავშირის მიერ wameba!! Sedegebi, diagnostika, eqspertiza da reabilitacia (saxelmzrvanelo klinicistebisatvis) თბილისი 2008 1 This Project is Funded by the European Union Torture

Detaylı

G 2013 #2. G life. TurqeT-saqarTvelos sazrvarze. TurqeTeli qartvelebis cxovreba TÜRKİYELİ GÜRCÜLERİN HAYATI

G 2013 #2. G life. TurqeT-saqarTvelos sazrvarze. TurqeTeli qartvelebis cxovreba TÜRKİYELİ GÜRCÜLERİN HAYATI T G 1 T G 2013 #2 fasi: 2 lari Fiyati: 2 Tl TurqeT-saqarTvelos sazrvarze axali sabajo gaixsneba monatvawroba TÜRKİYE GÜRCİSTAN SINIRINDA Köle Ticareti YENİ GÜMRÜK AÇILACAK TurqeTeli qartvelebis cxovreba

Detaylı

saqartvelos soflis meurneobis mecnierebata akademiis akademiur sabwosi

saqartvelos soflis meurneobis mecnierebata akademiis akademiur sabwosi sareklamo-sainformacio biuleteni # 1 (44 ) marti, 2012 w. gaas@dsl.ge http://gaas.dsl.ge Tbilisi, 0102, ivane javaxisvilis q. #51 t. 291 03 90 xvale ar unda hgavdes drevandels, Tu kacs progresi, winsvla

Detaylı

C# nedir,.net Framework nedir?

C# nedir,.net Framework nedir? 1 C# nedir,.net Framework nedir? C# nedir? C#, C/C++ ve Java dillerinde türetilmiş,bu dillerin dezavantajlarının elenip iyi yönlerinin alındığı, güçlü basit, esnek, tip-güvenli(typesafe,tür dönüşümlerindeki

Detaylı

qartuli monetebi erzrumis muzeumsi

qartuli monetebi erzrumis muzeumsi 50 qap ქართველოლოგიის აქტუალური პრობლემები osman aiteqini TurqeTi, vanis universiteti qartuli monetebi erzrumis muzeumsi statiasi TurqeTis respublikis armosavlet anatoliis regionis ert-erti mnisvnelovani

Detaylı

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1 BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1 Kaynaklar: Sefer Algan, Her Yönüyle C#, 6. Baskı, Pusula Yayıncılık. www.sharpnedir.com 1. DÜZEYLERİNE GÖRE BİLGİSAYAR DİLLERİ Script Dilleri Yüksek Düzeyli Diller

Detaylı

S. makarovi, i. nacvlisvili მცირე ბიზნესის მართვის ავტომატიზებული სისტემები

S. makarovi, i. nacvlisvili მცირე ბიზნესის მართვის ავტომატიზებული სისტემები S. makarovi, i. nacvlisvili მცირე ბიზნესის მართვის ავტომატიზებული სისტემები Tbilisi 2014 saxelmzrvanelosi ganxilulia mcire biznesis martvis Tanamedrove metodebis gamoyeneba dafuznebuli kompiuteruli teqnologiebis

Detaylı

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1 Programlama Dilleri III 2007-2008 Bahar BM 211 Programlama Dilleri 3 1 Ders Hakkında Ders Sorumlusu Öğr.Gör. Bora UĞURLU Ders Slaytları İçin http://members.comu.edu.tr/boraugurlu/ Dersle İlgili İletişim

Detaylı

11/10/2014 docflow/nom_2_0/2/nomfileserver/getfile?file_id= &obj_name=a&sessvalue=ebydvvdwjn4rldfk0yd9ueogqmatvumwqb

11/10/2014 docflow/nom_2_0/2/nomfileserver/getfile?file_id= &obj_name=a&sessvalue=ebydvvdwjn4rldfk0yd9ueogqmatvumwqb 11/10/2014 docflow/nom_2_0/2/nomfileserver/getfile?file_id=44428104992177151404&obj_name=a&sessvalue=ebydvvdwjn4rldfk0yd9ueogqmatvumwqb საქართველოს შრომის, ჯანმრთელობისა და სოციალური დაცვის სამინისტროს

Detaylı

დევნილთა დამოკიდებულების კვლევა გრძელვადიანი გადაწყვეტილებების შესახებ: საქართველოში იძულებით გადაადგილებულ პირთა მოსაზრებების გაჟღერება

დევნილთა დამოკიდებულების კვლევა გრძელვადიანი გადაწყვეტილებების შესახებ: საქართველოში იძულებით გადაადგილებულ პირთა მოსაზრებების გაჟღერება სოციალური კვლევისა და ანალიზის ინსტიტუტი IDP Intentions Survey - Georgia დევნილთა დამოკიდებულების კვლევა გრძელვადიანი გადაწყვეტილებების შესახებ: საქართველოში იძულებით გადაადგილებულ პირთა მოსაზრებების გაჟღერება

Detaylı

saqartvelos sapatriarqos wmida andria pirvelwodebulis saxelobis qartuli universiteti

saqartvelos sapatriarqos wmida andria pirvelwodebulis saxelobis qartuli universiteti saqartvelos sapatriarqos wmida andria pirvelwodebulis saxelobis qartuli universiteti St. Andrew the First-Called Georgian University of Patriarchate of Georgia ქართველოლოგიის აქტუალური პრობლემები Actual

Detaylı

«BM364» Veritabanı Uygulamaları

«BM364» Veritabanı Uygulamaları HAFTA 8 DB içerisinde CLR Bileşenleri" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları Konu Akışı SQL Server ve.net CLR SQL Server içerisinde

Detaylı

ssip vaxtang Wabukianis saxelobis Tbilisis sabaleto xelovnebis saxelmwifo saswavleblis 13 wlis gaweuli musaobis angarisi

ssip vaxtang Wabukianis saxelobis Tbilisis sabaleto xelovnebis saxelmwifo saswavleblis 13 wlis gaweuli musaobis angarisi ssip vaxtang Wabukianis saxelobis Tbilisis sabaleto xelovnebis saxelmwifo saswavleblis 13 wlis gaweuli musaobis angarisi (mnisvnelovani RonisZiebebi) 2004 wlis seqtemberi 2016 wlis dekemberi zogadi informacia

Detaylı

LINQ Language Integrated Query Dille Bütünleştirilmiş Sorgu Bir Veri Tabanı Tablosundan Veri Gösterme

LINQ Language Integrated Query Dille Bütünleştirilmiş Sorgu Bir Veri Tabanı Tablosundan Veri Gösterme LINQ Language Integrated Query Dille Bütünleştirilmiş Sorgu Bir Veri Tabanı Tablosundan Veri Gösterme Amaç: Bir veritabanındaki bilgileri LINQ aracılığı ile ekranda nasıl gösterebiliriz? Yazar: Oğuz Alpöge,

Detaylı

ბ რ ძ ა ნ ე ბ ა ვ ბ რ ძ ა ნ ე ბ:

ბ რ ძ ა ნ ე ბ ა ვ ბ რ ძ ა ნ ე ბ: http://docflow/nomfileserver/getfile?file_id=50719589612705644096&... 1 of 6 3/5/2016 7:12 PM საქართველოს შრომის, ჯანმრთელობისა და სოციალური დაცვის სამინისტროს საჯარო სამართლის იურიდიული პირის სამედიცინო

Detaylı

Txilis nergis gamoyvana, barebis gaseneba da movla (rekomendaciebi)

Txilis nergis gamoyvana, barebis gaseneba da movla (rekomendaciebi) Txilis nergis gamoyvana, barebis gaseneba da movla (rekomendaciebi) Tbilisi 2015 rekomendaciebis avtorebi: iuza vasaze saqartvelos soflis meurneobis mecnierebata akademiis akademikosi, profesori; givi

Detaylı

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void

Detaylı

C # www.bilisimogretmeni.com

C # www.bilisimogretmeni.com C # 1 Neler Öğreneceğiz Nesneye yönelik programla nedir? (Metot nedir?, sınıf nedir?, nesne nedir?, nesneler nasıl tü retilir?...) Nesneye yönelik programlamanın üstünlükleri?.net teknolojisi nedir? Neleri

Detaylı

GÖRSEL PROGRAMLAMA - I 2013-2014

GÖRSEL PROGRAMLAMA - I 2013-2014 GÖRSEL PROGRAMLAMA - I 2013-2014 Ders Hakkında Ders Sorumlusu Öğr.Gör. Ekrem Eşref KILINÇ Dersle İlgili İletişim İçin ekremesrefkilinc@gmail.com Neler Öğreneceğiz? Nesneye yönelik programla nedir? (Metot

Detaylı

კლიმატის გლობალური ცვლილება და საქართველო სახელმძღვანელო სკოლის მოსწავლეებისთვის

კლიმატის გლობალური ცვლილება და საქართველო სახელმძღვანელო სკოლის მოსწავლეებისთვის CH 4 4 CO 2 N 2 2 O CO CO 2 CH 4 C კლიმატის გლობალური ცვლილება და საქართველო სახელმძღვანელო სკოლის მოსწავლეებისთვის masala momzadda proeqtis - klimatis cvlilebastan adaptacia da katastrofebis riskis Semcireba

Detaylı

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

Detaylı

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com Nesne Yönelimli Programlama Nesne Yönelimli Programlama, 1990 lı yıllarda başlayan ve günümüzde de yoğun olarak kullanılan bir programlama

Detaylı

ISCOM Kurumsal ISCOM KURUMSAL BİLİŞİM TEKNOLOJİLERİ EĞİTİM KATALOĞU

ISCOM Kurumsal ISCOM KURUMSAL BİLİŞİM TEKNOLOJİLERİ EĞİTİM KATALOĞU 2018 ISCOM Kurumsal ISCOM KURUMSAL BİLİŞİM TEKNOLOJİLERİ EĞİTİM KATALOĞU MİCROSOFT SİSTEM EĞİTİM HİZMETLERİ... 3 MİCROSOFT YAZILIM DANIŞMANLIĞI EĞİTİM HİZMETLERİ... 5 ORACLE EĞİTİM HİZMETLERİ... 7 JAVA

Detaylı

ucxo qveynis sasamartlo gadawyvetilebis saqartvelos teritoriaze cnoba da arsruleba

ucxo qveynis sasamartlo gadawyvetilebis saqartvelos teritoriaze cnoba da arsruleba ucxo qveynis sasamartlo gadawyvetilebis saqartvelos teritoriaze cnoba da arsruleba krebulsi gamoqveynebulia ertgvarovani sasamartlo praqtikis Camoyalibebisa da samartlis ganvitarebisatvis mnisvnelovani

Detaylı

Windows Programlama Güz Dönemi

Windows Programlama Güz Dönemi Windows Programlama 2016-2017 Güz Dönemi C#, yeni bir programlama dili olup, iki açıdan önemlidir: Microsoft.NET Framework ü kullanabilmek üzere tasarlanıp geliştirilmiştir. Modern object-oriented metodolojileri

Detaylı

qartvelta morvaweoba osmaletsa da TurqeTis respublikasi muhajirobis Semdgom

qartvelta morvaweoba osmaletsa da TurqeTis respublikasi muhajirobis Semdgom Actual Problems of Kartvelology 161 murat qasabi TurqeTi, TurqeT-saqarTvelos megobrobis sazogadoebis xelmzrvanelis moadgile qartvelta morvaweoba osmaletsa da TurqeTis respublikasi muhajirobis Semdgom osmaletis

Detaylı

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I GENEL DERS BİLGİLERİ Öğretim Elemanı : İzzet TAMER Ofis : MUH 311 Ofis Saatleri : Pazartesi: 14:10 15:00, Salı:

Detaylı

wyalmomaragebasi arsebuli mdgomareoba da ganvitarebis perspeqtivebi

wyalmomaragebasi arsebuli mdgomareoba da ganvitarebis perspeqtivebi saqartvelos energetikisa da wyalmomaragebis maregulirebeli erovnuli komisia wyalmomaragebasi arsebuli mdgomareoba da ganvitarebis perspeqtivebi Tea losaberize-arvelaze wyalmomaragebis deparatmenti 2013

Detaylı

C#.NET ile PROGRAMLAMAYA GİRİŞ

C#.NET ile PROGRAMLAMAYA GİRİŞ C#.NET ile Neden C#.NET programlama dili? C, Java ailesinden bir programlama dilidir Platformdan (işletim sistemi-makine) bağımsız yazılım geliştirme Nesne tabanlı (OOP Object Orianted Programming) Consol,

Detaylı

EĞİTİM : .NET UYGULAMA GELİŞTİRME PLATFORMU. Bölüm :.NET Uygulama Geliştirme Platformu. Konu :.NET Framework Nedir? Page 1 of 17

EĞİTİM : .NET UYGULAMA GELİŞTİRME PLATFORMU. Bölüm :.NET Uygulama Geliştirme Platformu. Konu :.NET Framework Nedir? Page 1 of 17 EĞİTİM :.NET UYGULAMA GELİŞTİRME PLATFORMU Bölüm :.NET Uygulama Geliştirme Platformu Konu :.NET Framework Nedir? Page 1 of 17 .NET Framework Nedir?.NET Framework, Microsoft tarafından geliştirilen, açık

Detaylı

კატასტროფები: სტატისტიკა და კავშირი კლიმატის ცვლილებასთან

კატასტროფები: სტატისტიკა და კავშირი კლიმატის ცვლილებასთან კატასტროფები: სტატისტიკა და კავშირი კლიმატის ცვლილებასთან giorgi gafrindasvili 6-9 ivnisi 2011 weli INTERNATIONAL INSTITUTE FOR GEO-INFORMATION SCIENCE AND EARTH OBSERVATION bunebrivi katastrofebi geologiuri

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

MOBIL UYGULAMA GELIŞTIRME

MOBIL UYGULAMA GELIŞTIRME MOBIL UYGULAMA GELIŞTIRME PELIN YILDIRIM FATMA BOZYIĞIT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Bu Derste Java Programlama (Crash Course) Class, Nesne, Metodlar, Overloading,

Detaylı

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 ix 1 İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19 23 Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 Kayan Nokta Tipleri 30 Sayısal Veri Tipi Dönüşümleri

Detaylı

3/31/2015 docflow/nomfileserver/getfile?file_id= &obj_name=a&sessvalue=qpt3sekxoskyczi5plnvvqhbulecij6i8albo68cytbatug

3/31/2015 docflow/nomfileserver/getfile?file_id= &obj_name=a&sessvalue=qpt3sekxoskyczi5plnvvqhbulecij6i8albo68cytbatug 3/31/2015 docflow/nomfileserver/getfile?file_id=04135193972080327601&obj_name=a&sessvalue=qpt3sekxoskyczi5plnvvqhbulecij6i8albo68cytbatug საქართველოს შრომის, ჯანმრთელობისა და სოციალური დაცვის სამინისტროს

Detaylı

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.

Detaylı

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5 İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5 2 VISUAL STUDIO GELİŞTİRME

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

BİL 458 Web Programlama dersi. Yrd. Doç. Dr. Murat YEŞİLYURT

BİL 458 Web Programlama dersi. Yrd. Doç. Dr. Murat YEŞİLYURT BİL 458 Web Programlama dersi Yrd. Doç. Dr. Murat YEŞİLYURT myesilyurt@turgutozal.edu.tr ANA KAYNAK : ASP.NET Web Developer's GuideLee, Wei Meng Ortiz, Jonothon Garrett, Chris Syngress Publishing, ISBN:9781928994510

Detaylı

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama. C++ Class larina baslangic Object oriented programming language olarak kullanildiginda, programming in temel birimi class lardir Object lerin create edilmesinde blueprint gorevi gorur Class data (object

Detaylı

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri Procedure Based Programlama Procedural Programming Subprograms, functions/procedures kullanilmak suretiyle programi kisimlara ayirmak. Programlama karmasikligi procedure lar icinde gizlenir Data karmasikligi

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları NESNE TABANLI PROGRAMLAMA Nesne Tabanlı Programlama Nedir? Nesne tabanlı programlamada esas olan, gerçek hayatta var olan olguların programlamaya aktarılmasındaki yeni yaklaşımdır. Klasik prosedürel programlamada

Detaylı

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir

Detaylı

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9 VII 1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9 2 KOD YAZMAYA BAŞLANGIÇ 11.Net Framework 11 Yeni Proje Oluşturmak

Detaylı

C#.Net & Linq (Language Integrated Query)

C#.Net & Linq (Language Integrated Query) C#.Net & Linq (Language Integrated Query) Adım-1 Adım-2 Adım-3: aşağıdaki ekran gelir. Bu ekrandan Server Explorer seçeneği ile SQL sunucuya bağlanılırsa Adım-4 deki gibi bir ekran gelir Adım-4: Soldaki

Detaylı

Kıbrısta Tam burslu okurken Comaks Academy ve Elborz TV de bir çok endüstriyel ve ticari yazılım süreçlerinde bulundum.

Kıbrısta Tam burslu okurken Comaks Academy ve Elborz TV de bir çok endüstriyel ve ticari yazılım süreçlerinde bulundum. Özer Kaya İletişim Bilgileri E-Posta : maqromedia@gmail.com maqromedia@hotmail.com Adres Bilgileri : Türkiye - Kocaeli - İzmit - 42 Evler Ev Telefonu : 90 (264) 229 09 41 Cep Telefonu : 90 (553) 558 08

Detaylı

qutaisuri saubrebi - XI

qutaisuri saubrebi - XI akaki weretlis saxelmwifo universiteti AKAKI TSERETELI STATE UNIVERSITY qutaisuri saubrebi - XI samecniero konferenciis masalebi ezrvneba stambolis qartul savanesi pirveli wignis gamocemidan 130 wlistavs

Detaylı

Nesneye Dayalı Programlama

Nesneye Dayalı Programlama SAKARYA ÜNİVERSİTESİ Nesneye Dayalı Programlama Hafta 5 Prof. Dr. Ümit KOCABIÇAK Öğr. Gör. Özgür ÇİFTÇİ Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim"

Detaylı

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ KALITIM Kalıtım Biribiri ile bağlantılı bir grup öğenin ortak özelliklerini tanımlayan genel bir sınıf tanımlanabilir Bu sınıf daha sonra diğer özel sınıflara

Detaylı

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI İÇİNDEKİLER VII İÇİNDEKİLER 1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.NET Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5 2 VISUAL STUDIO 2012 GELİŞTİRME

Detaylı

Object-Oriented Programming Laboratuvar 11

Object-Oriented Programming Laboratuvar 11 Object-Oriented Programming Laboratuvar 11 19.12.2017 We use abstract class Employee to represent the general concept of an employee. The classes that derive directly from Employee are SalariedEmployee

Detaylı

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği Nesneye Yönelik Programlama Uygulama 1 Senaryo: Kisi sınıfı TCKimlikNo, Isim ve Adres bilgilerine sahip olup, Adres bilgisi de aynı zamanda bir sınıftır. Adres

Detaylı

Oyuncu Sınıfı. /// <summary> /// Oyuncumuzun elindeki kart /// </summary> private ArrayList kart = new ArrayList(6);

Oyuncu Sınıfı. /// <summary> /// Oyuncumuzun elindeki kart /// </summary> private ArrayList kart = new ArrayList(6); Oyuncu Sınıfı using System; using System.Collections; namespace Tombala /// Tombala oyunundaki her bir oyuncu class Oyuncu /// Oyuncumuzun elindeki kart private ArrayList kart = new ArrayList(6); /// Oyuncumuzun

Detaylı

C# Diziler Sınıf metotları Erişim (kullanım hakkı) deyimleri Üyelerin ömrü(geçerlilik süresi) Hata ayıklama (debug) aracı

C# Diziler Sınıf metotları Erişim (kullanım hakkı) deyimleri Üyelerin ömrü(geçerlilik süresi) Hata ayıklama (debug) aracı C# Diziler Sınıf metotları Erişim (kullanım hakkı) deyimleri Üyelerin ömrü(geçerlilik süresi) Hata ayıklama (debug) aracı 1 Dersimizin Konusu Erişim (kullanım hakkı) deyimleri Metot tanımlama Üyelerin

Detaylı

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

Detaylı

4. Bölüm Programlamaya Giriş

4. Bölüm Programlamaya Giriş 4. Bölüm Programlamaya Giriş Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ 4.1. C# ile Program Geliştirme Net Framework, Microsoft firması tarafından açık internet protokolleri ve standartları

Detaylı

JSF Melih Sakarya. Java Server Faces Facelet. www.mergecons.com. www.mergecons.com 1

JSF Melih Sakarya. Java Server Faces Facelet. www.mergecons.com. www.mergecons.com 1 JSF Melih Sakarya JSF Java Server Faces Facelet www.mergecons.com www.mergecons.com 1 Facelet JSF için JSP ye alternatif bir yapıdır. Tamamen xml tabanlıdır ve xhtml olarak yazılır. Xml standartlarına

Detaylı

C# Console Uygulamaları ifelse Yapıları 2

C# Console Uygulamaları ifelse Yapıları 2 C# Console Uygulamaları ifelse Yapıları 2 C# Console Uygulamaları if-else Yapıları 2 yazımızda if-else, else if kontrol yapılarının devamını programlar içerisinde göreceğiz. visual-studio-c-sharp Almak

Detaylı

Inheritance. Inheritance (turetim)

Inheritance. Inheritance (turetim) Inheritance (turetim) Bir cok problemin cozumu icin belirlenen class lar hierarsik bir yapi seklinde organize edilebilir C++ gibi bir cok Object-oriented diller class benzerliklerinin etkin bir sekilde

Detaylı

Sürücü Belgesi B. Firma Sektörü Bilişim. Bitiş Tarihi Hala çalışıyorum. Firma Sektörü Bilişim. Bitiş Tarihi

Sürücü Belgesi B. Firma Sektörü Bilişim. Bitiş Tarihi Hala çalışıyorum. Firma Sektörü Bilişim. Bitiş Tarihi İletişim Bilgileri Fatih Baytar E-Posta Adresi matanist@hotmail.com Doğum Tarihi 10/11/1981 Telefon 90 (542) 466 63 88 Adres Türkiye - İstanbul(Avr.) - Esenyurt Web Sayfam www.fatihbaytar.com Kişisel Bilgiler

Detaylı

Nesne Yönelimli Programlama ve Kalıtım

Nesne Yönelimli Programlama ve Kalıtım Nesne Yönelimli Programlama ve Kalıtım Nesne Yönelimli Programlama Modern dillerin bir çoğunda nesneye yönelimli programlama tekniği desteklenmektedir. Bu teknik yazılım geliştirmeyi kısaltan ve sistematik

Detaylı

Demetleme Yönteminin Y 3-Katmanlı Mimari Yapı ile Gerçeklenmesi. eklenmesi. KalacakYer.com

Demetleme Yönteminin Y 3-Katmanlı Mimari Yapı ile Gerçeklenmesi. eklenmesi. KalacakYer.com Demetleme Yönteminin Y 3-Katmanlı Mimari Yapı ile Gerçeklenmesi eklenmesi KalacakYer.com BİTİRME ÖDEVİ Grup Elemanları: Demet NAR 040000660 Neşe e ALYÜZ 040000662 Danış ışman: Yrd. Doç Dr. Feza BUZLUCA

Detaylı

BMH-303 Nesneye Yönelik Programlama

BMH-303 Nesneye Yönelik Programlama BMH-303 Nesneye Yönelik Programlama this anahtar kelimesi ve kalıtım Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği this kelimesinin kullanım yerleri Aktif sınıfın örneğine referans vermek için

Detaylı

Spring Framework Eğitimi

Spring Framework Eğitimi Hazırlayan: Barış Dere @BarisDere baris.dere@gmail.com Spring Framework Eğitimi Ders 2: Http://www.youtube.com/barisdere Ders içeriği Spring IoC container tanıtımı Spring IoC container çalışma şekli Metadata

Detaylı

JAVA API v2.0 Belge sürümü: 2.0.2

JAVA API v2.0 Belge sürümü: 2.0.2 JAVA API v2.0 Belge sürümü: 2.0.2 1. İçindekiler 1. İÇİNDEKİLER... 2 2. BU BELGENİN AMACI... 3 3. BELGE SÜRÜMLERİ... 3 4. SİSTEM GEREKSİNİMLERİ... 3 5. KULLANIM ŞEKLİ... 4 5.1. GENEL... 4 5.2. UYARILAR...

Detaylı

Java Programlama Giriş

Java Programlama Giriş Java Programlama Giriş 2013-2014 Bahar Dönemi Mehmet Akif Ersoy Üniversitesi Teknik Bilimler Meslek Yüksekokulu Burdur 2014 Muhammer İLKUÇAR 1 Neden Java Programlama Platformdan bağımsızdır

Detaylı

Veritabanı İşlemleri

Veritabanı İşlemleri Veritabanı İşlemleri Bu bölümde; Veritabanı bağlantısı Komutların Yürütülmesi ADO.NET Nesne Modeli kavramları incelenecektir. ADO.NET (ActiveX Data Objects) ADO.NET, var olan Windows API lerinden çok daha

Detaylı

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi Görsel Programlama Metot Yeniden Tanımlama, Metot Aşırı Yükleme, Dinamik Metot Yükleme, Soyut Sınıflar, Soyut Metotlar, Arayüzler, Çoklu Kalıtım, Anonim Sınıflar ve java.lang.object Sınıflar Programcı

Detaylı

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator Interface Comparator java.util Interface Comparator Kılgılayan sınıf: Collator Bildirimi: public interface Comparator Comparator arayüzü Java Collections Framework un bir üyesidir. Bir nesneler koleksiyonu

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

Detaylı

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2108 Yazılım Mimarisi ve Tasarımı YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 1 OOP Hatırlatma Bu bölümde Nesneye Yönelik

Detaylı

TurqeTSi mcxovrebi qartvelebis Sesaxeb

TurqeTSi mcxovrebi qartvelebis Sesaxeb Actual Problems of Kartvelology 97 nebi giumusi TurqeTi, rizes rejeb Taif erdoranis saxelobis universiteti TurqeTSi mcxovrebi qartvelebis Sesaxeb saqartvelos Semdegyvelaze meti qartveli TurqeTis teritoriazea

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 1 GUI Nesneleri ve Visual Studio IDE Kullanımı

Detaylı

Gürcüce Pratik Konuşma - Gürcüce Kelime ve Cümleler - Genç Gelişim Kişisel Gelişim

Gürcüce Pratik Konuşma - Gürcüce Kelime ve Cümleler - Genç Gelişim Kişisel Gelişim Önemli Not: Buradaki bilgiler amatör şekilde derlenmiştir. Lütfen kullanmadan önce yetkin bilgiye sahip olan kişi ve kurumlara danışın! gamarcoba:merhaba rogarexa:nasılsın kargat:iyiyim madlobt:teşekkürler,

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 4 Stack (Yığın, Yığıt) Veri Yapısı Stack Çalışma

Detaylı

TÜRKİYE İŞ KURUMU GENEL MÜDÜRLÜĞÜ SÖZLEŞMELİ BİLİŞİM PERSONELİ GİRİŞ SINAVI İLANI

TÜRKİYE İŞ KURUMU GENEL MÜDÜRLÜĞÜ SÖZLEŞMELİ BİLİŞİM PERSONELİ GİRİŞ SINAVI İLANI TÜRKİYE İŞ KURUMU GENEL MÜDÜRLÜĞÜ SÖZLEŞMELİ BİLİŞİM PERSONELİ GİRİŞ SINAVI İLANI Genel Müdürlüğümüz Bilgi İşlem Dairesi Başkanlığı emrinde istihdam edilmek üzere, 375 sayılı Kanun Hükmünde Kararnamenin

Detaylı

One ASP.NET. 5 bileşen barındırmaktadır. Web Forms Model View Controller (MVC) Web Pages Web API SignalR

One ASP.NET. 5 bileşen barındırmaktadır. Web Forms Model View Controller (MVC) Web Pages Web API SignalR ASP.NET Kısa Geçmiş Klasik ASP ilk defa 1990 ların sonunda tanıtılmıştır. ASP.NET 1.0 2002 (Web Forms) ASP.NET 2.0 2005 (Data) ASP.NET 3.5 ve ASP.NET MVC 2008 Takip eden iki yıl içinde ikiden fazla versiyon

Detaylı

JavaFX Temelleri (2)

JavaFX Temelleri (2) JavaFX Temelleri (2) Araç İpuçları (Tooltips), Yazı Tipleri (Fonts), Çalışma Ortamları ve Dağıtım Oluşturma, JavaFX Özellikleri (JavaFX Properties), Gözlenebilirlik (Observability), Bağlanımlar (Bindings)

Detaylı

Nesneye Dayalı Programlama

Nesneye Dayalı Programlama SAKARYA ÜNİVERSİTESİ Nesneye Dayalı Programlama Hafta 6 Prof. Dr. Ümit KOCABIÇAK Öğr. Gör. Özgür ÇİFTÇİ Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim"

Detaylı

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 1 Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 Eclipse Mimarisi 4 Java Teknolojisine Genel Bir Bakış 6 Taşınabilirlik 6 Java Derleyicisi ve Bytecode 6 Java Sanal Makinası (Java Virtual Machine - JVM)

Detaylı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 7 Kalıtım - II Bu bölümde; Soyut Sınıflar,

Detaylı

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. ASP.NET DERS 1 Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. Gelen ekranda Visual C# seçildikten

Detaylı

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

Detaylı

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58; BTEP212 Java DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI Lab7 bazen bir metodun içinde o metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt

Detaylı

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals The European Union s Making the Labour Market more Inclusive III programme For North Cyprus Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module

Detaylı

Arş. Gör. Mümine KAYA

Arş. Gör. Mümine KAYA Arş. Gör. Mümine KAYA E-Mail: muminekaya@osmaniye.edu.tr İş Telefonu: 0 (328) 827 10 00-3705 İş Adresi: Osmaniye Korkut Ata Karacaoğlan Yerleşkesi 80000 Merkez / OSMANİYE KİŞİSEL BİLGİLER Doğum Tarihi

Detaylı

7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio. M.İLKUÇAR - 1

7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio. M.İLKUÇAR - 1 7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio M.İLKUÇAR - imuammer@yahoo.com 1 7- PROGRAMLAMAYA GİRİŞ 7.12- C#.NET I/O (Giriş / Çıkış Komutları- fonksiyonları) : I (Input) Giriş O (Output) Çıkış Klavyeden

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 1 GUI Nesneleri ve Visual Studio IDE Kullanımı

Detaylı

Yordamsal Tabanlı Programlama

Yordamsal Tabanlı Programlama Yordamsal Tabanlı Programlama Procedural Programming (Yordamsal Programlama) Subprograms, functions/procedures kullanarak programı kısımlara ayırma prensibiyle çalışır. Programlamadaki karmaşıklık yordamlar

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı

Detaylı

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals The European Union s Making the Labour Market more Inclusive III programme For North Cyprus Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module

Detaylı

ADO.NET Entity. Abdullah UĞRAŞKAN Web Developer. apostylee.com twitter.com/apostylee

ADO.NET Entity. Abdullah UĞRAŞKAN Web Developer. apostylee.com twitter.com/apostylee ADO.NET Entity Abdullah UĞRAŞKAN Web Developer apostylee.com twitter.com/apostylee 1 İ çindekiler ADO.NET ENTİTY NEDİR?... 3 NEDEN ENTİTY?... 3 MODEL YAKLAŞIMLARI... 3 BASİT BİR MODEL... 4 DBCONTEXT...

Detaylı

CRM-ERP yazýlýmýnda EN AKILLI ÇÖZÜM : INFRA CRM-ERP ÇÖZÜMLERÝ

CRM-ERP yazýlýmýnda EN AKILLI ÇÖZÜM : INFRA CRM-ERP ÇÖZÜMLERÝ CRMERP yazýlýmýnda EN AKILLI ÇÖZÜM : INFRA CRMERP ÇÖZÜMLERÝ CRM ve ERP uygulamalarýnda tüm firma biliþim ve kültür altyapýnýzý deðiþtirmeden, o yapýyý kullanan ASP.NET web tabanlý yazýlým geliþtirdik ve

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 13: Miras İçerik Miras Kavramı Miras Yönteminin Uygulanması Erişim Etiketleri: public, private, protected Miras ve Yapıcı Fonksiyonlar Üst Sınıf Tanımlamasında

Detaylı

Şablon Türler (Generics)

Şablon Türler (Generics) Şablon Türler (Generics) CLR 1.0 da çalışma zamanında belli olmayan sınıfları kullanan esnek sınıf ve metotlar, Object sınıfı temel alınarak oluşturulması gerekmekteydi. CLR 2.0 dan itibaren Generic lerin

Detaylı

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU

Nesneye Yönelik Programlama-JAVA, Ders sorumlusu Yrd.Doç.Dr.Hilmi KU ÇU 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 13/11/2009 devam Dokümantasyon & Aç klamalar Üç türlü yöntem vard r: // Bu i aret sat r sonuna kadar olan tüm ifadeyi aç

Detaylı