Upload
phamcong
View
233
Download
0
Embed Size (px)
Citation preview
Program przedmiotu● 2-3 wykłady
– OOP i inne techniki programowania (zarys)● Generacje języków programowania
● 7-8 wykładów– Trójwarstwowa architektura aplikacji
● W. danych, w. logiki, w. Interfejsu użytkownika– Język Java (Aplikacje konsoli, GUI, aplety)
● 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, 1993Programowanie 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, 2001 (wyd. 3 lub 4)
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.
Architektura aplikacji ● Model trójwarstwowy
– Warstwa danych– Warstwa logiki aplikacji– Warstwa interfejsu użytkownika
● Model-View-Controller – wzorzec projektowy, design patern
● Aplikacja <= System informatyczny– 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
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]);
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
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)
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, – 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
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ł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. Allegro● Interfejs = DHTML przeglądarka● Logika = PHP, serwer aplikacji Apache● Dane = Serwer MySQL, SQLLite
– JSP np. www.gazeta.pl● Interfejs = jw.● Logika = Java, serwer aplikacji Tomcat, Glassfish● Dane = Postgress,
– CGI np. Wirtualna Polska● Interfejs = jw.● Logika = Perl ... ● Dane = ....
– ASP, ASP.NET, .NET - www.microsoft.com – Ruby, RubyOnRails
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
Źródło C/C++
Kompilator Windows
Kompilator LINUX
Kompilator DOS
*.EXE Windows
*.bashLINUX
*.exe DOS
Sys. OpLINUX
Sys. OpWindows
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
plik(i) *.class czyli Bajt-kod
JVM Win2K
JVM Linux
JVM DOS
Kompilator
PlatformaLINUX
PlatformaWindows
Platforma DOS
*.class
*.class
*.class
.............
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
● 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)
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