2017 m. spalio 20 d., penktadienis

Programų testavimas ir derinimas

Programų testavimas ir derinimas

  • Java išimčių gaudymas (sakiniai try, catch ir finally)
  • Java išimčių apibrėžimas ir gaudymas
  • Standartinis Java logging mechanizmas
  • JUnit karkasas, TDD
  • Eclipse derinimo mechanizmas

Java išimtys (exceptions)
  • Java išimtys įvyksta, kai sutrikdomas normalus programos veikimas (pavyzdžiui dalyba iš 0, bandymas nuskaityti neegzituojančio objekto lauką, t.t.)
  • Java kalboje išimtys valdomos try-catch sakinių pagalba.
  • Tinkamai parašyta Java paprograme turi apdoroti arba deklaruoti galimas klaidas.
Išimčių tipai - tikrinamos išimtys

Tikrinami (checked) - išimtys, nuo kurių programa neturėtų nulūžti ir su kuriomis turi galėti susidoroti.
Taip vadinami, nes jų tvarkymas tikrinamas kompiliuojant
Galimų išimčių sąrašas yra metodo apibrėžimo dalis.
Naudojant metodą reikalaujama, kad tikrinamos išimtys būtų apdorotos naudotojo kode.
Tai visos išimtys išskyrus tas, kurios yra Error, RuntimeException ar jų plėtiniai.

Klaidos - (errors) tai išimtys nuo kurių programos gali atsigauti arba ne, priklausomai nuo autoriaus pasirinkto apdorojimo. Tai klasės Error ir jos plėtinių tipo klaidos. Pavyzdžiui - disko skaitymo klaida: programa gali nuspręsti lūžti arba pranešti vartotojui, kad failas, nors ir atidarytas - bet negali būti nuskaitytas.

Veiklos sutrikimai (runtime exceptions) - klaidos, nuo kurių programa nulūžta jos veikimo metu.
Įvykus runtime išimtims nebesitikima, kad programa gali toliau normaliai veikti, todėl jų specialaus jų apdorojimo kompiliatorius nereikalauja.  Dažniausiai tai RuntimeException klasės ir jos plėtinių tipo klaidos. Pavyzdžiui programos tikslas yra gaminti kėdes ir staiga į konvėjerį patenka stalas, kurį bandant apdoroti gali sugriūti viskas ARBA tiesiog neaišku, kaip stalo atsiradimą apdoroti.

Unchecked išimčių kontraversija

Tikrinamų klaidų naudojimas pagerina programos veikimo aiškumą ir reikalavimų naudotojui aiškumą. Jei tai naudinga - kodėl nedaryti visų išimčių tikrinamomis? Nes neviską programa gali apdoroti ir jaudintis dėl kietojo disko gedimo rašant kalkuliatoriaus programą nėra
prasmės.
 Trumpai: jei galima ir logiška tikėtis, kad metodo naudotojas gali ir/ar turėtų apdoroti kažkokią specifinę išimtį - reikėtų naudoti tikrinamas išimtis, kitu atveju - ne.

Logging elementai

• Logger - objektas, naudojamas žinutėms kurti. Dažniausiai tiesiogiai siejamas su klasės pavadinimu.
• Handler - žurnalo žinučių tvarkymui naudojami objektai (pvz atspausdinti konsolėje, įrašyti į failą, etc.)
• Filter - žurnalo žinučių filtravimui naudojami objektai (pvz - tik žinutės iš mano klasės, tik žinutės su daugiau nei 20 simbolių)
• Formatter - žurnalų žinučių formatavimui naudojamas objektas. Retai keičiamas.
• LogManager - žurnalų tvarkymo objektas, sukuriamas Java sistemos. Dažniausiai jo naudoti nereikia.

Java logging - žinučių svarba

  • SEVERE (highest value)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST (lowest value)
  • Nurodžius pvz INFO - įrašomos visos INFO ir svarbesnės žinutės, bet ignoruojamos žemesnės svarbos.
JUnit pagrindinės taisyklės
  1. Testai turi būti trumpi ir testuoti konkrečius dalykus.
  2. Testas turi būti bendros formos “<esant pradinei situacijai> <kai įvykdomi veiksmai> <turi būti gautas rezultatas>” (given-when-then).
  3. Testo metodo pavadinimas turi apibūdinti, ką tas testas tikrina, pvz:. ordersShouldBeCreated.
Eclipse derinimo mechanizmas
  • Pagrindinės derinimo sąvokos/komandos.
  • Programos paleidimas derinimo režimu.
  • Kintamųjų stebėjimas, keitimas.
  • Išraiškų vykdymas.
  • Web aplikacijų derinimas.

Derinimas - Sąvokos
  • Breakpoint - sustojimo taškas. Programa paleista derinimo rėžimu sustos šioje vietoje ir nevykdys toliau einančio kodo.
  • Conditional breakpoint - sustojimo taškas, jei tenkinama sąlyga.
  • Watch(a.k.a.expression) - laukas ar reiškinys, kurio reikšmė stebima derinimo metu.

2017 m. spalio 19 d., ketvirtadienis

Duomenų išrinkimas (SQL SELECT sakinys)

Duomenų išrinkimas panaudojant

