Programowanie komponentowe

advertisement
Programowanie komponentowe
wykład 0
Informatyka, IV sem.
studia dzienne
inżynierskie
FTIiMS, PŁ
Program przedmiotu
●
2-3 wykłady
–
OOP i inne techniki programowania (zarys)
●
●
7-8 wykładów
–
Trójwarstwowa architektura aplikacji
●
–
W. danych, w. logiki, w. Interfejsu użytkownika
Język Java (Aplikacje konsoli, GUI, aplety)
●
●
Generacje języków programowania
Programowanie obiektowe, zorientowane obiektowo,
programowanie komponentowe, klasa-obiekt-komponent
1-2 wykłady
–
Fazy życia oprogramowania,
projektowanie strukturalne (!)
http://ics.p.lodz.pl/~aniewiadomski
Cykl slajdów nie stanowi kompletnego opracowania,
a zwlaszcza nie jest skryptem zastępujacym wyklad.
Nalezy traktowac go wyłącznie jako zbiór notatek
ułatwiajacych sluchaczom udzial w zajeciach.
Można go przetwarzać pod warunkiem nienaruszania
praw autora, w szczególnosci (ale bez ograniczenia
do) rozpowszechniania całosci lub fragmentów
w jakiejkolwiek formie bez zgody autora.
Proszę również o niekorzystanie z laptopów
i podobnych urządzeń w trakcie wykładu.
Cykl inżynierii oprogramowania (1)
●
Podstawy programowania (sem. II)
–
●
Programowanie proceduralne – instrukcje
sterujące, implementacja podstawowych
algorytmów, tablice i dynamiczne struktury
danych, kompilacja, praca krokowa, debugging
Programowanie obiektowe (sem. III)
–
Projektowanie klas, obiektów i ich funkcji
składowych, dziedziczenie klas, polimorfizm
składowych, zależności pomiędzy klasami,
szablony klas i funkcji
Cykl inżynierii oprogramowania (2)
●
Programowanie komponentowe (sem. IV)
–
–
–
–
–
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)
Podstawy analizy i projektowania oprogramowania
Fazy życia oprogramowania (zarys)
Cykl inżynierii oprogramowania (3)
●
Inżynieria oprogramowania (V sem.)
–
●
Analiza i projektowanie obiektowe, język UML
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, itp.
Wymagania wstępne
●
Algorytmy i Struktury Danych
–
–
●
Tablice, sortowanie, wybór elementow wg kryteriów,
Struktury dynamiczne: listy, stosy, kolejki, drzewa
Podstawy Programowania
–
programowanie proceduralne, podstawowe
instrukcje sterujące
●
●
Warunki, pętle, skoki, funkcje,
Programowanie Obiektowe
–
programowanie obiektowe i zorientowane obiektowo
●
Szczegóły: następny slajd
Wymagania wstępne (2)
●
●
●
●
●
●
●
●
Zmienna, wskaźnik, referencja
Pola i funkcje statyczne klas
Tablice i agregaty jako złożone typy danych
Klasa i obiekt, pola-atrybuty obiektów
Funkcje składowe, czyli metody klas
Funkcje przeciążone (ang. overloaded)
Konstruktory domyślne, kopiujące, przeciążone
Konwersje, promocje przy funkcjach przeciąż.
Wymagania wstępne (3)
●
●
●
●
●
●
●
Operatory przeciążone jako funkcje składowe
i/lub zaprzyjaźnione
Agregacja obiektów, pola obiektowe
Zawieranie a posiadanie obiektów
Modyfikatory dostępu do pól i funkcji w klasie
Dziedziczenie klas, modyfikatory dziedziczenia
Dziedziczenie wielobazowe, bliższe i dalsze
Funkcje polimorficzne
Bibliografia (1)
Powtórzenie z C/C++

Grębosz J.: Symfonia C++. Kallimach, 1993
Programowanie ogólne, szablony

Grębosz J.: Pasja C++. Kallimach, .....
Programowanie ogólne, szablony

Stroustroup B.: Język C++....
Bibliografia (2)
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,
3 lub 4)
2001 (wyd.
Java – aplety
 Holzner


S.: Java 1.2 Szybkie wprowadzenie,
Wydawnictwo HELP, 1999, 48zł
http://java.sun.com
ics.p.lodz.pl/~aniewiadomski
–
Dział ,,Dydaktyka'', Programowanie Komp.
Programowanie komponentowe
wykład 1
Informatyka, IV sem.
studia dzienne
FTIiMS, PŁ
Architektura aplikacji
●
Model trójwarstwowy
–
–
–
Warstwa danych
Warstwa logiki aplikacji
Warstwa interfejsu użytkownika
●
●
Aplikacja <= System informatyczny
–
Aplikacja ,,nie zawiera'' sprzętu
●
●
Model-View-Controller – wzorzec projektowy, design
patern
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
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]);
Przykład ,,thin client”
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
Write
Modify
Delete
●
np. SELECT
np. INSERT
np. UPDATE
np. DELETE
W tym sensie ''bazy'' w Accessie nie są tylko zbiorami
danych, ale całymi aplikacjami
Arch. trójwarstwowa
warstwa 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)
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
Arch. trójwarstwowa –
warstwa interfejsu użytkownika
●
Zespół operacji odpowiedzialnych za kontakt
z użytkownikiem,
–
–
–
●
Interfejsy
–
–
–
●
Wizualizacja (wyświetlanie) rezultatów procesów
Pobieranie danych i kontrola ich poprawności
Przyjmowanie poleceń użytkownika
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
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
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>
Przykład ,,thin client”
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?
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 nazywamy tu aplikacjami
ze względu na występujące w nich elementy
interaktywne, np. formularze, przyciski, kontrolki itp.
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
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
Technologie wytwarzania aplikacji
klient-serwer (2)
●
Cienki klient
–
PHP
●
●
●
–
●
●
–
●
●
np. www.gazeta.pl
Interfejs = jw.
Logika = Java, serwer aplikacji Tomcat, Glassfish
Dane
= Postgress,
CGI
●
–
–
Interfejs = DHTML przeglądarka
Logika = PHP, serwer aplikacji Apache
Dane
= Serwer MySQL, SQLLite
JSP
●
np. Allegro
np. Wirtualna Polska
Interfejs = jw.
Logika = Perl ...
Dane
= ....
ASP, ASP.NET, .NET - www.microsoft.com
Ruby, RubyOnRails
Programowanie komponentowe
wykład 2
Informatyka, IV sem.
studia dzienne
FTIiMS, PŁ
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
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 (!)
Zależność aplikacji od sprzętu
●
Program zależny od platformy
Kompilator
LINUX
Źródło
C/C++
Kompilator
Windows
Kompilator
DOS
LINUX
Sys. Op
LINUX
*.EXE
Windows
Sys. Op
Windows
*.bash
*.exe
DOS
Sys. Op
DOS
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
Niezależność sprzętowa aplikacji
●
Program niezależny od sprzętu
Źródło
*.java
Kompilator
plik(i)
*.class
czyli
Bajt-kod
.............
Linux
Platforma
LINUX
JVM
Win2K
Platforma
Windows
JVM
DOS
JVM
*.class
*.class
*.class
Platforma
DOS
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
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_7_0_11-windows-i586.exe
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
●
●
Pakiet to zbiór klas, gdzie
–
–
●
http://java.sun.com/j2se/1.4.2/docs/api/
nazwa pakietu
nazwa klasy
= nazwa katalogu
= nazwa pliku
Pakiety na dysku są rozpakowane (katalogi
z plikami *.class) lub ''spakowane'' do
plików.jar (java archive)
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
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)
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
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
Download