Typy uogólnione. Programowanie obiektowe. Jacek Sroka na podstawie materiałów Janusza Jabłonowskiego. 8 kwietnia 2013
|
|
- Amelia Zych
- 7 lat temu
- Przeglądów:
Transkrypt
1 Programowanie obiektowe 8 kwietnia 2013
2 Po co są klasy i metody uogólnione w Javie? Klasy i metody uogólnione (generyki, ang. generics) - klasy i metody sparametryzowane typami. Czy zwiększają siłę wyrazu języka? Oczywiście nie (wszystkie sensowne języki programowania są równoważne maszynie Turinga). Czy wprowadzają możliwość pisania ogólnego kodu? Nie, ogólność w Javie już jest, dzięki zasadzie podstawialności i typowi Object. Po co więc??? Pozwalają na bezpieczne pisanie uogólnionego kodu.
3 Po co omawiać generyki na wykładzie z programowania obiektowego? Czy wykład z programowania obiektowego musi omawiać generyki? Nie. Nie są one częścią paradygmatu obiektowego. Czy wykład z programowania obiektowego powinien omawiać generyki? Tak, z kilku powodów (oczywiście o ile są dostępne w używanym języku): Są istotnym elementem wielu języków obiektowych. Ich znajomość jest potrzebna do omawiania istotnych hierarchii klas (np. kolekcji). Ich analiza może pozwolić dostrzec ciekawe zjawiska w używanym języku (np. anomalie typowania tablic w Javie). Są ciekawe i niebanalne.
4 Generyki Programowanie wymaga tworzenia abstrakcji. Klasy i ich hierarchie są bardzo efektywnym narzędziem do tworzenia abstrakcji. Parametryzowanie kodu pozwala abstrahować od pewnych szczegółów konkretnego zastosowania. Znamy już parametryzowanie: wartościami (parametry metod), czynnościami (parametry będące funkcjami - tak jak w C czy Pascalu - lub obiektami w językach obiektowych). Generyki pozwalają parametryzować typami.
5 Rodzaje polimorfizmu Polimorficzny (gr. polýmorphos od polýs liczny + morphé postać, kształt ciała ) wielokształtny, wielopostaciowy. Termin polimorfizm ma wiele znaczeń w informatyce. Na naszym wykładzie używamy go (poza tym slajdem) wyłącznie w znaczeniu obiektowym. Parametryzowanie kodu typami też jest nazywane polimorfizmem. Co gorsza jest wiele jego rodzajów 1 polimorfizm ad-hoc: sparametryzowany kod zachowuje się inaczej przy różnych typach parametryzujących. Przykład: przeciążanie nazw funkcji. polimorfizm parametryczny: sparametryzowany kod zachowuje się tak samo dla różnych typów parametryzujących. O tym będziemy dziś mówić na przykładzie Javy. polimorfizm podtypów: zastosowanie zasady podstawialności, zaczniemy od niego. 1 Nic dziwnego przy takiej nazwie....
6 Życie bez generyków Jest możliwe - skorzystajmy z zasady podstawiania. 1 public class PustyStos extends Exception { } 2 3 public class Stos { / / Uproszczona implementacja 4 private EltStosu wierzch ; 5 public boolean pusty ( ) { return wierzch == null ; } 6 public void wstaw ( Object e l t ) { 7 wierzch = new EltStosu ( e l t, wierzch ) ; } 8 public Object pobierz ( ) throws PustyStos { 9 i f ( pusty ( ) ) throw new PustyStos ( ) ; 10 Object wynik = wierzch. e l t ; 11 wierzch = wierzch. nast ; 12 return wynik ; 13 } 14 }
7 Życie bez generyków c.d. 1 class EltStosu { 2 public f i n a l Object e l t ; 3 public f i n a l EltStosu nast ; 4 / / Usprawiedliwić public! 5 public EltStosu ( Object e l t, EltStosu nast ) { 6 this. e l t = e l t ; 7 this. nast = nast ; 8 } 9 }
8 Życie bez generyków c.d. Mamy gotową maszynerię, zobaczmy jak działa. 1 public class Osoba { 2 private f i n a l S t r i n g i m i ę ; 3 4 public Osoba ( S t r i n g i m i ę ) { 5 this. i m i ę = i m i ę ; 6 } 7 8 public S t r i n g g e t I m i ę ( ) { 9 return i m i ę ; 10 } 11 }
9 Życie bez generyków c.d. I wreszcie korzystamy z naszego stosu. 1 Osoba os1 = new Osoba ( " Jasio " ) ; 2 Stos s = new Stos ( ) ; 3 4 s. wstaw ( os1 ) ; 5 Osoba os2 = s. pobierz ( ) ; Ups, nie kompiluje się. Słusznie, kompilator nie wie, czy na stosie była Osoba. 2 2 Miło żyć w kraju, w którym jest mnóstwo skojarzeń z byciem w kolejce a nie ma z byciem na stosie.
10 Życie bez generyków c.d. Teoretycznie możemy ten problem łatwo rozwiązać: 1 Osoba os2 = ( Osoba ) s. pobierz ( ) ; Ale to nie jest dobre rozwiązanie! Właśnie porzuciliśmy bezpieczny ocean języków ze statycznym sprawdzaniem typów i wpłynęliśmy na pełne wirów i raf morze tzw. dynamicznego typowania. 3 3 Może mniej finezyjnie, ale za to krócej: jest źle.
11 Rozwiązanie problemu Rozwiązaniem jest umożliwienie deklarowania klas sparametryzowanych typami. Pozwala to na: zachowanie ogólności - czyli na definiowanie jednej klasy pasującej do wielu typów. zachowanie bezpieczeństwa - kompilator może sprawdzać zgodność typów. Oprócz klas uogólnionych można też deklarować metody uogólnione.
12 Generyki w Javie a inne rozwiązania Rozwiązanie z Javy jest podobne do rozwiązań spotykanych w innych językach: C++: mechanizm szablonów - podobne przeznaczenie i składnia, kompletnie inna realizacja i moc wyrazu. Rozwiązanie z C++ pozwala na wykonywanie makroprogramów podczas kompilacji (sic!). C#: bardzo podobne rozwiązanie do tego z Javy, spójniejsze. Języki z dynamicznym typowaniem oczywiście nie mają i nie potrzebują takich mechanizmów Rozwiązanie z Javy musiało zachować zgodność z dotychczasową implementacją maszyny wirtualnej. Udało się, ale ma to swój koszt.
13 Przykład typu uogólnionego Chcemy stworzyć pojęcie pary 4. Nie chcemy z góry decydować, jakiego typu elementy będą występować w parach. Zatem definiujemy typ uogólniony, sparametryzowany typami elementów pary! 4 W sensie dwu elementów, a nie np. gazowego stanu wody.
14 Przykład typu uogólnionego cd 1 public class Para<T1, T2> { 2 private T1 pierwszy ; 3 private T2 d r u g i ; 4 public Para ( T1 pierwszy, T2 d r u g i ) { 5 this. pierwszy = pierwszy ; 6 this. d r u g i = d r u g i ; 7 } 8 9 public T1 getpierwszy ( ) { 10 return pierwszy ; 11 } public void setpierwszy ( T1 pierwszy ) { 14 this. pierwszy = pierwszy ; 15 } 16 / /... i analogiczne akcesory dla drugiego pola 17 }
15 Przykład typu uogólnionego cd 1 S t r i n g s = "... " ; 2 Osoba o = new Osoba (... ) ; 3 4 / / nie musimy jawnie rzutować 5 / / kompilator może pilnować że wszystko pasuje 6 Para<Osoba, String > para = new Para<Osoba, String >(o, s ) ; 7 para. setpierwszy ( o ) ; 8 o = para. getpierwszy ( ) ;
16 Przykład typu uogólnionego cd Przypomnienie uwagi o konwencji nazewniczej akcesorów. Składniowo definiowanie typów uogólnionych polega na podaniu nazw parametrów określających typy w kątowych nawiasach. Zwykle używa się pojedynczych liter T, T1, T2, S, E, ale to może być dowolny identyfikator. Można podać dowolnie wiele tych parametrów oddzielając je przecinkami. W treści klasy używamy ich 5 jak zwykłych typów. Ukonkretniony typ uogólniony jest tak samo dobrym typem jak każdy inny typ. 5 Parametrów, nie przecinków.
17 Uwagi o typach uogólnionych Oczywiście można by chcieć mieć tylko pary jednorodne, bardzo łatwo to osiągnąć 1 public class ParaJednorodna <T> { / / reszta definicji... Ale można jeszcze łatwiej! 1 public class ParaJednorodna <T> extends Para<T, T> { 2 public ParaJednorodna ( T pierwszy, T d r u g i ) { 3 super ( pierwszy, d r u g i ) ; 4 } 5 }
18 Uwagi o typach uogólnionych cd Argumenty typów uogólnionych muszą być typami referencyjnymi (więc np. nie można podać jako parametru typu int, ale można za to podać typ Integer). Kompilator generuje automatyczne konwersje typów prostych na odpowiadające im typy referencyjne i w drugą stronę (ang. autoboxing), dzięki czemu to ograniczenie nie będzie specjalnie kłopotliwe. 1 Para<int, int > para = new Para<int, int >(7, 1 3 ) ; / / błąd 2 Para< Integer, Integer > para = 3 new Para< Integer, Integer >(7, 1 3 ) ; / / autoboxing 4 i n t p1 = para. getpierwszy ( ) ; / / autounboxing
19 Uwagi o typach uogólnionych cd Oczywiści obiekty klasy Para przechowują jedynie referencje do oryginalnych obiektów (a nie ich kopie). Pary przydają się na przykład wtedy, gdy tworzymy metodę dającą jako wynik dwie wartości. Pary z różnymi typami parametrów są oczywiście różne, zatem poniższy fragment programu nie da się skompilować: 1 Para< String, Integer > p1 = null ; 2 Para< Integer, String > p2 = p1 ; / / nie kompiluje się Wynika z tego, że typem nie jest sam szablon Para, lecz dopiero jego ukonkretnienie z podanymi argumentami.
20 Uwagi o typach uogólnionych cd Co daje sprawdzanie wykonywane przez kompilator? 1 public class Para<T1, T2> { 2 / /... 3 public void b ł ędna ( ) { 4 System. out. p r i n t l n ( pierwszy. g e t I m i ę ( ) ) ; 5 } Kompilator nie domyśla się, że chcemy mieć Osobę jako pierwszy element Pary. I bardzo dobrze! Kompilator przyjmuje, że typ będący parametrem szablonu może być dowolną podklasą klasy Object (czyli, innymi słowy, dowolnym typem referencyjnym).
21 Co umie każdy obiekt - tostring 1 Para< Integer, Integer > para = 2 new Para< Integer, Integer >(7, 1 3 ) ; 3 System. out. p r i n t l n ( " Para : " + para ) ; Na ekranie wypisze się coś w tym rodzaju: Para: przykładydowykładu.para@61de33 Przedefiniujmy więc tostring w Parze. 2 public S t r i n g t o S t r i n g ( ) { 3 return " Para ( " + pierwszy + ", " + d r u g i + " ) " ; 4 } Teraz przedstawiony poprzednio fragment programu wygeneruje: Para: Para(7, 13)
22 Co umie każdy obiekt - equals Wbrew pozorom equals nie jest łatwe. W Object oznacza identyczność. 1 System. out. p r i n t l n ( "Równość par : " + 2 new Para< Integer, Integer > ( 0, 0 ). 3 equals (new Para< Integer, Integer > ( 0, 0 ) ) ) ; Na ekranie wypisze się false. Przedefiniujmy więc equals w Parze.
23 Co umie każdy obiekt - equals 2 public boolean equals ( Object o ) { 3 i f (! ( o instanceof Para <?,? >)) return false ; 4 Para<T1, T2> p = ( Para<T1, T2>)o ; 5 / / Ostrzeżenie kompilatora: unchecked cast 6 i f ( ( pierwszy!= null ) && ( d r u g i!= null ) ) 7 return pierwszy. equals ( p. getpierwszy ( ) ) && 8 d r u g i. equals ( p. getdrugi ( ) ) ; 9 else 10 i f ( ( pierwszy == null ) && ( d r u g i == null ) ) 11 return ( p. getpierwszy ( ) == null ) && 12 ( p. getdrugi ( ) == null ) ; 13 else / / dokładnie jeden z elementów pary jest null 14 i f ( pierwszy == null ) 15 return ( p. getpierwszy== null ) && 16 ( d r u g i. equals ( p. getdrugi ( ) ) ) ; 17 else / / drugi==null 18 return pierwszy. equals ( p. getpierwszy ( ) ) && 19 ( p. getdrugi ()== null ) ; 20 }
24 Co umie każdy obiekt - equals - komentarz Problem 0: zdecydowanie za długie. Problem 1: w nagłówku jest (słusznie zresztą) Object. Czy równe obiekty muszą mieć ten sam typ? Czyli czy użyć instanceof (nie muszą) czy getclass() (muszą)? Muszą: równość musi być symetryczna! Nie muszą: dwa napisy "Alamakota" zapisane w dwu podklasach klasy Napis, realizujących różne implementacje napisu powinny być równe! Pisząc implementację metody equals() chcemy by definiowała ona relację równoważności oraz wielokrotne wywołanie dawało ten sam wynik.
25 Co umie każdy obiekt - equals - komentarz Problem 2: Możliwe wartości null. Na szczęście dla null operator instanceof da wynik negatywny. Problem 3: o instanceof Para<?,?>. Czemu nie o instanceof Para<T1,T2>? Bo chcemy móc się porównać z dowolną parą. Bo się nie skompiluje - w czasie wykonania nie ma typów uogólnionych. o instanceof Para<Object,Object>) też nie. Można napisać o instanceof Para.
26 Co umie każdy obiekt - equals Jak zobaczymy przy kolekcjach zmieniając equals zwykle należy przedefiniować hashcode. Implikacja a.equals(b) a.hashcode() == b.hashcode(). 1 public i n t hashcode ( ) { 2 return pierwszy. hashcode ( ) & d r u g i. hashcode ( ) ; 3 / / a może: return 13;??? 4 / / wielokrotne wywołania muszą dać ten sam wynik, 5 / / więc implementacje nie może zależeć od składowych transient 6 }
27 a dziedziczenie Można dowolnie 6 mieszać. Zwykłe klasy mogą dziedziczyć po uogólnionych. 1 public class ParaInt extends Para< Integer, Integer > { 2 public ParaInt ( I n t e g e r pierwszy, I n t e g e r d r u g i ) { 3 super ( pierwszy, d r u g i ) ; 4 } 5 } Uogólnione po uogólnionych. 1 public class ParaJednorodna <T> extends Para<T, T> { 2 public ParaJednorodna ( T pierwszy, T d r u g i ) { 3 super ( pierwszy, d r u g i ) ; 4 } 5 } I uogólnione po zwykłych. 6 Prawie, wyjątki omawiamy na koniec.
28 Argumenty typów uogólnionych Mogą być dowolnie złożone (nie mogą być typami prostymi). Mogą być ukonkretnieniami typów złożonych 1 Para< Para< String, Integer >, String > dużapara = 2 new Para<Para< String, Integer >, String >( 3 new Para< String, Integer >( " Ola ma psa ", 13), 4 " Ala ma kota " ) ; Skrócona składnia od Javy Para< Para< String, Integer >, String > dużapara = 2 new Para < >( 3 new Para <>( " Ola ma psa ", 13), 4 " Ala ma kota " ) ;
29 Jeszcze jedna uwaga o equals Zauważmy, że nasza definicja equals daje zgodne z intuicją wyniki 1 ParaJednorodna < Integer > p j = 2 new ParaJednorodna < Integer >(13, 1 3 ) ; 3 ParaInt p i = new ParaInt (13, 1 3 ) ; 4 System. out. p r i n t l n ( "Równość par r óżnych klas : " + 5 p i. equals ( p j ) + " i " + 6 p j. equals ( p i ) ) ; Wynikiem jest true.
30 Metody uogólnione Są. Przy użyciu (zwykle) nie podaje się już argumentów będących typami. 1 public class TestMetodyUogó l n i o n e j { 2 <T> ParaJednorodna <ParaJednorodna <T>> 3 twórzparępar ( T e l t ) { 4 return new ParaJednorodna <ParaJednorodna <T>> 5 (new ParaJednorodna <T>( e l t, e l t ), 6 new ParaJednorodna <T>( e l t, e l t ) ) ; 7 } 8 9 void t e s t ( ) { 10 System. out. p r i n t l n ( " Para par I n t e g e r " + 11 twórzparępar ( 3 ) ) ; 12 System. out. p r i n t l n ( " Para par S t r i n g " + 13 twórzparępar ( " Ala ma kota " ) ) ; 14 } 15 }
31 Ograniczenia na parametry typów uogólnionych Dotąd poznany mechanizm nie jest wystarczający. 1 public class ParaPosortowana <T> extends ParaJednorodna <T> 2 public ParaPosortowana ( T pierwszy, T d r u g i ) { 3 super ( pierwszy, d r u g i ) ; 4 5 i f ( pierwszy. compareto ( d r u g i ) > 0 ) { 6 / / nie kompiluje się 7 setpierwszy ( d r u g i ) ; 8 setdrugi ( pierwszy ) ; 9 } 10 } Kompilator ma rację - nie każda klasa potrafi się porównywać.
32 Dygresja - interfejs Comparable Bardzo prosty i standardowy. 1 public interface Comparable<T>{ 2 public i n t compareto ( T o ) ; 3 }
33 Typ z ograniczeniami na parametry 1 public class ParaPosortowana <T extends Comparable<T>> 2 extends ParaJednorodna <T>{ 3 4 public ParaPosortowana ( T pierwszy, T d r u g i ) { 5 super ( pierwszy, d r u g i ) ; 6 7 i f ( pierwszy. compareto ( d r u g i ) > 0 ) { 8 setpierwszy ( d r u g i ) ; 9 setdrugi ( pierwszy ) ; 10 } 11 } 12 } Teraz się kompiluje!. Gdy jawnie nie podamy ograniczenia kompilator przyjmie extends Object.
34 Typ z ograniczeniami na parametry Można podać wiele ograniczeń na jeden parametr. Jeśli wśród ograniczeń jest klasa, to musi być jedna i na pierwszym miejscu (tu dla interfejsów też używamy extends). Stwórzmy parę sparametryzowaną typem elementów obu pól, który musi być klasą: będącą parą jednorodną (lub jej podklasą), implementującą porównywanie, implementującą serializację.
35 Typ z ograniczeniami na parametry 1 public class ParaWymagająca 2 <T1, T2 extends ParaJednorodna <T1> & 3 S e r i a l i z a b l e & Comparable<T2>> 4 extends ParaJednorodna <T2> { 5 public ParaWymagająca ( T2 pierwszy, T2 d r u g i ) { 6 super ( pierwszy, d r u g i ) ; 7 } 8 } 9 10 / / ParaPosortowana < String > pp = 12 new ParaPosortowana < String >( " jeden ", "dwa" ) ; 13 ParaWymagająca< String, ParaPosortowana < String >> pw = 14 new ParaWymagająca< String, 15 ParaPosortowana < String >>(pp, pp ) ;
36 Typ z ograniczeniami na parametry T1 było tylko pomocnicze. Java pozwala na użycie dżokerów?. W niektórych konstrukcjach nawet je preferuje.
37 Typ z ograniczeniami na parametry 1 public class ParaWymagająca2 2 <T extends ParaJednorodna <?> & 3 S e r i a l i z a b l e & Comparable<T>> 4 extends ParaJednorodna <T> { 5 public ParaWymagająca2 ( T pierwszy, T d r u g i ) { 6 super ( pierwszy, d r u g i ) ; 7 } 8 } 9 / / ParaWymagająca2<ParaPosortowana < S t r i n g >> pw2 = 11 new ParaWymagająca2<ParaPosortowana < String >>(pp, pp ) ;
38 Dalsze możliwości w skrócie Można wyrażać zależności między samymi parametrami 1 public <T1, T2 extends T1> 2 void wstaw ( C o l l e c t i o n <T1> a, T2 b ) { /... / } Dżokery pozwalają pomijać szczegóły... 1 public i n t ileelement ów( C o l l e c t i o n <?> c ) { /... / } 2 public <T> i n t ileelement ów( C o l l e c t i o n <T> c ) { /... / }... i opisywać ograniczenia górne 1 public <T> void wstaw ( C o l l e c t i o n <? super T> kol, T e l t ) ; Jeszcze do tego wrócimy po omówieniu kolekcji
39 Problemy z typami uogólnionymi w Javie Implementacja Javy musiała dopasować się do istniejących bibliotek i maszyn wirtualnych. Stąd pomysł z wymazywaniem typów (ang. type erasure) i wykorzystaniem dziedziczenia przez typy referencyjne po typie Object - kompilator sprawdza zgodność typów, a potem usuwa informacje o typach uogólnionych.
40 Problemy z typami uogólnionymi w Javie Maszyna wirtualna nie wie o typach uogólnionych więc Nie można tworzyć obiektów (ani tablic) typów będących parametrami typu uogólnionego - kompilator nie wie jakie konstruktory ma ten typ, a podczas wykonywania typ ten nie będzie znany. Rzutowania do typów uogólnionych powodują ostrzeżenia kompilatora, który nie może wygenerować kodu weryfikującego poprawność rzutowania (przykład dalej). Nie można stosować instanceof do typów uogólnionych (tylko z dżokerami lub surowymi) - poza tym jest tu problem z tym jak wygląda hierarchia klas. nie mogą być typami wyjątków - szukanie obsługi dzieje się na podstawie typu podczas wykonywania programu. Problemy z refleksją. No i problem z typami prostymi - nie mogą być argumentami typów uogólnionych.
41 Przykład 1 Para< String, String > ps = 2 new Para< String, String >( " ala ", " ola " ) ; 3 Para< Integer, Integer > p i = 4 new Para< Integer, Integer >(7, 1 3 ) ; 5 Para p = ps ; / / zastosowanie surowego typu 6 p i = ( Para< Integer, Integer >) p ; 7 / / Ostrzeżenie kompilatora: unchecked cast 8 System. out. p r i n t l n ( " p i = " + p i ) ; 9 / / pi jest parą napisów! pi = Para(ala, ola)
42 1 public class MyType<E> { 2 class Inner { } 3 s t a t i c class Nested { } 4 5 public s t a t i c void main ( S t r i n g [ ] args ) { 6 MyType mt ; / / warning: MyType is a raw type 7 MyType. Inner inn ; / / warning: MyType.Inner is a raw type 8 9 MyType. Nested nest ; / / no warning: not parameterized type 10 MyType<Object > mt1 ; / / no warning: type parameter given 11 MyType<?> mt2 ; / / no warning: type parameter given (wildcard OK!) 12 } 13 }
43 Podsumowanie Na pewno typy uogólnione są potrzebne. Realizacja tego mechanizmu w Javie zaspokaja większość potrzeb programistów. Mogłaby być lepsza, gdyby ten mechanizm został wbudowany w język od jego pierwszej wersji. Pełny opis typów uogólnionych wykracza poza ramy tego wykładu.
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Problem: Jak zaimplementować stos? Co się stanie gdy dodamy do stosu obiekt typu Czlowiek? Co się stanie, gdy spróbujemy ten obiekt odczytać
Bardziej szczegółowoKurs 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
Bardziej szczegółowoKlasy 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
Bardziej szczegółowoDawid 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{
Bardziej szczegółowoDziedziczenie. 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ółowoKurs programowania. Wykład 9. Wojciech Macyna
Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy
Bardziej szczegółowoKurs 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ółowoProgramowanie 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
Bardziej szczegółowoPolimorfizm 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
Bardziej szczegółowoProgramowanie 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ółowoKurs 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ółowoInterfejsy. 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ółowoKurs 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ółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 7: Typy uogólnione. Stringi. 4/21/2013 S.Deniziak: Programowanie obiektowe - Java 1 Jak operować na danych różnych typów? Wymagana zgodność typów Rzutowanie w górę Tylko
Bardziej szczegółowoTypy sparametryzowane
Typy sparametryzowane Streszczenie Celem wykładu jest zaprezentowanie typów sparametryzowanych. Czas wykładu 90 minut. Istnieją algorytmy, których zasada działania nie zależy od typu danych wejściowych.
Bardziej szczegółowoKolekcje w Javie cz. 1
Kolekcje w Javie cz. 1 Programowanie obiektowe Jacek Sroka na podstawie materiałów Janusza Jabłonowskiego 8 kwietnia 2013 Po co są kolekcje? Po co są kolekcje? A po co są programy? Żeby manipulować danymi.
Bardziej szczegółowoKurs 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ółowoProgramowanie 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
Bardziej szczegółowoKlasy 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ółowoJava: 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
Bardziej szczegółowoPolimorfizm, 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ółowoKonstruktory. 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
Bardziej szczegółowoLaboratorium 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ółowoAplikacje 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
Bardziej szczegółowoDziedziczenie. 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ółowo1. 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
Bardziej szczegółowoPolimorfizm. 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ółowoSzablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Bardziej szczegółowoProgramowanie 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,
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe
Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie
Bardziej szczegółowoJAVA 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ółowoWykł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ółowoDokumentacja 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ółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Bardziej szczegółowoProjektowanie obiektowe. Roman Simiński Polimorfizm
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Polimorfizm Koncepcja polimorfizmu Słowo polimorfizm pochodzi od dwóch greckich słów: poly czyli wiele, morphos czyli
Bardziej szczegółowoAplikacje 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ółowoProgramowanie w Javie - wykład 3
Pakiety import Klasy dziedziczenie Programowanie w Javie - wykład 3 Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/
Bardziej szczegółowoPodczas 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.
Bardziej szczegółowoKurs 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
Bardziej szczegółowoDziedziczenie. 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ółowoInformatyka 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
Bardziej szczegółowoObiekt 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
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoProgramowanie 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ółowo10. Programowanie obiektowe w PHP5
Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE
Bardziej szczegółowoProgramowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.
Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to
Bardziej szczegółowoProgramowanie 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....................................................................................
Bardziej szczegółowoTYPY 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/
Bardziej szczegółowoProgramowanie obiektowe. Wykład 5. C++: szablony
Programowanie obiektowe Wykład 5. C++: szablony Szablony Szablony to technika realizacji polimorfizmu na innym poziomie niż za pomocą funkcji wirtualnych i dziedziczenia. Mechanizm ten można rozumieć jako
Bardziej szczegółowoRozdział 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ółowoScala. Obiektowo-funkcyjny język programowania. Zbyszek Skowron
Scala Obiektowo-funkcyjny język programowania Zbyszek Skowron 4 czerwca 2007 Wprowadzenie Scala jest obiektowo-funkcyjnym jezykiem programowania zaprojektowanym przez Martina Odersky'ego. Inne projekty
Bardziej szczegółowoInterfejsy i klasy wewnętrzne
Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie 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ółowoInformatyka 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
Bardziej szczegółowoZwiązek między pojęciami Zasada podstawialności Podklasy muszą realizować kontrakt zawarty przez nadklasy
Janusz Jabłonowski Związek między pojęciami Zasada podstawialności Podklasy muszą realizować kontrakt zawarty przez nadklasy Przedefiniowywanie lub podmienianie (ang. overriding, czasami błędnie tłumaczone
Bardziej szczegółowoTechnologie i usługi internetowe cz. 2
Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,
Bardziej szczegółowoJAVA. 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ółowoWykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Bardziej szczegółowoProgramowanie 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;
Bardziej szczegółowoWykład 9: Polimorfizm i klasy wirtualne
Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm
Bardziej szczegółowoInformacje 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
Bardziej szczegółowoWykł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ółowoWyją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ę,
Bardziej szczegółowoStos liczb całkowitych
Stos liczb całkowitych class StosInt int* tab; unsigned size ; StosInt(unsigned s=10) tab=new int[size=s];top=0; ~StosInt()delete[] tab; void push(int i)tab[top++]=i; int pop(void) return tab[--top]; int
Bardziej szczegółowoEnkapsulacja, 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ółowoPodstawy 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
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 10 - klasy abstrakcyjne i interfejsy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 17 maja 2017 1 / 13 mgr inż. Krzysztof Szwarc Programowanie obiektowe
Bardziej szczegółowoSzablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoKlasa 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ółowoTechniki 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ółowoJę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ółowoDefiniowanie 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:
Bardziej szczegółowoJava: 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
Bardziej szczegółowoProgramowanie 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ółowojava.util.* :Kolekcje Tomasz Borzyszkowski
java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących
Bardziej szczegółowoPodstawy 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ółowoJava - 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ółowoWSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy
WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera
Bardziej szczegółowoProgramowanie 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ółowoJava 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ółowoPlatformy 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ółowoObszar 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ółowoParadygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Bardziej szczegółowoProgramowanie 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)
Bardziej szczegółowoJę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ółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoProgramowanie 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ółowoJava 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
Bardziej szczegółowoKOTLIN. Język programowania dla Androida
KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga
Bardziej szczegółowoDariusz 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ółowoWykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Bardziej szczegółowoMATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne
Bardziej szczegółowoProgramowanie w Javie wykład 8 Interfejsy
1 Programowanie w Javie wykład 8 Interfejsy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki programowania,
Bardziej szczegółowoProgramowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Bardziej szczegółowo.NET Klasy, obiekty. ciąg dalszy
.NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,
Bardziej szczegółowoWykł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