WHERE sakinyje nurodoma sąlyga, kurią turi tenkinti grąžinamos eilutės.
ORDER BY sakiniu nurodoma viena ar daugiau rikiavimo sąlygų.
GROUP BY sąlygoje nurodoma, kad reikia grupuoti tam tikras eilutes. Grupuojant eilutes, dažniausiai naudojamos agregatinės funkcijos maksimalioms, vidutinėms ir panašioms reikšmėms išrinkti iš grupuotų eilučių.
HAVING sakinyje nurodomas kriterijus, taikomas grupuojamoms eilutėms; šis
raktinis žodis gali būti naudojamas tik tais atvejais, jeigu užklausoje yra GROUP
BY sakinys.

1.Platesnis WHERE paragrafo panaudojimas

Duomenų išrinkimui pagal užduotą sąlygą formuojama užklausa, naudojant
paragrafą WHERE. Sąlyga gali būti pateikiama kaip aritmetinė išraiška ar kaip
simbolių eilutė, surišta per lyginimo operatorius =,>,<,>=,<=,<>.

SELECT * FROM Emp WHERE Sal>=1500;

SELECT Ename,Sal,Comm FROM Emp WHERE Sal<=Comm;
sąlygoje dalyvauja du stulpeliai, bet nenurodyta konkreti reikšmė.

*Simbolinės eilutės arba data sąlygoje turi būti pateikta tarp viengubų kabučių.

Paragrafe WHERE gali būti formuojama sąlyga, naudojant sąlygos
pateikimo būdus:

BETWEEN ... AND - kurie nurodo žemiausios ir aukščiausios reikšmių intervalą,
išrenkant duomenis iš lentelės, t.y. rezultate pateikia duomenis tam tikram
reikšmių intervalui.

SELECT Ename,Sal FROM EMP WHERE Sal BETWEEN 1000 AND 1500;
Pateikia darbuotojus, kurių alga yra intervale tarp 1000 ir 1500.

BETWEEN ..AND operatorius apima ir kraštutines reikšmes. Mažesnioji reikšmė
turi būti nurodyta pirma, didesnioji - antra.

IN (sąrašas reikšmių, kurios turi būti pateiktos užklausos rezultate,
pateikiamos per kablelį)

SELECT Empno,Ename,Sal,Mgr FROM EMP WHERE Mgr IN(7902,7566);
pateiks sąraše tik du darbuotojus.

Šią sąlygą galima būtų pateikti ir kitaip.

SELECT * FROM EMP WHERE Deptno IN(10,20);

Išves darbuotojus, kurie dirba 10 ir 20 departamentuose.


LIKE ( šablonas duomenų išrinkimui iš lentelės )

LIKE galima naudoti šabloną pagal kurį atrenkami duomenys iš lentelės.
Sąlygoje gali būti pateikiami tik simboliniai ar skaitmeniniai duomenys. Mažiausiai
turi būti du simboliai formuojant šabloną.

% - reiškia nulį arba keletą simbolių
_ reiškia vieną simbolį

SELECT Ename FROM EMP WHERE Ename LIKE ‘S%’;

parodo visus darbuotojų vardus, kurių pavardė prasideda “S” raide, bet
neparodys, kurių vardai prasidės “s” raide(mažąja). LIKE operatorius gali būti
kaip trumpinys.

SELECT Ename,Hiredate FROM EMP WHERE Hiredate LIKE ‘% 81‘;
- Visi kurie pradėjo dirbti 81 metais.

SELECT Ename FROM EMP WHERE Ename LIKE ‘_A%’;
Parodys visus darbuotojus, kurių varde bus antra raidė “A”


IS NULL - (nurodo, jog vartotoją domina tik eilutės lentelėje su neapibrėžta lauko reikšme)
NULL paragrafas gali būti naudojamas norint pateikti duomenis su NULL reikšme.

SELECT Ename,Mgr FROM EMP WHERE Mgr IS NULL;
pateiks duomenis, kur Mgr neužpildytas.

IS NULL tikrina nurodyto stulpelio reikšmę.

SELECT Ename,Job,Comm FROM EMP WHERE Comm IS NULL;
parodo visus darbuotojus, kurie negauna komisinio atlyginimo.

Sudėtinga sąlyga gali būti pateikta naudojant AND arba OR.
Tokiu būdu galima pateikti kelias sąlygas duomenų išrinkimui.

SELECT Empno,Ename,Job,Sal FROM EMP WHERE Sal>=1100 AND Job=’CLERK’;

Rezultate pasirodys visi darbuotojai, kurie užima nurodytas pareigas ir jų alga
viršija 1100.

SELECT Empno,Ename,Job,Sal FROM EMP WHERE Sal>1100 OR Job=’CLERK’;

Rezultate pasirodys visi darbuotojai, kurie užima nurodytas pareigas arba jų alga viršija 1100.

Su kiekvienu sąlygos paragrafu gali būti naudojamas ir paragrafas
NOT, kuris reiškia sąlygos neigimą.

SELECT * FROM EMP WHERE Comm IS NOT NULL;
Rezultate parodo visus darbuotojus, kurie gauna komisinį atlyginimą.

... WHERE NOT Job IN (“CLERK’,’MANAGER’)
... WHERE Sal NOT BETWEEN 1000 AND 1500



SELECT Ename,Job,Sal FROM EMP WHERE job=’SALESMAN’
OR job=’PRESIDENT’ AND sal>1500;

