• Nie Znaleziono Wyników

Programowanie Obiektowe Java

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie Obiektowe Java"

Copied!
132
0
0

Pełen tekst

(1)

Programowanie Obiektowe

Java

Małgorzata Janik

Zakład Fizyki Jądrowej

malgorzata.janik@pw.edu.pl

(2)

Bazy danych DBMS H2

JDBC SQL

(3)

Bazy danych

Baza danych = zbiór danych zapisanych zgodnie z określonymi regułami.

– W szerszym znaczeniu będzie obejmować np. księżkę telefoniczną.

– W węższym (dla nas interesującym) znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami

przyjętymi dla danego programu komputerowego specjalizowanego do gromadzenia i przetwarzania tych danych.

– Program taki nazywany jest „systemem zarządzania bazą danych” (ang. database management system, DBMS).

za: Wikipedia

(4)

Bazy danych

Rodzaje baz danych (wg. struktur organizacji danych) – Bazy proste:

kartotekowe

hierarchiczne

– Bazy złożone:

relacyjne

obiektowe

relacyjno-obiektowe

strumieniowe

temporalne

nierelacyjne (NoSQL)

(5)

Bazy danych

Rodzaje baz danych (wg. struktur organizacji danych) – Bazy proste:

kartotekowe

hierarchiczne

– Bazy złożone:

relacyjne

obiektowe

relacyjno-obiektowe

strumieniowe

temporalne

nierelacyjne (NoSQL)

Najczęściej używane bazy danych:

RELACYJNE

(6)

Bazy danych

Relacyjne bazy danych

– w modelu relacyjnym dane grupowane są w

relacje, które reprezentowane są przez tabele

(7)

Bazy danych

● Relacyjne bazy danych

https://pl.wikipedia.org/wiki/Model_relacyjny#/

media/File:Relational_model_concepts_PL.png

(8)

Bazy danych

Relacyjne bazy danych

– w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice

– relacje są pewnym zbiorem rekordów o identycznej strukturze wewnętrznie powiązanych za pomocą związków zachodzących pomiędzy danymi

– związki pomiędzy relacjami zapewniają integralność

referencyjną danych i pozwalają modelować odpowiednią

logikę naszej struktury

(9)

Bazy danych

● Relacyjne bazy danych

Więcej informacji:

– związki pomiędzy relacjami

zapewniają integralność referencyjną

danych i pozwalają modelować

odpowiednią

logikę naszej

struktury

(10)

Relacyjne bazy danych

Najważniejsze

– w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice

Id imie nazwisko data_urodzenia

1 Małgorzata Janik 1887

2 Helena Nowak 1984

osoby

(11)

Bazy danych

● System zarządzania bazą danych,

(ang. Database Management System, DBMS)

– oprogramowanie bądź system

informatyczny służący do zarządzania bazą danych (czyli zbiorem danych z określonymi regułami) .

– System zarządzania bazą danych

może być również serwerem bazy danych lub

może udostępniać bazę danych lokalnie – na

określonym komputerze.

(12)

Bazy danych

Mamy np.

wspomnianą książkę

telefoniczną

Chcemy ją zapisać w

postaci cyfrowej

Co robimy?

Photo by: Selmer van Alten

(13)

Bazy danych

● Co robimy?

– Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać.

Photo by: Selmer van Alten

Bazy proste:

kartotekowe

hierarchiczne

Bazy złożone:

relacyjne

obiektowe

relacyjno-obiektowe

strumieniowe

temporalne

nierelacyjne (NoSQL)

(14)

Bazy danych

● Co robimy?

– Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, → relacyjna.

Photo by: Selmer van Alten

(15)

Bazy danych

● Co robimy?

– Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, → relacyjna.

– Ustalamy jakiego DBMS będziemy używać.

Photo by: Selmer van Alten

(16)

Bazy danych

● Co robimy?

– Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, → relacyjna.

– Ustalamy jakiego DBMS będziemy używać.

Popularne możliwości:

Photo by: Selmer van Alten

https://db-engines.com/en/ranking

(17)

Bazy danych

● Co robimy?

– Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, → relacyjna.

– Ustalamy jakiego DBMS będziemy używać.

Popularne możliwości:

→ Bądź inne, dopasowane do naszych potrzeb :

Photo by: Selmer van Alten

https://db-engines.com/en/ranking

(18)

Baza danych H2

(19)

Baza danych H2

● Zalety:

– Mieści się w jednym pliku jar (w tym

pliku mieści się serwer, a nie tylko klient).

– Dobry wybór do małych aplikacji (np. w Swingu) które chcą korzystać z

funkcjonalności dostępu do bazy danych, a nie chcą zmuszać użytkownika do

instalacji serwera.

(20)

Baza danych H2

http://www.h2database.com

(21)

Bazy danych

● Co robimy?

– Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, → relacyjna.

– Ustalamy jakiego DBMS będziemy używać.

Np.

→ H2.

– Tworzymy w DBMS wszystkie potrzebne tabele i wypełniamy je. Jak? Musimy się → jakoś skomunikować z naszą bazą danych.

Najbardziej popularnym językiem do komunikacji jest SQL.

Photo by: Selmer van Alten

(22)

Język SQL

SQL, ang. Structured Query Language, jest językiem pozwalającym na modyfikację

relacyjnych baz danych i umożliwia dostęp do nich.

– SQL został standardem American National Standards Institute (ANSI) w 1986, oraz International

Organization for Standardization (ISO) w 1987.

– Mimo standardów, pomiędzy różnymi DBMS występują pewne różnice w użyciu SQL.

Wszystkie bazy danych mają własne dialekty SQL, więc tekst zapytań będzie różnić się dla różnych baz danych.

To powoduje, że bazy danych są bardzo słabo przenośne.

Zawsze musimy pisać kod pod konkretny typ bazy danych.

– Podstawy SQL właściwie wszędzie są takie same.

(23)

Język SQL

Język SQL pozwala na zarządzanie bazą danych, między innymi poprzez:

- tworzenie nowych tabel

- dodawanie danych do tabel

- modyfikację danych zawartych w tabelach - modyfikację struktury tabel

- usuwanie danych z tabel

- oraz usuwanie całych tabel

