JAVA. Przegląd metod

Wielkość: px
Rozpocząć pokaz od strony:

Download "JAVA. Przegląd metod"

Transkrypt

1 Optymalizacja JAVA Przegląd metod

2 Istota problemu Programiści pozostawiają optymalizację swoich programów na koniec pracy mając często nadzieję na uniknięcie jej w ogóle. A przecież decyzje podejmowane we wczesnym etapie projektowania mają duży wpływ na wydajność programu. W związku z tym problemy wydajności powinny być brane pod uwagę już w momencie projektowania. Kolejne slajdy ukazują, w jaki sposób decyzje podjęte we wczesnym etapie projektowania mogą mieć znaczący wpływ na wydajność aplikacji.

3 Zasady projektowania Programy dobrze zbudowane Interfejsy klas Tworzenie obiektów klasy String Wykorzystanie RMI

4 Interfejsy klas unikanie nadmiernego tworzenia obiektów (problem pętli) Zmienne typu String są niezmienne (immutable) oznacza to, że jakakolwiek modyfikacja łańcucha prowadzi do utworzenia w pamięci nowego obiektu klasy String. Żeby zmodyfikować lub stworzyć nowy napis konieczne jest utworzenie nowego obiektu.

5 Obiekty tymczasowe Rozważmy następującą możliwą implementację metody getbounds(): public class Component { protected Rectangle mybounds; public Rectangle getbounds() { return mybounds; } } Rectangle r = component.getbounds(); r.height *= 2; Ze względu na dopuszczalne modyfikacje obiektu klasy Rectangle, referencja do obiektu związanego z położeniem komponentu może zostać zmodyfikowana bez wiedzy obiektu klasy Component.

6 Obiekty tymczasowe (2) public Rectangle getbounds() { return new Rectangle(myBounds.x, mybounds.y, mybounds.height, mybounds.width); } Każde odwołanie do getbounds() tworzy nowy obiekt

7 Rozwiązanie public int getx() {return mybounds.x; } public int gety() {return mybounds.y; } public int getheight() {return mybounds.height; } public int getwidth() {return mybounds.width; } Dodatkowe metody zwracające atomowe wartości zapewniają bardziej efektywny sposób uzyskania tych samych informacji. W wyniku tych modyfikacji pakietu Swing wiele operacji wykonuje się nawet dwa razy szybciej, co ma dość duże znaczenie.

8 Rozwiązanie (2) public Rectangle getbounds(rectangle returnval) { returnval.x = mybounds.x; returnval.y = mybounds.y; returnval.height = mybounds.height; returnval.width = mybounds.width; return returnval; } Metoda wywołująca getbounds() musi utworzyć obiekt typu Rectangle, ale można go potem wykorzystać ponownie do innych podobnych wywołań. Jeżeli chcemy uzyskać dostęp do informacji o każdym z kolekcji komponentów to możemy utworzyć pojedynczy obiekt klasy Rectangle i użyć go dla uzyskania informacji o każdym z komponentów.

9 Zdalne wywoływanie metod Kiedy uzyskujemy referencję do obiektu zdalnego poprzez serwer nazw, nie otrzymujemy właściwej referencji do tego obiektu, tylko referencję do obiektu tymczasowego (stub object), który implementuje ten sam interfejs, co obiekt zdalny. Kiedy wywołujemy metodę obiektu tymczasowego, parametry metody są łączone (marshall), następnie konwertowane na strumień bajtów (proces podobny do serializacji). Obiekt tymczasowy wysyła złączone parametry poprzez sieć do obiektu szkieletowego (skeleton object), który je rozdziela a następnie wywołuje właściwą zdalną metodę, którą chcieliśmy wywołać. Wyniki działania są przekazywane z powrotem do obiektu szkieletowego, który łączy wyniki, wysyła do obiektu tymczasowego, ten je rozdziela i zwraca wartość do obiektu wywołującego.