Dvi sąlygos nurodant pareigas su atlyginimu, kai pareigos pateikiamos taip pat per sąlygą OR (arba) t.y. kai pareigos gali turėti skirtingas reikšmes, bet abiem atvejais atlyginimui keliami tie patys reikalavimai.

SELECT Ename,Job,Sal FROM EMP WHERE (job=’SALESMAN’
OR job=’PRESIDENT’) AND sal>1500;

Irgi dvi sąlygos, bet tikrinama pirma pareigybes ir jei yra viena iš nurodytų,
toliau tikrinamas atlyginimas.

Rūšiavimas ORDER BY

Normaliai išvedant duomenis iš lentelės į ekraną, duomenų tvarka yra tokia, kaip jie buvo suvesti į lentelę. Norint pakeisti duomenų atvaizdavimo tvarką operatoriuje SELECT galima naudoti paragrafą ORDER BY, kuriame nustatome, kaip turi būti pateikti duomenys užklausos rezultate. Standartiniu būdu, naudojant ORDER BY, duomenų vaizdavimas vyksta pagal alfabetą nuo A iki Z arba skaičių
didėjimo tvarka. 
Norint pakeisti duomenų atvaizdavimo tvarką atvirkščiai, prie paragrafo ORDER BY naudojame papildomą žodį DESC. Jei naudojame paragrafą ORDER BY, jis turi būti nurodomas operatoriaus SELECT gale.

SELECT * FROM EMP ORDER BY Hiredate; 
rūšiuoja pagal priėmimo į darbą datą

SELECT * FROM EMP ORDER BY Hiredate DESC;
rūšiuoja taip pat pagal datą, bet atvirkštine tvarka, T.y. vėliausia priimti į darbą pasirodys užklausos
rezultate.


LOWER(stulpelis|reikšmė) 

 Bet kokiam formate parašytus simbolius rezultate pateikia mažosiomis raidėmis. Labai naudinga nurodant sąlygą užklausoje kai reikia suvienodinti informacijos formatą duomenų atrinkimo metu. Be to ji naudinga aplikacijose pateikiant informaciją vienodam pavidale, jei ji yra suvesta skirtingam formate.

SELECT LOWER(VARDAS) FROM DARBUOTOJAS

UPPER(stulpelisėlė|reikšmė)

Bet kokiam formate parašytus simbolius rezultate pateikia didžiosiomis raidėmis. Labai naudinga nurodant sąlygą užklausoje kai reikia suvienodinti informacijos formatą duomenų atrinkimo metu. Be to ji naudinga aplikacijose pateikiant informaciją vienodam pavidale, jei ji yra suvesta skirtingam formate.

SELECT UPPER(VARDAS) FROM DARBUOTOJAS

Funkcijos Visai Grupei (Grupinės)

Šios funkcijos veikia per visą lentelę arba per lentelės sritį ir tik tada pateikia bendrą rezultatą kiekvienai grupei atskirai arba visai lentelei. Pagal nutylėjimą visos lentelės eilutės skaitomos kaip viena grupė, jei nenurodyta kitaip. Paragrafas GROUP BY komandoje SELECT gali būti naudojamas sudalinti lentelę į grupes. Grupinėse funkcijose NULL reikšmė ignoruojama. Grupinėms funkcijoms galima priskirti
funkcijas:

AVG() - nustato vidurkį grupei
COUNT() - nustato eilučių, kurių išraiška yra apibrėžta, kiekį lentelėje
MAX() -nustato didžiausią reikšmę
MIN() - nustato mažiausią reikšmę
SUM() - nustato bendrą sumą, ignoruojant neapibrėžtas reikšmes

Bet kuriuo atveju funkcijos taikomos visai grupei, bet jei nurodyta DISTINCT (MIN(DISTINCT SAL)), tai funkcija taikoma tik skirtingoms reikšmėms, t.y. pasikartojančios reikšmės yra ignoruojamos. Visais atvejais, jei yra NULL reikšmė, tai įrašas ignoruojamas, išskyrus funkciją COUNT, kai naudojama ‘*’.

  • SELECT MAX(SAL),MIN(SAL),AVG(SAL) FROM Emp;
  • SELECT COUNT(*) from EMP where DEPTNO=20;
Norint sugrupuoti įrašus lentelėje, naudojam paragrafą GROUP BY

SELECT AVG(SAL) FROM Emp;
SELECT AVG(SAL) FROM Emp GROUP BY JOB;



Kiekvienai pareigybei išvedamas darbo užmokesčio vidurkis, tačiau toks atvaizdavimo būdas nėra akivaizdus, todėl rekomenduojama šalia spausdinti ir pareigybę:

SELECT JOB,AVG(SAL) FROM Emp GROUP BY JOB;
SELECT JOB, AVG(SAL) FROM Emp WHERE JOB=‘MANAGER’ GROUP BY JOB ;

Duomenys lentelėje sugrupuojami pagal darbą, ir dar po to galima išrinkti konkrečiai nurodytą darbą ir suskaičiuoti atlyginimo vidurkį.

Viduje vienos grupės galima dar grupuoti smulkiau. Tarkime skirtinguose departamentuose, norime
grupuoti informaciją pagal pareigybes :