- pobieranie danych z tabel

(24)

Język SQL

Podstawowe właściwości:

- wielkość liter nie ma znaczenia

- polecenia w językach baz danych nazywamy zapytaniami lub kwerendami (ang. query).

dlatego SQL nazywany jest też językiem zapytań (ang. query language)

- każde zapytanie kończy się średnikiem ( ; )

(25)

Usuń tabelę (jeśli istnieje) DROP TABLE IF EXISTS TEST;

Stwórz nową tabelę

z kolumnami ID i NAME CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255));

Dodaj nowy wiersz INSERT INTO TEST VALUES(1, 'Hello');

Dodaj kolejny wiersz INSERT INTO TEST VALUES(2, 'World');

Wypisz tabelę SELECT * FROM TEST ORDER BY ID;

Zmień zawartość wiersza UPDATE TEST SET NAME='Hi' WHERE ID=1;

Usuń wiersz DELETE FROM TEST WHERE ID=2;

Język SQL

Przykładowy skrypt (przykłady zapytań)

(26)

CREATE TABLE table_name ( column1 datatype,

column2 datatype, column3 datatype, ....

);

Język SQL – tworzenie przykładowej tabeli

Tworzenie tabeli: CREATE TABLE

Składnia:

Typ kolumny (przykłady):

date / datetime int float

varchar(255)

(27)

CREATE TABLE pracownik ( id int,

imie varchar(100),

nazwisko varchar(100) );

Język SQL – tworzenie przykładowej tabeli

Tworzenie tabeli: CREATE TABLE

Przykład:

id imie nazwisko

1 Jan Kowalski

2 Zofia Kwiatkowska

(28)

CREATE TABLE table_name ( column1 datatype not null, column2 datatype,

column3 datatype, .…

PRIMARY KEY (column1) );

Język SQL – tworzenie przykładowej tabeli

Tworzenie tabeli: CREATE TABLE

Składnia:

Klucz podstawowy (PRIMARY KEY):

Tabelę należy tworzyć w ten sposób, by zawsze móc jednoznacznie odwołać się do każdego z rekordów.

Klucz podstawowy określa taką jednoznaczną wartość

(zestaw wartości) po którym możemy każdy wiersz rozróżnić.

(29)

CREATE TABLE table_name (

column1 datatype PRIMARY KEY, column2 datatype,

column3 datatype, .…

);

Język SQL – tworzenie przykładowej tabeli

Tworzenie tabeli: CREATE TABLE

Składnia:

Klucz podstawowy (PRIMARY KEY):

Tabelę należy tworzyć w ten sposób, by zawsze móc jednoznacznie odwołać się do każdego z rekordów.

Klucz podstawowy określa taką jednoznaczną wartość

(zestaw wartości) po którym możemy każdy wiersz rozróżnić.

(30)

CREATE TABLE table_name (

int id not null auto_increment, column2 datatype,

column3 datatype, .…

PRIMARY KEY (column1) );

Język SQL – tworzenie przykładowej tabeli

Tworzenie tabeli: CREATE TABLE

Składnia:

Automatyczne przypisywanie:

auto_increment pozwala na automatyczne wpisywanie pól typu “id” :

pierwszą wartością będzie 1,

(31)

CREATE TABLE table_name (

int id not null auto_increment, column2 datatype default wartość, column3 datatype,

.…

PRIMARY KEY (column1) );

Język SQL – tworzenie przykładowej tabeli

Tworzenie tabeli: CREATE TABLE

Składnia:

default

Pozwala na ustawienie domyślnej wartości dla danej kolumny.

Jeśli dodając nowy rekord nie ustalimy innej wartości,

zostanie przypisana ta, którą określa default.

(32)

Id data USD EUR GPB

1 2018-04-02 4.1267 4.2232 6.7571

2 2018-04-03 4.1299 4.2797 6.776

waluty

Język SQL – tworzenie przykładowej tabeli

(33)

Język SQL – tworzenie przykładowej tabeli

DROP TABLE IF EXISTS `waluty`;

CREATE TABLE `waluty` (

`Id` int unsigned NOT NULL auto_increment, `data` date default GETDATE(),

`USD` float default NULL, `EUR` float default NULL, `GBP` float default 0,

PRIMARY KEY (`Id`) ) ;

Tworzenie tabeli: CREATE TABLE

Jeśli już istnieje tabela o nazwie “waluty” to ją usuń.

Stwórz tabelę “waluty” z następującymji kolumnami:

Id, data, USD EUR, GBP

(34)

Język SQL – tworzenie przykładowej tabeli

DROP TABLE IF EXISTS `waluty`;

CREATE TABLE `waluty` (

`Id` int unsigned NOT NULL auto_increment, `data` date default GETDATE(),

`USD` float default NULL, `EUR` float default NULL, `GBP` float default 0,

PRIMARY KEY (`Id`) ) ;

Tworzenie tabeli: CREATE TABLE

Typ kolumny:

date int float

getdate() -

funkcja zwracająca obecną datę

Kluczem podstawowym jest

automatycznie inkrementowane

(35)

Id data USD EUR GPB

1 2018-04-02 4.1267 4.2232 6.7571

2 2018-04-03 4.1299 4.2797 6.776

waluty

Język SQL – tworzenie przykładowej tabeli

(36)

Id imie nazwisko data_urodzenia

1 Małgorzata Janik 1887

2 Helena Nowak 1984

osoby

Język SQL – tworzenie przykładowej tabeli

(37)

Id imie nazwisko data_urodzenia

1 Małgorzata Janik 1887

2 Helena Nowak 1984

osoby

Język SQL – tworzenie przykładowej tabeli

create table osoby + drop if exists

(38)

Id imie nazwisko data_urodzenia

1 Małgorzata Janik 1887

2 Helena Nowak 1984

osoby

Język SQL – tworzenie przykładowej tabeli

create table osoby

Primary key NOT NULL auto_increment

+ drop if exists

(39)

osoby

Język SQL – tworzenie przykładowej tabeli

create table osoby

Primary key NOT NULL auto_increment

Id – int unsigned Imie - varchar(20)

Nazwisko - varchar(40) data_urodzenia - date

+ drop if exists

Id imie nazwisko data_urodzenia

