2. Nimi tüübilt Text 3. Aadress tüübilt Text 4. Telefon tüübilt Number 5. Tasumaksmine tüübilt Yes/No 6. Tuusiku hind tüübilt Number. Siin vahetan formadi 7. Mänedzer tüübilt Lookup Wizard. Tüübi valikul tuleb abiaken Mulle ei soobi teha tabelit tabeli sees. Selle pärast ma klõpsan Cancel, avan algabiaken ja teen uut tabelit konstruktoris (hiljem panen selle tabeli sisu väljasse ,,Mänedzer" tabelis ,,Kliendid") vaata ,,Mänedzerid" tabeli tegemine. 8. Riik tüübilt Lookup Wizard. Selle väljaga on sama lugu. Ma teen uut tabelit ,,Riik" ja ainult pärast seda täidan välja vajaliku sisuga. vaata ,,Riik" tabeli tegemine. ,,Mänedzerid" tabeli tegemine. Avan algabiakna ja klõpsan ,,Create table in Design view"
Klientide tabel sisaldab kõiki olulisemaid andmeid raamatukogu kasutajate kohta, samuti on raamatute tabelis olulisemad andmed raamatute kohta. Laenutuste tabel sisaldab infot laenutuste kohta (laenutuste kuupäevad, tagastuskuupäevad). Maakondade tabelisse on koondatud kõik maakonnad ja linnade tabelisse kõik lugejate seas esindatud linnad. 2.1 Tabelite loomine Uue tabeli tegemiseks on mitmeid võimalusi. Kõige tavalisem moodus on Create table in Design view ehk tabeli tegemine konstruktoris. Kõik oma tabeid tegin ka just nimelt selle võimalusega. Avanevas aknas määrasin : 6 · Väljade nimed (Klientide tabelis näiteks: Kliendi ID, Eesnimi, Perekonnanimi, Riik, Maakond, Linn, Tänav). · Andmetüübid (Klientide tabelis siis vastavalt: Autonumber, Text, Text, Text, Text,Text, Text). · Võib lisada ka selgitused (Oma andmebaasis ma selgitusi ei lisanud).
Nt võib töösse tulla koodinäide ja teie ülesandeks on selgitada konstruktorite käivitamise järjekorda. Meetod, mis käivitatakse automaatselt uue objekti loomisel. Tagastab viite loodud objektile. Kasutatakse objekti algväärtustamiseks. Kõik objektid pärivad vaikimisi Object klassilt. Kui teie klassis puudub konstruktor, luuakse vaikimisi argumendita konstruktor. Uut objekti luues kutsutatakse alati välja ülemklassi argumendita konstruktor enne kui täidetakse käsud selle klassi konstruktoris. Kui kirjutate ainult argumendiga konstruktor, siis kompilaator argumendita verisooni automaatselt ei lisa. Mis juhtub, kui alamklassis on argumendiga konstruktor, aga ülemklassis konstruktor puudub? Kompilaator lisab ülemklassile argumendita konstruktori, alamklassist luues käivitatakse see enne alamklassi konstruktorit. Mis juhtub, kui alamklassis on argumendiga konstruktor, ja ülemklassis samuti ainult argumendiga konstruktor
liidesega. Klassi kasutaja/looja tarnib sellele liidesele vastava teenuse. public class DigiDocContainer { private CryptoAlgorithm cryto; public DigiDocContainer( CryptoAlgorithm crypto) { this.cryto = crypto; } } DigiDocContainer kasutab krüpteerimiseks mingit liidesele CryptoAlgorithm vastavat algoritmi objekti Konkreetne realisatsioon (algoritm) sisestatakse nt konstruktoris 13. Mis on race condition (konkurentsiolukord)? Programmi korrektne täitmine sõltub tegevuste järjestusest. Kui järjestus ei ole tagatud (nt atomaarse operatsiooni, sünkroniseerimise vmt abil), siis võib race condition põhjustada bugi. Race conditionist põhjustatud mitmelõimelise programmi viga on väga raske tuvastada, sest see ei ole üheselt korratav – vea ilmnemine sõltub lõimede tööaja jagunemisest ja täitmise järjekorrast, mis erineb igal täitmisel 14
sõltub argumentide arvust ja/või tüübist. Klassikaline konstrukor: class Kast { String nimi; double pikkus; double laius; double kõrgus; public Kast(String nimi,double pikkus, double laius, double kõrgus) { this.nimi = nimi; this.pikkus = pikkus; this.laius = laius; this.kõrgus = kõrgus; } Konstruktoris võib teha ka rohkem: Võib olla ka mitu konstruktorit: class Kast { public Kast(String nimi, double String nimi; pikkus, double laius, double double pikkus; kõrgus) { double laius; this.nimi = nimi; double kõrgus; this.pikkus = pikkus;
kommentaarid koodi sisse, kommenteeritava ploki või muutuja ette. Sellised kommentaarid
oskab kompilaator sobiva võtme järgi välja, eraldi kommentaaride faili korjata.
Kommentaariks sobib xml-märgenditega piiratud tekst. Tavalisimaks elemendiks on
kommentaarid koodi sisse, kommenteeritava ploki või muutuja ette. Sellised kommentaarid
oskab kompilaator sobiva võtme järgi välja, eraldi kommentaaride faili korjata.
Kommentaariks sobib xml-märgenditega piiratud tekst. Tavalisimaks elemendiks on
kommentaarid koodi sisse, kommenteeritava ploki või muutuja ette. Sellised kommentaarid oskab
kompilaator sobiva võtme järgi välja, eraldi kommentaaride faili korjata. Kommentaariks sobib
xml-märgenditega piiratud tekst. Tavalisimaks elemendiks on
protected - kaitstud ligipääs, muutujad ja funktsioonid on kättesaadavad selles klassis ja selle klassi laiendavates klassides Direktiivide kasutamise näided on olemas osas 6.2. Igas klassis on vaikimisi olemas konstruktor - meetod, mida käivitatakse siis, kui klassi objekti luuakse, ehk siis iga kord kui kirjutame koodis new ClassName(); Seda meetodit võib ka käsitsi ümber defineerida, selleks on olemas meetod __construct(...). Näiteks meie näides konstruktoris määratakse kohe inimese nimi ja sugu. Lisaks __construct funktsioonile on olemas ka järgmised "maagilised" funktsioonid: __destruct, __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __invoke, __set_state, __clone. Selle kusrsuse raames kasutame ainult __construct ja __toString. Konstruktori, destruktori ja __toString näide: Näide 6.1.3 Konstruktor'; }