SELECT JOB, AVG(SAL) FROM Emp WHERE JOB=‘MANAGER’ GROUP BY DEPTN,JOB ;
SELECT Deptno,Job,Sum(sal) FROM EMP GROUP BY Deptno,Job;

Pateikiant rezultatą pirmiausia duomenys grupuojami pagal departamento numerį, o po to
jo viduje dar grupuojama pagal darbo pobūdį. Taip sutvarkius, sumuojamas bendras
atlyginimas suformuotose grupėse.

Grupinėse funkcijose yra svarbu išvedant duomenis, užklausą formuoti taip, kad nebūtų individualių laukų, kurie nėra įtraukti į paragrafą GROUP BY

SELECT DEPTN,MIN(SAL) FROM EMP; - klaidinga užklausa, nes funkcija MIN yra grupinė, o laukas DEPTNO yra kiekvienam įraše ir tai nesuderinama.

Teisingai atrodytų: 
SELECT DEPTN,MIN(SAL) FROM EMP GROUP BY DEPTNO;

Dabar DEPTNO jau yra grupės pavadinimas ir nebėra individualus laukas.

Gali būti grupuojami duomenys, pateikiant juos kaip grupę grupėje. Naudojant grupines funkcijas yra galimybė išjungti arba įjungti iš rezultato atskiras duomenų grupes. Tam galime naudoti paragrafą HAVING, kuris panaudojamas po GROUP BY.
Turi tokią pačią prasmę kaip ir operatorius WHERE, tačiau kuris yra negalimas grupinėse funkcijose.

Bendru atveju sintaksė būtų tokia

SELECT stulpelis, grupinė_funkcija
FROM lentelė
[WHERE Sąlyga]
[GROUP BY sąrašas_grupavimui]
[HAVING grupės sąlyga]
[ORDER BY rūšiavimo sąlyga]
SELECT Job,Sum(Sal) Benbra_Suma FROM EMP
WHERE Job NOT LIKE ‘SALES%’
GROUP BY Job
HAVING Sum(Sal)>5000
ORDER BY Sum(Sal)

Rūšiuoja pagal gautą sumą grupėse. Bendra_Suma formuoja naują stulpelio antraštę
Skaičiuoja visiems darbuotojams, išskyrus “SALES”

Norint parodyti vidutinį atlyginimą darbuotojams, pagal sąlygą, jog mus domina tik departamentai, kuriuose dirba daugiau nei trys žmonės, formuosime užklausą:

SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING COUNT(*)>3;

Norint parodyti tik darbus, kurių didžiausias atlyginimas yra >=$3000, formuosim užklausą:

SELECT JOB,MAX(SAL) FROM EMP HAVING GROUP BY JOB MAX(SAL)>=3000;

Nesant grupavimo, geriau atrankos sąlygai užduoti naudoti paragrafą WHERE.
Žemiau pateikiamas pavyzdys yra neteisingas, nes grupinei funkcija naudojama poroje su
paragrafu WHERE

SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO WHERE AVG(SAL)>2000;

Teisingai būtų taip:
SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL)>2000;

SELECT Max(Avg(Sal)) FROM EMP GROUP BY Deptno;

Pirma suskaičiuoja atlyginimo vidurkį departamente, o po to išrenka didžiausią
vidurkį tarp departamentų.

Java kalbos sintaksė

Primityvūs duomenų tipai

1. byte - skirtas saugoti sveikus skaičius nuo -128 iki 127. Naudojamas didelės apimties duomenims, kai svarbu efektyviai naudoti atmintį.
2. short - panašiai kaip ir byte - nedaug vietos užimantis sveikiems skaičiams saugoti skirtas duomenų tipas reikšmėms nuo -32768 iki 32767.
3. int - naudojamas sveikiems skaičiams nuo -2^32 iki +2^32 - 1 saugoti.
4. long - naudojamas sveikiems skaičiams nuo -2^63 iki 2^63-1 saugoti.
5. float - 32 bitų laukas naudojamas slankaus kablelio skaičiams saugoti. Netinka tikslioms reikšmėms
saugoti, bet efektyviai naudojamas, kai svarbu tausoti atmintį.
6. double - 64 bitų laukas naudojamas slankaus kablelio skaičiams saugoti. Netinka tikslioms
reikšmėms saugoti, bet efektyviai naudojamas, kai svarbu tausoti atmintį.
7. boolean - naudojamas taip/ne reikšmėms saugoti.
8. char - vienas teksto simbolis (t.y. viena raidė, taškas, tarpas ir pan.).

String duomenų tipas


  • Naudojamas simbolių eilutei saugoti.
  • Sudarytas iš primityvių char simbolių.
  • String objektas nėra primityvus duomenų tipas.
  • Specialus char simboliai: \t (tab), \n (line feed), \" (double quote), \' (single quote), ir \\ (backslash).
  • null reikšmė.


Masyvai
• Masyvai skirti saugoti kelioms vienodo tipo reikšmėms.
• Masyvo dydis nurodomas jį kuriant: 

int[] integerArray = new int[10];

• Masyvo elementai pasiekiami nurodant elemento indeksą, kuris prasideda nuo 0:

 integerArray[0] = 1;

• Masyvus galima sukurti naudojantis supaprastinta sintakse: 

int[] integerArray = {1, 2, 3, 4, 5};