1 Małgorzata Janik 1887

2 Helena Nowak 1984

(40)

osoby

Język SQL – tworzenie przykładowej tabeli

create table osoby

Primary key NOT NULL auto_increment

Id – int unsigned Imie - varchar(20)

Nazwisko - varchar(40) data_urodzenia - date

+ drop if exists

Id imie nazwisko data_urodzenia

1 Małgorzata Janik 1887

2 Helena Nowak 1984

domyślnie NULL

(41)

DROP TABLE IF EXISTS `Osoby`;

CREATE TABLE `Osoby` (

`Id` int(6) unsigned NOT NULL auto_increment, `imie` varchar(20),

`nazwisko` varchar(40),

`data_urodzenia` date default NULL, PRIMARY KEY (`Id`)

) ;

Język SQL – tworzenie przykładowej tabeli

(42)

INSERT INTO table_name (column2, column1, column3, ...) VALUES (value2, value1, value3, ...);

INSERT INTO table_name

VALUES (value1, value2, value3, ...);

Jeśli pilnujemy kolejności kolumn:

Niezależnie od kolejności:

Język SQL – dodawanie danych

Tworzenie tabeli: INSERT INTO

Składnia:

(43)

Język SQL – dodawanie danych

INSERT INTO `waluty` VALUES (1,’2000-01-03’ , 4.1171,4.165,6.6576);

INSERT INTO `waluty` (`Id`,`data`,`USD`,`EUR`,`GBP`) VALUES (2,'2000-01-04',4.1267,4.2232,6.7571);

INSERT INTO `waluty` (`data`,`USD`,`EUR`,`GBP`) VALUES ('2000-01-05',4.1299,4.2797,6.776);

INSERT INTO waluty (data,USD) VALUES ('2000-01-06’ , 4.1129);

Pozostałe pola zostaną wypełnione automatycznie (auto_increment) bądź będą miały wartość NULL.

Id data USD EUR GPB

1

2018-04-02

4.1267 4.2232 6.7571

2

2018-04-03

4.1299 4.2797 6.776

(44)

Język SQL – komenda SELECT

SELECT column1, column2, ... FROM table_name [WHERE condition] [ORDER BY o_column]

gdzie:

column1, column2,... to nazwy kolumn, których

zawartość ma być wyświetlona jako wynik zapytania

table_name to nazwa tabeli, z której pobierane są dane

condition to warunek jaki muszą spełniać wiersze tabeli, aby zostać wyświetlone

o_column to kolumna, wg. której mają być

posortowane wyniki zapytania

(45)

Język SQL – komenda SELECT

Chcąc pobrać wszystkie kolumny z tabeli zamiast wypisywać ich nazwy można użyć * (gwiazdka), np..

komenda:

SELECT * FROM osoby;

zwróci wszystkie kolumny z tabeli osoby.

Parametry [WHERE condition] oraz [ORDER BY

o_column] są opcjonalne.

(46)

Język SQL – komenda SELECT

Załóżmy, że tabela osoby zawiera trzy kolumny: imie, nazwisko oraz wiek. W takim przypadku komenda:

SELECT imie FROM osoby WHERE wiek = 18;

zwróci imiona osób, które mają 18 lat.

SELECT nazwisko, imie FROM osoby ORDER BY wiek;

zwróci nazwiska i imiona wszystkich osób z tabeli, posortowane według wieku.

SELECT nazwisko, imie FROM osoby ORDER BY nazwisko DESC;

zwróci nazwiska i imiona wszystkich osób z tabeli, posortowane

alfabetycznie według nazwisk, w odwróconej kolejności od Z do A

(modyfikator DESC sprawia, że kolejność sortowania jest odwócona)

(47)

Język SQL – komenda SELECT

W warunkach występujących po WHERE można stosować:

• operatory porównania =, >=, > itp.

• operatory logiczne AND i OR

• do porównywania łańcuchów można stosować polecenie LIKE akceptujące wzorce napisów, w których znak ’_’ zastępuje

dowolną literę, zaś znak ’%’ zastępuje dowolny ciąg znaków SELECT * FROM osoby WHERE nazwisko LIKE 'A%';

zwróci wszystkie dane osób, których nazwisko rozpoczyna się na literę A.

W "warunkach" można używać również operatora BETWEEN, który pozwala wybierać dane z określonego zakresu, np.:

SELECT * FROM osoby WHERE wiek BETWEEN 18 AND 30;

zwróci rekordy z osobami o wieku od 18 do 30 lat.

Jest to równoważne z zapisem:

SELECT * FROM osoby WHERE wiek > 18 AND wiek < 30;

(48)

Język SQL – komenda UPDATE

Zmiana wierszy tabeli: UPDATE

Składnia:

UPDATE table_name SET column1 = ‘value1’, column2 = ‘value2’, ...

WHERE condition

);

(49)

Język SQL – komenda UPDATE

Zmiana wierszy tabeli: UPDATE

Przykład:

UPDATE Osoby

SET imie = ‘Katarzyna’,

nazwisko = ‘Kwiatkowska’

WHERE id=2;

);

(50)

Język SQL – komenda DELETE

Usuwanie wierszy tabeli: DELETE FROM

Składnia:

DELETE FROM table_name WHERE condition ;

Przykład:

DELETE FROM OSOBY

WHERE imie = ‘Malgorzata’;

Usunie wszystkie

Małgorzaty z tabeli

(51)

H2 umożliwia łączenie się z bazą z panelu kontrolnego z poziomu przeglądarki

Wystarczy po instalacji odpalić program H2 Console, wtedy pojawią się następujące

okienka:

http://www.h2database.com/html/quickstart.html

(plik z bazą musi być w katalogu domowym

użytkownika)

(52)
(53)

Java i bazy danych

Mamy już język porozumiewania się z bazą danych (SQL).

...ale przecież chcąc porozumiewać się z bazą danych nie będziemy za każdym razem wpisywać komend w konsoli.

Zwykle chcemy, by nasz program w wyniku np.

naciśnięcia przycisku pobierał dane / odpowiednio modyfikował bazę danych.

Chcielibyśmy więc bezpośrednio z poziomu kodu Javy

wysyłać do bazy danych odpowiednie instrukcje.

(54)

