Marcin Janic 1. Streszczenie
|
|
- Jacek Białek
- 7 lat temu
- Przeglądów:
Transkrypt
1 Rozszerzanie funkcjonalności aplikacji w trakcie działania programu poprzez dynamiczne ładowanie klas na przykładzie pluginów do wczytywania plików w języku Java Marcin Janic 1 1 Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok III poonury@gmail.com Streszczenie Celem niniejszej pracy jest omówienie hierarchii ładowania klas oraz prezentacja sposobu dynamicznego ładowania klas w języku programowania Java. Do realizacji tego zagadnienia należy utworzyć własną procedurę ładująca, która rozszerza klasę "ClassLoader" i zastąpi jej metodę "findclass". Utworzona w ten sposób procedura ładująca pozwoli na ładowanie nieznanych podczas tworzenia aplikacji rozszerzeń plików. 1 Wstęp Podczas tworzenia aplikacji twórca nie zawsze może przewidzieć dokładnego kierunku jej rozwoju. Bardzo często podczas działania zauważa się, że potrzebna jest całkiem nowa funkcjonalność, której analityk bądź programista nie przewidział w fazie projektowania. Tworząc aplikacje należy używać elastycznych rozwiązań co znacznie ułatwia późniejszą rozbudowę jej funkcjonalności. Jedną z metod tworzenia programów jest rozszerzanie ich funkcjonalności w trakcie działania programu poprzez dynamiczne ładowanie klas. Tak zaprojektowana aplikacja może wybrać, które klasy są jej w tym momencie niezbędne i je załadować. 2 Klasa w programowaniu obiektowym Klasa jako byt abstrakcyjny znajduje swoje zastosowanie w programowaniu obiektowym. Jest ona częściową bądź całkowitą definicją obiektu. Tworząc klasę tworzymy nowy typ danych, którego składnikami są inne typy danych nazywane polami klasy. Dodatkowo klasa posiada implementacje funkcji zwanych inaczej metodami, które operują na polach. Klasa[2] może być odwzorowaniem dowolnego rzeczywistego bądź abstrakcyjnego obiektu. Ułatwia to programiście spojrzenie na projekt obiektywnie co wcale nie jest łatwe przy założeniu, że powinien nadawać się do wielokrotnego użytku. Niektóre problemy z jakimi spotykają się programiści powtarzają się, a ich rozwiązanie jest uniwersalne, oraz sprawdzone w praktyce co pozwala na wykorzystanie pewnych wzorców projektowych. Temat wzorców projektowych został opisany przez Erich Gamma [3]. 1
2 3 Ładowanie klas Maszyna wirtualna, jest to ogólna nazwa środowiska, gdzie uruchamiane są programy. Kontroluje ona wszelkie bezpośrednie odwołania do sprzętu bądź systemu operacyjnego przez program przez co zapewnia ich obsługę. Wirtualna maszyna Javy powszechnie nazywana jest samodzielnym interpreterem. Istniały też komputery, które zdolne były uruchamiać kod bajtowy Javy bezpośrednio stąd można ją postrzegać jako emulator tych maszyn. Kod źródłowy programu napisanego w Javie zostaje przekształcony przez kompilator w kod maszyny wirtualnej. Kod ten umieszczany jest w plikach posiadających rozszerzenie.class, które zawierają kody definicji i implementacji klasy lub interfejsu. Następnie program tłumaczący kod maszyny wirtualnej na kod maszyny na, której wykonuje się program interpretuje pliki klas. Interpreter ładuje jedynie potrzebne pliki bez, których nie będzie w stanie wykonać programu. Standardowymi działaniami maszyny wirtualnej w przypadku uruchomienia klasy są: 1) Maszyna wirtualna posiada mechanizm ładowania plików z klasami, z dysku lub sieci Internet, który wykorzystuje do załadowania żądanej klasy. 2) Jeśli ładowana klasa posiada zmienne typów innych klas lub klasy bazowe to ładowane są także pliki tych klas. 3) Maszyna wirtualna wykonuje metodę main ładowanej klasy. Jest to metoda statyczna, więc nie jest tworzona instancja tejże klasy. 4) Jeśli wywołana metoda main lub jakakolwiek inna wywołana w czasie wykonywania programu wymaga niezaładowanego dotychczas pliku klasy to jest on ładowany. Więcej na temat ładowania klas można przeczytać[4], oraz w dokumentacji języka Java [5]. 4 Procedury ładujące Mechanizm ładowania klas wykorzystuje przynajmniej trzy procedury ładowania klas: początkowa, rozszerzeń, systemowa. Klasy systemowe ładowane są przez procedurę początkową. Zazwyczaj jest zaimplementowana w języku C, oraz stanowi integralną część maszyny wirtualnej. Standardowe rozszerzenia maszyny wirtualnej z katalogu jre/lib/ext ładowane są przez procedurę rozszerzeń. W podanym katalogu możemy, także umieścić swój własny plik.jar co pozwoli na ładowanie zawartych w nim klas bez konieczności podawania ścieżki dostępu. Pliki klas aplikacji ładowane są przez procedurę systemową. Procedura poszukuje plików w katalogach, plikach.jar, oraz.zip wykorzystując ścieżki dostępu do klas zapisane w zmiennej środowiskowej CLASSPATH lub fladze -classpath wpisanej w wierszu poleceń. 2
3 5 Hierarchia ładowania klas Procedury ładowania posiadają swoje hierarchie, każda z nich posiada swoją procedurę nadrzędną. Procedura początkowa, która jako jedyna nie posiada, jest wyjątkiem. Procedura podrzędna musi najpierw, umożliwić znalezienie i załadowanie pliku klasy swojej procedurze nadrzędnej, gdy ładowanie nie powiedzie się wtedy procedura podrzędna próbuje załadować go sama. Przykładem takiej zależności może być otrzymanie polecenia załadowania klasy systemowej przez procedurę systemową na przykład: import java.util.vector; import java.io.fileinputstream; import java.io.ioexception; Wtedy, najpierw polecenie przekazywane jest do rozszerzonej, a stamtąd z kolei do procedury początkowej. Ponieważ procedura początkowa odnajdzie i załaduje plik to żadna z pozostałych procedur nie będzie, już kontynuować procesu poszukiwania tejże klasy. Poniższy rysunek obrazuje hierarchie procedur ładujących. Rys. 1 - Hierarchia poszczególnych procedur ładujących Zazwyczaj programista zwolniony jest z zajmowania się procedurami ładującymi z powodu iż większość klas ładowana jest automatycznie przez inne klasy, które je używają. W niektórych wypadkach jednak korzystniej jest zaimplementować własną procedurę. 3
4 6 Procedury ładuj ące a przestrzenie nazw Język Java wykorzystuje pakiety w celu określania przestrzeni nazw, oraz zapobieganiu konfliktów nazw klas. Istnieje wiele klas o tej samej nazwie, lecz znajdują się w różnych pakietach co pozwala jednoznacznie określić ich tożsamość. Program wykonywalny posługuje się tylko i wyłącznie, pełnymi nazwami klas określonymi poprzez umieszczenie ich w pakietach. Nazwa krótka Date używana jest przez programistów dla ich wygody i wymaga polecenia import podanego na początku programu: import java.util.date; import java.sql.date; Zdarzają się również przypadki, gdzie dwie klasy posiadają identyczne nazwy, oraz pakiety. Maszyna wirtualna radzi sobie z takimi przypadkami, ponieważ oprócz pełnej nazwy klasa określana jest też przez procedurę ładującą. Jest to przydatne podczas ładowania kodu z różnych źródeł. Przykładem takiej sytuacji może być przeglądarka internetowa, która dla każdej ze strony internetowej używa osobnej instancji klasy, która ładuje aplet. Bez względu na to jak nazwano klasy, maszyna wirtualna jest w stanie rozróżnić klasy apletów na różnych stronach. Zakładając, że strona zawiera 2 aplety dostarczone przez 2 różnych programistów, a każdy z nich zawiera klasę o nazwie Main. Z powodu iż, każdy aplet ładowany jest przez osobną procedurę ładującą to obie, klasy Main są jednoznacznie rozróżniane i nie występuje jakikolwiek konflikt nazw. Zobrazować może to poniższy schemat. Rys. 2 - Ładowanie dwóch różnych klas o tej samej nazwie 4
5 7 Implementacja własnej procedury ładuj ącej Tworzenie własnych procedur ładujących nastawione jest na wyspecjalizowane zastosowania, które dotyczą podjęcia pewnych działań przed przekazaniem kodu maszynie wirtualnej. Jednym z przykładowych działań jest odmowa załadowania klasy (np. w przypadku barku wykupionej licencji), bądź załadowanie jakieś klasy alternatywnej o ograniczonych usługach. By stworzyć w pełni funkcjonalną procedurę ładującą musimy rozszerzyć klasę ClassLoader. class PluginLoader extends ClassLoader //... Następnie zastąpić jej metodę findclass(string protected Class<?> findclass(string name) throws ClassNotFoundException Przeciążona metoda findclass, musi załadować kod danej klasy wykorzystując system plików lub inne źródło umożliwiające pobranie kodu. // Utworzenie pustej tablicy bajtów byte [] classbytes = null; try // wywołanie metody ładującej kod klasy i nadpisanie tablicy classbytes = loadclassbytes(name); catch (IOException ex) System.err.println("PluginLoader " + ex); Metodę ładującą, można wykorzystać do odszyfrowywania kodu klasy. W ramach uproszczenia prezentowanego przykładu zignorowano dorobek ludzkości i zastosowano prosty szyfr Cezara[6]. Użyta wersja szyfru używa klucza z zakresu od 1 do 255. Szyfrowanie polega na dodaniu klucza do czytanego bajtu, a następnie wyznaczenia reszty z dzielenia uzyskanej sumy przez 256. private byte[] loadclassbytes(string name) throws IOException // zamiast.class można dać dowolne rozszerzenie pliku String cname = name.replace('/', '.') + ".class"; // stworzenie strumienia wejściowego i otwarcie go dla pliku name.class FileInputStream in = null; in = new FileInputStream( cname ); try ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int ch; // wczytywnie do końca pliku while((ch = in.read() )!= -1 ) 5
6 finally byte b = (byte) (ch - klucz); // zapisanie danych do bufora buffer.write(b); in.close(); // zwrocenie wczytanego pliku w postaci tablicy bajtów return buffer.tobytearray(); in.close(); // End loadclassbytes(string name) W końcowej fazie wczytywania funkcja, musi wywołać metodę defineclass klasy bazowej ClassLoader by przekazać kod klasy do maszyny wirtualnej. Jako argument podajemy nazwę klasy, która nie musi mieć wcale rozszerzenia.class. Można ustalić swoje własne rozszerzenie, aby nie wprowadzać w błąd zwykłych procedur ładowania. //przekazuje nową klasie maszynie wirtualnej, kod klasy //umieszczony jest w zakresie off=0 i len=classbytes.length Class<?> cl = defineclass(name, classbytes, 0, classbytes.length); if( cl == null ) throw new ClassNotFoundException(name); //zwrocenie klasy return cl; Do uruchomienia dowolnej metody z wczytanej klasy można zastosować przykładową metodę. public static void runplugin(string name) try // Utworznie nowej instancji klasy PluginLoader ClassLoader loader = new PluginLoader(); //Zdefiniowanie nowej klasy Class <?> c = loader.loadclass(name); // Pobranie metody o nazwie "main" i parametrach String[] Method m = c.getmethod("main", String[].class); // Utworzenie parametrow Object args = new String[] ; // Wywołanie metody i przypisanie zwracenej wartości do ret Object ret = m.invoke(c.newinstance(), args); System.out.println( "Funkcja zwrucila "+ ret); catch (Exception ex) System.err.print("RunPlugin " + ex); // End RunPlugin(String name) 6
7 8 Użycie pluginów do wczytywania plików Prezentowany program przeznaczony jest do wizualizacji obliczeń inżynierskich. Obliczenia wykonane są za pomocą metody elementów skończonych dla siatek dwuwymiarowych. Dane wejściowe, takie jak punkty współrzędnych węzłów siatki, powiązań między tymi węzłami, oraz wartości w węzłach dla poszczególnych kroków czasowych zapisane są w różnych formatach poczynając od.xml przez.obj, a kończąc na zwykłym.txt. Klasa, która jest odpowiedzialna za wczytanie danych wejściowych jest wybierana na podstawie rozszerzenia, a następnie dynamicznie ładowana do pamięci. Pozwala to na elastyczne dodawanie nowych formatów danych wejściowych bez konieczności rekompilowania głównego modułu. Poniższy diagram obrazuje funkcjonalność Wizualizatora dotyczącą wczytywania danych wejściowych. Rys. 3 Diagram funkcjonalności Wizualizatora Za pomocą tej aplikacji, można wygenerować obraz siatki(bez wyników obliczeń) lub rozkład wartości (np. temperatury) w postaci mapy (przejście kolorów), oraz w postaci wykresu konturowego (izolinii). Aplikacja umożliwia także przedstawienie wyników w formie animacji. 9 Podsumowanie Przedstawiony sposób implementowania własnych procedur ładujących jest narzędziem bardzo elastycznym, posiadającym swoje plusy jak i minusy. Bardzo szybko można rozbudować aplikację o nowe możliwości, bez konieczności rekompilowania głównego modułu, którego funkcjonalność była by rozszerzana. Czynności, które możemy podjąć przed wczytaniem klasy dają nam cały wachlarz możliwości od prostego wczytania klasy poprzez weryfikacje kodu bajtowego, aż po wczytywanie zaszyfrowanych klas bądź po prostu odmowy załadowania klasy. Mechanizm może być, wykorzystany do autoryzacji użytkowników i wczytywać jedynie klasy na, które użytkownik posiada licencje. Klasy mogą zostać zaszyfrowane i bez odpowiedniego klucza zawartego w procedurze ładującej wczytanie ich staje się niemożliwe, co czyni je bezużytecznymi. 7
8 Klasy mogą mieć różne wersje, co pozwala na wprowadzenie dodatkowej funkcjonalności o, które potencjalny klient mógłby się upomnieć. Programista nie jest w stanie przewidzieć kierunku rozwoju aplikacji przez co mechanizm ten staje się bardzo użyteczny w przypadku bardziej rozbudowanych projektów. 10 Bibliografia [1] Cay S. Horstmann, Gary Cornell, Java. Techniki zaawansowane. Wydanie VIII, [2] Herbert Schildt, Java. Kompendium programisty, 2005 [3] Erich Gamma, Richard Helm, Ralph Johnsin, John Vlissides, Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku, 2010 [4] - Dynamiczna Java i programowanie komponentowe (29 maja 2012) [5] - Dokumentacja języka Java (29 maja 2012) [6] Opis szyfrowania za pomocą metody Cezara (29 maja 2012) 8
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Java jako język programowania
Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)
Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Programowanie obiektowe
Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Multimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pierwsze kroki Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura Co znaczy
Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1
Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,
Wykład 7: Pakiety i Interfejsy
Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,
Programowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium
Pakiety i interfejsy. Tomasz Borzyszkowski
Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji
Języki i metody programowania Java. Wykład 2 (część 2)
Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego
Ćwiczenie 1. Przygotowanie środowiska JAVA
Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język
Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki
Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas
Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.
Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,
Aplikacje RMI Lab4
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych
KLASY, INTERFEJSY, ITP
KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby
Dziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.
Programowanie obiektowe
Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Enkapsulacja, dziedziczenie, polimorfizm
17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja
Programowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Ćwiczenie 1. Kolejki IBM Message Queue (MQ)
Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając
Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.
Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze
Programowanie Obiektowe Ćwiczenie 4
Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Java - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 1 - wprowadzenie do przedmiotu mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 16 października 2017 1 / 25 mgr inż. Krzysztof Szwarc Podstawy i
WPROWADZENIE DO JĘZYKA JAVA
WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny
Polimorfizm, metody wirtualne i klasy abstrakcyjne
Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,
Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
PHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)
Analiza i projektowanie obiektowe 2016/2017 Wykład 11: Zaawansowane wzorce projektowe (1) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce projektowe
D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44
Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne
Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie
Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.
1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów
Zaawansowane aplikacje WWW - laboratorium
Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w
Wywoływanie metod zdalnych
Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia
Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu
Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja
Wykład Ćwiczenia Laboratorium Projekt Seminarium
WYDZIAŁ ELEKTRONIKI KARTA PRZEDMIOTU Nazwa w języku polskim Języki programowania Nazwa w języku angielskim Programming languages Kierunek studiów (jeśli dotyczy): Informatyka - INF Specjalność (jeśli dotyczy):
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Oprogramowanie systemów równoległych i rozproszonych Wykład 7
Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie
Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne
Wykład 8: Obsługa Wyjątków
Wykład 8: Obsługa Wyjątków Wyjątki Wyjątek to sytuacja nienormalna, która pojawia się w trakcie wykonania programu. W językach bez obsługi wyjątków, błędy są wykrywane i obsługiwane ręcznie, zwykle przez
Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
Zaawansowane aplikacje internetowe
Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne
Podstawy i języki programowania
Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof
Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13
Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods
Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.
Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.
Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8
Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick
Podejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object
Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów
Metody Metody, parametry, zwracanie wartości
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca
Języki i metody programowania Java INF302W Wykład 3 (część 1)
Języki i metody programowania Java INF302W Wykład 3 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 1 STRUKTURA WYKŁADU 1. Wyjątki,
Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com
Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,
Metody dostępu do danych
Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java
Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment
Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne
Programowanie w Javie nazwa SYLABUS A. Informacje ogólne Elementy składowe sylabusu Nazwa jednostki prowadzącej kierunek Nazwa kierunku studiów Poziom kształcenia Profil studiów Forma studiów Kod Język
Remote Method Invocation 17 listopada 2010
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bezpieczne uruchamianie apletów wg
Bezpieczne uruchamianie apletów wg http://java.sun.com/docs/books/tutorial/security1.2/ Zabezpieczenia przed uruchamianiem apletów na pisanych przez nieznanych autorów 1) ograniczenie możliwości odczytywania,
Zaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
akademia androida Składowanie danych część VI
akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.
UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Aplikacje internetowe i rozproszone - laboratorium
Aplikacje internetowe i rozproszone - laboratorium Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z technologią EJB w wersji 3.0, a w szczególności: implementacja komponentów sesyjnych,
Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan
Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2
Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Narzędzia i środowiska programistyczne Laboratorium 1 Wprowadzenie Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 O Sobie Od 2014
Java. Programowanie Obiektowe Mateusz Cicheński
Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja
Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA
Java w 21 dni / Rogers Cadenhead. Gliwice, cop. 2016 Spis treści O autorze 11 Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA Dzień 1. Rozpoczynamy przygodę z Javą 21 Język Java 21 Programowanie obiektowe 24 Obiekty
Podejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia
Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7
Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl
Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z