Reiškiniai

Reiškiniai yra sudaryti iš kintamųjų, operatorių ir
paprogramių iškvietimų. Pavyzdžiai paryškinti:

int cadence = 0;
anArray[0] = 100;
System.out.println("Element 1 at index 0: " + anArray[0]);

int result = 1 + 2; // result is now 3
if (value1 == value2)
System.out.println("value1 == value2");

Reiškiniai visada grąžina reikšmę, kurios tipas priklauso
nuo panaudotų kintamųjų ir operatorių.

Sakiniai

Sakiniai Java kalboje daugmaž atitinka įprastos kalbos
sakinius, kuriais kalbame.
Sakiniai praktiškai visada baigiami ; ženklu
Kai kurie reiškiniai gali būti sakiniais.
Sakinių pavyzdžiai:

// Priskyrimo sakinys
aValue = 8933.234;
// Reikšmės padidinimo sakinys
aValue++;
// paprogramės iškvietimo sakinys
System.out.println("Hello World!");
// objekto sukūrimo sakinys
Bicycle myBike = new Bicycle();


Sudėtingi sakiniai

Reikalingi kodo vykdymo sąlygoms, išsišakojimams ir pasikartojimams valdyti.
Java kalboje naudojami :
  • if-then / if-then-else
  • switch
  • for
  • while
  • do-while
  • break
  • continue
  • return
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html

break, continue, return

Break - išeina iš paskutinio ciklo arba switch sakinio.
“labeled break” - išeina iš pažymėto ciklo ar switch sakinio.
Continue - nutraukia ciklo bloko vykdymą ir pereina prie kitos
ciklo iteracijos.
Return - nutraukia paprogramės vykdymą ir gali grąžinti
rezultatą.

return

• Grąžina kodo vykdymą į tą vietą, kurioje buvo iškviesta
paprogramė.
• Gali negrąžinti jokios reikšmės arba grąžina po return
sekančio reiškinio reikšmę.


Pagrindiniai metodo elementai

  1. Metodo tipas - public, private, protected.
  2. Grąžinamos reikšmės tipas arba raktinis žodis void jei metodas negrąžina jokios reikšmės.Privalomas.
  3. Paprogramės pavadinimas. Privalomas
  4. Parametrų sąrašas skliausteliuose () - parametrai atskiriami kableliu, kiekvienam parametrui nurodomas tipas ir pavadinimas. Jei nėra parametrų - naudojami tušti skliausteliai.
  5. Galimų klaidų (exception) sąrašas.
  6. Paprogramės kodas tarp {} skliaustelių. Privaloma dalis, nors gali būti tuščia.

Paprogramės (methods)

  • Metodo pavadinimus rekomenduojama sieti su pavadinimu veiksmo, kurį
  • atliksime. Pavyzdžiui “nuskaityti”, “bėgti”, “pažaliuoti”.
  • Metodai atpažįstami pagal savo “parašą” (signature and overloading), kurį
  • sudaro pavadinimas ir parametrai.

Papildomi skaitiniai

2017 m. spalio 18 d., trečiadienis

Java Įvadas

IDE

• Integrated Development Environment
• Palengvina kūrimo procesą
• Valdo sąranka
• Palengvina darbą su kodu
• Palengvina darbą su dideliais projektais
• Integruoja daug įrankių į vieną paketą (kompiliatorių, surinkėją, derintoją, versijų valdymo sistemą, kodo kokybės inspektavimo įrankius, ...)


Eclipse

• Integruota kūrimo aplinka (angl. Integrated Development
Environment)
• Palengvina programų rašymą, testavimą, derinimą,
surinkimą

Naudingos eclipse kombinacijos

• Ctrl+Shift+T - ieškoti tipo (klasės, baigtiniai tipai, ...)
• Ctrl+Shift+R - ieškoti resurso (kitų tipų failų)
• Ctrl+Shift+F - suformatuoti kodą pagal apibrėžtą standartą
• Ctrl+Z - atšaukti paskutinį veiksmą
• Ctrl+Space - rodo galimus tekstinės išraiškos pabaigos variantus (“autocomplete”)
• Pažymėjus simbolį (tekstinį elementą)
• F3 - nukelia į apibrėžimą ar deklaraciją
• F4 - parodo tipų hierarchiją (jei pažymėtas tipas ar jo elementas)
• Ctrl+Alt+H - parodo metodus, kurie naudoja elementą


Greitas įvadas į klases ir objektus

• Klasė apibrėžia koks bus sukurtas objekto egzempliorius
• Ką jis žino (laukai)
• Ką jis moka (metodai)


Kas yra Java?

• Platforma
• Programavimo kalba
• Standartinė biblioteka
• Virtuali mašina
• Kūrimo įrankiai

Standartinė biblioteka

• Turtinga biblioteka įgyvendinantį dažniausiai naudojamą
funkcionalumą:
• Duomenų struktūros (sąrašai, medžiai, ...)
• Darbas su failais
• Darbas su tinklu
• Darbas su formatais (Properties, XML, ZIP, JPG, ...)
• Daugiagijo modelio palaikymas
• Vartotojo sąsajos kūrimas

Virtuali mašina

• Vykdo Java kodą
• Optimizuoja esamai sistemai
• Abstrakcija užtikrinanti Java programų nepriklausomumą
nuo platformos

