Programowane dynamiczne
|
|
- Mirosław Grabowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 1 Programowane dynamiczne 1. Ładowanie klas 2. Specyfikacja pliku class analiza przykładu: Hello world! narzędzie ASM 3. Programowanie aspektowe AspectJ
2 Klasa abstrakcyjna ClassLoader Do pobrania klasy JVM wykorzystuje instancję klasy java.lang.classloader. Każda klasa zawiera referencję do do ładującego ją obiektu. Programista może sterować procesem ładowania klas: ClassLoader loader = new NetworkClassLoader(host, port); Object main = loader.loadclass("main", true).newinstance();... Przykładowa klasa: class NetworkClassLoader extends ClassLoader { String host; int port; public Class findclass(string name) { byte[] b = loadclassdata(name); return defineclass(name, b, 0, b.length); } } private byte[] loadclassdata(string name) { // load the class data from the connection } 2
3 3 public class Main { Plik class } /** args */ public static void main(string[] args){ System.out.println("Hello world!"); } Nagłówek klasy: CA FE BA BE identyfikator formatu pliku class E numer wersji JVM: (46.0) zgodność z Java 1.2 Ogólnie JVM 1.k (k>1) obsługuje klasy od 45.0 do 44+k.0 włącznie ilość deklarowanych elementów (Constant Pool). Po tej deklaracji następują kolejne, 33 elementy.
4 4 Plik class - Constant Pool D E string kodowany w UTF-8 o długości 4: Main pierwszy z elementów to nazwa klasy java/lang/object trzeci element to nazwa klasy <init> ()V Code 8. 0C piąty element to nazwa metody lub atrybutu, szósty to typ (sygnatura): brak argumentów: (), zwracany typ void: V 9. 0A klasa (czwarty element) zawiera metodę (ósmy element) F LineNumberTable LocalVariableTable
5 Plik class - Constant Pool this LMain; main ([Ljava/lang/String;)V java/lang/system szesnasty element to nazwa klasy out Ljava/io/PrintStream; 20. 0C ty element to nazwa metody/atrybutu, 19-ty to jego typ ta klasa zawiera 20-ty atrybut C Hello world! gi element to stała tekstowa java/io/printstream ty element to nazwa klasy 5
6 6 Plik class - Constant Pool println (Ljava/lang/String;)V 28. 0C 00 1A 00 1B 26-ty element to nazwa metody/atrybutu, 27-ty to jej sygnatura 29. 0A C 25-ta klasa zawiera 28-tą metodę args [Ljava/lang/String; A SourceFile Main.java
7 7 Plik class modyfikatory dostępu dla klasy: ACC_PUBLIC (00 01) ACC_SUPER (00 20) ze względu na kompatybilność ze starszymi JVM numer elementu określającego klasę definiowaną w tym pliku numer elementu określającego nadklasę klasy definiowanej w tym pliku liczba interfejsów liczba atrybutów liczba metod
8 8 Plik class metoda <init> ACC_PUBLIC metoda publiczna indeks elementu zawierającego nazwę metody: <init> indeks elementu z sygnaturą metody:()v liczba dodatkowych atrybutów metody indeks elementu z nazwą atrybutu: Code F długość atrybutu rozmiar stosu rozmiar tablicy zmiennych lokalnych długość kodu 2A B B długość tablicy wyjątków liczba dodatkowych atrybutów
9 Plik class metoda <init> 00 0A LineNumberTable długość atrybutu długość tabeli numerów linii indeks instrukcji w tabeli Code odpowiadający jej numer linii w pliku źródłowym 00 0B LocalVariableTable C długość atrybutu długość tabeli zmiennych lokalnych początek zmiennej lokalnej w tablicy zmiennych długość zmiennej 00 0C indeks zmiennej: this 00 0D typ zmiennej: LMain indeks w lokalnej tablicy zmiennych 9
10 10 Plik class metoda <init> Kod metody <init>: 2A B B1 2A: ALOAD_0 // zmienna lokalna o adresie 0 jest wstawiana na stos B : INVOKESPECIAL java/lang/object.<init>()v; // wywołuje metodę void Object.<init>(); B1: RETURN // zwraca typ void
11 Plik class metoda main ACC_PUBLIC (00 01) ACC_STATIC (00 08) publiczna metoda statyczna 00 0E indeks elementu zawierającego nazwę metody: main 00 0F indeks elementu z sygnaturą metody:([ljava/lang/string;)v liczba dodatkowych atrybutów metody indeks elementu z nazwą atrybutu: Code długość atrybutu rozmiar stosu rozmiar tablicy zmiennych lokalnych długość kodu B B6 00 1D B długość tablicy wyjątków liczba dodatkowych atrybutów 11
12 Plik class metoda main 00 0A LineNumberTable A długość atrybutu długość tabeli numerów linii indeks instrukcji w tabeli Code 00 0C odpowiadający jej numer linii w pliku źródłowym D to samo dla kolejnej linii 00 0B LocalVariableTable C długość atrybutu długość tabeli zmiennych lokalnych początek zmiennej lokalnej w tablicy zmiennych długość zmiennej 00 1E indeks zmiennej: Hello world! 00 1F typ zmiennej: stała tekstowa indeks w lokalnej tablicy zmiennych 12
13 13 Plik class metoda main Kod metody main: B B6 00 1D B1 B : GETSTATIC java/lang/system.out : Ljava/io/PrintStream; // inicjalizacja klasy/obiektu System.out i odłożenie // go na stos 12 17: LDC Hello world! // załadowanie na stos stałej tekstowej B6 00 1D: INVOKEVIRTUAL java/io/printstream.println(ljava/lang/string;)v // wywołuje metodę System.out.println(String) B1: RETURN // zwraca typ void
14 14 Plik class liczba atrybutów SourceFile długość atrybutu Main.java KONIEC!!!
15 // class version 46.0 (46) // access flags 33 public class Main { // compiled from: Main.java Plik class zapis assemblerowy // access flags 1 public <init>()v L0 (0) LINENUMBER 6 L0 ALOAD 0 INVOKESPECIAL java/lang/object.<init>()v RETURN L1 (4) LOCALVARIABLE this LMain; L0 L1 0 MAXSTACK = 1 MAXLOCALS = 1 } // access flags 9 public static main([ljava/lang/string;)v L0 (0) LINENUMBER 12 L0 GETSTATIC java/lang/system.out : Ljava/io/PrintStream; LDC "Hello world!" INVOKEVIRTUAL java/io/printstream.println(ljava/lang/string;)v L1 (4) LINENUMBER 13 L1 RETURN L2 (6) LOCALVARIABLE args [Ljava/lang/String; L0 L2 0 MAXSTACK = 2 MAXLOCALS = 1 15
16 16 ASM ASM ( jest narzędziem służącym do operacji na plikach binarnych Javy. Może być używany do dynamicznego generowania klas lub interfejsów bezpośrednio w formie binarnej lub modyfikacji istniejących klas w trakcie ich ładowania przez Wirtualną Maszynę Javy. Inne narzędzia tego typu: BCEL: SERP: Javassist:
17 17 ASM Przykład program generujący klasę z dzisiejszego wykładu (Hello world!): import org.objectweb.asm.classwriter; import org.objectweb.asm.methodvisitor; import org.objectweb.asm.opcodes; import org.objectweb.asm.type; import org.objectweb.asm.commons.generatoradapter; import org.objectweb.asm.commons.method; import java.io.fileoutputstream; import java.io.printstream; public class Helloworld extends ClassLoader implements Opcodes { public static void main(final String args[]) throws Exception { ClassWriter cw = new ClassWriter(false); cw.visit(v1_1, ACC_PUBLIC, "Example", null, "java/lang/object", null);
18 18 ASM // metoda init MethodVisitor mw = cw.visitmethod(acc_public, "<init>", "()V", null, null); mw.visitvarinsn(aload, 0); mw.visitmethodinsn(invokespecial, "java/lang/object", "<init>", ()V"); mw.visitinsn(return); mw.visitmaxs(1, 1); // glebokość stosu i liczba zmiennych lokalnych mw.visitend(); // metoda main mw = cw.visitmethod(acc_public + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null); mw.visitfieldinsn(getstatic, "java/lang/system", "out", "Ljava/io/PrintStream;"); mw.visitldcinsn("hello world!"); mw.visitmethodinsn(invokevirtual, "java/io/printstream", "println", "(Ljava/lang/String;)V"); mw.visitinsn(return);
19 19 ASM mw.visitmaxs(2, 2); mw.visitend(); byte[] code = cw.tobytearray(); // pobieramy kod klasy FileOutputStream fos = new FileOutputStream("Example.class"); fos.write(code); fos.close(); Helloworld loader = new Helloworld(); Class exampleclass = loader.defineclass("example",code,0,code.length); exampleclass.getmethods()[0].invoke(null, new Object[] { null });
20 20 ASM // inny sposob uzyskania tego samego efektu cw = new ClassWriter(true); cw.visit(v1_1, ACC_PUBLIC, "Example", null, "java/lang/object", null); Method m = Method.getMethod("void <init> ()"); GeneratorAdapter mg = new GeneratorAdapter(ACC_PUBLIC, m, null, null, cw); mg.loadthis(); mg.invokeconstructor(type.gettype(object.class), m); mg.returnvalue(); mg.endmethod(); m = Method.getMethod("void main (String[])"); mg = new GeneratorAdapter(ACC_PUBLIC + ACC_STATIC, m, null, null, cw); mg.getstatic(type.gettype(system.class), "out", Type.getType(PrintStream.class));
21 21 ASM mg.push("hello world!"); mg.invokevirtual(type.gettype(printstream.class), Method.getMethod("void println (String)")); mg.returnvalue(); mg.endmethod(); cw.visitend(); code = cw.tobytearray(); loader = new Helloworld(); exampleclass = loader.defineclass("example", code, 0, code.length); exampleclass.getmethods()[0].invoke(null, new Object[] { null }); } }
22 Programowanie aspektowe Każde realizowane zagadnienie pociąga za sobą w praktyce potrzebę realizacji zagadnień pobocznych. Najczęściej spotykane zagadnienia są związane z logowaniem, bezpieczeństwem, spójnością transakcyjną, autoryzacją, synchronizacją wielowątkową itd. Jest to zjawisko normalne, wynikające ze złożoności wymagań klienta. Zagadnienia te są w dużym stopniu rozłączne pomiędzy sobą pod względem funkcjonalnym. Aby je zrealizować programista musi poprzeplatać ich implementacje (tzw. warkocz), co czyni kod mniej czytelnym, bardziej podatnym na błędy, trudniejszym w modyfikacji. Programowanie aspektowe (Aspect Oriented Programming) zapobiega tym negatywnym skutkom oddzielając fizycznie kod każdego zagadnienia poprzez umieszczenie go w oddzielnych aspektach wraz z określniem punktów interakcji pomiędzy nim a kodem programu. Źródło: 22
23 23 AspectJ AspectJ to aspektowy język programowania opracowany w Xerox Palo Alto Research Center. Kluczowe cechy języka: AspectJ jest rozszerzeniem języka Java. Kompilator (ajc) tworzy kod źródłowy w Javie kompilowany dalej do postaci binarnej (pliki class). aspekty implementowane przez AspectJ są obiektami obsługuje wszystkie techniki programowania aspektowego, w tym: punkty złączenia, punkty przekroju, rady, mechanizmy zarządzające cyklem życia aspektu Obecnie AspectJ jest rozwijany w ramach projektu Eclipse: Istnieją również narzędzia developerskie (AJDT).
24 24 Model punktów złączenia Każdy język programowania określa zbiór potencjalnych punktów złączenia model punktów złączenia. Przykładowe potencjalne punkty złączenia w Javie to: wywołanie metody, wykonanie metody, wejście do statycznego bloku kodu, wywołanie konstruktora. Punkty złączenia są miejscami w które można wstawić tzw. logikę przekrojową. Po wstawieniu dodatkowej logiki (kodu programu) w punkt złączenia staje się on punktem przekroju
25 Punkty przekroju Deklaracja punktów złączenia: public pointcut myclasstaskcalled() : call(public void MyClass.task()); Punkt złączenia dla wszystkich metod task() niezależnie od klasy: public pointcut anyclasstaskcalled() : call(* *.task(..)); Przekazanie wartości do punktu złączenia: public pointcut anyclasstaskcalled(int value) : call(* *.task(..)) && args(number); Typy punktów złączenia: call (Signature) wywołanie metody execution (Signature) wykonanie metody handler(typepattern) przechwytywanie wyjątków 25
26 Rady Rada (advice) określa kod wykonywany w momencie zarejestrowania punktu złączenia. Od zwykłej metody różni ją dodatkowe słowo kluczowe określające miejsce wykonania kodu względem punktu złączenia: before() przed punktem złączenia, around() zamiast punktu złączenia, chyba że metoda proceed() mówi inaczej after() po punkcie złączenia niezależnie od wyniku jego działania after() returning po punkcie zgłoszenia jeśli nie było zgłoszenia wyjątku after() throwing po punkcie zgłoszenia jeśli został zgłoszony wyjątek. Przykład: before(int value) : anyclasstaskcalled(value){ } System.out.println("Wartosc" + value);... 26
27 Aspekty Aspekt przypomina zwykłą klasę Javy. Instancja aspektu jest pełnoprawnym obiektem Javy i składnia jego obsługi jest analogiczna jak zwykłych obiektów. Domyślnie pojedyncza instancja aspektu jest tworzona przez aplikację w momencie uruchomienia i istnieje aż do jej zakończenia (singleton). Istnieje jednak możliwość wybrania innego cyklu życia dla aspektu: issingleton() singleton (domyślne) perthis(pointcut) nowa instancja dla każdego obiektu do którego odnosi się referencja this w punkcie złączenia pertarget(pointcut) nowa instancja dla każdego obiektu, który jest celem działania punktu złączenia percflow(pointcut) nowa instancja dla każdego wątku inicjowanego w ramach punktu złączenia 27
28 28 Aspekty Kompletny przykład aspektu: public aspect MyAspect issingleton(){ public pointcut myclasstaskcalled() : call(public void MyClass.foo()); public pointcut anyclassbarcalled(int number) : call(* *.bar(..)) && args(number); before() : myclasstaskcalled(){ } System.out.println("rada before() w MyAspect"); before(int value) : anyclassbarcalled(value) { System.out.println("rada before() w MyAspect"); System.out.println("Parametr " + value); } }
29 Przekroje statyczne AspectJ może działać na statycznej strukturze aplikacji. Umożliwia to m. in.: dodawanie nowych składowych do klasy dodawanie nowych metod deklarowanie nowych interfejsów deklarowanie nowych zależności dziedziczenia Przykład: public aspect AddRunnable { declare parents : MyClass implements Runnable; public void MyClass.run(){ System.out.println("Implementacja metody Runnable.run()"); } } 29
30 30 Podsumowanie Możliwość zmiany kodu klasy Javy w trakcie wykonywania programu wprowadza wiele nowych możliwości przy tworzeniu oprogramowania. Zmiany takie można wprowadzać bezpośrednio do kodu ładowanego przez ClassLoader'a lub poprzez różne dostępne narzędzia (np. ASM). Wiele popularnych bibliotek korzysta z tej techniki aby efektywnie realizować zadania (np. Hibernate). Na koncepcji dynamicznej podmiany kodu opiera się jeden z paradygmatów tworzenia oprogramowania programowanie aspektowe.
PROGRAMOWANIE DYNAMICZNE
PROGRAMOWANIE DYNAMICZNE ZAGADNIENIA: Plik.class ASM MATERIAŁY: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4 http://asm.ow2.org/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/
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. 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
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
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 - 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
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
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
Programowane refleksyjne i serializacja
1 Programowane refleksyjne i serializacja 1. Programowanie refleksyjne: przegląd wybranych klas z pakietu java.lang i java.lang.reflect, dynamiczne obiekty proxy. 2. Serializacja interfejs Serializable,
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
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/
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
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,
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
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
Metody Realizacji Języków Programowania
Metody Realizacji Języków Programowania Maszyny wirtualne: JVM, LLVM Marcin Benke MIM UW 20 grudnia 2010 Marcin Benke (MIM UW) Metody Realizacji Języków Programowania 20 grudnia 2010 1 / 35 Maszyna wirtualna
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,
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
Ć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.
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
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
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,
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 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
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
Programowanie aspektowe na przykładzie AspectJ JUG Poznań, Jacek Pospychała
Programowanie aspektowe na przykładzie AspectJ Plan prezentacji Co to programowanie aspektowe i AspectJ Szybki start z AspectJ (przykład) Uruchamianie aplikacji z aspektami Jak to działa Możliwości wplatania
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
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,
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
Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ
Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu
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,
Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.
Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)
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
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
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
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
Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
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
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
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
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
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
Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
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
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Klasy abstrakcyjne, interfejsy i polimorfizm
Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z
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
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.
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
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
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
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,
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
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
Projektowanie aplikacji internetowych laboratorium
Projektowanie aplikacji internetowych laboratorium Programowanie w języku Java Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 7 (zrzuty ekranów pochodzą z wersji
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
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
Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.
Java podstawy jęyka Wykład 2 Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne. Wyjątki: obsługa błędów Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 12.03.2015
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
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
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
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
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
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
WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java
WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH Mirosław Gołda, Programista Java Agenda Kilka słów o języku Groovy Wpięcie Grooviego w projekt Springowy Testy jednostkowe
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
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
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
Tomasz Dobek. t.dobek@students.mimuw.edu.pl
Spring Framework Tomasz Dobek t.dobek@students.mimuw.edu.pl Plan prezentacji Spring z lotu ptaka Kontener Spring IoC Spring AOP Menedżer transakcji w Springu Spring DAO Testy integracyjne Podsumowanie
Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
Programowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
Ada-95. Dariusz Wawrzyniak
Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki
Kurs programowania. Wykład 8. Wojciech Macyna
Wykład 8 Program bez watków, jeden procesor, trzy zadania Program z watkami, jeden procesor, trzy zadania Procesory wielordzeniowe, każde zadanie na osobnym procesorze Trzy zadania uruchomione w watkach
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
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Definiowanie własnych klas
Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:
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
Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017
Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.
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
Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
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
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
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie
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
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1
P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw
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)
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
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
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Programowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);
1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4); a) b) c) d) 2. Jaki będzie wynik kompilacji i wykonania
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Programowanie obiektowe
Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo
Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Refleksja Typy anonimowe Wyrażenia lambda Extension methods *LINQ Java jest językiem dynamicznym
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja