Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · –...

113
Języki i paradygmaty programowania (JIPP) dr hab. inż. Adam Niewiadomski, prof. nadzw. Informatyka, III sem. studia dzienne inżynierskie PWSZ we Włocławku

Transcript of Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · –...

Page 1: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Języki i paradygmaty programowania

(JIPP)

dr hab. inż. Adam Niewiadomski, prof. nadzw.Informatyka, III sem.

studia dzienne inżynierskie PWSZ we Włocławku

Page 2: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Program przedmiotu

● 1 część semestru (ok. 4-5 wykładów)– OOP i inne techniki programowania (zarys)– Generacje języków programowania– Trójwarstwowa architektura aplikacji

● W. danych, w. logiki, w. Interfejsu użytkownika– Fazy życia oprogramowania

● 2 część semestru (ok. 8-9 wykładów)– Język Java (Aplikacje konsoli, graficzny interfejs

użytkownika, aplikacje okienkowe)● Programowanie obiektowe, zorientowane obiektowo,

programowanie komponentowe, klasa-obiekt-komponent

Page 3: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

http://ics.p.lodz.pl/~aniewiadomski

Cykl slajdów nie stanowi kompletnego opracowania, a zwłaszcza nie jest skryptem zastępujacym wykład. Należy traktować go wyłącznie jako zbiór notatek ułatwiajacych słuchaczom udział w zajęciach.

Slajdy można przetwarzać pod warunkiem nienaruszania praw autora, w szczegolnosci (ale bez ograniczenia do) rozpowszechniania całosci lub fragmentów w jakiejkolwiek formie bez zgody autora.

Page 4: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Cykl inżynierii oprogramowania (1)

● Algorytmy i złożoność obliczeniowa– Struktury danych, tablice, pętle, instrukcje

warunkowe i skoku, sortowanie, wyszukiwanie elementów w tablicach itp.

● Podstawy programowania– Programowanie proceduralne – instrukcje

sterujące, implementacja podstawowych algorytmów, tablice i dynamiczne struktury danych, kompilacja, praca krokowa, debugging

– Projektowanie klas, obiektów i ich funkcji składowych, dziedziczenie klas

Page 5: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Cykl inżynierii oprogramowania (2)

● Języki i paradygmaty programowania– Techniki i generacje języków programowania– Trójwarstwowa architektura aplikacji– Fazy życia oprogramowania (zarys)– Trójwarstwowa architektura aplikacji i jej realizacja

w języku Java– Obiekt – klasa – komponent jako powtarzalne

(reusable) fragmenty kodu● Wykorzystanie technik OOP i komponentów do produkcji

aplikacji niezależnych sprzętowo z tekstowym i/lub graficznym interfejsem użytkownika (GUI)

Page 6: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Cykl inżynierii oprogramowania (3)

● Inżynieria oprogramowania– Analiza i projektowanie obiektowe, język UML

(najprawdopodobniej)● Założenie: słuchacz najpierw poznaje techniki

implementacji, później uczy się stosować je na szerszą skalę i uzależniać od nich pozostałe fazy projektu informatycznego– ''Od szczegółu do ogółu'' – Zależy to także od pozostałych przedmiotów

● Bazy danych, sieci komp., bezpieczeństwo systemów, programowanie aplikacji klient-serwer, podstawy programowania sieciowego, itp.

Page 7: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Bibliografia, czyli literatura

Java – przegląd, obiektówka i aplety

K. Arnold, J. Gosling, Java, WNT 1999, 42 złJava ogólnie, zwłaszcza aplikacje konsoli

Eckel B.: Thinking in Java. Helion, 2001, 90zł

http://java.sun.com ics.p.lodz.pl/~aniewiadomski

– Dział ,,Dydaktyka'', JiPP

Page 8: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Klasy systemów informacyjnych

● ERP - Enterprise Resource Planning system informatyczny zarządzający działalnością przedsiębiorstwa jako całością– SAP, IFS, JEEVES, INFOR MAX+, Symfonia

Forte, Impuls BPSC● ERP = MRP I + MRP II

– MRP I (Material Resource Planning)● planowanie materiałowe

– MRP II (Manufacturing Resource Planning)● planowanie produkcyjne

Page 9: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Standardowe moduły ERP

● Produkcja● Logistyka● Księgowość● Magazyn● Sprzedaż● Zakupy

– czego brakuje ???

Page 10: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Rozwój ERP

● ERP są zwane "Back-office" - bo przeznaczonetylko dla personelu w odróżnieniu od

systemów klasy ● CRM Customer Relationship Management

– Pewne zasoby dostępne są także dla klientów, np. za pośrednictwem WWW

● Rozwój --> ERP II ''wychodzą poza przedsiębiorstwo''

● ECR = Obsługa konsumentow i dostawców (Efficient Consumer Response)

Page 11: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Rozwój ERP cd.

● SCM = Zarządzanie Łańcuchem Dostaw (Supply Chain Management)

● RFID Radio Frequency Identification - w systemach kontroli przepływu produktów/towarów w oparciu o fale radiowe – np. System Automatycznej Identyfikacji Towarów

(SAIT)

Page 12: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Fazy życia oprogramowania

1.Analiza wymagań użytkownika2.Projektowanie3.Implementacja 4.Testy i wdrożenie 5.Konserwacja i reengineering

Fazy te moga po sobie nastepować wg różnych cyklów, np. kaskadowego, kaskadowego z powrotami, spiralnego, itp.

Page 13: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

● Dane – jakie informacje przetwarza system?– Typy danych, formaty, konwersje

● Użytkownicy – kto ma korzystać?– Grupy i ich prawa dostępu

● Warunki odbiorcy – gdzie system ma działać?– Sprzętowe, lokalowe, finansowe

● Czy firma ma już system?– Jaki? Za ile? Od kiedy? Co chcą zmienić?

1. Analiza wymagań użytkownika

Page 14: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

2. Projektowanie – warstwa danych

● Baza danych– tabele, kwerendy, relacje, więzy integralności– Formy normalne tabel, normalizacja

● Prawa dostępu do tabel– Który użytkownik które dane widzi i/lub przetwarza

● Zgodność z normami prawnymi– Jawność/tajność informacji, prawo publikowania – Ochrona danych osobowych

● Zwłaszcza danych wrażliwych

Page 15: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

2. Projektowanie – warstwa logiki

● Procesy, podprocesy – funkcje systemu– np. zaloguj się = sprawdź login + sprawdź hasło +

wyświetl zawartość konta użytkownika● Przepływ danych

– Dane wejściowe i wyjściowe– Jak przetwarzać dane? – Gdzie przechowywać dane wynikowe?

● Algorytmy – specyfikacje procesów– Rysunki, pseudokod, język naturalny

Page 16: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

2. Projektowanie – interfejs użytkownika

● Interfejs (ang. interface) – metoda komunikowania się programu z użytkownikiem

● Interfejs tekstowy– DOS, Norton Commander, Linux Console– Szybko działa, ale wymaga znajomości komend

● Interfejs graficzny – Windows, KDE, Gnome– Wolniejszy, ale intuicyjny w obsłudze

Page 17: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

2. Projektowanie – interfejs użytkownika (2)

● Interfejsy graficzne– Okienkowy – dla osobnych aplikacji– Okienkowy – dla aplikacji – Przeglądarka internetowa – dla aplikacji klient-

serwer● Przed zaprojektowaniem interfejsu

trzeba znać możliwości odbiorcy !– Sprzęt i system operacyjny– Stopień wyszkolenia personelu

Page 18: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

3. Implementacja

● Zapis ustaleń projektowych w języku/językach programowania– Warstwy danych– Warstwy logiki– Warstwy interfejsu użytkownika (-ów)

● Metodyka obiektowa lub proceduralna● Od metody implementacji bardzo

silnie zależą fazy analizy i projektu (koszty!!! - obiektowo czy proceduralnie??)

Page 19: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

4. Testy i wdrożenie

● Wdrożenie systemu informacyjnego – uruchomienie w docelowym środowisku działania, dla docelowej grupy użytkowników i wykonującego docelowe zadania– Środowisko = platforma + otoczenie (np. budynek,

inne instalacje)– Platforma = sprzęt + system(y) operacyjny(-e)– Zadania = przetwarzanie rzeczywistych danych

pod rzeczywistym obciążeniem– Wersje językowe – lokalizacja oprogramowania

Page 20: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

4. Testy i wdrożenie (2)

● Szkolenie personelu– Szkolenie bezpośrednie lub pośrednie– Szkolenie w trakcie testowania (system celny)

● Dokumentacja techniczna– Systemy pomocy ''Help'', instrukcje obsługi, – Warunki eksploatacji i konserwacji– Warunki serwisu i gwarancji

Page 21: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

4. Testy i wdrożenie (3)

● T. regresyjne [Roszkowski, 2004]

– Po zmianach, ''czy nie zmieniono za dużo''● T. operacyjne

– Testy długookresowe, pomiar niezawodności● T. pełnozakresowe

– Przy pełnym obciążeniu systemu● T. wydajnościowe

– Pomiary szybkości, wydajności (sprzęt !!)

Page 22: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

4. Testy i wdrożenie (4)

● T. negatywne– Świadome wprowadzanie błędów

● T. ergonomiczne– Czytelność i wygoda interfejsów

● T. dokumentacji użytkownika– Czytelność ''helpów'', zgodność ze stanem faktycznym

● T. akceptacyjne– Testy ostateczne, ''kupić czy nie kupić''

● Testy bezpieczeństwa !!!

Page 23: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

4. Testy i wdrożenie (5) - koszty

● Sprzęt: serwer bazy danych, stacje robocze użytkowników - klienci (PC, laptopy, palmtopy), odpowiednia infrastruktura (sieć, komputerowa, telefony komórkowe)

● Oprogramowanie: licencja na systemy operacyjne serwera i stacji roboczych, licencja na serwer baz danych, licencja na oprogramowanie.

● http://www.logistyka.net.pl/ – A. Stachowicz-Stanusch, M. Stanusch

Page 24: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

4. Testy i wdrożenie (6) - koszty

● Wdrożenie: analiza przedwdrożeniowa, parametryzacja systemu, ewentualne modyfikacje systemu, instalacja, połączenie z istniejącymi systemami informatycznymi przedsiębiorstwa, szkolenie, próbna eksploatacja, nadzór nad pełną eksploatacją

● Serwis: umowa stałej opieki serwisowej– Zalicza się do następnej fazy, ale umowa

zawierana jest przy wdrożeniu

Page 25: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

5. Eksploatacja i konserwacja systemu

● ''Odśmiecanie'' baz danych– Nieaktywni użytkownicy– Dereplikacja wpisów

● Obserwacja rejestrów zdarzeń (tzw. logów)– Login, logout, awarie, zamknięcia sesji– Nowi użytkownicy, modyfikacja uprawnień

● Dbałość o bezpieczeństwo– Wykrywanie ataków– Aktualizacja zabezpieczeń– Kontrola dostępu

Administrowanie systemem

Page 26: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

5. Reengineering (2)

● Reengineering – inżynieria wtórna● Service packs, aktualizacje, ''łaty'' - patches● Uwagi do następnej wersji systemu

– Funkcje zbędne, nie używane, powielające się– Funkcje pożądane, nowe lub o zmienionym działaniu,

itp.● Reinstalacja systemu (skrajny przypadek)

***Wszystkie powyższe czynności potocznie określa

się mianem ''support'' – wsparcie

Page 27: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Architektura aplikacji ● Model trójwarstwowy

– Warstwa danych– Warstwa logiki aplikacji– Warstwa interfejsu użytkownika

● Model-View-Controller – wzorzec projektowy, design patern

● Aplikacja <= System informacyjny– Aplikacja ,,nie zawiera'' sprzętu

● Synonimy ,,aplikacji'': oprogramowanie, software, ● Inne architektury/modele

– np. Web Services – 4 warstwy: jw. + usługa sieciowa, odpowiedzialna za zbieranie danych rozproszonych,

● Na rożnych serwerach, w różnych kopiach tej samej bazy

Page 28: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Trzy warstwy aplikacji – przykład

//--------- dane -------------------int tab[] = new int[N];tab[0] = 43;tab[1] = 11; ..... tab[N] = 30;

//--------- logika ------------------for (i=0; i<N-1; i++)

for (j=0; j<N-i-1; j++)if (tab[j]>tab[j+1])

bufor = tab[j];tab[j] = tab[j+1];tab[j+1] = bufor; }

//--------- interfejs użytkownika -------for (i=0; i<N; i++)

cout<< tab[i]; // System.out.println(+tab[i]);

Page 29: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

A. trójwarstwowa – warstwa danych

● Warstwa danych – przechowuje dane w sposób pasywny, nie implementuje procedur dostępu do danych ani ich przetwarzania

● Wykonuje zlecane przez warstwę logiki podstawowe operacje:– Read np. SELECT– Write np. INSERT– Modify np. UPDATE– Delete np. DELETE

● W tym sensie ''bazy'' w Accessie nie są tylko zbiorami danych, ale całymi aplikacjami

Page 30: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Arch. trójwarstwowawarstwa danych (2)

● Technologie tworzenia warstwy danych– SQL ''bezpośrednio''– narzędzia graficzne

generujące kod SQL, np. OpenOfficeBase

– diagramy związków encji (Entity Relationship Diagram

● Ok. 95 % baz – relacyjne– 5 % inne (obiektowe,

sieciowe, hierarchiczne)

Page 31: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Arch. trójwarstwowa – logika aplikacji

● Warstwa logiki – metody przetwarzania danych, funkcje, procedury, procesy, usługi...

● ...operujące na danych z bazy, przetwarzające je i przekazujące do bazy, do innych procesów/funkcji lub do interfejsu użytkownika

● Szczegółowe określenie (specyfikacja) tej warstwy wymaga algorytmów w postaci schematów blokowych lub pseudokodów

● Technologie: 3GL – Pascal, Cobol, Fortran, C/C++, Java, PHP; 4GL – LISP, Prolog

Page 32: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Arch. trójwarstwowa – warstwa interfejsu użytkownika

● Zespół operacji odpowiedzialnych za kontakt z użytkownikiem, – Wizualizacja (wyświetlanie) rezultatów procesów– Pobieranie danych i kontrola ich poprawności– Przyjmowanie poleceń użytkownika

● Interfejsy– Tekstowe– Graficzne (Graphical User Interface, GUI)– Przeglądarki WWW (wymaga formatowania

HTML-em danych wyjściowych)● PHP, VBScript, ActionScript, XML Flash,

HTML+CSS+JavaScript+DOM=DHTML

Page 33: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Warianty arch. trójwarstwowej

● Aplikacja typu ''Desktop''– Aplikacja ''biurkowa'', bez połączenia z siecią– Całość kodu wykonuje się na stacji roboczej– Aby działać nie musi łączyć się z innymi systemami

● Aplikacja klient-serwer – dwa systemy (programy, maszyny, platformy) komunikujące się ze sobą w celu wykonywania zadanych operacji– Thick client, gruby klient - interfejs + logika u klienta,

a dane na serwerze – Thin client, cienki klient – interfejs u klienta, a logika

i dane na serwerze

Page 34: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Gruby klient

<html> <body> <p>Zaloguj sie: </p> <form method="post"> <input type="text" value="wpisz login"> <input type="password" name="haslo"> <input type="submit" onclick='javascript: if (haslo.value == "mojehaslo") document.write("witamy !!!"); else document.write("ZLE !!!");'>

</form> </body></html>

Page 35: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Przykład ,,thin client”

Page 36: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Przykłady arch. trójwarstwowej

● Sortowanie tablicy● Google● Program pocztowy● Word, Paint, Corel● www.onet.pl, www.interia.pl

– Jakie dane? Jaka logika? Jaki interfejs?

Page 37: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Technologie wytwarzania aplikacji Desktop (1)

Kod maszynowy (1GL) i assemblery (2GL)sterowniki

Języki 3-ciej generacji (3GL)– Cobol, Fortran, Basic (programy obliczeniowe)– Pascal, C/C++, Java (programy użytkowe)– Visual Basic (aplikacje Office – Excel, Word,

OpenOfficeOrg)Dokumenty doc, xls, odt, odp nazywam tu aplikacjami

ze względu na występujące w nich elementy interaktywne, np. formularze, przyciski, kontrolki itp.

Page 38: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Technologie wytwarzania aplikacji Desktop (2)

Języki 4-ej generacji (4GL)– SQL – relacyjne bazy danych – Prolog, Lisp – Systemy Sztucznej Inteligencji– TeX, LaTeX, BibTeX – skład drukarski

\documentclass[a4paper,11pt,bf,small,twoside]{itic} %{{{\usepackage{graphicx}\begin{document}

\title{INTERVAL-VALUED LINGUISTIC SUMMARIZATION OF~DATA}\author{ \textbf{Adam \uppercase{Niewiadomski}} }

Języki i metody wizualne– Corel – dokumenty i aplikacje graficzne– PowerPoint, OpenOfficeImpress – prezentacje

Page 39: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Technologie wytwarzania aplikacji klient-serwer (1)

● Gruby klient– Applety

● Interfejs = Java+ HTML, przeglądarka● Logika = Java (plik *.class ładowany do Temp)● Dane = Serwer WWW przechowujący kod

<applet code=”kod_appletu.class” width=200 height=200>

– ActiveX skaner MKS● Interfejs = C++, ActiveX,● Logika = C++● Dane = Serwer WWW przechowujący kod

Page 40: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Technologie wytwarzania aplikacji klient-serwer (2)● Cienki klient

– PHP Allegro● Interfejs = DHTML przeglądarka● Logika = PHP, serwer Apache● Dane = Serwer MySQL

– JSP www.gazeta.pl● Interfejs = jw.● Logika = Java, serwer Tomcat● Dane = Postgress (???)

– CGI Wirtualna Polska● Interfejs = jw.● Logika = Perl ... ● Dane = ....

– ASP, ASP.NET, .NET - www.microsoft.com – Ruby, RubyOnRails

Page 41: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Java – historia (1)

● James Gosling – pomysł stworzenia języka niezależnego od sprzętu (ściślej: od platformy)(Sun Microsystems – California, 1990)– Pierwsza nazwa – OAK (okazała się zastrzeżona)– Pierwotne przeznaczenie – interfejsy urządzeń AGD

i audio-video– Modyfikacje i nowe modele sprzętu wymagały

częstych zmian oprogramowania – koszty ! ● np. telefony komórkowe

Page 42: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Java – historia (2)

● Niezależność sprzętowa znalazła zastosowanie w usłudze WWW

● 1993 pierwsza przeglądarka WWW, HotJava, która obsługiwała programy w Javie, jednak nadal było to rozwiązanie lokalne Suna, gdyż inne firmy nie wytwarzały oprogramowania zgodnego z tym standardem

● 1995 przeglądarka Netscape Navigator 2.0 obsługuje Applety Java, co ustanowiło przyjęcie rozwiązania dotąd lokalnego jako ogólnego standardu (!)

Page 43: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Zależność aplikacji od sprzętu

● Program zależny od platformy

Źródło C/C++

Kompilator Windows

Kompilator LINUX

Kompilator DOS

*.EXE Windows

*.bashLINUX

*.exe DOS

Sys. OpLINUX

Sys. OpWindows

Sys. Op DOS

Page 44: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Zależność od platformy na przykładzie programów w C/C++

● Program w wersji źródłowej wymaga kompilacji i konsolidacji (linkowania) z bibliotekami zgodnymi z daną platformą

● Formaty plików pośrednich i wynikowych są inne dla poszczególnych platform (np. *.obj, *.exe, *.dll)

● *.exe zawiera listę instrukcji danego procesora ● Zatem: na każdy sprzęt konieczny jest inny

kompilator, linker oraz zestaw bibliotek– Duże koszty, – brak przenośności źródeł oraz gotowego

oprogramowania

Page 45: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Niezależność sprzętowa aplikacji

● Program niezależny od sprzętu

Źródło *.java

plik(i) *.class czyli Bajt-kod

JVM Win2K

JVM Linux

JVM DOS

Kompilator

PlatformaLINUX

PlatformaWindows

Platforma DOS

*.class

*.class

*.class

.............

Page 46: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Niezależność oprogramowania od platformy

● Kod źródłowy kompilowany jest zawsze tą samą metodą i łączony z tymi samymi bibliotekami

● Jest to możliwe, gdyż plik wynikowy *.class (tzw. kod pośredni, bajt-kod) zawiera instrukcje dla programu wykonującego, a nie bezpośrednio dla procesora

● Program wykonujący (interpreter) odpowiada za przetłumaczenie poleceń z pliku *.class na rozkazy danego procesora

● Technologie – .net (C#, J#, VB.net) – Ruby, RubyOnRails

są innymi niż Java przykładem tworzenia oprogramowania niezależnego od sprzętu

Page 47: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Java Virtual Machine

● Wirtualna Maszyna Javy● __Interpreter bajt-kodu__ (czyli poleceń

w plikach *.class)● JVM działa analogicznie jak procesor

przetwarzający kod w pliku .EXE● Istnieją implementacje na praktycznie wszystkie

platformy– np. Windows – środowisko uruchomieniowe JRE – j2re-1_6_0_11-windows-i586.exe

Page 48: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Biblioteki

● Niezależność sprzętowa to także biblioteki● Niezależne od platformy zbiory klas i ich

metod składowych, czyli tzw. API– Application Programming Interface

● http://java.sun.com/j2se/1.4.2/docs/api/● Pakiet to zbiór klas, gdzie

– nazwa pakietu = nazwa katalogu– nazwa klasy = nazwa pliku

● Pakiety na dysku są rozpakowane (katalogi z plikami *.class) lub ''spakowane'' do plików.jar (java archive)

Page 49: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Plusy niezależności sprzętowej (1)

Szerokie zastosowania w Internecie– Zamieszczając aplet Javy na stronie nie trzeba

myśleć o tym jaki komputer ma odbiorca Mały rozmiar kodu wynikowego

– 1kB appletu *.class vs. ok. 200kB .exe drukującego jedną linię tekstu

● Jedna metoda kompilacji i jeden zestaw pakietów– Kod klas i funkcji bibliotecznych jest odczytywany

przez JVM, a nie przez różne procesory, a więc działa podobnie

Page 50: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Plusy niezależności sprzętowej (2)

● Na 1 dobry program napisany w C++ przypada 3,7 złych programów. W Javie proporcja ta wynosi 1,7.

● Napisanie programu w Javie zajmuje średnio 3 krotnie mniej czasu.● Programy w Javie są nawet 2-3 krotnie krótsze

(nie licząc komentarzy Javadoc)

Page 51: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Minusy niezależności sprzętowej (1) Spowolnienie działania (dodatkowy program między

procesorem a kodem)– Plik *.class nie jest bezpośrednio odczytywany

przez procesor, ale przez program interpretujący, czyli JVM

● Programy Javy ładują się 6-krotnie wolniej.– Program napisany w Javie potrzebuje statystycznie

2-3 krotnie więcej RAM niż napisany C++ i działa do 10x wolniej

Page 52: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Minusy niezależności sprzętowej (2)

Konieczność zainstalowania JVM przy pierwszym uruchomieniu programu– Przy wolnym łączu uniemożliwiało to działanie

Javy Niemal całkowity brak współpracy z kodami w

innych językach– W C/C++ można było zlinkować do .exe funkcje

napisane np. w Pascalu i skompilowane do *.obj

Page 53: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Programowanie komponentowewykład 3

Informatyka, IV sem.studia dzienne

FTIiMS, PŁ

Page 54: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Programowanie komponentowe wymaga

Znajmości składni języka – każdy język programowania można poznać posługując się pewnym schematem

– Jakie są słowa kluczowe, jak buduje się wyrażenia, funkcje, zmienne, jak tworzy się typy danych, struktury danych, tablice, obiekty, itp.

Znajomości bliotek (obiektów, pakietów i komponentów)– Czy trzeba samemu tworzyć funkcje i struktury danych,

czy może wystarczy skorzystać z gotowych i zoptymalizowanych?

Znajomości narzędzi programistycznych – szybkość i wygoda tworzenia aplikacji

– Jak uruchomić kod w danym języku, jak poprawić błędy, jak wygenerować powtarzalne fragmenty kodu, praca krokowa, debugging

Page 55: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kategorie składniowe Javy (1)

1. Słowa kluczowe – nazwy typów, instrukcji sterujących, stałych, operatorów, modyfikatorów dostępuNie można w ten sposób nazwać zmiennych,

funkcji, itp.Słowa zarezerwowane obejmują terminy

''reserved for future use'' – przewiduje się, że w przyszłych wersjach Javy wprowadzone będą nowe słowa kluczowe, a wówczas starsze kody mogłyby nie kompilować się w nowych środowiskach, np. w Java 7

Page 56: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kategorie (2,3)

2. Separatory (9 szt.) ( ) { } ; , [ ] - oddzielają wyrażenia, bloki kodu, klasy- niektóre są także operatorami, np. [ ] operator

indeksowania tablicy

3. Komentarze// jednolinijkowy od znaku // do końca linii

/* Komentarz blokowy */

Page 57: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kategorie (4) operatory

4. Operatorya. Priorytet, czyli ''kolejność wykonywania działań'', np. obiekt.tab[2*5]b. Wiązanie (prawe/lewe)

wiązanie lewe np. 2+3+4+5 kompilator oblicza kolejno(((2+3)+4)+5)wiazanie prawe, np. x=y=z=2, kompilator oblicza(x=(y=(z=2)))Od prawej wiążą operatory jednoargumentowe

i przypisania, pozostałe od lewej

Page 58: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Operatory c.d.

c. Ilość argumentów (1, 2 lub 3)!zmiennaLogiczna (1 argument)3*5, (2 argumenty)x<y ? x : y (3 argumenty)

d. Wartość (typ rezultatu) – następny slajde. L-wartość (ang. Left-value, L-value) -

każde wyrażenie, które może znaleźć się po lewej stronie operatora przypisania, np. X = 2, tab[1] = tab[2]

-ale nie: 5+=1 lub 5++, gdyż jest równoznaczne z 5=5+1 !!!!

Page 59: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kategorie (4) operatory cd.Podział przybliżony pod względem typu

zwracanej wartości● Arytmetyczne + - * %

– Wynik jest typu jednego z operandów● Logiczne ! && ||

– Wynik true lub false● Przypisania = += -= *= ++ --

– Wynik jest typu lewego argumentu (czyli L-wartości)

Page 60: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kategorie (4) operatory (podział przybliżony)

● Porównania == < >= – true lub false

● Bitowe & | ^ << >>>– Wynik jest typu jednego z operandów

● Przydziału pamięci new– Wynik jest typu referencyjnego

● Kontroli typu instanceof– Wynik logiczny

● Zalecane ćwiczenia!

Page 61: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kategorie (5) Identyfikatory – nazwy

● stałe, czyli literały literały specjalne, np. polskie znaki

– znakowe (char, String) – ‘w’, ”Dziendobry”, ‘\xY’– liczb całkowitych (int, byte) – 100, 011, 0xFF00, 55L– liczb rzecz. (double, float) – 1.5, .6, 0.5f , 0.7D– logiczne (boolean) – true, false

● Są to także słowa zarezerwowane● zmienne x, i, nazwisko, checkbox1● typy Button, String, int, char

Page 62: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Identyfikatory (nazwy) funkcji

● np. init(), wyciagnijPierw(25);● Występują w trzech kontekstach

– Deklaracja, int funkcja(double x);

– Definicja = deklaracja + ciałoint funkcja (double x) {

// ciało funkcjireturn rezultat;

}– Wywołanie: użycie wartości funkcji

X = funkcja (3.14);

Page 63: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Sterowanie wykonaniem programu

● for, while, do..while – jak w C/C++– Oprócz np. while(1)

● Brak konwersji wyrażeń logicznych do int● Powinno być while(1==1)

● if..else,if..else if..else – jw.● switch..case..default – jw.● break, continue – jw. ● Przypisanie = (+=, -=, ......)

– Dokładnie jak w C/C++

Page 64: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Sterowanie... cd.bloki instrukcji (obowiązuje przesłanianie nazw zmiennych)

int x=2;

{

int y = 5;

System.out.println(""+y);

/// Bledem jest np. int x=3; Przeslania zmienna istniejącą

}

int y=3; // Nie jest to błąd – kompilator ,,zapomniał'' o y

System.out.println(""+y); //EFEKT ???

Page 65: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Typy danych w Jawie

Złożone

Typy danych

Proste

ObiektoweTablicowe

ProgramistyBiblioteczne

Page 66: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Typy proste(wbudowane, built-in, primitives)

● byte 1 bajt, stałoprzec. ze znakiem● short 2, int 4, long 8● char 2 kod znaku UNICODE

– możliwe zapisanie EOF

● boolean 1 bajt, true/false

● float 4 bajty, zmiennoprzecinkowa● double 8, jw.

Page 67: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Typy tablicowe ● TYLKO DYNAMICZNE !!!● Jednowymiarowa

– int tab [ ] = new int [6];Ale nie: int tab[6], bo nie ma tu rezerwacji

pamięci operatorem new

● Dwuwymiarowa– double tab [ ] [ ] = new double [10] [10];

Są to przykłady definicji tablic Trójwymiarowa boolean tab[ ][ ][ ]= ........

Page 68: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Typy obiektowe

● Biblioteczne– Button java.awt.Button– Date java.util.Date– ActionEvent java.awt.event.ActionEvent– String java.lang.String

● Własne – definicja klasy– Np. Macierz

class Macierz {definicja klasy, czyli pól i funkcji składowych

}

Page 69: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Zmienne – referencje (de facto: wskaźniki)

● Zmienna – miejsce w pamięci do przechowywania danych to miejsce ma swoją nazwę, jak to w językach imperatywnych 3-ej generacji, nie zaś adres

● Zmienne (tylko pola klas lub zmienne lokalne/formalne funkcji, brak zmiennych globalnych)

– automatyczne (tylko typy proste, kompilator sam rezerwuje pamięć i sam ją zwalnia)

● int x; char znak; – dynamiczne (rezerwacja pamięci operatorem new,

wszystkie typy obiektowe i tablice)– statyczne inicjalizacja wymagana przy deklaracji

● np. static int x = 5; //nie: static int x; ... x=5;

Page 70: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Zmienne – deklaracja, przydział pamięci, inicjalizacja● Deklaracja

int x, y=3;Button b1, b2;

● Rezerwacja pamięci (nie dotyczy typów prostych)b1 = new Button(”Kliknij tu!”);

● Inicjalizacjax = 25; // typy prostenapis = new String(”1.2.3.próba Stringa...”); // typy złożoneb2 = b1; // ŹLE - konstruktor kopiujący nie wywoła się,

zostaną przypisane ADRESY, nie WARTOŚCI, musi być:b2 = new Button(b1);

Page 71: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Konwencje zapisu kodu w Jawie

● Klasy – wielką literą, bez ‘C’ lub ‘T’ z przodu– Macierz, Button, String

● Zmienne – małą literą, bez podkreśleń– i, nazwiskoStudenta, iloscWierszyMacierzy– zmienna po ‘.’ jest polem jakiejś innej klasy

● obiekt.pole– zmienna po this jest polem bieżącej klasy

● this.pole // równoważne: pole, ale z this jest czytelniej– zmienna bez poprzedzającego selektora jest

argumentem formalnym funkcji lub zm. lokalną/pomocniczą

● pole

Page 72: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Standardy zapisu kodu... cd.

● Funkcje – czasownik małą literą, dopełnienie – wielką– getNumber, toString, add, róbCoś

● Nazwy pakietów – małą literą– java.awt; – java.mypackage.MyClass

● To klasa MyClass w pakiecie java.mypackage● Bloki { // początek bloku

// instrukcje } //koniec bloku

Page 73: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Notacja węgierska (Hungarian notation)Źródło: Bates: Poznaj Visual C++ 6.0, Appendix A

● b boolean bOdpowiedz● n short, int nWagaZawodnika● l long lRozmiarPliku● fl float flMojaPensja● d double dJegoPensja● bt Button przycisk● ch Checkbox pole wyboru● e Event zdarzenie● pt Point punkt

Page 74: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice między C/C++ a Javą (1)

● Typy danych podstawowych niezależne od sprzętu – specyficzne dla JVM, a nie dla platformy

● Nie istnieje pojęcie wskaźnika– wszystkie zmienne typów prostych są wartościami

● int x=0; – wszystkie zmienne typów złożonych (tablicowych i

agregatów) są referencjami – wymagają dynamicznego przydziału pamięci

– operator * oznacza tylko mnożenie

– operatory .* , -> , :: nie istnieją

● this jest referencją

Page 75: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (2)● Tablice tylko dynamiczne Kurs Tylocha, rozdz. 2.3.17

– tablica w Jawie jest obiektem● dziedziczy po Object, implementuje interfejs Cloneable

– deklaracja wymaga przydziału pamięci w zadanej ilości, poprzez podanie liczby elementów...

● String tab[ ] = new String[5]; – ...lub zbioru inicjalizującego wartości elementów

● int tablicaInt[ ] = {1, 2, 3, 4, 5};● String tab[ ]={new String(”pn”),new String(”wt”)...};

– Nazwa tablicy wraz z nawiasami [ ] jest L-wartością● tab[0] = ”niedziela”

Page 76: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (3)

● Zwalnianie pamięci Kurs Tylocha, rozdz. 2.3.13

– Nie ma operatora delete– zwalnianiem pamięci zajmuje się funkcja System.gc()

(od ang. garbage collector)– funkcja ta wywoływana jest automatycznie co jakiś czas w

osobnym wątku, tylko wtedy, gdy nie ma nic innego ważniejszego do zrobienia (wątek ten ma b. niski priorytet)

– sprawdzane są wszystkie wartości w referencjach; jeśli w żadnej nie ma adresu danego obszaru pamięci, to obszar ten jest zerowany (rysunek)

Page 77: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (4)

● Zwalnianie cd. – zwalnianie jawne– można wywołać jawnie funkcję

System.gc()– jeśli obiekt musi przed zniknięciem zwolnić

zasoby (np. pozamykać pliki), można nadpisać funkcję finalize(), odziedziczoną po java.lang.Object

● przykład: kurs Tylocha, rozdz. 2.3.12

● Wniosek: finalizer działa podobnie jak destruktor– dotyczy to także wywołań finalizerów klas-przodków

Page 78: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (5)

● Brak możliwości przeciążania operatorów– operacje na niewbudowanych typach danych realizowane są

przez funkcje składowe o zwyczajowych nazwach, np.● == string1.equals(string2) rez. boolean● <=, >... string3.compareTo(string4) rez. int● = konstruktory klas

– wszystkie przeciążone operacje przypisania zastąpione są przez konstruktory kopiujące

String tekst1 = new String (innyString);

String tekst2 = tekst1;//przepisanie ADRESU !!

String tekst2 = new String (tekst1); //działa jeśli istnieje konstruktor kopiujący

Page 79: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Konstruktor kopiujący (5')

● K. kopiujący klasy A w C/C++ - konstruktor, który można wywołać z jedynym parametrem będącym referencją do obiektu klasy A– Pozostałe parametry mogą być domyślne

● W Javie nie ma domyślnych parametrów funkcji● K. kopiujący w Javie ma tylko jeden parametr● Jeśli konstruktor w Javie odwołuje się do

konstruktora klasy bazowej, – to robi to poprzez słowo super, koniecznie w

pierwszej linii pod nagłówkiem, patrz Różnica (9)– Brak list inicjalizacyjnych

Page 80: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Komentarz

● Różnice 1 – 5 mają znaczny wpływ na budowę wyrażeń w Javie i, w ogólności, na konstrukcję kodu i działajacych programów. Ich przyswojenie jest istotne z punktu widzenia eliminacji nawyków z C/C++ (nawyków niewłaściwych w Jawie)

Page 81: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (6) dostęp do klas, pól i metod

Dostęp do klas, pól i metod Kurs Tylocha, rozdz. 2.3.4– w Jawie obowiązuje tzw. dostęp pakietowy– Pakiet, podstawowa jednostka, jest katalogiem plików *.class – w jednym pliku *.java znajduje się jedna klasa publiczna

● mogą być inne klasy, ale niepubliczne przykład

– po kompilacji w jednym pliku *.class znajduje się jedna klasa– Przypisanie klasy do pakietu odbywa się instrukcją

● package nazwa_pakietu ; przykład

– położenie plików w pakietach określa zm. środ. CLASSPATH● przykład dla CLASSPATH = C:\WINNT\java

– Pakiet może zawierać podpakiety● np. java.awt zawiera w sobie java.awt.event – zbiór klas

odpowiedzialny za zdarzenia w oknach

Page 82: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (modyfikatory – 1)

● Modyfikatory dostępu do klasy– public – pola i składowe są widoczne w pakiecie i poza nim– final – po klasie nie można dziedziczyć– abstract – nie można utowrzyć obiektu tej klasy – domyślnie: dostęp pakietowy – pola i metody widoczne tylko

dla klas wewnątrz pakietu● Modyfikatory dostępu do pól i funkcji klasy

– private – pole/metoda widoczne tylko w klasie– protected – pole metoda widoczne w klasie, pakiecie i w

klasach dziedziczących– public – pole metoda widoczne ''wszędzie''– domyślnie ''package'', jw.

Page 83: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (modyfikatory – 2)

● Modyfikatory własności funkcji składowych– final, static, abstract, synchronized, native

● dostęp do f-cji st. Nazwaklasy.funkcja()● W C/C++ Nazwaklasy::funkcja()

● Modyfikatory własności pól klas– final, static, transient, volatile

● inicjalizacja pola statycznego – tylko w kodzie klasy (nie jak w C)● rozdz. Kurs Tylocha 2.3.12 – inicjalizator pól statycznych

Page 84: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (7) dziedziczenie

● Brak modyfikatorów dziedziczenia klas (public, private...)● Dziedziczenie tylko po jednej klasie – jednobazowe

– Hierarchia klas w pakietach ma postać drzewa – każda klasa ma co najwyżej jednego bezpośredniego przodka

– Upraszcza to graf hierarchii dziedziczenia klas● Czasem klasy muszą posiadać pewne funkcje, jeśli chcą aby dla ich

obiektów działały metody standardowe– Arrays.sort(Object[]) - wymaga aby obiekty miały funkcję

compareTo(), czyli implementowały interfejs Comparable ● INTERFEJS

– klasa abstrakcyjna– o zadeklarowanych, ale nie zdefiniowanych funkcjach (jeśli posiada)– o polach wyłącznie statycznych (jeśli posiada)– zadeklarowana słowem interface

Page 85: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice (7) – przykład diagramu schematu dziedziczenia jednobazowego z interfejsami

java.lang.Object | +--java.awt.Component

| +--java.awt.Container | +--java.awt.Panel | +--java.applet.Applet ActionListener

ItemListener

class MyApplet

Page 86: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Interfejs jako klasa, klasa interfejsowa

● Każda klasa implementująca interfejs MUSI zdefiniować jego metody– Dzięki temu pewne cechy mają zawsze tę samą nazwę;

ułatwia to np. ich wywoływanie przez inne komponentynp. Funkcja Arrays.sort(Object[ ] tab) działa w oparciu o funkcję compareTo(...), a więc obiekty w tablicy tab muszą implementować interfejs Comparable

● Interfejs może dziedziczyć po innych interfejsach (także po kilku), ale nie może dziedziczyć po klasach

● Interfejs może być deklarowany w jednym pliku *.java z klasami publicznymi mimo tego, że sam jest publiczny

● Po kompilacji interfejs zostanie umieszczony w osobnym pliku *.class

Page 87: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Interfejs... cd.

Kurs Tylocha, 2.3.12, 2.3.15

[public] interface InterfejsPrzykl {static int Pole=3;abstract public void Metoda();

} //domyślnie interfejs jest publiczny// użycie interfejsu przez klasę

public class MyApplet extends Applet implements InterfejsPrzykl {

public void Metoda() { // co robi ta metoda dla tej klasy}

}

Page 88: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Klasy wewnętrzne, anonimowe i lokalne Kurs Tylocha, 2.3.7

● Klasa wewnętrzna – klasa zdefiniowana wewnątrz definicji innej klasy– występowała w C/C++

● Klasa lokalna – klasa zdefiniowana wewnątrz bloku instrukcji (w definicji funkcji)– niedopuszczalne w C/C++

● Klasa anonimowa – klasa zdefiniowana wewnątrz wyrażenia– new NazwaKlasyPrzodka(//lista argumentów//) {...}

● jest to także sposób na dziedziczenie po interfejsach (!!!) – niedopuszczalne w C/C++

Page 89: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (9 – słowo super)

Słowo kluczowe super Kurs Tylocha rozdz. 2.3.13● Konstruktory nie posiadają list inicjalizacyjnych

– odpada operator : oraz inicjalizacja typu pole(wartość)

● super() – wywołuje konstruktor klasy bazowej

lub ● super.funkcja( ) - wywołuje funkcję o tej samej nazwie,

ale w wersji z klasy bazowej● Wywołanie super(....) musi być pierwszą linią kodu

konstruktora przykład

Page 90: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Różnice... (9 – słowo super, c.d.)

● Zakładamy hierarchię klas: A, B extends A, C extends B● Słowa super nie można łączyć kasakadowo; aby odnieść się

do nazwy niestatycznej w klasie wyższej należy konwertować referencję this– np. w obiekcie klasy C

((A)this).get();● Konwersja this do klasy-przodka jest równoznaczna z super

– w obiekcie klasy C:● ((B)this).get(); = super.get();

Page 91: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Programowanie komponentowewykład 5

Informatyka, IV sem.studia dzienne

FTIiMS, PŁ

Page 92: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Błędy w programach

● Z punktu widzenia kodu rozróżniamy– Bł. kompilacji – błąd składni w kodzie programu,

● Nieznana zmienna/funkcja/klasa/...● Brak nawiasu/średnika/....

– Bł. logiczne – program działa wbrew oczekiwaniom, ale __DZIAŁA__

● np. niepoprawne wyniki obliczeń● Nieprzewidziane zachowanie interfejsu● Brak możliwości wykonania jakiejś operacji

– Bł. czasu wykonania (ang. Runtime) – program uruchamia się, ale potem __zatrzymuje__

● Dzielenie przez zero, indeks tablicy spoza zakresu● Błąd otwarcia pliku (ogólnie: operacji we/wy)● Odwołanie do niezainicjalizowanej zmiennej obiektowej

– String x; System.out.println(x);

Page 93: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Wyjątki i błędy w Javie● Java oferuje bardzo rozbudowany, ściśle zorientowany

obiektowo mechanizm obsługi sytuacji krytycznych (błędy we/wy, alokacji pamięci, braku zasobów, błędnych operacji itd.)

● Sytuacje wyjątkowe dzielimy na dwa rodzaje– Errors błędy– Exceptions wyjątki

● Błędy – sytuacje rzadkie, związane z działaniem JVM, np. brak pakietu lub klasy, „opór” środowiska, poważny błąd systemowy

● Błędy nie powinny być obsługiwane w „zwykłych” programach Javy, ich wyrzucaniem zajmuje się watek JVM uruchamiający ''nasze'' programy– np. java.lang.NoClassDefFoundError – brak klasy z funkcją

main w bieżącym/wskazanym katalogu ● Zadanie na kolokwium: napisz kod wywołujący wyjątek X

Page 94: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Wyjątki i błędy – hierarchia klas

Page 95: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Wyjątki... cd

Kurs Tylocha, rozdz. 2.4

Wyjątki – sytuacje zazwyczaj możliwe do obsłużenia instrukcją if..else, np.

● nie znaleziono pliku– FileNotFoundException

● indeks poza granicami tablicy– ArrayIndexOutOfBoundsExcetion

● referencja wskazująca na pusty obszar pamięci– NullPointerException

● Błąd operacji arytmetycznej– ArithmeticException

Page 96: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Wyjątki RuntimeExceptions● Mogą występować bardzo często, nawet po kilka w

jednym wyrażeniu– for (i=0; i<10; i++); tab[ i ] = i;

● Ich obsługa nie jest przez kompilator wymagana – zbyt duży koszt sprawdzenia w porównaniu do strat spowodowanych przez taki wyjątek– NullPointerException– ArrayIndexOutOfBoundsException– ArithmeticException

● W momencie wystąpienia RuntimeException program zatrzyma się i pokaże nazwę wyjątku oraz miejsce jego wystąpienia

przykład

Page 97: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Wyjątek jako obiekt

● Każda sytuacja wyjątkowa jest reprezentowana przez obiekt pewnej klasy

● Każdy pakiet dysponuje odpowiednim zestawem wyjątków obsługującym błędy wywołane przez jego klasy/funkcje przykłady z dokumentacji

● Można także we własnych pakietach definiować własne wyjątki, pod warunkiem, że dziedziczą one z klasy Throwable

Page 98: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Jak powstaje wyjątek?

● Słowa kluczowe throw,throws ● Wyjątek trzeba najpierw zgłosić

public void funkcja() throws MyException { //........ if (WystapilBlad) throw new MyException;

// .........

● new MyException zwraca referencję do obiektu zawierającego dane o sytuacji wyjątkowej, np. kod błędu, treść komunikatu, itp.

Page 99: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Obsługa wyjątków

Metoda try-catch-finallytry {

// instrukcja generująca wyjątek}catch (NazwaKlasyWyjątku wyj)

{ // co zrobić z tym wyjątkiem}....finally

{//blok wykona się niezależnie od wystąpienia wyjątku}

Page 100: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kolejność obsługi wyjątków (1)

● Jeśli wyjątki są w różnych blokach kodu– o kolejności decyduje przebieg sterowania, np.

try { // instrukcje generujące wyjątki}catch (IOException io){System.err.println("blad IO");}try { // instrukcje generujące wyjątki}catch (SecurityException se){System.err.println("blad sec");

Page 101: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Kolejność obsługi wyjątków (2)

● Jeśli wyjątki występują w tym samym bloku– o kolejności decyduje hierarchia dziedziczenia:

“od najbardziej szczegółowego do najbardziej ogólnego”, czyli ''od dołu do góry”, poźniej

try {// ...... instrukcje generujące wyjatki } catch (java.io.ObjectStreamException) { } catch (java.io.IOException) { } catch (java.lang.Exception){ }........

Page 102: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

int otwórzPlik(ścieżka) {if ( plik.otwórz() == false)

{błąd otwarcia pliku}else if ( przydzielpamięć(plik.długość) ==false)

{brak pamięci}else if (zapiszdopliku(tekst) == false)

{błąd wyjścia}else if (zamknijplik() == false)

{ obsłuż ten błąd}else

return OK ;}

Porównanie if-else i try-catch

Page 103: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

readFile {try {otwórz plik;przydziel dla niego pamięć;wczytaj tekst do pliku ;zamknij plik;}

catch (fileOpenFailed) {zrób coś z tym;} catch (memoryAllocationFailed) {zrób coś z tym;} catch (writeFailed) {zrób coś z tym;} catch (fileCloseFailed) {zrób coś z tym;}}

Porównanie if-else i try-catch

Page 104: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Definiowanie własnego wyjątku

class MyException extends Exception {String msg;MyException() {msg = new String (“komunikat wyjatku”);}

}

•Większość możliwych wyjątków jest już zdefiniowana w pakietach•Własne wyjątki służą do zgłoszenia np.

•sytuacji wyjątkowej we własnej klasie•wyjątku odziedziczonego po istniejącym

Page 105: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Standardowe struktury danych

● Pakiety Javy zawierają b. dużą ilość gotowych do użycia w kodzie klas – struktur danych

● Np. pakiet java.util– klasy reprezentujące dynamiczne struktury danych– klasy obsługujące kalendarz, datę, walutę, słownik– klasy obsługujące struktury kontenerowe, itp.

● Apel: zanim zaczniesz tworzyć nową klasę – PRZEJRZYJ DOKUMENTACJĘ PAKIETÓW !!!– 9 przypadków na 10 jest już oprogramowanych

Page 106: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Klasy String i StringBuffer

● java.lang.String – reprezentuje łańcuchy tekstowe w miejsce tablicy char[ ] (lub C/C++: char*)– 11 konstruktorów, w tym kopiujące– compareTo(), compareToIgnoreCase(), concat(), equals(Object),

replace(), replaceAll, trim(), valueOf()● String jest klasą „final” – ponadto zapisanego

w niej tekstu nie można zmienić!● Do modyfikacji tekstu służy klasa java.lang.StringBuffer

– należy stworzyć jej obiekt zainicjowany Stringiem– przetworzyć tekst metodami klasy StringBuffer– rezultat zapisać od nowa w obiekcie String

Page 107: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Klasa Vector

● Klasa reprezentująca tablicę obiektów pochodzących od java.lang.Object

● java.lang.Object // sam Vector też pochodzi od Object...| +--java.util.AbstractCollection

| +--java.util.AbstractList | +--java.util.Vector

● Funkcje obsługujące dane:– add(Object), add(Collection), add(int index, Object)– set(), setElementAt(Object, int), setSize(int)– clear(), remove(Object), removeAll(), trimToSize(int)– clone(), toString(), toArray(), equals(Object)

Page 108: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Klasa java.util.Stack

● Klasyczny stos pozwala tylko na kładzenie elementów na górze i ich zdejmowanie z góry

● Rozszerzone implementacje stosu umożliwiają również podglądanie elementów lub ich sprawdzanie

● Klasa Stack jest rozszerzoną implementacją stosu● Dziedziczy od Vector● Funkcje:

– boolean empty();– pop(Object), push(Object), boolean search(Object), peek()

Page 109: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Klasa Arrays

● Jeśli nie chce się przekształcać własnych tablic w obiekty z biblioteki Java...

● ...można użyć funkcji z klasy Arrays; reprezentuje ona (w postaci funkcji statycznych) najczęstsze operacje na gotowych tablicach– sortowanie – 20 funkcji sort() – porównywanie elementów – 9 funkcji equals()– wyszukiwanie – 9 funkcji binarySearch()– wypełnianie – funkcje fill()

● Funkcje te przyjmują daną tablicę jako argument (inaczej niż zazwyczaj jest w Javie)

dokumentacja

Page 110: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Obiekt Date

● Do działania na datach – klasa Date – Java 1.1, później klasa Calendar

● Obiekt klasy Date reprezentuje dowolny moment czasowy z dokładnością do milisekund

● Na 64 bitach (long) zapamiętuje liczbę milisekud, które upłynęły od 1 stycznia 1970 roku, od godz. 0h 00m 00s 000ms (tzw. moment epoch)

● Daty wcześniejsze zapamiętuje się jako liczby ujemne

Page 111: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Format danych w Date

rok liczba c. = y – 1900miesiąc liczba z {0, .., 11}, gdzie 0 = styczeńdzień mies. liczba z {1, .., 31}dzień tyg. liczba z {0, ..., 6}, gdzie 0 = niedziela godzina liczba całk. z przedziału <0, 23>minuta liczba całk. z przedziału <0, 59>sekunda liczba całk. z przedziału <0, 61> !!! (sek. przestępne)

funkcje getYear(), getMonth(), getDate(), getDay(), getHour().....

Page 112: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Konstruktory i funkcje Date

● Date now = new Date();– alokuje obiekt „dokładnie ten moment”

● Date(y, m, d), Date(y, m, d, h, m), Date(y, m, d, h, m, s)● Date(long milisecs), Date(String)● Brak konstruktora kopiującego Date(Date) – dlaczego?● now.equals(whenelse), // tendencja do nazw naturalnych● now.before(LittleBitLater)● now.after(LittleBitEarlier)● setDate(), setMonths(), setYear().....

Page 113: Języki i paradygmaty programowania (JIPP)ics.p.lodz.pl/~aniewiadomski/jipp/jipp-slajdy.pdf · – Trójwarstwowa architektura aplikacji i jej realizacja w języku Java ... – SAP,

Inne struktury danych

● Calendar, Currency● Dictionary, GregorianCalendar● ........● ........