Skirtingi Java paketai

• JRE  - norintiems paleisti programas
• JDK - norintiems kurti programas


Primityvieji tipai

byte x = -10; // Skaičius su ženklu (-128..127); 8 bitai
short x = 1000; // Skaičius su ženklu (-32768 ... 32767); 16bit
int x = 102224; // Skaičius su ženklu; 32bit
long x = 2344445; // Didelis skaičius su ženklu; 64bit
float x = 32.44f; // Skaičius su slankiuoju kableliu; 32bit
double x = -31.443; // Skaičius su slankiuoju kableliu; 64bit
boolean x = true; // Dvinaris true arba false
char x = ‘A’; // Simbolis; 16bit

Klasė: narių matomumas

  • private - matomas tik pačios klasės viduje (jos metoduose)
  • protected - leidžia matyti paveldinčioms klasėms, bei klasėms tame pačiame pakete
  • package (kai nieko nenurodyta) - leidžia matyti klasėms tame pačiame pakete
  • public - mato, gali kviesti ir naudoti visi

Interfeisas

• Visiškai abstrakti klasė
• Kitos klasės gali įgyvendinti kiek tik nori
• Naudojama aprašyti kontraktams
• Aš galiu dirbti su tuo kas moka X
• Jei įgyvendinu X, tai galiu būti naudojamas ten kur moka dirbti su X

Kolekcijos: Set

• Unikalių elementų rinkinys
• Elementų vietos atsiminti negerantuoja
• Unikalumo užtikrinimas veiks, tik jei yra teisingos hashCode() ir equals() realizacijos


Kolecijos: SortedSet

• Išrūšiuotų unikalių elementų rinkinys
• Naudojant TreeSet
• privalu arba turėti elementus, kurie įgyvendina Comparable<T> interfeisą
• Arba perduoti Comparator<T> objektą, kuris mokės tuos elementus palyginti

Įvadas į DBVS ir SQL kalbą

Duomenų bazės, DBVS

Duomenų bazė (DB) - tarpusavyje susijusių duomenų rinkinys, kuriems apdoroti pasitelkiamas kompiuteris. Tokia DB yra panaši į elektroninę kartoteką.

Panašios DB vartotojai atlieka operacijas:
  • naujo įrašo (naujos kortelės) įtraukimas;
  • esamo įrašo (kortelės duomenų) keitimas;
  • esamo įrašo (kortelės) šalinimas;
  • duomenų paieška duomenų bazėje (kartotekoje).
Kompiuterinė sistema, kurioje atliekama panašios operacijos, vadinama duomenų bazės sistema (DBS).
PĮ, suteikianti DB vartotojui galimybę dirbti su DB neatsižvelgiant į technines detales, vadinama duomenų bazių valdymo sistema (DBVS).


DBVS leidžia vartotojui žiūrėti į DB kaip į žymiai aukštesnio lygio objektą, negu į įrašų bylą – tai pagrindinė paskirtis.
DBVS atlieka vartotojo sąsajos (interfeiso) su DB vaidmenį.
Vartotojai operuoja DB naudojant formalią kalbą, pvz. SQL.


 Reliacinės (sąryšinės) ir kitokios DB

DBVS suteikia vartotojui galimybę vartoti logines sąvokas. Sąvokų rinkinys ir jų vartojimo taisyklės - modelis. Dauguma DBVS naudoja reliacinį duomenų modelį – 1970 m. E.F. Kodas (E.F. Codd), IBM. DB, kurios apibrėžiamos naudojant reliacinį modelį, vadinamos reliacinėmis duomenų bazėmis (RDB). Atitinkamos jų valdymo sistemos - reliacinėmis duomenų bazių valdymo sistemomis (RDBVS).

Pagrindinės reliacinio modelio sąvokos:
  • lentelė(table)
  • eilutė (row)
  • stulpelis (column) 
Reliacinė sistema remiasi šiais pagrindiniais principais: 
  1. duomenys vartotojui pateikiami lentelėmis ir niekaip kitaip; 
  2. vartotojui pateikiami operatoriai, leidžiantys iš esamų lentelių gauti naujas.
RDB - tai DB, kurią vartotojai priima kaip lentelių rinkinį.
  • Lentelės eilutė aprašo vieną objektą.
  • Stulpelis - objekto charakteristiką.
  • Eilutės ir stulpelio sankirta – reikšmė (laukas) (value).

Šiuo metu vienos labiausiai paplitusių ir išvystytų RDBVS:
  • IBM DBVS DB2
  • Oracle DBVS ORACLE
  • Microsoft DBVS SQL Server
  • Sybase Inc. DBVS – SYBASE
  • PostgreSQL – atvirojo kodo
  • MySQL – atvirojo kodo
SQL
Vartotojo sąsajai su DB (užklausoms formuluoti) yra naudojama formalizuota kalba. 
Reliacinėse sistemose - SQL (Structured Query Language) SQL sukurta IBM 1970-jų m. pr. 1-oji realizacija - RDBVS IBM System R. 1986 – SQL-86 (1-as ANSI/ISO standartas) 1992 – SQL-92 (SQL2) 1999 – SQL:1999 (SQL3) 2008 – SQL:2008

