Java 5.0. Nowości w języku
|
|
- Adrian Czajkowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Java 5.0 Nowości w języku
2 Wstęp Nowa wersja Javy, oznaczona 5.0 (1.5 wg. wewnętrznej numeracji Sun) wyszła 29 września 2004 roku. Określana jako najbardziej innowacyjna edycja Javy od czasu wyjścia języka.
3 O czym będę mówił Ograniczam temat do nowości w języku, bez omawiania nowości w Wirtualnej Maszynie Javy, bibliotekach itd.. Duży nacisk na typy generyczne oraz na machanizm metadanych (annotations)
4 Historia 4 grudnia 1998 r. J2SE 1.2 Playground 8 maja 2000 r. J2SE 1.3 Kestler 12 luty 2002 r. J2SE 1.4 Merlin 29 września 2004 r. J2SE 5.0 (1.5) Tiger
5 Zmiany w języku Typy generyczne Typy wyliczeniowe Nowa pętla for Mechanizm zmiennej liczby argumentów Autoboxing/Unboxing Statyczny import Mechanizm metadanych
6 Nowa pętla For Nowa, ładniejsza metoda przechodzenia po kolekcjach. Do tej pory przejście wyglądało mniej więcej tak: void cancelall(collection<timertask> c) { for (Iterator<TimerTask> i = c.iterator(); i.hasnext(); ) i.next().cancel(); }
7 Nowa pętla For Z użyciem nowej pętli: void cancelall(collection<timertask> c) { for (TimerTask t : c) t.cancel(); }
8 Nowy For kiedy stosować Zalecana zawsze, kiedy tylko można. Nie da się zastosować jeżeli we wnętrzu pętli potrzebujemy dostęp do iteratora, np. do filtrowania kolekcji.
9 Typy generyczne wstęp Nowy mechanizm, znany już z innych języków. Największe zastosowanie: różnego rodzaju kontenery obiektów, np. kolekcje. Powody wprowadzenia: Umożliwia tworzenie klas nieograniczanych typami danych Wymuszenie zgodności typów Zwiększenie przejrzystości kodu
10 Typy generyczne Lista w starej wersji List myintlist = new LinkedList(); myintlist.add(new Integer(0)); Integer x = (Integer) myintlist.iterator().next(); Lista z typami generycznymi List<Integer> myintlist = new LinkedList<Integer>(); myintlist.add(new Integer(0)); Integer x = myintlist.iterator().next();
11 Typy generyczne tylko mniej pisania? Sprawdzanie zgodności typów w momencie kompilacji, nie działania programu. Wymusza utrzymanie zależności pomiędzy obiektami Pokazuje zamiar programisty
12 Typy generyczne Definiowanie samemu klasy działającej na typach generycznych public interface List<E> { void add(e x); Iterator<E> iterator(); } Mechanizm inny niż ten z C++! Nie tworzy osobnej klasy przy każdym ukonkretnieniu. Nie umożliwia metaprogramowania.
13 Typy generyczne - dziedziczenie Problem czy jeżeli B jest podklasa A, a C klasa generyczna, to C<B> jest podklasa C<A>. Przykład: czy List<Integer> jest też List<Object>? List<String> ls = new ArrayList<String>(); List<Object> lo = ls; lo.add(new Object()); String s = ls.get(0);
14 Typy generyczne - wildcards Poprzednia własność komplikuje operowanie na kolekcjach nieznanego typu, np. przejść i wypisać wszystkie elementy kolekcji. void printcollection(collection<object> c) { for (Object e : c) { System.out.println(e); }}
15 Typy generyczne - wildcards Aby jednak umożliwić działanie na nieznanych kolekcjach wprowadzono mechanizm wildcards: <?> = nieznane. void printcollection(collection<?> c) { for (Object e : c) { System.out.println(e); }} To już działa
16 Typy generyczne - wildcards Nie wszystko jest dozwolone przy stosowaniu wildcards: Collection<?> c = new ArrayList<String>; c.add(new Object());
17 Typy generyczne wildcards Można wprowadzać ograniczenia na klasy, do jakich <?> będzie pasować. Przykład: klasa Ksztalt z podklasami Kolo i Kwadrat void drawall(collection<? extends Ksztalt> c) {... }
18 Metody generyczne Sytuacje, kiedy nie można użyć wildcards metoda na nieznanych kolekcjach, ale musząca je modyfikować. Przykład: static <T> void fromarraytocollection(t[] a, Collection<T> c) { for (T o : a) { c.add(o); }} Warto wiedzieć: Nie trzeba podawać ukonkretniania przy korzystaniu z takiej metody jest to zadanie kompilatora żeby znaleźć najbardziej dokładne ukonkretnienie.
19 Typy generyczne kiedy znikają? Mechanizm typów generycznych jest stosowany w momencie kompilacji. Kompilator dokonuje sprawdzania zgodnosci typów
20 Kompilacja typu generycznego Kompilator zna informacja o typie dla klasy Jest to też zachowane dla Reflection Niewykorzystywane w działającym programie Usuwane z sygnatur metod Informacja o typie nie jest zachowywana w instancjach klasy Parametryzacja jest znana tylko dla kompilatora W momencie działania programu List foo jest tym samym co List<bar> foo.
21 Autoboxing/Unboxing Przerzucono z programisty na kompilator zadanie opakowywania wartości typów pierwotnych przy operacjach na kolekcjach. Kiedyś: ArrayList<Integer> list = new ArrayList<Integer>(); list.add(0, new Integer(42)); int total = (list.get(0)).intvalue(); Teraz: ArrayList<Integer> list = new ArrayList<Integer>(); list.add(0, 42); int total = list.get(0);
22 Typ wyliczeniowy Rozwiązania stosowane do tej pory: Ręczne wyliczenie na wartościach całkowitych: public static final int SEASON_WINTER = 0; public static final int SEASON_FALL = 1; Typesafe enum: public final class Enum { public static final Enum TRUE = new Enum (); public static final Enum FALSE = new Enum (); private Enum () {} }
23 Typ wyliczeniowy wady poprzednich rozwiązań Ręczne wyliczanie wartości: Brak ochrony typu Brak przestrzeni nazw Wypisane wartości są bezużyteczne Typesafe Enum Nie można użyć przy switch Źle znoszą serializację
24 Typ wyliczeniowy Nowy mechanizm wyliczeniowy: enum Season { WINTER, SPRING, SUMMER, FALL }; Każdy typ wyliczeniowy posiada metodę values() zwracającą tablicę wartości.
25 Typ wyliczeniowy Typ Enum jest normalną klasą można dodawać dodatkowe dane, dodawać specyficzne zachowanie, implementować interfejsy itd. Interfejsy Serializable i Comparable są od razu implementowane. public enum Planet { EARTH (5.976e+24, e6), MARS (6.421e+23, e6), } private final double mass; // in kilograms private final double radius; // in meters Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } public double mass() { return mass; } public double radius() { return radius; } // universal gravitational constant (m3 kg-1 s-2) public static final double G = E-11; public double surfacegravity() { return G * mass / (radius * radius); } public double surfaceweight(double omass) { return omass * surfacegravity(); }
26 Varargs Mechanizm znany już z rodziny C. Do tej pory do zmiennej liczby argumentów potrzebna była tablica. Z nowym mechanizmem: public static String format(string pattern, Object... arguments); oznacza możliwość wystąpienia w tym miejscu sekwencji lub tablicy argumentów.
27 Static import Do tej pory sięganie do klasowych pól i metod wymuszało wpisanie nazwę klasy. double r = Math.cos(Math.PI * theta); Korzystając z mechanizmu static import można pominąć takie prefiksowanie: import static java.lang.math.*; double r = cos(pi * theta);
28 Metadane Metadane były już obecne w poprzednich wersjach Javy np. javadoc. Duże wzmocnienie i uelastycznienie tego mechanizmu. Dodano nowe znaczniki Umożliwienie użytkownikowi definiowanie własnych znaczników
29 Metadane po co wprowadzono? Bardziej deklaratywne programowanie Automatyczne tworzenie standardowego kodu wymaganego przez niektóre API (np. JAX-RPC) Możliwość automatycznego tworzenia wielu zgodnych ze sobą plików na podstawie tylko jednego pliku.
30 Annotacje Przykłady public class TimeTravel {... Yoyodyne Propulsion Systems") public class OscillationOverthruster {... id = , synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelthroughtime(date destination) {... }
31 Definiowanie annotacji Jak zdefiniować własną annotację: Każda metoda definiuje jedno pole Metody nie mogą przyjmować argumentów Możliwe zwracane typy: Typy pierwotne String Class annotacja Typy wyliczeniowe Tablice powyższych RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]"; }
32 Metadane Annotacje można podawać wszędzie tam, gdzie inne modyfikatory (np. public, private). W dobrym tonie jest podawać je jako pierwsze. Znaczniki można podawać bez nawiasów Annotacje z jednym polem nazwanym value: można w nawiasach podać tylko wartość pola Annotacje z wieloma polami wymienia się je w postaci nazwa = public class TimeTravel {... AP Company") public class OscillationOverthruster {... id = , synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelthroughtime(date destination) {... }
33 Metadane W standardzie J5SE jest od razu zdefiniowane 7 annotacji. java.lang Override Deprecated supresswarnings java.lang.annotations meta-annotacje Documented Inherited Target Retention
34 Annotacje z java.lang Rozumiane przez kompilator javac (no.. prawie). Deprecated Znaczenie jak Może zostać sprawdzone w działającym programie SupressWarnings Oznacza, jakie uwagi kompilatora mają być pomijane Dobre do zaznaczenia, że programista wie, co robi W tej chwili nie jest wspierane przez javac
35 Annotacje - Override Służy do oznaczenia, że dana metoda ma przesłaniać metodę z klasy wyżej Jeżeli warunek nie zostanie spełniony kompilator zgłosi błąd Cenne do kontrolowania, czy na pewno przesłania się metodę zamiast tworzyć nową Widzi się brakujące metody w nadklasach
36 Meta-annotacje Documented Wskazuje, że element powinien być udokumentoway (np. przy użyciu javadoc) Inherited Wskazuje, że dana annotacja ma być dziedziczona pomiędzy klasami Działa tylko na klasach Nie interfejsy Nie przesłonięte metody
37 Meta-annotacje Target Mówi, na jakich elementach dana annotacja może być użyta Standardowo jest dostępna dla wszystkich elementów
38 Meta-annotacje Retention Określa poziom, z jakiego widać annotacje SOURCE usuwane przy kompilacji CLASS zachowywane przez kompilator w pliku class, ale nie muszą być wyciągane przez VM RUNTIME zachowywane w pliku class i widoczne z poziomu VM Domyślnie jest CLASS
39 Używanie annotacji Mało przydatne, jeżeli nie można do nich sięgnąć. Kiedy można użyć annotacji? Tworzenie kodu Budowa programu Testy Działająca aplikacja
40 Annotacje gdzie i jak stosowane Tworzenie Do oznaczenia stosowanych rozwiązań Budowa Kompilator rozpoznaje annotacje z java.lang Wiedza o annotacjach z poziomu SOURCE Użycie apt Tworzenie dodatkowych plików na podstawie istniejących
41 Annotacje gdzie i jak stosowane Działająca aplikacja Możliwe zastosowanie do aspetków Dynamiczne tworzenie klas, np. BeanInfo w momencie wczytania Bean Środowisko może szukać annotacji
42 Dojście do annotacji poprzez Reflection W działającym programie można zobaczyć tylko annotacje z poziomu RUNTIME Poprzez zastosowanie pakietów java.lang.reflect.* (Method, Constructor, Package ) można dotrzeć do annotacji dla wybranych elementów i odpowiednio zareagować.
43 Annotacje - przykład import java.lang.annotation.*; Test { } public class Foo public static void m1() { } public static void m2() { public static void m3() { throw new RuntimeException("Boom"); } public static void m4() { } }
44 Bardzo proste zastosowanie Reflection import java.lang.reflect.*; public class RunTests { public static void main(string[] args) throws Exception { int passed = 0, failed = 0; for (Method m : Class.forName(args[0]).getMethods()) { if (m.isannotationpresent(test.class)) { try { m.invoke(null); passed++; } catch (Throwable ex) { System.out.printf("Test %s failed: %s %n", m, ex.getcause()); failed++; } } } System.out.printf("Passed: %d, Failed %d%n", passed, failed); } }
45 Działanie z annotacjami przy budowie programu - APT Annotation Processing Tool Narzędzie JDK przeznaczone do operowania z annotacjami Wspiera rekurencyjne wywoływanie dla tworzonych plików
46 Apt żeby zadziałał Trzeba napisać AnnotationProcessorFactory On będzie tworzył AnnotationProcessor odpowiedni dla zadanej annotacji Dodać tools.jar do classpath dla atp Wywołać apt składnia bardzo podobna do javac, dodane opcje specjalne dla apt. Automatycznie skompiluje kod wygenerowany przez AnnotationProcessor
47 com.sun.mirror Dostęp do APT poprzez paczki z com.sun.mirror com.sun.mirror.apt interfejs do apt com.sun.mirror.declarations elementy odpowiadające deklaracjom w kodzie (metody, pola, klasy ) com.sun.mirror.types typy w kodzie, wywołania elementów z deklaracji com.sun.mirror.util narzędzia do pracy na deklaracjach i typacj
48 AnnotationProcessorFactory public Collection<String> supportedannotationtypes() Zwraca kolekcję annotacji, jakie potrafi obsłużyć dana fabryka Możliwe wartości: *, foo.* foo.bar public Collection<String> supportedoptions() Określa, jakie opcje z poziomu wywołania apt są dostępne public AnnotationProcessor getprocessorfor( Set<AnnotationTypeDeclaration> types, AnnotationProcessorEnvironment env ) zwraca processor dla zadanych annotacji oraz podanego środowiska
49 AnnotationProcessor public void process() Zrobić wszystko co potrzeba bezpośrednio w tej metodzie Skorzystamy z mechanizmu Visitors z com.sun.mirror.util.*
50 Annotacje kontra Interfejsy W specyficznych sytuacjach można zastąpić Interface przez odpowiednią annotację Interface wskazuje żądane zdolności Część języka Annotacja mówi o żądanych atrybutach Mechanizm do osobnych narzędzi
51 Annotacja czy interface bez metod Czasami można skorzystać z annotacji serializable Określa tylko pewną zdolność, bez metod Ale: jak z annotacją wyrazić void savetofile (Serializable object) bean Interfejs nic tu nie dodaje, jedynie pokazuje podążanie pewnym wzorcem Annotacja mogłaby być pomocna: Automatyczne generowanie BeanInfo
52 Annotacje ograniczenia Brak FixMe extends ToDo { } Meta-annotacja extends { String value() ToDo FixMe { }
53 Annotacje - braki Więcej standardowych annotacji Apt zintegrowany z javac Paczki apt i mirror w com.sun.*, dlaczego nie java.*?
54 Annotacje - podsumowanie Własne modyfikatory Nie zmieniają semantyki programu Ale narzedzia z ich pomocą mogą to zrobić Raczej wyszukać i stosować standardowe annotacje niż pisać własne Gotowe narzędzia - apt
55 Podsumowanie Najbardziej znaczące w wydaniu wydają się typy generyczne oraz mechanizm annotacji Wprowadzenie konstrukcji skracających kod oraz poprawiających czytelność Największe rozszerzenie języka do tej pory.
56 Linki
57 Koniec
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
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
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
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
Programowanie w języku Java
Programowanie w języku Java Wykład 1: Wprowadzenie http://eclipse.elektron.pk.edu.pl/~sdeniziak/ Hasło: java2012 języku Java 1 Literatura Bruce Eckel, Thinking in Java edycja polska, wydanie. 4, Helion
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ąć
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
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,
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
Dawid Gierszewski Adam Hanasko
Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{
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,
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
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
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
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
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. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?
1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)? public static void test1() { Object[] o = new Object[] { "1", "2", "3" ; List l = new ArrayList(Arrays.asList(o));
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,
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,
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
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
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
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
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
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....................................................................................
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
TYPY GENERYCZNE (GENERICS)
TYPY GENERYCZNE (GENERICS) ZAGADNIENIA: wprowadzenie, konwencje, metody, typy surowe parametry ograniczone podtypy, dziedziczenie, symbole wieloznaczne, ograniczenia. MATERIAŁY: http://docs.oracle.com/javase/tutorial/java/generics/
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;
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
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 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
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
BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska
BEAN VALIDATION Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska Bean Validation Uniwersalny mechanizm walidacji danych we wszystkich warstwach aplikacji Warstwa interfejsu,
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
Ć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.
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
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
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
1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();
1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {; static public void m2() {; void abstract m3(); default static void m4() {; a) Poprawnie zadeklarowano metodę m1() b) Poprawnie
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
Java: interfejsy i klasy wewnętrzne
Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania
Java niezbędnik programisty spotkanie nr 9. Java 2 Platform, Standard Edition 5.0
Java niezbędnik programisty spotkanie nr 9 Java 2 Platform, Standard Edition 5.0 1 Historia 1991 rozpoczyna się the Green Project (to jeszcze era MS DOS) 1992 pojawia się język Oak 1995 zmiana nazwy z
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
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
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.
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
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
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
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
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
Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka
Javadoc Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka Wprowadzenie do Javadoc Treść prezentacji: http://students.mimuw.edu.pl/~as219669/javadoc.pdf Zadania: http://students.mimuw.edu.pl/~as219669/zadanie.rar
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
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,
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
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
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
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,
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
public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:
Klasy Metody [ModyfikatorMetody] TypZwrotny Nazwa (Typ arg1, ) { // implementacja metody ModyfikatorMetody może być kombinacją wyrażeń: modyfikator widzialności public dostępna dla metod spoza klasy protected
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
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
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
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,
Języki i techniki programowania Ćwiczenia 4 Wzorce
Języki i techniki programowania Ćwiczenia 4 Wzorce Wzorce to metoda generacji różnych klas lub różnych funkcji. Autor: Marcin Orchel Przykład 1: Jeśli dana klasa C wykonuje obliczenia numeryczne, i wymaganiem
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
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
Programowanie obiektowe
Programowanie obiektowe I. Obiekty i klasy Małgorzata Prolejko OBI JA16Z03 Plan Klasy i obiekty Odnośniki (referencje) Używanie klas predefiniowanych Tworzenie własnych klas Relacje pomiędzy klasami: dziedziczenie
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
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 Nullable type, null-coalesce,
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
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,
Programowanie obiektowe
Programowanie obiektowe II. Dziedziczenie Małgorzata Prolejko OBI JA16Z03 Plan Klasy bazowe i pochodne. Hierarchia dziedziczenia. Polimorfizm. Wiązanie dynamiczne. Ograniczenie dziedziczenia, klasy i metody
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
Podstawy języka Java. przygotował: pawel@kasprowski.pl
Podstawy języka Java przygotował: pawel@kasprowski.pl Początki: PDA Star7 (*7) PDA do obsługi urządzeń domowych. (1992) (język OAK) Autorzy Javy Green Team Ojciec Javy: James Gosling Poszukiwanie zastosowania
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
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
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
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
Polimorfizm a klasy generyczne w języku Java. Zdzisław Spławski 1
Polimorfizm a klasy generyczne w języku Java Zdzisław Spławski 1 Klasyfikacja polimorfizmów Polimorfizm ogólnie oznacza wielopostaciowość i umożliwia przypisanie różnych
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)
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
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
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
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.
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.
2. Składnia, środowisko i konwencje w Javie
Gdańsk, 2014 Ogólnie o Javie Środowisko Java jest językiem programowania, którego podstawowym celem jest realizacja zasady write once, run anywhere. Oznacza to możliwość wykonania tego samego programu,
Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.
Programowanie w Javie cz. 1 Wstęp Łódź, 24 luty 2014 r. Prawdy i mity o Javie Java jest techniką webową? (tak, platforma Java EE, aplety) Java jest bezpieczna? (tak, aplety, brak operowania na pamięci)
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
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ą
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
Java niezbędnik programisty spotkanie nr 10. Typy wyliczeniowe, auto. opakowywanie/odpakowywanie,...
Java niezbędnik programisty spotkanie nr 10 Typy wyliczeniowe, auto. opakowywanie/odpakowywanie,... 1 Jak nie należy implementować typu wyliczeniowego Opracował class Przedmiot1 { public static final int
Programowanie obiektowe
Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 4 Java podstawy c.d. (w tym pakiety, polimorfizm, modyfikatory, klasy abstrakcyjne, interfejsy) Przygotował: Jacek Sroka 2 Kolokwium planujemy
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
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ę,
Klasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
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
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
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
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