10 Porównanie zdalnego i lokalnego wywoływania metod Zdalne tworzenie obiektów jest dużo bardziej kosztowne niż lokalne, ponieważ oprócz niego tworzone są obiekty tymczasowy i szkieletowy. Ze zdalnym wywoływaniem metod wiąże się także duża ilość danych przesyłanych przez sieć. Opóźnienia związane z łączeniem, rozdzielaniem parametrów, opóźnienia powodowane przez sieć i koszty wywołania metod sumują się klient musi zaczekać dopóki wszystkie te kroki nie zostaną wykonane. Koszty zdalnego wywoływania zależą od szybkości wykorzystywanej sieci. Różne typy danych wiążą się z różnymi kosztami łączenia: wykorzystywanie typów podstawowych nie jest bardzo kosztowne. Natomiast korzystanie z obiektów odwołujących się do wielu obiektów (np. kolekcji) jest bardzo kosztowne.

11 Interfejs zdalnych obiektów Należy zwracać uwagę na niepotrzebną wymianę informacji pomiędzy zdalnymi systemami. Jeżeli program wywołujący potrzebuje otrzymać kilka wartości czy obiektów trzeba, jeśli to możliwe, dokonać tego w jednym zdalnym wywołaniu. Jeżeli program wywołujący nie potrzebuje przechowywać referencji do zdalnego obiektu metoda nie powinna jej zwracać. Analogicznie, jeżeli zdalna metoda nie potrzebuje kopii obiektu to, szczególnie w przypadku złożonych obiektów, nie należy ich używać jako parametrów metod.

12 Analiza miar Program obiektowy Narzędzia analizujące kod Generowanie metryk obiektowych Modyfikowanie projektu

13 JStyle Umożliwia między innymi analizę: poprawności nazewnictwa klas i interfejsów, oraz ich uporządkowania, stylu kodowania umożliwiającego ponowne wykorzystanie kodu, niepoprawnych sposobów obsługi wyjątków, nieefektywnego projektu programu, metryk zorientowanych obiektowo z uwzględnieniem specyfiki języka Java.

14 Miary projektu Number of Packages, Modules, Interfaces, Classes Reuse Ratio (Liczba nadklas) / (Całkowita liczba klas) Specialization Ratio (Liczba podklas) / (Liczba nadklas) Average Inheritance Depth (Suma głębokości wszystkich klas) / (Całkowita liczba klas)

15 Miary modułu Total Number of Lines Number of Comment Lines Number of Blank Lines Comment Density Number of Classes and Interfaces

16 Miary klas Fan-in (Liczba klas zależnych od danej klasy) Fan-out (Liczba klas używanych przez daną klasę) Response for Class (Miara podaje liczbę metod, wewnętrznych i zewnętrznych dostępnych w klasie) Miara spójności strukturalnej klasy (LCOM) liczba rozłącznych zbiorów metod, gdzie każde dwie metody w tym samym zbiorze korzystają z przynajmniej jednej lokalnej zmiennej instancyjnej. Miara o wartości 1 reprezentuje spójną klasę, podczas gdy całkowicie niespójna klasa miałaby wartość równą całkowitej liczbie metod w klasie.

17 Miary metod Number of Statements Number of Exceptions Thrown Cyclomatic Number (liczba linowo niezależnych ścieżek programu) Halstead Measures (Długość programu, Słownik programu, Objętość kodu, Poziom programu, Skala trudności programu, Przewidziane błędy)

18 Optymalizacja kodu źródłowego Poprawianie wydajności

