Programowanie komponentowe wykład 0

Podobne dokumenty
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Programowanie obiektowe. Wprowadzenie

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Java jako język programowania

Podstawy programowania wykład

Wykład 1: Wprowadzenie do technologii Java

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Wybrane działy Informatyki Stosowanej

WPROWADZENIE DO JĘZYKA JAVA

Podstawy programowania. Wprowadzenie

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Programowanie obiektowe

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Środowiska i platformy programistyczne

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Aplikacja internetowa vs Strona Internetowa. Aplikacja internetowa, (ang.) web application zwana również aplikacją webową, to program komputerowy,

Wybrane działy Informatyki Stosowanej

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

WPROWADZENIE DO JĘZYKA JAVA

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Języki i paradygmaty programowania

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Język Java i technologie Web - opis przedmiotu

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Multimedia JAVA. Historia

Wybrane działy Informatyki Stosowanej

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Spis treści. 1 Java T M

Język JAVA podstawy programowania

Języki i paradygmaty programowania - 1

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 9: Polimorfizm i klasy wirtualne

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

OpenLaszlo. OpenLaszlo

TECHNOLOGIE INFORMACYJNE

Studia podyplomowe. Programowanie na platformie Microsoft Visual Studio.NET

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

INŻYNIERIA OPROGRAMOWANIA

Programowanie w C. dr inż. Stanisław Wszelak

Bezpieczeństwo systemów komputerowych. Java i JavaScript. Java i JavaScript. Java - historia

Podstawy programowania

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Wybrane działy Informatyki Stosowanej

Ćwiczenie 1. Przygotowanie środowiska JAVA

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Programowanie obiektowe

Programowanie w Internecie. Java

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Programowanie obiektowe - 1.

PRZEWODNIK PO PRZEDMIOCIE

Wprowadzenie SYSTEMY SIECIOWE. Michał Simiński

Przegląd i ewaluacja narzędzi do szybkiego tworzenia interfejsu użytkownika (RAD).

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Technologie informacyjne - wykład 12 -

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Programowanie obiektowe

Imię, nazwisko i tytuł/stopień KOORDYNATORA (-ÓW) kursu/przedmiotu zatwierdzającego protokoły w systemie USOS Dr Adam Naumowicz

Aplikacje WWW Wprowadzenie

Programowanie komputerów

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.


Podstawy i języki programowania

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Języki programowania II - opis przedmiotu

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Wybrane działy Informatyki Stosowanej

Kierunek Informatyka stosowana Studia stacjonarne Studia pierwszego stopnia

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Java EE produkcja oprogramowania

Programowanie wieloplatformowe w Java

Aplikacje WWW i PHP - opis przedmiotu

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie I C6

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Programowanie Komponentowe WebAPI

PRZEWODNIK PO PRZEDMIOCIE

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

JAVA. Tomasz Grzywacz.

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Instrukcja laboratoryjna cz.3

Informatyka, I stopień. Programowanie (PRO300.2)

Transkrypt:

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) 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, 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, 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.

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 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]);

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 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ó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, 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ł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. 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

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 *.bash LINUX Sys. Op LINUX Źródło C/C++ Kompilator Windows *.EXE Windows Sys. Op Windows Kompilator DOS *.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... JVM JVM Linux Win2K Platforma LINUX Platforma Windows *.class *.class JVM DOS Platforma DOS *.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