Java DataBase Connectivity

JDBC, ang. Java DataBase Connectivity, to

biblioteka stanowiąca interfejs umożliwiający aplikacjom napisanym w języku Java

porozumiewać się z bazami danych za pomocą języka SQL.

Interfejs ten operuje na poziomie typowego dla baz danych języka SQL i pozwala w prosty

sposób konstruować zapytania do bazy danych oraz wykorzystywać ich wyniki w kodzie Javy.

Środowisko Java zawiera API JDBC, natomiast

użytkownik musi dodatkowo uzyskać sterownik

JDBC dedykowany do swojej bazy danych.

(55)

JDBC – ogólna zasada wykorzystania

1. Uzyskanie połączenia ze źródłem danych

2. Wykonywanie operacji na bazie

danych (przekazywanie poleceń w postaci kwerend SQL)

3. Przetwarzanie danych pobranych z

bazy w efekcie wykonania kwerend

(56)

// Łączenie z bazą:

Connection con = DriverManager.getConnection(

"jdbc:myDriver:myDatabase", username,

password);

// Wykonywanie kwerendy:

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(

"SELECT a, b, c FROM Table1");

// Przetwarzanie pobranych danych while (rs.next()) {

int x = rs.getInt("a");

String s = rs.getString("b");

float f = rs.getFloat("c");

}

JDBC – ogólna zasada

wykorzystania

(57)

// Łączenie z bazą:

Connection con = DriverManager.getConnection(

"jdbc:myDriver:myDatabase", username,

password);

// Wykonywanie kwerendy:

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(

"SELECT a, b, c FROM Table1");

// Przetwarzanie pobranych danych while (rs.next()) {

int x = rs.getInt("a");

String s = rs.getString("b");

float f = rs.getFloat("c");

}

H2:

"jdbc:h2:nazwabazy", username,

password Jeśli baza danych nie istnieje,

to próba podłączenia spowoduje utworzenie nowej pustej bazy

(w postaci pliku *.db).

MySQL:

"jdbc:mysql://localhost/nazwabazy?

user=username&password=password”

JDBC – ogólna zasada

wykorzystania

(58)

Tworzenie bazy z poziomu JAVY

TworzenieBazy.java

conn = DriverManager.getConnection("jdbc:h2:nazwabazy", "sa", "");

// domyslnie nazwa uzytkownika to "sa" a dostep jest bez hasla - ""

// Proba podlaczenia do bazy H2, ktora nie istnieje

// domyslnie powoduje utworzenie nowej instancji pustej bazy // (w postaci pliku z rozszerzeniem *.db, np. nazwabazy.h2.db)

// Dymyslne tworzenie pustej bazy danych czasem moze generowac bledy, // dlatego mozliwe jest wylaczenie domyslnego tworzenia pustej bazy

// conn = DriverManager.getConnection("jdbc:h2:nazwabazy5;IFEXISTS=TRUE", "sa",

"");

Program otwiera / tworzy bazę danych H2

o nazwie nazwabazy

nazwa użytkownika to sa

domyślnie bez hasła

(59)

// Łączenie z bazą:

Connection con = DriverManager.getConnection(

"jdbc:myDriver:myDatabase", username,

password);

// Wykonywanie kwerendy:

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(

"SELECT a, b, c FROM Table1");

// Przetwarzanie pobranych danych while (rs.next()) {

int x = rs.getInt("a");

String s = rs.getString("b");

float f = rs.getFloat("c");

}

JDBC – ogólna zasada wykorzystania

Query =

Zapytanie, Kwerenda

(60)

// Łączenie z bazą:

Connection con = DriverManager.getConnection(

"jdbc:myDriver:myDatabase", username,

password);

// Wykonywanie kwerendy:

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(

"SELECT a, b, c FROM Table1");

// Przetwarzanie pobranych danych while (rs.next()) {

int x = rs.getInt("a");

String s = rs.getString("b");

float f = rs.getFloat("c");

}

Język SQL

JDBC – ogólna zasada

wykorzystania

(61)

Operacje na bazie z poziomu JAVY

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM Tab1");

Trzy podstawowe metody wywołania kwerend:

stmt.executeQuery(...), stmt.executeUpdate(...), stmt.execute(...)

Różnią się to sposobem przekazywania wyniku.

W pierwszym przypadku otrzymamy wynik w postaci tabeli (wynik zapytania). ExecuteQuery stosuje się zazwyczaj do zapytań typu SELECT....

W drugim przypadku otrzymamy ilość pomyślnie przeprowadzonych zmian w bazie. Update stosuje się

zazwyczaj do zapytań typu CREATE TABLE... lub INSERT...

Trzecia opcja jest uogólnieniem dwóch poprzednich. Zwraca

wynik, z tym, że to użytkownik musi sprawdzić jaki wynik

otrzymał.

(62)

Execute

//Wyswietlanie calej tabeli:

statement.execute("SELECT * FROM waluty");

//Ograniczenie do 10 pierwszych rekordow

statement.execute("SELECT * FROM waluty limit 10" );

// Przykladowe kwerendy z dodatkwoym warunkiem:

statement.execute("SELECT * FROM waluty

where data < '2001-03-27'");

statement.execute("SELECT * FROM waluty

where usd > 4.50");

statement.execute("SELECT * FROM waluty

where usd > 4.50 and eur < 3.83");

(63)

TworzenieTabeli.java

Statement statement = conn.createStatement();

// Usuwanie tabeli jeśli już istnieje -

// kolejne uruchomienie przykladu nie wygeneruje bledu:

statement.executeUpdate("DROP TABLE IF EXISTS `waluty`;");

// Tworzenie tabeli o okreslonej strukturze danych statement.executeUpdate("CREATE TABLE `waluty` ("+

"`Id` int(6) unsigned NOT NULL auto_increment," + "`data` date default NULL," +

"`USD` float default NULL," + "`EUR` float default NULL," + "`GBP` float default NULL," + "PRIMARY KEY (`Id`)"+

") ;");

Program tworzy tabelę “waluty” i wypełnia przykładowymi wartościami.

(64)

TworzenieTabeli.java

Dodawanie danych do tabeli:

statement.executeUpdate("INSERT INTO `waluty`

(`Id`,`data`,`USD`,`EUR`,`GBP`) VALUES (1,'2000-01- 03',4.1171,4.165,6.6576);");

// Przykladowe rownowazne polecenia SQL:

statement.executeUpdate("INSERT INTO `waluty` VALUES (1,'2000-01-03',4.1171,4.165,6.6576);");

statement.executeUpdate("INSERT INTO `waluty`

(`data`,`USD`,`EUR`,`GBP`) VALUES ('2000-01-03‘ , 4.1171 , 4.165, 6.6576 );");

statement.executeUpdate("INSERT INTO waluty VALUES (1,'2000-01-03',4.1171,4.165,6.6576);");

statement.executeUpdate("INSERT INTO waluty (Id,data,USD,EUR,GBP)

VALUES (1,'2000-01-03',4.1171,4.165,6.6576);");

(65)

Prepared Statement

Zamiast interfejsu Statement, w którym wykorzystujemy dokładną (statyczną) treść kodu SQL, można wykorzystać typ

PreparedStatement, który pozwala na parametryzację.

Użycie prekompilowanych komend jest wygodne, jeśli wywołujemy wiele podobnych komend na różnych argumentach, lub kiedy chcemy pobrać poszczególne wartości od użytkownika.

Co jest równoważne:

PreparedStatement prep = conn.prepareStatement

("INSERT into waluty(data, usd, eur, gbp) values (?, ?, ?, ?)");

prep.setString(1, "2000-01-03");

prep.setString(2, "4.1171");

prep.setString(3, "4.165");

prep.setString(4, "6.6576");

prep.executeUpdate();

(66)

Prepared Statement

– dodatkowa funkcjonalność

Wyobraźmy sobie aplikację, do której użytkownik się loguje.

Użytkownik podaje login (“name”) i hasło (“password”) a następnie uruchamiane jest zapytanie:

statement.execute("SELECT COUNT(*) FROM users WHERE name=" + name +

"AND password=" + password);

ResultSet rs = statement.getResultSet(); rs.next();

if (rs.getInt(1) == 0){ //niezalogowany }

A użytkownik wpisuje jako login:

(67)

Prepared Statement

– dodatkowa funkcjonalność

Wyobraźmy sobie aplikację, do której użytkownik się loguje.

Użytkownik podaje login (“name”) i hasło (“password”) a następnie uruchamiane jest zapytanie:

statement.execute("SELECT COUNT(*) FROM users WHERE name=" + name +

"AND password=" + password);

ResultSet rs = statement.getResultSet(); rs.next();

if (rs.getInt(1) == 0){ //niezalogowany }

A użytkownik wpisuje jako login:

"; DROP TABLE users; --"

drop table users;

(68)

Prepared Statement

– dodatkowa funkcjonalność

A użytkownik wpisuje jako login:

Czyli baza danych dostaje zapytanie:

"; DROP TABLE users; --"

SELECT COUNT(*) FROM users

WHERE name=; DROP TABLE users;

(69)

Prepared Statement

– dodatkowa funkcjonalność

A użytkownik wpisuje jako login:

Czyli baza danych dostaje zapytanie:

"; DROP TABLE users; --"

SELECT COUNT(*) FROM users WHERE name=;

DROP TABLE users;

Zwróci informacje o błędzie.

Usunie tabelę “users”.

(70)

"; DROP TABLE users; --"

SELECT COUNT(*) FROM users WHERE name=;

DROP TABLE users; Usunie tabelę “users”.

(71)

Prepared Statement

Jeśli chcemy pobierać wartości od użytkownika to nigdy, nigdy

NIGDY

nie tworzymy zapytań SQL z dodawania takich ciągów znaków.

– Należy używać polecenia PreparedStatement

które zapewni, by podane przez użytkownika

wartości nigdy nie zostanały ziterpretowane

jako samodzielne polecenia SQL.

(72)

TworzenieTabeli.java

Dodawanie danych do tabeli:

// Rownowazne wywolanie z wykorzystaniem PreparedStatement PreparedStatement prep = conn.prepareStatement

("INSERT into waluty(data, usd, eur, gbp) values (?, ?, ?, ?)");

prep.setString(1, "2000-01-03");

prep.setString(2, textBoxUsd.Text);

prep.setString(3, textBoxEur.Text);

prep.setString(4, textBoxGbp.Text);

prep.executeUpdate();

Używając PreparedStatement możemy bezpiecznie brać dane

od użytkownika.

(73)

// Łączenie z bazą:

Connection con = DriverManager.getConnection(

"jdbc:myDriver:myDatabase", username,

password);

// Wykonywanie kwerendy:

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(

"SELECT a, b, c FROM Table1");

// Przetwarzanie pobranych danych while (rs.next()) {

int x = rs.getInt("a");

String s = rs.getString("b");

float f = rs.getFloat("c");

}

JDBC – ogólna zasada

wykorzystania

(74)

ResultSet

● Wyniki wykonanej kwerendy dostępne są w obiekcie klasy ResultSet.

● ResultSet zawiera linie (rekordy) z wyniku wykonanej operacji.

– Początkowo jest ustawiony przed pierwszą linią.

– Aby przesunąć go na następna linijkę i przy okazji sprawdzić, czy jest więcej

wyników, wykorzystuje się metodę next().

(75)

ResultSet, ResultSetMetaData

ResultSet rs = statement.getResultSet();

ResultSetMetaData md = rs.getMetaData();

//wyswietlanie nazw kolumn:

for (int ii = 1; ii <= md.getColumnCount(); ii++){

System.out.print(md.getColumnName(ii)+ " | ");

}

System.out.println();

// wyswietlanie poszczegolnych wierszy while (rs.next()) {

for (int ii = 1; ii <= md.getColumnCount(); ii++){

System.out.print( rs.getObject(ii) + " | ");

}

System.out.println();

}

(76)

WypisywanieTabeli.java

//Wyswietlanie calej tabeli:

statement.execute("SELECT * FROM waluty");

//Ograniczenie do 10 pierwszych rekordow

statement.execute("SELECT * FROM waluty limit 10" );

// Przykladowe kwerendy z dodatkwoym warunkiem:

statement.execute("SELECT * FROM waluty

where data < '2001-03-27'");

statement.execute("SELECT * FROM waluty

where usd > 4.50");

statement.execute("SELECT * FROM waluty

where usd > 4.50 and eur < 3.83");

Jeśli chcemy wyświetlić wynik z każdego statement,

to po każdym ‘execute’ musimy wyciągnąć ResultSet.

(77)

WypisywanieTabeli.java

(78)

QUIZ

(79)

Czym jest?

● DBMS

● H2

● SQL

● JDBC

Język zapytań

System zarządzania bazą danych

Biblioteka umożliwiająca łączenie się z bazą danych za pomocą Javy

Baza danych

(80)

Czym jest?

● DBMS

● H2

● SQL

● JDBC

Język zapytań – do porozumiewania się z bazą danych

System zarządzania bazą danych

(np. MySQL, Oracle, H2)

Biblioteka umożliwiająca łączenie się z bazą danych za pomocą Javy

Baza danych (przykład DBMS)

(81)

Czym jest?

Kwerenda (query)

Krotka (tuple)

Relacja

Klucz podstawowy

Tabela

Wiersz z tabeli

(uporządkowany ciąg wartości)

Zapytanie mające na celu np.

pobranie danych, usuwanie, modyfikację.

Minimalny zestaw atrybutów

jednoznacznie identyfikujący

każdą krotkę

(82)

Czym jest?

Kwerenda (query)

Krotka (tuple)

Relacja

Klucz podstawowy

Tabela

Wiersz z tabeli

(uporządkowany ciąg wartości)

Zapytanie mające na celu np.

pobranie danych, usuwanie, modyfikację.

Minimalny zestaw atrybutów

jednoznacznie identyfikujący

każdą krotkę

(83)

Do czego służy?

INSERT INTO

SELECT * FROM

DROP TABLE

CREATE TABLE

UPDATE

(84)

Do czego służy?

INSERT INTO

SELECT * FROM

DROP TABLE

CREATE TABLE

UPDATE

Dodanie wiersza do tabeli

Wyciągnięcie danych z bazy danych

Usunięcie tabeli

Stworzenie tabeli

Modyfikacja wiersza tabeli

(85)

GIT (System Kontroli Wersji)

oraz krótko o

Window Builder (automatyczne GUI)

Javadoc (dokumentacja)

(86)

System Kontroli Wersji

GIT

(87)

System Kontroli Wersji

System kontroli wersji to oprogramowanie które pomaga śledzić zmiany w kodzie na przestrzeni czasu.

System kontroli wersji zapamiętuje konkretny stan danego kodu - i pozwala później odzyskać zapamiętaną wersję.

– Dzięki temu, że ma zapisanych kilka wersji tego samego kodu razem z oznaczeniem czasowym, może również porównać wersje ze sobą i jasno wyszczególnić zmimany.

Pozwala na automatyczne przechowywanie, odzyskiwanie,

logowanie i scalanie wersji kodu.

(88)

System Kontroli Wersji

Prosty system kontroli wersji:

Stworzenie katalogu o nazwie “projekt”

Sukcesywne tworzenie wewnątrz podkatalogów z nazwami “projekt_v1”,

“projekt_v2” i umieszczanie w nim konkretnych wersji kodu

Można nawet profesjonalnie poprawić system, używając dat zamiast zwykłych v1,

v2 ... v223

(89)

System Kontroli Wersji

(90)

System Kontroli Wersji

System kontroli wersji pomaga z:

Tworzeniem backup-ów

Oczywiste i niezbędne. Jak komputer się spali albo dysk wysiądzie, mamy kopie zapasową.

Odtwarzanie poprzednich wyników

Pozwala zawsze wrócić i uruchomić poprzednią wersję programu.

Porównywaniem konkretnej wersji

“W wersji z piątku ten guzik jeszcze działał! Co zmieniliśmy?”

Rozwój kilku wersji równocześnie

Jeśli dwie osoby chcą pracować jednocześnie nad tym samym projektem, system kontroli wersji pomoże bezboleśnie scalić ich pracę

Workfows – zachowywanie uprawnień oraz kontroli nad kodem

W firmach zwykle dany kawałek kodu jest dołączany do programu dopiero po zrecenzowaniu przez starszego programistę.

http://www.ateam-oracle.com/version-control/

(91)

System Kontroli Wersji

/ trunk

(92)

Kontrola wersji

Lokalna kontrola wersji

(93)

Kontrola wersji

Lokalna kontrola wersji

Centralizowana kontrola wersji

– Subversion (SVN)

(94)

Kontrola wersji

Lokalna kontrola wersji

Centralizowana kontrola wersji

– Subversion (SVN)

Rozproszona kontrola wersji

– GIT

(95)

Kontrola wersji

Lokalna kontrola wersji

Centralizowana kontrola wersji

– Subversion (SVN)

Rozproszona kontrola wersji

– GIT

Każdy ma swoją replikę (klon) pu sh

pu ll

(96)

GIT w praktyce

Co zrobić aby używać GITa?

Zainstalować program GIT https://git-scm.com/downloads.

Wybrać serwer na którym będzie przechowywane centralne repozytorium

Stworzyć nowe repozytorium (centralne) dla projektu

Pobrać kod, tworząc przy okazji lokalne repozytorium

Korzystanie z GITa:

Dodawać, usuwać, modyfikować kod i pliki

Update lokalnego repozytorium

Update centralnego repozytorium

Więcej informacji można znaleźć w:

https://guides.github.com/activities/hello-world/

http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/

http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/

http://namiekko.pl/2016/03/12/git-w-eclipse/

(97)

GIT w praktyce

Co zrobić aby używać GITa?

Zainstalować program GIT https://git-scm.com/downloads.

Wybrać serwer na którym będzie przechowywane centralne repozytorium

Stworzyć nowe repozytorium (centralne) dla projektu

Pobrać kod, tworząc przy okazji lokalne repozytorium

Korzystanie z GITa:

Dodawać, usuwać, modyfikować kod i pliki

Update lokalnego repozytorium

Update centralnego repozytorium

Więcej informacji można znaleźć w:

https://guides.github.com/activities/hello-world/

http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/

http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/

http://namiekko.pl/2016/03/12/git-w-eclipse/

(98)

Serwery na repozytoria GITa

https://github.com/

https://gitlab.com/

https://bitbucket.org/

(99)

GIT w praktyce

Co zrobić aby używać GITa?

Zainstalować program GIT https://git-scm.com/downloads.

Wybrać serwer na którym będzie przechowywane centralne repozytorium

Stworzyć nowe repozytorium dla projektu

Pobrać kod, tworząc przy okazji lokalne repozytorium

Korzystanie z GITa:

Dodawać, usuwać, modyfikować kod i pliki

Update lokalnego repozytorium

Update centralnego repozytorium

Więcej informacji można znaleźć w:

https://guides.github.com/activities/hello-world/

http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/

http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/

http://namiekko.pl/2016/03/12/git-w-eclipse/

(100)

Nowe

repozytorium

centralne

(101)

GIT w praktyce

Co zrobić aby używać GITa?

Zainstalować program GIT https://git-scm.com/downloads.

Wybrać serwer na którym będzie przechowywane centralne repozytorium

Stworzyć nowe repozytorium dla projektu

Pobrać kod, tworząc przy okazji lokalne repozytorium

Korzystanie z GITa:

Dodawać, usuwać, modyfikować kod i pliki

Update lokalnego repozytorium

Update centralnego repozytorium

Więcej informacji można znaleźć w:

https://guides.github.com/activities/hello-world/

http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/

http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/

http://namiekko.pl/2016/03/12/git-w-eclipse/

(102)

Pobieranie kodu z repozytorium Tworzenie repozytorium lokalnego

Pobrać kod, tworząc repozytorium lokalne:

– Zdobywamy link URL do repozytorium

– clone – używamy polecenia clone w wybranym przez nas miejscu.

git clone https://github.com/login/NazwaProjektu

(103)

Clone URL

– Po wykonaniu klonowania mamy na

komputerze repozytorium lokalne

(104)

GIT w praktyce

Co zrobić aby używać GITa?

Zainstalować program GIT https://git-scm.com/downloads.

Wybrać serwer na którym będzie przechowywane centralne repozytorium

Stworzyć nowe repozytorium dla projektu

Pobrać kod, tworząc przy okazji lokalne repozytorium

Korzystanie z GITa:

Dodawać, usuwać, modyfikować kod i pliki

Update lokalnego repozytorium

Update centralnego repozytorium

Więcej informacji można znaleźć w:

https://guides.github.com/activities/hello-world/

http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/

http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/

http://namiekko.pl/2016/03/12/git-w-eclipse/

(105)

Korzystanie z GITa

Dodawanie, usuwanie, modyfikacja plików

– Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze

– Do śledzenia aktualnych zmian służy polecenie status

Update lokalnego repozytorium

– Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium

– Polecenia add i commit

Update centralnego repozytorium

– Polecenie push

– Oraz ściągnięcie danych z centralnego repozytorium: pull

(106)

Korzystanie z GITa

Dodawanie, usuwanie, modyfikacja plików

– Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze

– Do śledzenia aktualnych zmian służy polecenie status

Update lokalnego repozytorium

– Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium

– Polecenia add i commit

Update centralnego repozytorium

– Polecenie push

– Oraz ściągnięcie danych z centralnego repozytorium: pull

$ git status

On branch master

Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:

(use "git add <file>..." to update what will be committed)

(use "git checkout -- <file>..." to discard changes in working dir Wprowadzam jakies zmiany lalala; README.md

Untracked files:

(use "git add <file>..." to include in what will be committed) test.txt

“master” - główna i domyślna

gałąź repozytorium

(107)

Korzystanie z GITa

Dodawanie, usuwanie, modyfikacja plików

– Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze

– Do śledzenia aktualnych zmian służy polecenie status

Update lokalnego repozytorium

– Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium

– Polecenia add i commit

Update centralnego repozytorium

– Polecenie push

– Oraz ściągnięcie danych z centralnego repozytorium: pull

$ git status

On branch master

Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:

(use "git add <file>..." to update what will be committed)

(use "git checkout -- <file>..." to discard changes in working dir Wprowadzam jakies zmiany lalala; README.md

Untracked files:

(use "git add <file>..." to include in what will be committed) test.txt

Sugestie co zrobić ze zmianami:

add / checkout

(108)

Korzystanie z GITa

Dodawanie, usuwanie, modyfikacja plików

– Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze

– Do śledzenia aktualnych zmian służy polecenie status

Update lokalnego repozytorium

– Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium

– Polecenia add i commit

Update centralnego repozytorium

– Polecenie push

– Oraz ściągnięcie danych z centralnego repozytorium: pull

(109)

Korzystanie z GITa

Dodawanie, usuwanie, modyfikacja plików

– Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze

– Do śledzenia aktualnych zmian służy polecenie status

Update lokalnego repozytorium

– Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium

– Polecenia add i commit

Update centralnego repozytorium

– Polecenie push

– Oraz ściągnięcie danych z centralnego repozytorium: pull

$ git add test.txt

$ git add *

$ git status

On branch master

Your branch is up-to-date with 'origin/

Changes to be committed:

(use "git reset HEAD <file>..." to un modified: README.md

new file: test.txt Jeśli:

Zmodyfikowałam plik README.md

Stworzyłam nowy plik test.txt

Chciałabym zapisać te zmiany w repozytorium, więc:

Używam “add” na wszystkich plikach których zmiany chcę zapisać

tzw. ‘Staging’ - przygotowywuję pliki

(110)

Korzystanie z GITa

Dodawanie, usuwanie, modyfikacja plików

– Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze

– Do śledzenia aktualnych zmian służy polecenie status

Update lokalnego repozytorium

– Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium

– Polecenia add i commit

Update centralnego repozytorium

– Polecenie push

– Oraz ściągnięcie danych z centralnego repozytorium: pull git commit

Używam “commit” żeby zapisać te zmiany

$ git commit -m "Moj pierwszy commit z lokalnego repo"

[master 09ba074] Moj pierwszy commit z lokalnego repo 2 files changed, 2 insertions(+), 1 deletion(-)

lub ‘commit -m “komentarz” ‘ żeby dodać komentarz

(111)

Korzystanie z GITa

Dodawanie, usuwanie, modyfikacja plików

– Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze

– Do śledzenia aktualnych zmian służy polecenie status

Update lokalnego repozytorium

– Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium

– Polecenia add i commit

Update centralnego repozytorium

– Polecenie push

– Oraz ściągnięcie danych z centralnego repozytorium: pull

$ git push

$ git pull

(112)

Korzystanie z GITa

Zmieniłam lokalnie plik test1.txt oraz dodałam nowy plik test2.txt. Chcę je wypchnąć do

centralnego repozytorium. Co robię?

$ git status

$ git add test1.txt

$ git add test2.txt

$ git status

$ git commit -m "Test changes”

$ git pull

$ git push

$ git add *

”$” oznacza nowe polecenie w konsoli; nie należy go wpisywać.

(113)

Git w Eclipse - EGit

Help->Install New Software->http://download.eclipse.org/egit/updates/

(114)

Stworzenie nowego projektu w oparciu o istniejące repozytorium.

Git w Eclipse - EGit

Import… →

Projects from Git

(115)

Mamy dwie opcje: stworzyć projekt na podstawie istniejącego, lokalnego

repozytorium

(bo np. użyliśmy clone w lini komand jak było pokazane wcześniej)….

Git w Eclipse - EGit

(116)

Git w Eclipse - EGit

Albo klonować bezpośrednio z repozytorium centralnego

Mamy dwie opcje: stworzyć projekt na podstawie istniejącego, lokalnego

repozytorium

(bo np. użyliśmy clone w lini komand

jak było pokazane wcześniej)….

(117)

Musimy wybrać gałęzie do sklonowania z repozytorium.

Domyślnie będzie to główna gałąź

“master”.

Git w Eclipse - EGit

Import z projektu Gita przeprowadza nas przez kolejne okienka

kreatora…

(118)

Odkliknij „use default location”

i wybierz katalog

w którym znajduje się repozytorium!

(inaczej import zwróci błąd)

“General project” dobrze zadziała dla wszystkich

repozytoriów, gdzie nie mamy i nie chcemy mieć projektu

eclipse’a.

“Import using the New Project Wizard” jeśli w stworzonym

repozytorium centralnym chcemy utworzyć nowy projekt eclipse.

(1)

(2)

(119)

A jeśli już mam mój projekt?

Jeśli nie chcę importować projektu z zewnątrz, tylko chcę “wypchnąć”

istniejący projekt do repozytorium: Projekt Team Share Project... → →

Ponownie eclipse przeprowadzi nas

przez kolejne okienka kreatora…

(120)

Commit, push...

Git natychmiast bardzo wyraźnie ( > ) sygnalizuje te zmiany.

Wyświetlenie menu kontroli wersji (Team w menu kontekstowym projektu). 

Jeśli wybierzemy “Commit...” pojawi nam się przyjazne okienko wktórym

wybieramy pliki które chcielibyśmy wypchnąć do repozytorium:

- lokalnego (Commit)

- zarówno lokalnego i centralnego (Commit and Push)

(121)

GIT w praktyce

Co zrobić aby używać GITa?

– Zainstalować program GIT https://git-scm.com/downloads

– Wybrać serwer na którym będzie przechowywane centralne repozytorium https://github.com/

– Zainstalować odpowiednią wtyczkę do eclipse’a

Help→ Install New Software http://download.eclipse.org/egit/updates/

Więcej informacji można znaleźć w:

https://guides.github.com/activities/hello-world/

http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom /

http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/

http://namiekko.pl/2016/03/12/git-w-eclipse/

(122)

Window Builder

(123)

Eclipse Help Eclipse Marketplace “windowbuilder”

Window Builder

https://www.eclipse.org/windowbuilder/

(124)

Window Builder

Aby uruchomić, klikamy na danym pliku java

(musi być to klasa dziedzicząca po elemencie GUI/Swing)

Open With WindowBuilder Editor

(125)

Window Builder

Wybranie zakładki Design przenosi nas w graficzny tryb projektowy.

UWAGA: warto monitorować w “Source” co właściwie program robi...

(126)

Window Builder

Przycisku przy “Properties” pozwalają modyfikować inne atrybuty albo

(127)

Generowanie dokumentacji w postaci HTML:

Project Generate Javadoc…  → W Javadoc Generation:

• Javadoc command: poszukaj pliku javadoc.exe (zwykle     w [sciezka_do_jdk]\bin\javadoc.exe).  

• Zaznacz kwadracik dla projektu / paczki / pliku dla którego tworzysz Javadoc

• Destination: miejsce, gdzie dokumentacja ma zostać zapisana

• Finish

Wygenerowana dokumentacja będzie w wybranym folderze. Należy odpalić plik  index.html.

Jak pisać komentarze by były uwzględniane w javadoc:

http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html Jak wygenerować javadoc HTML w eclipse:

https://stackoverflow.com/questions/4468669/how-to-generate-javadoc-html-in-eclipse?

utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Javadoc

(128)

Dziękuję za Uwagę!

To już ostatni wykład.

Dziękuję wszystkim za uczestnictwo i

powodzenia na laboratoriach!

(129)

Informacje dodatkowe

Cytaty

Powiązane dokumenty

● Definicja: paradygmat programowania opierający się na podziale kodu źródłowego programu na procedury i hierarchicznie ułożone bloki?. ● Rozwijał się w opozycji

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 49/98. Odwołanie do Nadklasy

public void actionPerformed(ActionEvent arg0) {  setTitle(&#34;Anonimowa klasa wewnetrzna&#34;);  . } }

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 80/116 public class MenuWindow extends JFrame {.

strumieniowych związanych z plikami podaliśmy jako argument nazwę pliku → 4 klasy strumieni abstrakcyjnych. ● można także utworzyć strumień plikowy podając jako

protected void done() - wywoływana po zakończeniu zadania, wykonywana w EDT, można w niej przeprowadzić „sprzątanie” i zaprezentować w GUI główny rezultat wykonywanego

– Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, → Łatwe, relacyjna... – Ustalamy jakiego DBMS będziemy używać.

javax.sql.rowset.serial Provides utility classes to allow serializable mappings be- tween SQL types and data types in the Java programming language.. javax.sql.rowset.spi The