19 Inicjalizacja klas i obiektów klas public class cls_init1 { static class Dane { private int dzien; private String nazwa; Data(int i, String s) { dzien = i; nazwa = s; } } Dane tydzien [] = { new Dane(1, "Poniedziałek"), new Dane(2, "Wtorek"), new Dane(3, "Środa"), new Dane(4, "Czwartek"), new Dane(5, "Piątek"), new Dane(6, "Sobota"), new Dane(7, "Niedziela") };

20 Inicjalizacja klas i obiektów klas (2) public class cls_init2 { static class Dane { private int dzien; private String nazwa; Dane(int i, String s) { dzien = i; nazwa = s; } } static Dane tydzien [] = { new Dane(1, "Poniedziałek"), new Dane(2, "Wtorek"), new Dane(3, "Środa"), new Dane(4, "Czwartek"), new Dane(5, "Piątek"), new Dane(6, "Sobota"), new Dane(7, "Niedziela") }; public static void main(string args[]) { final int N = ; cls_init2 x; Stoper t = new Stoper(); for (int i = 1; i <= N; i++) x = new cls_init2(); t.podaj_czas("dane zadeklarowane jako statyczne"); } }

21 Wstawianie metod public class meth_inline { public static int min(int a, int b) { return (a < b? a : b); } public static void main(string args[]) { final int N = ; int a = 5; int b = 17; int c; Stoper t = new Stoper(); for (int i = 1; i <= N; i++) c = (a < b? a : b); t.podaj_czas("wstawiony kod metody"); } }

22 Synchronizacja metod public class meth_sync { public void meth1() {} public synchronized void meth2() {} public static void main(string args[]) { final int N = ; meth_sync x = new meth_sync(); // metoda nie zsynchronizowana Stoper t = new Stoper(); for (int i = 1; i <= N; i++) x.meth1(); t.podaj_czas("metoda nie zsynchronizowana"); // metoda zsynchronizowana t.wyzeruj(); for (int i = 1; i <= N; i++) x.meth2(); t.podaj_czas("metoda zsynchronizowana"); } }

23 Porównanie czasów wywołań metod Jeśli metoda nie wykorzystuje zmiennych instancyjnych należy zadeklarować ją jako statyczną. Jeśli metoda nie musi być przykryta przez klasy, które ją dziedziczą należy zadeklarować ją jako finalną. Jeśli metoda nie będzie wywoływana spoza swojej klasy należy zadeklarować ją jako prywatną.

24 Zmienne Zmienne typu int oraz zmienne referencyjne to zmienne o najszybszym dostępie. Wartości typu int, boolean, byte, short oraz char przechowywane w zmiennych zajmują zawsze 32 bity i wykorzystują ten sam kod bitowy do odczytania i zapisania wartości. W tablicach natomiast zmienne typu boolean i byte przechowywane są jako 8-bitowe wartości, zmienne typu short i char jako 16-bitowe wartości, zmienne int i float jako 32-bitowe, natomiast long i double jako wartości 64-bitowe.

25 Zmienne typu String String str = testowy ; str = str + abc ; Zmienna str początkowo odnosi się do łańcucha testowy ale po wykonaniu drugiej instrukcji wskazuje już na nowy łańcuch składający się z połączenia str i abc. Wykorzystanie metody append() do tworzenia łańcuchów jest dużo bardziej wydajne niż zastosowanie operatora +.

26 Porównywanie stringów String s1 = abc ; String s2 = def ; To wynik porównania: s1 == s2 if (s1 == s2 s1.equals(s2))...

27 Uzyskiwanie długości zmiennych typu String // wywołanie metody length() int licznik = 0; Stoper t = new Stoper(); for (int i = 0; i < s.length(); i++) { if (s.charat(i) == 'x') licznik++; } t.podaj_czas("wywołanie metody length()"); // wyliczona długość łańcucha licznik = 0; t.wyzeruj(); for (int i = 0, dlugosc = s.length(); i < dlugosc; i++) { if (s.charat(i) == 'x') licznik++; } t.podaj_czas("wyliczona długość łańcucha");

28 Buforowanie // odczytywanie pojedynczych znaków FileInputStream fis = new FileInputStream(args[0]); int licznik = 0; int c; Stoper t = new Stoper(); while ((c = fis.read())!= -1) if (c == 'x') licznik++; t.podaj_czas("odczytywanie pojedynczych znaków"); fis.close(); // odczyt z buforowaniem fis = new FileInputStream(args[0]); byte buf[] = new byte[1024]; licznik = 0; int n; t.wyzeruj(); while ((n = fis.read(buf)) > 0) for (int i=0; i < n; i++) if (buf[i] == 'x') licznik++; t.podaj_czas("odczyt z buforowaniem"); fis.close();

29 Klasa ArrayList kontra klasa LinkedList W przypadku LinkedList czas wstawiania jest znacząco krótszy. Wynika to z tego, że wstawienie elementu na początek struktury ArrayList wymaga przesunięcia wszystkich elementów o jedno miejsce dalej, natomiast w przypadku LinkedList dodanie elementu jako pierwszego polega tylko na ustawieniu odpowiednich połączeń (referencji, wskaźników). ArrayList ma dużą przewagę jeżeli chcemy często odczytywać elementy losowo, struktura LinkedList, w przypadku losowego dostępu do jej elementów wymusza dużą ilość iteracji w celu odnalezienia właściwego.

30 Optymalizacja B-kodu. Kompilatory Just-In-Time. Optymalizacja adaptacyjna rozwiązuje problemy kompilatorów JIT wykorzystując fakt, że większość czasu wykonania programu dotyczy bardzo niewielkiego fragmentu kodu. Zamiast kompilować metoda po metodzie, kompilator Java HotSpot uruchamia program za pomocą interpretera i analizuje kod wyszukując tzw. gorące punkty (hot spots) krytyczne miejsca w kodzie programu, które zajmują bardzo dużo czasu wykonania. Dopiero wtedy kompiluje wyszukane fragmenty kodu.

31 Optymalizacja kodu wykonywalnego Profiler jest narzędziem wręcz niezbędnym do przeprowadzenia procesu optymalizacji. Pozwala na uzyskanie informacji o miejscach w programie, które powodują obniżenie wydajności, wykorzystują najwięcej czasu procesora, metodach, które są wywoływane najczęściej oraz o zużyciu pamięci. Pakiet JDK zawiera taki profiler, jest on dostępny po użyciu następującej opcji: C:\>java -Xrunhprof:[:help] [<option>=<value>,...] Przykład: java -Xrunhprof:cpu=samples,file=log.txt,depth=3 FooClass

32 Jprobe, OptimizeIt Runtime Heap Summary Instance Summary Garbage Monitor Heap Usage Chart Checkpoints (Request Garbage Collection, Current Values, Clear Current) Timing methods (Elapsed Time, CPU Time) Method Object Count, Number of Calls Heap Metrics

33 Przykład public class HuffmanCodec public HuffmanCodec(String filename) public int loadfile(string filename) public int code(string outfilename) public int decode(string outfilename) abstract class HuffmanTools static int power(int n1, int n2) static String addzeros(string bin) static int bin2dec(string bin) static String dec2hex(int dec) static String dec2bin(int dec) static void sortlist(arraylist listofelems, int[] chararray) static Node createtree(arraylist listofelems) static void searchtree(object root, String temp, String[] resultarray) static int findstring(string s, String[] a) static int codetofile(fileinputstream in, FileOutputStream out, String[] alphabet) abstract class HElem public int getvalue() public void setvalue(int newvalue) class Elem extends Helem public Elem(int newchr, int newvalue) public void setchr(int newchr) public int getchr() class Node extends Helem public Node(int newvalue)

34 Przykład (2) Number of Interfaces 0 1 Number of Static Methods 10 5 Cyclomatic Number 12 6 Program Effort

35 Przykład (3) Modyfikacja struktury klas Huffman v Classic JVM Huffman v czas w ykonania (ms)

36 Przykład (4) Użycie opcji kompilatora -O Huffman v Classic JVM Huffman v czas w ykonania (ms)

37 Przykład (5) Kompilator JIT Classic JVM Huffman v2.0 JVM HotSpot czas w ykonania (ms)

38 Przykład (6)

39 Przykład (7) Struktura danych HashMap 700 JVM HotSpot tablice czas w ykonania (ms)

40 Przykład (8) Metody klas Javy tobinarystring() 5500 JVM HotSpot dec2bin() czas w ykonania (ms)

41 Przykład (9) Operacje wejścia/wyjścia BufferedStream 1900 JVM HotSpot FileStream czas w ykonania (ms)

42 Przykład (10) Przetwarzanie łańcuchów char[] i SB 8600 JVM HotSpot String czas w ykonania (ms)

43 Przykład (11) Obliczanie długości łańcucha length() 7500 JVM HotSpot int czas w ykonania (ms)

44 Przykład (12) Procentowy wzrost wydajności po zastosowaniu modyfikacji Modyfikacja struktury klas z wykorzystaniem miar oprogramowania 20,49% Użycie opcji kompilatora -O 4,94% Użycie kompilatora Just-In-Time 81,25% Wykorzystanie struktury HashMap 90,27% Użycie metody tobinarystring() 9,83% Użycie klasy BufferedStream zamiast FileStream 65,45% Użycie StringBuffer i char[] do przetwarzania łańcuchów 5,49% Eliminacja wywołań metody length() w pętli 2,66% Inicjalizacja wielkości struktury HashMap 1,06% 0,00% 20,00% 40,00% 60,00% 80,00% 100,00% procent

45 Podsumowanie Bardzo ważne jest utworzenie poprawnego projektu, dobrze zbudowanego programu. Konieczna jest znajomość miar obiektowych. Następnym krokiem jest wykorzystanie odpowiedniego kompilatora. Projekt HotSpot firmy Sun ma ogromne znaczenie dla dalszego rozwoju języka Java.

46 Podsumowanie (2) Wykorzystanie profilera do wykrycia gorących punktów w programie pozwala analizować tylko te miejsca w programie, które naprawdę tego wymagają. Jeżeli zastosujemy odpowiednie, wydajniejsze mechanizmy i struktury języka Java to wynikiem może być tylko bardzo efektywny, poprawnie napisany program w języku Java. Bardzo ważny wniosek dotyczy kolejności kroków optymalizacji. Optymalizacja kodu źródłowego jest opłacalna tylko po wcześniejszym wykorzystaniu profilera. Modyfikacje kodu, nawet bardzo wydajne, wykonane w nieodpowiednich miejscach, nie przyniosą spodziewanych korzyści.

47 EJB Komponenty Enterprise JavaBeans 2.0 Interfejsy EJB encji i sesji Klienci odlegli i lokalni EJB sesji i encji EJB wiadomości Obsługa wyjątków Transakcje Zabezpieczenia

48 J2EE Architektura J2EE Struktura warstw......komponenty......kontenery.... Role w procesie tworzenia aplikacji J2EE Interfejsy programowania aplikacji (API) Transakcje, zabezpieczenia, usługi nazewnicze

49 Technologia JavaServlet Kontener servletów Zarządzanie pamięcią przez servlet Cykl życia servleta Wydajność i bezpieczeństwo servletów Zastosowania servletów (Servlet generujący fragmenty kodu HTML, Servlet generujący kod XML, Servlet generujący dane binarne, Servlet przetwarzający dane, Servlet współpracujący z apletem, Servlet jako proxy pomiędzy apletami, Łańcuch servletów, Servlet przekierowujący żądania, Servlet w mechanizmie autoryzacji klienta, Aplikacje WWW w technologii JavaServlet) Kierunki rozwoju technologii JavaServlet

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

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

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

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

Bardziej szczegółowo

Programowanie obiektowe

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ąć

Bardziej szczegółowo

Języki i metody programowania Java. Wykład 2 (część 2)

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

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

Dziedziczenie. dr Jarosław Skaruz Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,

Bardziej szczegółowo

Multimedia JAVA. Historia

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Podstawy otwartych języków programowania Przechowywanie danych

Podstawy otwartych języków programowania Przechowywanie danych Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

Tworzenie aplikacji w języku Java Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009

Bardziej szczegółowo

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

Bardziej szczegółowo

Dokumentacja do API Javy.

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

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

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

Bardziej szczegółowo

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Wprowadzenie do języka Java

Wprowadzenie do języka Java WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Definicje klas i obiektów. Tomasz Borzyszkowski

Definicje klas i obiektów. Tomasz Borzyszkowski Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy

Bardziej szczegółowo

Wywoływanie metod zdalnych

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

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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,

Bardziej szczegółowo

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

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

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

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,

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

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

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)

Bardziej szczegółowo

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

Bardziej szczegółowo

Spis treści. 1 Java T M

Spis treści. 1 Java T M Spis treści 1 Java T M 1 2 Co to jest Platforma Java T M 1 3 Przygotowanie komputera 2 4 Pierwszy program 2 5 Dokumentacja 3 6 Budowa aplikacji. Klasy. 3 7 Pola i metody 4 8 Konstruktory 5 9 Inne proste

Bardziej szczegółowo

Model pamięci. Rafał Skinderowicz

Model pamięci. Rafał Skinderowicz Model pamięci Rafał Skinderowicz Czym jest model pamięci Model pamięci dotyczy programów współbieżnych W programie współbieżnym może się zdarzyć, że dany wątek nie będzie widział od razu wartości zmiennej

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

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,

Bardziej szczegółowo

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

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

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

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.

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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,

Bardziej szczegółowo

Programowanie obiektowe. Wprowadzenie

Programowanie obiektowe. Wprowadzenie 1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Programy w Javie składają się z pakietów Pakiety zawierają definicje

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

Bardziej szczegółowo

Podstawowe części projektu w Javie

Podstawowe części projektu w Javie Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Wykład 6: Dziedziczenie

Wykład 6: Dziedziczenie Wykład 6: Dziedziczenie Dziedziczenie Jeden z filarów obiektowości. Budowa jednej klasy na bazie drugiej, przez dodawanie/przesłanianie jej składowych: nad-klasa klasa bazowa pod-klasa klasa pochodna od

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne import javax.swing.*; import java.util.*; public class Napis4 { String wynik = ""; static int ile_obiektow

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

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

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

Języki i techniki programowania Ćwiczenia 2 Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 6 Program wykładu Pojęcie interfejsu i implementacji Hermetyzacja Pakiety w Javie Składowe statyczne Kompozycja - korzystanie z gotowych

Bardziej szczegółowo

Programowanie obiektowe

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.

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

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

Bardziej szczegółowo

Java jako język programowania

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)

Bardziej szczegółowo

1 Atrybuty i metody klasowe

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

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

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

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

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

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Aplikacje internetowe i rozproszone - laboratorium

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,

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo

Enterprise JavaBeans (EJB)

Enterprise JavaBeans (EJB) Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z sesyjnymi komponentami Enterprise JavaBeans. Zilustrowane będą różnice między komponentami stanowymi i bezstanowymi. Pokazane będzie

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:

Bardziej szczegółowo

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid Tomasz Kuczyński Dział Aplikacji Tomasz Nowak Zespół Bezpieczeństwa Wrocław, 2.12.2010 r. Konferencja i3: internet

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Programowanie w języku Java 7 z biblioteką SWING

Programowanie w języku Java 7 z biblioteką SWING Programowanie w języku Java 7 z biblioteką SWING Opis Szkolenie przeznaczone jest dla osób bez większego doświadczenia w programowaniu. Pokrywa ono większość składni języka Java, skupiając się na podstawowych

Bardziej szczegółowo

Programowanie, algorytmy i struktury danych

Programowanie, algorytmy i struktury danych 1/44 Programowanie, algorytmy i struktury danych materiały do wykładu: http://cez.wipb.pl/moodle/ email: m.tabedzki@pb.edu.pl strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki Wymagania

Bardziej szczegółowo

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

Bardziej szczegółowo

WPROWADZENIE DO JĘZYKA JAVA

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

Bardziej szczegółowo

Remote Method Invocation 17 listopada 2010

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

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 2 - wprowadzenie do zmiennych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 23 października 2017 1 / 26 mgr inż. Krzysztof Szwarc Podstawy i

Bardziej szczegółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

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

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

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

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

Wykład 5: Więcej o Klasach i Metodach

Wykład 5: Więcej o Klasach i Metodach Wykład 5: Więcej o Klasach i Metodach Przeciążanie Metod Klasa posiada dwie lub więcej metod o tej samej nazwie ale różnych deklaracjach parametrów. Java używa liczby i typów argumentów by ustalić którą

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

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

Bardziej szczegółowo