Programowanie obiektowe III rok EiT 2017-03-28 08:53:20 Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład I
Co jeszcze mógłby wymyślić Einstein gdyby znał Aplety Javy 2017-03-28 08:53:20 Co jeszcze mógłby wymyślić Einstein gdyby znał Aplety Javy VIII Dolnośląski Festiwal Nauki 16-23 IX 2005
Java Java to zorientowany obiektowo język programowania Sun Microsystems. Java zwiększa interaktywność stron WWW. Użytkownicy mogą oddziaływać na zawartość stron WWW za pomocą myszki, klawiatury oraz przycisków i pól tekstowych. Java potrafi wzbogacić multimedialną zawartość stron WWW oferując płynne animacje, grafikę, dźwięk i wideo Wszystkie te udogodnienia są możliwe dzięki krótkim programom, które nazywane są apletami. Aplety są zawarte w stronach WWW. Aplety są ładowane poprzez sieć do komputera użytkownika i tam wykonywane.
Historia 1990 - Bill Joy sugeruje SUNowi stworzenie środowiska obiektowego na bazie C++, 1991 - W ramach projektu „Stealth” („Green”) powstaje język OAK - „Object Application Kernel” (James Gosling), 1995 - zmiana nazwy na JAVA ze względu na zastrzeżenie nazwy OAK, 1996 - Pojawia się Netscape zgodny z Javą 1.0, Sun propaguje darmowe środowisko JDK 1.0, 1999 - Java 2 Nowe oblicze Javy.
Albert Einstein Tegoroczna, VIII edycja DFN na Politechnice Wrocławskiej odbywa się w Międzynarodowym Roku Fizyki – nauki określanej często mianem królowej nauk technicznych. Sto lat temu Albert Einstein opublikował w Annalen der Physik pięć prac, które zmieniły oblicze fizyki. Dotyczyły one szczególnej teorii względności, zjawiska fotoelektrycznego, ruchów Browna, rozmiarów liniowych cząsteczek. W tym roku przypada dziewięćdziesiąta rocznica powstania ogólnej teorii względności oraz pięćdziesiąta rocznica śmierci Alberta Einsteina. Albert Einstein 14.03.1879 18.05.1955
Generacje języków programowania W ciągu ponad 50 lat rozwoju języków programowania powstały ich cztery generacje. Dla programów napisanych w językach pierwszej generacji (FORTRAN 1, COBOL) charakterystyczny jest wspólny obszar danych globalnych, do którego odwołują się podprogramy. W językach pierwszej generacji podczas tworzenia oprogramowania możliwe było oddzielenie od siebie różnych danych, ale było to oddzielenie logiczne, a nie programowe. Cała struktura danych była widoczna dla wszystkich podprogramów, dlatego błąd w jednym z nich mógł mieć katastrofalny wpływ na cały program. Przy modyfikacji dużego systemu zasadniczą trudnością było utrzymanie spójności oprogramowania, które cechowało się wieloma powiązaniami pomiędzy podprogramami i skomplikowanym przekazywaniem sterowania.
Języki drugiej generacji Podstawami rozwoju drugiej generacji języków byłą taka modyfikacja podprogramów, by mogły one przekazywać między sobą parametry, być zagnieżdżane i mieć zróżnicowany zakres widoczności deklaracji stałych i zmiennych. Dzięki mechanizmowi przekazywania parametrów podprogramy stały się procedurami. Wymienione własności języków drugiej generacji spowodowały powstanie strukturalnych metod projektowania oprogramowania.
Języki trzeciej generacji Charakterystyczną cechą języków trzeciej generacji była modułowość. Moduł grupował dane i podprogramy mające ze sobą związek logiczny. Wyodrębnienie modułów w procesie dekompozycji funkcjonalnej pozwalało na rozdzielenie pracy pomiędzy samodzielnych programistów. Technologia ta umożliwiła utworzenie większych zespołów projektowych i powstanie bardziej złożonego oprogramowania.
Języki czwartej generacji 4GL Języki czwartej generacji, zwane językami obiektowymi (np. C++), zmieniają podejście do zagadnienia struktur danych. Języki obiektowe rozszerzają pojęcie struktury danych o nowy element zwany obiektem (dokładniej typem obiektowym). Typ obiektowy zawiera zarówno dane, jak i algorytmy posługujące się tymi danymi. Algorytmy te są często zapisywane w postaci funkcji i procedur, które łącznie określane są jako metody obiektu (funkcje składowe). Obiekt, jako pojedynczy element programu, może być przypisywany i stosowany jak każdy inny typ danych. W językach obiektowych moduły zawierają kolekcje obiektów, a nie podprogramów jak to miało miejsce w językach starszych generacji. Struktura programów napisanych przy wykorzystaniu języków obiektowych jest podobna do grafu. Fakt ten zmienia w sposób zasadniczy reguły analizy i projektowania oprogramowania.
Programowanie obiektowe Programowanie obiektowe jest metodą tworzenia oprogramowania, w której programy są organizowane jako kolekcje obiektów. C++, Java są językami programowania obiektowego.
Podejście obiektowe Object Oriented Approach - OOA Podejście obiektowe modeluje sposób w jaki ludzie rozumieją i przetwarzają rzeczywistość. Przy pomocy tego podejścia ludzie tworzą coś dla ludzi. Zasadnicza część podstaw teoretycznych podejścia obiektowego składa się z idei dotyczących podstaw ludzkiego myślenia. Korzeni podejścia obiektowego należy szukać w psychologii i w naukach do niej pokrewnych. Modelowanie sposobu w jaki ludzie rozumieją i przetwarzają rzeczywistość wymaga zrozumienia: czym są przyswajane przez ludzi pojęcia dlaczego są istotne jak ich używamy i jak je przekazujemy.
Dokumentowanie pojęć Jeżeli posiedliśmy jakieś pojęcie, to oznacza, że możemy się im posługiwać . Formalizacja dowolnego pojęcia wymaga utworzenia testu do jego identyfikacji. Intensja - pełna definicja pojęcia i testu, czy pojęcie odnosi się do badanego obiektu czy nie. Ekstensja - zbiór wszystkich obiektów do których stosuje się dane pojęcie. Trójka pojęciowa: symboliczna reprezentacja + intensja + ekstensja.
Wytłumaczenie pojęcia Trójka pojęciowa Symbol pojęcia Intensja Definicja Pomysł Wytłumaczenie pojęcia Ekstensja Zbiór egzemplarzy Obiekt jest to egzemplarz pojęcia. Instrument muzyczny jest to dowolne urządzenie zdolne do wydawania melodyjnych i harmonijnych dźwięków. Fortepian jest instrumentem muzycznym.
Zastosowania podejścia obiektowego Zarządzanie projektami Metoda Martina PRINCE LFA Prezentacja zamierzeń – składanie wniosków Relacyjne bazy danych OMG, UML Projektowanie oprogramowania Praca zespołowa CASE Computer Aided Software Engineering
Kontakt dr inż. Jerzy Kotowski Janiszewskiego 11/17, 219 C-3 (+48 71) 320 3852 jerzy.kotowski@pwr.wroc.pl
Literatura James Martin, James J. Odell Podstawy metod obiektowych WNT 1997 Jerzy Grębosz Symfonia C++ Oficyna Kallimach 1999 Wydawnictwo Edition 2000 Jerzy Grębosz Pasja C++ Wydawnictwo Edition 2000
Program wykładu Źródła podejścia obiektowego Podstawy metody PRINCE (PRojects In Controlled Environment) Podstawy metody LFA (Logical Framework Approach, składanie wniosków o grant) Język C++ (gadżety języka, polimorfizm, klasy, dziedziczenie) bez Pasji C++ (pojemniki, wyjątki, szablony, przestrzenie nazw, etc.) Przykład problemu (być może symulacja sieci wodociągowej) Podstawy języka JAVA Klasówka