SQL yra neprocedūrinė (deklaratyvi) programavimo kalba. Kalboje išskiriama trys sakinių grupės:
  • duomenų apibrėžimo sakiniai (kalba) (DDL, Data Definition Language),
  • manipuliavimo duomenimis sakiniai (DML, Data Manipulation Language),
  • duomenų valdymo sakiniai (DCL, Data Control Language). SQL = DDL + DML + DCL

DDL sakiniais kuriamos DB ir lentelės. Kuriant DB yra nurodoma jos vardas (pavadinimas), fizinė vieta ir kt. Kuriant lentelę - lentelės vardas, stulpelių vardai ir jų tipai.
SQL duomenų rūšys: tekstiniai duomenys, skaičiai, dvejetainiai duomenys, datos ir laikai. 
Kiekviena rūšis su fizinėmis realizacijos savybėmis yra duomenų tipas.
Kiekviename duomenų tipe yra spec. reikšmė NULL, žyminti, kad duomenys yra nežinomi, dar neįvesti, jau pašalinti...
DML sakiniais formuojamos užklausos (query) duomenims surasti, šalinti ir įterpti.
DCL sakiniais koordinuojamas vartotojų darbas su DB.

Duomenų išrinkimas
SELECT sakinys naudojamas įrašams iš vienos ar daugiau lentelų atrinkti. FROM sakinyje nurodomos lentelės, iš kurių reikia išrinkti eilutes (sąryšiai gali būti nurodomi skirtingais JOIN variantais). WHERE sakinyje nurodoma sąlyga, kurią turi tenkinti grąžinamos eilutės. GROUP BY sąlygoje nurodoma, kad reikia grupuoti tam tikras eilutes. Grupuojant eilutes, dažniausiai naudojamos agregatinės funkcijos maksimalioms, vidutinėms ir panašioms reikšmėms išrinkti iš grupuotų eilučių. ORDER BY sakiniu nurodoma viena ar daugiau rikiavimo sąlygų. HAVING sakinyje nurodomas kriterijus, taikomas grupuojamoms eilutėms; šis raktinis žodis gali būti naudojamas tik tais atvejais, jeigu užklausoje yra GROUP BY sakinys.

Duomenų valdymas
INSERT vartojamas naujų įrašų įterpimui į lentelę. 
DELETE leidžia ištrinti įrašus iš lentelės. 
UPDATE naudojamas pakeisti vieno ar daugiau įrašų reikšmes.

SQL Select sakinys
Duomenų atrinkimui iš duomenų bazės naudojamas SELECT sakinys. 
Rezultatai grąžinami lentelės pavidalu, kuri vadinama “Result-Set”.
SELECT sakinio sintaksė:
SELECT laukai FROM lentelės_pavadinimas; 
SELECT * FROM lentelės_pavadinimas;

Duomenų išrinkimas panaudojant DISTINCT.
DISTINCT - skirtingų reikšmių pasirinkimas Jei žinote, kad jūsų sakinys pasirinks perteklinius duomenis, ir norite matyti tik skirtingas reikšmes, savo sąlygoje SELECT galite naudoti raktinį žodį DISTINCT. 
Pavyzdžiui, tarkime, kad kiekvienas iš jūsų klientų atstovauja keliems skirtingiems interesams, ir kai kurie iš jų naudoja tą patį telefono numerį. Norėdami užtikrinti, kad kiekvieną telefono numerį matytumėte tik kartą, jūsų sąlyga SELECT atrodys taip:
SELECT DISTINCT telefonoNumeris FROM klientai

Duomenų išrinkimas panaudojant WHERE.
Duomenų išrinkimui pagal užduotą sąlygą formuojama užklausa, naudojant paragrafą WHERE. Sąlygoje gali būti nurodyti stulpelių vardai, kuriems yra taikoma sąlyga ir ši sąlyga yra tikrinama kiekvienai lentelės eilutei, formuojant užklausos rezultatą.
WHERE - stulpelio vardas; sąlyga; kito stulpelio vardas arba konstanta ar reikšmių sąrašas taip formuojama sąlyga duomenų atrinkimui.
SELECT Ename,Job,Deptno FROM EMP WHERE Job=’CLERK’;

Pateiks rezultate tik darbuotojus su nurodyta specialybe. Sąlygoje svarbu pateikti lyginimui skirtus duomenis reikiamam formate (dešinėj pusėj raidžių dydis, datos formatas ir kt.)

DML-DARBAS SU DUOMENIMIS.
Duomenų manipuliavimo komandos leidžia įterpti duomenis į duomenų bazę arba pašalinti juos iš ten. Be to galima duomenis pataisyti ir ten pat juos palikti. Yra trys pagrindinės operacijos su duomenimis, kuriuos gali atlikti vartotojas, jei tam jam suteikti įgaliojimai.
  • INSERT
  • UPDATE
  • DELETE

UPDATE leidžia pakeisti duomenis lentelėje.
UPDATE Lentelės vardas SET Stulpelis1=reikšmė1[,Stulpelis2=reikšmė2 ...] [WHERE sąlyga];

Galima iš karto atnaujinti kelias eilutes pagal nurodytą sąlygą. Stulpelis1, Stulpelis2... Stulpelių vardai, kurių reikšmes reikia pakeisti naujomis Reikšmė1, Reikšmė2 atitinkamos naujos stulpelių reikšmės. WHERE užduoda sąlygą, kuriai esant patenkintai tos eilutės yra atnaujinamos. 
Sąlyga yra nebūtina, bet jei ji nenurodyta, pakeitimas atliekamas visoms eilutėms lentelėje.

UPDATE Emp SET DEPTNO=20 WHERE EMPNO=7782; 

Bus pakeista stulpelio DEPTNO reikšmė eilutei, kur EMPNO=7782, t.y. darbuotojas pervedamas į kitą departamentą.

UPDATE Emp SET DEPTNO=20; 

Visoms eilutėms lentelėje Emp pakeičiamas departamento numeris. Visi darbuotojai taps to paties departamento pareigūnais.

INSERT leidžia įterpti vieną eilutę į lentelę.
INSERT INTO Lentelės_vardas[(stulpelis1[,stulpelis2, ...])] VALUES(reikšmė1[, reikšmė2, ...]);

Komanda įterps reikšmę1 į stulpelį1, reikšmę2 į stulpelį2 ir t.t. Stulpelių sąrašas yra nebūtinas, bet jei sąrašas nenurodytas, tai komanda nebus užbaigta tol, kol nebus įvesta tiek duomenų, kiek numatyta lentelės struktūroje. Simboliniai duomenys ir datos tipo duomenys visada nurodomi tarp viengubų kabučių.

INSERT INTO Dept(Deptno,Dname,Loc) VALUES(50,’DEVELOPMENT’,’DETROIT’); 

Galima įvedimo metu taip pat suformuoti ir tuščias laukų reikšmes, Dėl to reikia norimą palikti neužpildytą stulpelį neįtraukti į sąrašą.

INSERT INTO Dept(Deptno,Dname) VALUES(60,’MIS’); 

Tą patį galima padaryti ir kitaip

INSERT INTO Dept VALUES(70,’FINANCE’,NUL);


DELETE galima pašalinti įrašus iš lentelės.

DELETE FROM Lentelės_vardas [WHERE sąlyga]; Iš lentelės nurodytu vardu bus pašalintas įrašas, kuris patenkina sąlygą.

DELETE FROM Dept WHERE Dname=’DEVELOPMENT’; 

Jei sąlyga nenurodyta, panaikinamos visos eilutės.

DELETE FROM Dept;

Kaip paprastai įrašų panaikinimui galima pasinaudoti užklausa pateikiančia duomenis iš kitos lentelės

DELETE FROM EMPLOE WHERE Deptno=(SELECT Deptno FROM Dept WHERE Dname=’SALES’);

Iš lentelės EMPLYE pašalins visus darbuotojus, kurių pareigos nurodytos sąlygoje.
Pašalinti visus įrašus galima taip pat ir su komanda

  • TRUNCATE TABLE lentelės_vardas; Ši komanda įrašus šalina fiziškai ir atstatyti jų neįmanoma.
  • DROP pašalina viską: duomenis kartu su struktūra.
  • DROP TABLE lentelės_vardas;

2017 m. rugsėjo 30 d., šeštadienis

Cukraus suvartojimo rekomentacija

1 šaukštelis = 4 gramai cukrais.
25 gramai (6 šaukšteliai) pagal Pasaulio Sveikatos Organizaciją * 



2017 m. rugsėjo 24 d., sekmadienis

Present Simple ir Present Continuous

Present Simple laikas:

Taisykles:

's' prisideda prie trečiojo asmens (like -> likes)
Kartais rašyba keičiasi (watch -> watches, try -> tries )
Naudojama do/does, kad suformuotume present simple  neigimą ir klausimus.

Naudojamas:

Dalykams, kurie paprastai arba visada yra vyksta.
Dalykams, kurie vyksta reguliariai(tolygiai ir taisyklingai vykstantis) ar pakartotinai.

  • Faktai 
  • Įpročiai

Pavyzdys:
  • I usually shop on Saturdays.
  • He drives fast.

Teigiamas:
  • I program  
  • you program
  • he / she it programs
  • we program
  • they program


Present Continuous laikas:

Taisyklė:

be + -ing
Reiktų atkreipti dėmesį į (begin -> beginning, make -> making)


Naudojimas:

Dalykams, kurie vyksta, šiuo metu.
Dalykams, kurie vyksta apytikriai šiuo metu.
Dalykams, kurie keičiasi.

  • Šiuo metu vykstantis veiksmai (laikini veiksmai):

Pavyzdžiai:

  • I am talking to you.
  • You are listening to me.
  • The earth temperature is increasing.

  • I am programing
  • You are programing
  • He/She/It is programing
  • We are programing
  • They are programing



Dažnos klaidos

I'm living in spain (Reikškia, kad trumpą laiką gyvena, kelias savaites, mėnesis ) PC
I live in spain. (Parodo, kad yra nuolatinė gyvenamoji vieta) PS

I'm coming from Japan. (Sako, kad katik buvau Japonijos ir grįžtu atgal) PC
I come from japan. (Kai esi kilęs iš Japonijos) PS

Our company is producing glass. (Kai kompanija tik tuo metu gamina stiklą) PC
Out company produces glass. (Kai kompanija nuolat gamina stiklą)PS

The economy grows again this year. PS
The economy is growing again this year. PC

Look, it snows. PS
Look, it's snowing. PS

Etiketės