Java wstęp do języka. Andrzej Chybicki Pok. 738

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

Download "Java wstęp do języka. Andrzej Chybicki Andrzej.Chybicki@eti.pg.gda.pl Pok. 738"

Transkrypt

1 Java wstęp do języka Andrzej Chybicki Pok. 738

2 To co już powinniśmy wiedzieć Składnia, gramatyka i doświadczenie w programowaniu w C/C++ Idea i zasada programowania obiektowego (C++) (klasy, zmienne) Podstawowe mechanizmy dziedziczenia Zakładam, że student nie napisałżadnej aplikacji w języku Java java od podstaw

3 Historia Javy Początki języka Java sięgają roku 1990, gdy Bill Joy napisał dokument pod tytułem Further, w którym sugerował inżynierom Sun Microsystems stworzenie obiektowego środowiska w oparciu o C++. Dokument ten miał pewien wpływ na twórców projektu Green (James Gosling, Patrick Naughton i Mike Sheridan). W roku 1991 w ramach projektu Green opracowano w języku C kompilator oraz interpretator wynalezionego przez Goslinga języka OAK (Object Application Kernel), który miał być narzędziem do oprogramowania inteligentnych konsumenckich urządzeń elektronicznych. Ponieważ nazwa OAK okazała się zastrzeżona, zmieniono ją na Java.

4 Java język czy coś więcej? Java oczywiście jest językiem programowania, lecz w praktyce na Javę składają się inne elementy funkcjonalne: 1. Kompilator 2. Maszyna wirtualna Java (JVM). 3. Biblioteki języka Java 4. Obiektowy język programowania bazujący na składni języka C++

5 1.Kompilator Kompilator który przetwarza program nazwa.java na tak zwany B-kod (bytecode, J- code), zapisywany automatycznie w plikach z rozszerzeniem nazwy.class. B-kod jest przenośną postacią programu, która może być zinterpretowana przez odpowiednią maszynę wirtualną, to jest urządzenie logiczne, na którym będzie wykonywany program binarny

6 2. Maszyna wirtualna Javy (ang. JVM Java Virtual Machine) JVM można uważać za abstrakcyjny komputer, który wykonuje programy, zapisane w plikach z rozszerzeniem nazwy.class. Maszyna wirtualna może być implementowana na rzeczywistych komputerach na wiele sposobów, na przykład jako interpretator wbudowany w przeglądarkę WWW (np. Netscape), lub jako oddzielny program, który interpretuje pliki nazwa.class. Może to być także implementacja polegająca na przekształceniu tuż przed rozpoczęciem fazy wykonania pliku z B-kodem na program wykonalny, specyficzny dla danej maszyny. Mechanizm ten można określić jako tworzenie kodu wykonalnego w locie (ang. Just-In- Time, np. kompilator JIT firmy Symantec). Interpretatory B-kodu, tj. różne maszyny wirtualne, są także często napisane w języku Java.

7 JVM JVM nie jest osobną maszyną w sensie sprzętowym, lecz w sensie programowym Można powiedzieć, że JVM jest nakładką na system umożliwiającą kompilowanie i wykonywanie aplikacji Java. JVM a szybkość inicjalizacja i kompilowanie JIST

8 JVM a OS

9 Java a niezależność sprzętowoprogramowa Edytor MyProgram.java Kompilator Interpretator MyProgram.class Interpretator PC - Windows XP/NT SUN - Solaris

10 Język Java Oparty o składnię C++ Prawdziwie obiektowy (tylko obiektowy!!) Podział na klasy Jedna klasa główna metoda main, która stanowi wejście do programu Program w języku Java nazywa się aplikacją (samodzielna) lub applet (aplikacja sieciowa)

11 Aplikacje Java Warunek uruchomienia: zainstalowanie na komputerze JDK (Java Developement Kit) lub JRE (ang. Java Runtime Enviroment). Każda aplikacja musi zawierać dokładnie jeden modułźródłowy nazywany modułem głównym aplikacji zawierającym definicje klas, w którym jedna z klas zawiera publiczną funkcję klasy (funkcje takie są poprzedzane słowem kluczowym static) main. Funkcje w języku Java są zawsze własnością klas lub obiektów i nazywa się je metodami (ang. methods)

12 Plik który zawiera metodą main jest wejściem do aplikacji Java. Musi on posiadać tę samą nazwę co nazwa klasy, która posiada metodę main. Aplikacja składająca się z wielu pakietów (modułów) i klas może posiadać kilka klas z metodą main. Metoda main musi być publiczna i statyczna public static void main(string args[]) Przykładowy program wygląda następująco:

13

14 Kompilacja i uruchomienie aplikacji Java Kompilacja programu: javac Hello.java, o ile mamy prawidłowo ścieżkę ustaloną do javac Udana kompilacja wygeneruje plik z B-kodem o nazwie Hello.class, zawierający sekwencję instrukcji dla interpretatora JVM. Kod ten wykonujemy przez wywołanie interpretatora o nazwie java poleceniem: java Hello

15 Omówienie przykladu Interpretator wyszuka plik o nazwie Hello.class, ustali, czy klasa Hello zawiera publiczną metodę statyczną main i wykona instrukcje zawarte w bloku main. Nie ma wielkości globalnych: wszystkie zmienne i stale są własnością klas lub obiektów. Wartością parametru arg[0] jest pierwszy po nazwie programu spójny ciąg znaków

16 Konsola w Javie klasa system Klasa System zawiera statyczny obiekt składowy typu PrintStream o nazwie out; wywołanie System.out oznacza pisanie do standardowego strumienia wyjściowego. Klasa PrintStream zawiera szereg przeciążeń metody o nazwie print; jedno z nich przyjmuje parametr typu String. Kompilator automatycznie tłumaczy literał stały Hello, World\n na odpowiedni obiekt klasy String; odnośnik (referencja) do tego obiektu jest przekazywana do metody System.out.print(). Metoda print() generuje jeden wiersz wyjściowy i powraca do metody main, która kończy wykonanie programu. Standardowe wyjście z poziomu programu wygląda tak samo : System.out.* niezależnie od systemu i sposobu uruchomienia programu.

17 Identyfikatory i znaki specjalne Słowa zarezerwowane (true, false, if, switch, case ) bazujące zasadniczo na składni C/C++ Słowa kluczowe (abstract, final) można używać tylko w ściśle określonym kontekście

18 Zastrzeżone słowa w Java transient short interface Finally class throws return int Final Char throw public instanceof Extends catch this protected import Else Case synchronized private implements Double Byte while switch package if Do break volatile super new goto* Default boolean void strictfp** native for Continue assert try static long float const* abstract

19 Klasy w Javie Definicja klasy ma postać: Deklaracja klasy { Ciało klasy }

20 Klasy Słowo kluczowe class można poprzedzić slowami: abstract, public, final Po słowie class można umieścić wyrażenia: extends nazwa_superklasy oraz implements nazwy_interfejsów Mechanizm dziedziczenia już omówiliśmy Mechanizm interfejsów w Javie dopiero omówimy. Java nie umożliwia wielodziedziczenia ale można to zrobić używając mechanizmów interfejsów

21 Klasa Object Uwaga. W języku Java każda klasa dziedziczy od predefiniowanej klasy Object. Zatem, jeżeli w definicji klasy nie występuje fraza extends, to jest to równoważne niejawnemu wystąpieniu w tej definicji frazy extends Object

22 protected Object clone() boolean equals (Object obj) void finalize() Class getclass() Int hashcode() void notify() void notifyall() String tostring() void wait() void wait (long timeout)

23 Zmienne klasy Zmienne klasy (statyczne, tj. poprzedzone słowem kluczowym static), konstruktor i metody oraz funkcje klasy (statyczne) także są poprzedzanie słowem static. Nazwa każdej zmiennej składowej, zmiennej klasy, metody lub funkcji klasy musi być poprzedzona nazwą typu (np. boolean, double, char, float, int, long, void). Zmienne i metody statyczne są traktowane analogicznie jak w C++

24 Dostęp do zmiennych i metod klasy private protected public niezdefiniowany

25 Zmienne i metody Zmienne i metody typu static przypomnienie Zmienne i metody final Zmienne,która nie może być modyfikowana Metoda, która nie może redefiniowana w klasach dziedziczących Klasa po której nie można dziedziczyć Lokalne zmienne finalne, które zostały zadeklarowane, ale jeszcze nie zainicjowane, nazywa się blank final.

26 Słowa kluczowe this i super Dostęp do elementów klasy uzyskuje się za pomocą operatora kropkowego. Jeżeli element danej klasy (zmienna lub metoda) przesłania (overrides) jakiś element swojej superklasy, to można się do niego odwołać za pomocą słowa kluczowego super, jak w poniższym przykładzie Spójrzmy na przykład:

27

28 Omówienie przykładu ASillyClass oob; oob = new ASillyClass(); Większość klas (wbudowanych lub definiowanych przez użytkownika) inicjalizujemy za pomocą operatora new Do kontrolowania ilości obiektów danej klasy czasami są używane tzw. Fabryki obiektów.

29 Konstruktory w Javie Konstruktory w Javie definiujemy analogicznie jak w C++. Konstruktor musi być zawsze jawny i zwracać obiekt klasy w jakiej jest inicjowany. W javie nie ma destruktorów obiektów Wady Zalety Utylizacją nieużywanych obiektów w Java zajmuje się mechanizm Garbage collector omówimy go później

30 Konstruktory w Javie Jeżeli dana klasa nie zawiera deklaracji konstruktorów, to kompilator dostarcza konstruktor domyślny z pustym wykazem argumentów, który w swoim bloku wywołuje konstruktor super() jej bezpośredniej nadklasy. Weźmy dla ilustracji definicję klasy Point: public class Point { int x,,y; } Jest ona równoważna definicji public class Point { int x,,y; public Point() { super(); } } z niejawnym wywołaniem dostarczanego przez kompilator konstruktora superklasy, od której bezpośrednio dziedziczy klasa Point.

31 Dostęp do metod i pól superklasy (klasy bazowej) Odwołanie się do pól i metod superklasy odbywa się poprzez słowo kluczowe super. Czasami ważne jest mieć pewność ze odwołujemy się do pól i metod obiektu w którym aktualnie jesteśmy w takim przypadku używamy słowa kluczowego this Operator this zawsze zwraca obiekt w którym znajduje się aktualnie wykonana instrukcja.

32 Niejawne wywoływania konstruktorów superklasy Spójrzmy na przykład:

33

34 Konstruktor super() może być również wywoływany jawnie Spójrzmy na przykład

35

36 Konstruktory this( ) i super( ) Uwaga. instrukcja this(argumenty); musi być pierwszą instrukcją w ciele konstruktora lub metody; to samo dotyczy instrukcji super(argumenty);.

37 Sprzątanie obiektów w Java Inicjalizacja obiektów występuje zawsze kiedy chcemy ich użyć co do tego każdy programista jest świadomy Garbage Collector - gc (odśmiecacz pamięci) automatycznie pozbywa się obiektów nieużywanych ale nie zawsze powoduje zwolnienie całej pamięci wykorzystywanej przez te obiekty

38 Szczególny przypadek Odśmiecacz zwalnia tylko pamięć zalokowaną przez obiekt z wykorzystaniem operatora new Jeśli obiekt w inny sposób alokuje pamięć odśmiecacz może sobie nie dać rady Rozwiązanie metoda finalize()

39 Używamy metody finalize() Jeżeli obiekt posiada metoda finalize() to odśmiecacz będąc gotowy do zwolnienia obiektu najpierw wywoła metodę finalize() Dopiero przy kolejnym odśmiecaniu zażąda zwrotu pamięci samego obiektu Zdefiniowanie metody finalize() leży w gestii użytkownika!!

40 Finalize() a destruktory C++ Finalize() i destruktory C++ to nie to samo!! C++ - destruktor zawsze niszczy obiekt Finalize powoduje jedynie zwolnienie ewentualnej pamięci lub uchwyty do pliku, zasobu sieciowego ale nie niszczy obiektu Kiedy i jak używamy finalize()? Używamy przed zniszczeniem obiektu, aby ewentualne zasoby związane z obiektem których gc nie wyczyści samemu zwolnić Spójrzmy na przykład:

41 Wywolanie finalize()

42 Wynik Tytul ksiazki Finalizujemy obiekt przy index = 3 W powyższym przykładzie ręcznie uruchomiliśmy gc, ale JVM automatycznie uruchamia gc w przypadku alokacji lub zwalniania dużej ilości zasobów

43 Zasada działania gc Zasada działania sterty w C++ - plac w którym poszczególne obiekty zajmują pamięć (powierzchnię) potrzebną im do życia W Java stertę można porównać do przesuwającej się taśmy, w której każdy nowy obiekt alokuje nową część taśmy co powoduje szybkie wyczerpanie pamięci

44 Sztuczki w gc mechanizmy oszczędzania pamięci Gc podczas zbierania śmieci porządkuje obiekty w obszar ciągły przesuwając wskaźnik taśmy. Są różne techniki odśmiecania, które obiekty wyrzucać, które zostawiać, jak to sprawdzać? Liczenie referencji Zliczanie odwołań

45 Tablice w Java Każda tablica w Java jest obiektem Dynamicznie tworzona nie ma problemu zarządzania pamięcią (wyręcza nas w tym kompilator i JVM) Zmienna prezentująca tablicę jest tak naprawdę referencją do pamięci pierwszego z elementów tablicy (jak w C/C++)

46 Tablice ciąg dalszy Obiekty lub składowe tablicy nazywa się elementami Każdy obiekt tablicowy zawiera pole length zawierający ilość elementów w tablicy Elementy są numerowane od 0 Niezainicjowane (ale zadeklarowane!!) elementy tablicy mają inicjalną wartość = 0 Elementami tablic mogą być typy proste (int, float, double) oraz typy złożone (obiekty nie klasy), null e, Tablice mogą być inicjowane jako tablice elementów klasy abstrakcyjnej pod warunkiem no właśnie - jakim warunkiem??

47 I jeszcze parę istotnych uwag o Semantyka : Deklaracja nośnika tablicy: int[] tab; Zainicjowane tab = new int[3]; Albo od razu: int[] tab = new int[3]; Inny sposób: int[] tab = {0, 0, 0 }; Spójrzmy na przykład: tablicach

48

49 Wynik i dyskusja ia[0] = 1 ia[1] = 2 ia[2] = 3 da[0] = 1.3 da[1] = 2.5 da[2] = 3.4 Klasa obiektu ia: class [I Klasa obiektu da: class [D class java.lang.object

50 Drobna uwaga Dla tablicy wielowymiarowej sygnatura byłaby poprzedzona odpowiednią liczbą nawiasów prostokątnych. Np. instrukcja System.out.println("Klasa obiektu: "+(new float [3][4][5]).getClass()); da wydruk: Klasa obiektu: class [[[F

51 Tablica typów zdefiniowanych przez użytkownika W Javie elementami tablic mogą być zarówno typy proste jak i obiekty klas wbudowanych i zdefiniowanych przez użytkownika. Spójrzmy na przykład:

52

53 W wyniku działania programu otrzymujemy mytab[0].x = 20 mytab[1].x = 21 mytab[2].x = 22 mytab jest obiektem typu MyClass[]. class [LMyClass class java.lang.object

54 Tablice wielowymiarowe Tablice mogą zawierać elementy dowolnego typu a więc i także tablice, które składają się tez z tablic tablic obiektów etc, etc, - wniosek: W Java też można tworzyć tablice wielowymiarowe Odwoływanie się do elementów tablic analogicznie jak w C++ Przykład tablicy wielowymiarowej

55

56 Tablice wielowymiarowe w Java - cd int[][] tab = { {1,2,3}, {4,5,6} }; for(int row=0; row < 2; row++) { for(int col=0; col < 3; col++) { System.out.println(tab[row][col]); } }

57 Tablice a kolekcje obiektów Każdy program musi przechowywać określoną ilość obiektów. Tablice są jednym ze sposobów przetrzymywania dużej ilości obiektów Tablica jest w Java najbardziej efektywnym sposobem przechowywania REFERENCJI do dużej ilości obiektów No ale co z wygodą? (Przeszukiwanie, wydobywanie, zwiększanie, kopiowanie itp., itp.) Rozwiązanie klasy kontenerowe

58 Klasy kontenerowe Klasy zapewniające mechanizmy łatwego przechowywania, udostępniania, zapisywania dużej ilości obiektów (często różnych klas).

59 AC1 Przykłady klas kontenerowych Collection służy do przechowywania pojedynczych elementów List lista obiektów w kolejności Set zbiór obiektów ( bez kolejności) ArrayList bardziej zaawansowana lista HashMap lista asocjacyjna Inne

60 Slajd 59 AC1 Dodać częśc o Collection i Arraylistach Andrzej Chybicki;

61 Uwagi odnośnie kontenerów (klas kontenerowych) Ponieważ do obiektów możemy wkładać obiekty dowolnej klasy w praktyce tracimy informacje o typie obiektów wydobywanych z kontenerów Po wydobyciu obiektu trzeba wykonać rzutowanie do odpowiedniego typu Programista sam musi pamiętać jakiego typu obiekty są zapisane w środku (chociaż są wyjątki)

62 Operowanie na kontenerach - iteratory Uniknięcie korzystania z pętli for, while podczas przeszukiwania kontenerów Wykorzystanie wbudowanych mechanizmów przeglądania kontenerów szybsze, wygodniejsze i łatwiejsze (przeważnie). Spójrzmy na przykład:

63

64 Interfejsy (ang. Interfaces) Co to jest interfejs i przede wszystkim do czego służy? Semantyka i technika używania interfejsów

65 Co to jest interfejs? Konstrukcja o postaci interface nazwa { /* Deklaracje metod i definicje stałych */ } jest w języku Java typem definiowanym przez użytkownika.

66 Interfejs nie jest klasą, jest to osobny typ, który definiuje użytkownik (programista) Można traktować interfejs jako klasę abstrakcyjną, z sygnaturami metod i ewentualnie pól Interfejs tworzy klasę Interfejs stanowi szablon wszystkich klas, które go implementują W interfejsie nie definiujemy metod jedynie je deklarujemy. Definicja (ciało) metody znajduje się w klasie która implementuje interfejs Spójrzmy na przykład:

67

68 Omówienie W ogólności w definicji interfejsu wszystkie metody są domyślnie public i abstract, Stale są domyślnie public, static i final. zabrania się używania specyfikatorów private i protected Dostęp do zadeklarowanej w interfejsie metody lub stałej uzyskuje się za pomocą operatora kropkowego, Np. Sleeper.ONE_SECOND.

69 Przykład interfejsu

70 Definicja w klasie implementującej

71 I teraz co z tym możemy zrobić Poprawne będą wówczas deklaracje: Plane biplane = new Plane(); biplane.takeoff(); Boat vessel = new Boat(); vessel.swim(); a także deklaracje: PlaneLike aircraft = new Plane(); aircraft.takeoff(); BoatLike motorboat = new Boat(); motorboat.swim();

72 Do czego w praktyce używa się interfejsów Najczęściej jako listenery (myszki, klawiatury), używające wbudowanych interfejsów języka Java MouseListener, MouseMotionListener, KeyboardListener Zdarzenie (np. kliknięcie lub ruch myszki, naciśnięcie przycisku klawiatury) są przechwytywane przez klasę implementującą wybrany interfejs i obsługiwane przez nią. Spójrzmy na przykład:

73

74 Inne praktyczne zastosowania Komponenty, które wykorzystują listenery Button, JButton, Label, Panel, TextField i inne Przykladowe listenery: KeyListener, MouseListener, MouseMotionListener, MouseMoveListener i inne

75 Inne sposoby użycia interfejsów - wielodziedzicznie Załóżmy, iż chcemy mieć obiekt (klasa SeaPlane), który czasami zachowuje się jak samolot a czasami jak łódź. Java nie posiada mechanizmu wielodziedziczenia. Jak osiągnąć to poprzez mechanizmy Java? Spójrzmy na przykład:

76 Chcemy osiągnąć efekt taki jak pokazano na rysunku w części a) Uzyskujemy to w sposób jaki pokazano na rys b) a) b) Vehicle Vehicle Plane Boat Plane Boat SeaPlane SeaPlane interface BoatLike interface PlaneLike

77

78 Dziedziczenie interfejsów Interfejs nie może dziedziczyć klas, ale może dziedziczyć dowolnie wiele interfejsów. Np. korzystając z podanych wyżej definicji moglibyśmy utworzyć interfejs interface SeaPlaneLike extends PlaneLike, BoatLike{ public long SPEED_LIMIT = 1000; } i wykorzystać go w klasie SeaPlane, implementując metody zadeklarowane w interfejsach PlaneLike i BoatLike. Zauważmy przy okazji, że klasy implementujące dany interfejs mogą traktować zadeklarowane w nim stałe tak, jak gdyby były one odziedziczone.

79 A jak to wygląda w praktyce? Używanie interfejsów głównie wbudowanych (listenery, EJB i inne komponenty) Wielodziedziczenie w praktyce zmienia się hierarchię dziedziczenia, raczej nie implementuje się mechanizmu wielodziedziczniea Klasy abstrakcyjne używa się głównie aby program był przejrzysty Mechnizmy (interfejsy, static, private, protected) można nie używać ale dobre wykorzystanie ułatwia czasami programowanie i zmniejsza ilość kodu

80 Organizacja kodu w Java

81 Pliki źródłowe i pakiety czyli organizacja kodu w Java Większe programy składają się ze zdecydowanie więcej niż jednej klasy (kilkaset, kilka tysięcy klas) Jak już powiedzieliśmy każda aplikacja musi mieć przynajmniej jedną klasę z metodą public static void main, musi mieć on tę samą co nazwa pliku (inaczej jest w przypadku appletów i midletów) Nie jest to wymagane ale dla przejrzystości zaleca się aby w jednym pliku źródłowym była implementacja jednej klasy. Jeśli w pliku znajduje się więcej niż definicją jednej klasy w wyniku kompilacji otrzymamy więcej plików z B- kodem *.class. To samo tyczy się klas zagnieżdżonych.

82 Pakiety (ang. Packages) Wszystkie pliki (moduły źródłowe) są niezależnie kompilowalne. (uruchamianie z błędami w kompilacji). Modułźródłowy, w którym definicje klas oraz interfejsów poprzedzono deklaracją pakietu o postaci package nazwa_pakietu; staje się pakietem. Deklaracja pakietu rozszerza przestrzeń nazw programu i pozwala na lepsze zarządzanie programem wielomodułowym

83 Organizacja pakietów Pakiety a system plików projektu Jak dzielić na pakiety? Jakie przydzielać nazwy pakietom? Pakiety a klasy i dziedziczenie? Pakiety a moduły?

84 Pakiety i pliki w praktyce Spójrzmy na przykład: Pakiety sąściśle powiązane z katalogami, w których umieszcza się moduły źródłowe i pliki wynikowe. Załóżmy np., że w katalogu C:\javaprog (Win 98 DOS) umieszczono główny plik źródłowy aplikacji Student.java, który importuje z katalogu C:\javaprog\myprog\pakiet1 klasy HiGrade oraz LoGrade, umieszczone w plikach HiGrade.java i LoGrade.java. Deklaracje importu mogą mieć postać: import myprog.pakiet1.higrade; import myprog.pakiet1.lograde;

85

86 Omówienie przykładu istotna uwaga Uwaga. Deklaracja importu nie oznacza włączania do pliku Student.java tekstu zawartego w plikach HiGrade.java i LoGrade.java. Natomiast pozwala ona użytkownikowi klasy Student używać skrótowych nazw: np. zamiast pisać myprog\pakiet1\higrade highgrade = new javaprog\myprog\pakiet1\higrade(); mogliśmy napisać krótko: HiGrade highgrade = new HiGrade();. Gdybyśmy chcieli używać również klasy Empty (lub innych klas pakietu pakiet1), to deklaracja importu miałaby postać: import mike.myprog.pakiet1.*. W języku Java ważna jest także kolejność deklaracji: najpierw deklaracja pakietu, po niej deklaracje importu, po czym definicje klas.

87 Pakiety wbudowane (biblioteki) Podstawowe pakiety J2SE java.applet, java.awt, java.beans, java.io, java.lang, java.math, java.net, java.rmi, java.security, java.sql, java.text, java.util, javax.accessibility, javax.swing, org.omg

88 Klasy zagnieżdżone Począwszy od wersji 1.1 języka Java wprowadzono możliwość definiowania klas wewnętrznych (inner classes) jako elementów składowych innych klas; Można je definiować albo lokalnie wewnątrz ciała klasy zewnętrznej, albo (anonimowo) jako wyrażenie w bloku

89 Cechy klas zagnieżdżonych Nazwy klasy wewnętrznej nie można użyć na zewnątrz jej zasięgu. Pomaga to w strukturalizacji klas w obrębie pakietu. Kod klasy wewnętrznej może wykorzystywać proste nazwy z zasięgów otaczających, w tym zarówno nazwy zmiennych składowych klasy, jak i nazwy zmiennych wystąpienia klas otaczających oraz zmienne lokalne otaczających bloków.

90 Klasy wewnętrzne a pola i metody static Czy można definiować pola static w klasie wewnętrznej? Zwykle klasa wewnętrzna nie może deklarowaćżadnej ze swoich składowych ze słowem kluczowym static, ponieważ ciało klasy wewnętrznej jest w zasięgu klasy otaczającej (patrz pierwszy slajd) W rezultacie zmienne statyczne dla klasy wewnętrznej muszą być umieszczane w klasie otaczającej To samo tyczy się metod Klasa wewnętrzna ( przeciwieństwie do normalnej) może być statyczna!! (patrz drugi slajd)

91

92

93 Jeszcze parę informacji Jeżeli klasa wewnętrzna posiada nazwę, może być deklarowana ze słowami kluczowymi private, protected, final, lub abstract. Natomiast klasy anonimowe są prywatne w bloku, w którym są zadeklarowane, ponieważ nie mogą być wykorzystane na zewnątrz tego bloku. Zagnieżdżanie klas w ten właśnie sposób pozwala dowolnej klasie wysokiego poziomu dla logicznie powiązanych klas poziomu niższego uzyskać podobną do pakietu organizację, w której wszystkie klasy mają pełny dostęp do pól prywatnych.

94 Kompilacja klas zagnieżdżonych Jak nie mylić klas zewnętrznych o tej samej nazwie z klasami wewnętrznymi innych klas? Nazwy klas wewnętrznych są przekształcane aby uniknąć dwuznaczności Nazwy są kodowane przez kompilator, który bierze ich postaćźródłową, kwalifikuje je kropkami, po czym zamienia każdą kropkę po nazwie klasy na znak dolara ( $ ). Tak więc po kompilacji pliku źródłowego Outer1.java otrzymamy dwa pliki z B-kodem: Outer1.class oraz Outer1$Inner.class. Oczywiście interpretacji poddamy plik Outer1.class.

95

96 Istnienie klas zagnieżdżonych wymaga pewnej zmiany w nazwach kwalifikowanych przy definiowaniu zmiennych typu klasy wewnętrznej oraz hierarchii dziedziczenia. Istotne zmiany to: Inicjowanie zmiennych odnośnikowych typu klasy wewnętrznej słowem kluczowym this, odpowiadającym bieżącemu obiektowi klasy zewnętrznej. Kwalifikowanie dziedziczenia od klasy wewnętrznej jej nazwą, umieszczaną po nazwie klasy zewnętrznej i kropce. Ilustracją tego sposobu kwalifikacji nazw jest podany niżej przykład.

97

98 Omówienie przykladu W wyniku kompilacji zostaną utworzone cztery pliki z B-kodem: Vehicle.class, Vehicle$Wheel.class, WireRimWheel.class oraz Auto.class.

99 Mechanizm wyjątków w Javie (ang. Exceptions) Programista tworząc aplikację nie zawsze jest w stanie w pełni przewidzieć jej zachowanie, w szczególności gdy ma do czynienia ze zdarzeniami od aplikacji niezależnymi np. użytkownik, sieć, obsługą urządzenia zewnętrznego Język Java umożliwia zabezpieczenie się przez nieprzewidzianymi błędami jakie mogą wystąpić podczas działania programu. W przypadku wystąpienia błędu sterowanie programu wychodzi z aktualnie wykonywanej metody i przechodzi do specjalnego bloku obsługi wyjątku (try i catch). Mechanizm obsługi wyjątków zwiększa niezawodność programów Java.

100 Wykrywanie błędów w programie Oczywiście najlepiej jest wykrywać błędy już w fazie kompilacji, ale nie zawsze programy kompilowalne są poprawne. Fajnie, jest gdy możemy obsłużyć nieprzewidziany przez nas błąd podczas działania programu a nie podczas kompilacji Filozofia Java obsługi błędów polega na wymuszeni na programiście pewnych zachowań zwiększających jakość aplikacji (czyt. programista często jest zmuszany do obsługi błędów przy wywoływaniu niektórych metod).

101 Filozofia wyjątku Wiemy, że w danym momencie może wystąpić wyjątek i wiemy, że nie wiemy co z nim zrobić Przekażmy więc ten problem do innego bloku programu ( argumentem przekazania jest wyjątek zawierający opis błędu), który wie co z tym błędem zrobić

102 Kiedy obsłużyć wyjątek Programista sam może (zaraz o tym powiemy) decydować czy w danym momencie ma być wyrzucany wyjątek czy też nie. ZASADA: Wyjątek jest wtedy gdy w danym momencie przetwarzania nie mamy wystarczająco informacji aby poradzić sobie z danym problemem.

103 Wyjątki W języku Java istnieje bardzo rozbudowana hierarchia (drzewo) predefiniowanych klas wyjątków, których superklasą jest klasa Throwable Można definiować sobie własne wyjątki dziedziczące po klasie Throwable

104 No a jak to wygląda w praktyce Dla obsługi wyjątków wprowadzono pięć słów kluczowych: throw, throws, try, catch i finally. Słowo kluczowe throw służy do jawnego zgłaszania wyjątków nieweryfikowalnych i występuje w instrukcji throw o składni throw wyrażenie; gdzie wyrażenie musi oznaczać zmienną lub wartość typu referencyjnego do klasy Throwable lub jej podklas. Zgłoszenie wyjątku w instrukcji throw spowoduje natychmiastowe opuszczenie bloku lub funkcji zawierającego instrukcję throw i wyszukanie instrukcji try, której fraza catch przechwyci zgłoszony wyjątek. Jeżeli nie ma takiej instrukcji try, zostanie wywołana metoda UncaughtException i wykonanie programu (lub wątku) zostanie zakończone. Fraza:throws klasa_wyjątków może wystąpić w nagłówku funkcji (metodzie wystąpienia, konstruktorze, funkcji klasy) Blok frazy finally (jeśli występuje) jest wykonywany zawsze gdy kończy się wykonanie instrukcji try i to nawet wtedy, gdy wykonanie try zostaje gwałtownie przerwane. Zobaczmy przykład:

105

106

107 Współbieżność w języku Java Obiekty zapewniają sposób podziału programu na niezależne części. Często jednak musimy również podzielić program na rozłączne i niezależnie działające podzadania Każde z niezależnych zadań nazywa się wątkiem (ang. Thread) Z punktu widzenia programisty każdy wątek działa samodzielnie posiadając dokładnie jeden procesor dla siebie

108 Proces a wątek Proces jest wykonującym się programem z własną przestrzenią adresową (przydzieloną mu pamięcią) Wątek jest osobnym, pojedynczym sekwencyjnym przepływem sterowania działającym w ramach jednego procesu

109 Cechy programowania współbieżnego 1. Wymaga innego sposobu myślenia o programowaniu niż klasyczne programowanie strukturalne czy obiektowe 2. W każdym języku programowania programowanie współbieżne jest podobne i wymaga podobnego sposobu myślenia

110 Wątki w Java Na potrzeby wykładu poznamy jedynie podstawową zasadę działania mechanizmu wątków Dogłębna analiza wymaga zagłębienia się w filozofię i szczegółowe rozwiązania języka

111 Po co stosować wątki? Interfejsy Obsługa urządzeń sieciowych Obsługa urządzeń elektronicznych Optymalizacja zadań

112 Jak to się pisze? Poniższy przykład ilustruje jak się w Java tworzy wątki Klasa java.lang.thread Implementacja interfejsu Runnable Metoda run() Spójrzmy na przykład:

113

114 Wynik działania programu Wyjście z programu będzie mieć postać zależną od maszyny (wątki mogą się przeplatać): Name of x: Thread-0 Priority of x= 5 Name of y: Thread-1 Priority of y= 5 End of main() Msg 1 from Thread-0 Msg 2 from Thread-0 Msg 3 from Thread-0 Msg 1 from Thread-1 Msg 4 from Thread-0 Msg 2 from Thread-1 Thread-0 DONE!! Msg 3 from Thread-1 Msg 4 from Thread-1 Thread-1 DONE!! Uwaga. Nie należy wywoływać jawnie metody run(). Bezpośrednie wywołanie run() spowoduje jej wykonanie w normalny, sekwencyjny sposób

115 Cechy wątków Priorytet wątków (liczby od 1-10) oznacza ważność wątków. JVM w zależności od priorytetu wątku przydziela odpowiednio (z określonym prawdopodobieństwem) czas procesora. setpriority(int priority); Dwa osobne wątki działają w sumie wolniej niż jeden wątek główny.

116 Wielowątkowość Jeżeli maszyna jest wieloprocesorowa wątki mogą być naprawdę wykonywane współbieżnie, w przeciwnym wypadku mamy do czynienia z wielowątkowością wywłaszczeniową. Wielowątkowość wywłaszczeniowa polega na rozdzielaniu poszczególnym wątkom kwantów procesora (w zależności od ich priorytetu) Wątki nie są karmione procesorem jeden po drugim, lecz na przemian.

117 Terminy związane z wielowątkowością Terminy związane: Zagłodzenie wątku Łączenie wątków Wątki demony Uśpienie wątków

118 Zagłodzenie wątku Uwaga. Zagłodzenie może się zdarzyć wtedy, gdy jeden lub więcej wątków w programie jest blokowanych przed dostępem do pewnego zasobu i wskutek tego nie mogą biec dalej. Krańcową postacią zagłodzenia jest zakleszczenie lub impas (deadlock). Impas pojawia się wtedy, gdy dwa lub więcej wątków czeka na warunek, który nie może być spełniony; typowym przykładem jest sytuacja, gdy istnieją dwa wątki i każdy z nich czeka na wykonanie czegoś przez partnera

119 Interfejs Runnable Mówiliśmy już wcześniej, że wątki można definiować na dwa sposoby Dziedziczenie po klasie java.lang.thread Implementacja interfejsu Runnable Właściwie oba te rozwiązania oznaczają to samo, gdyż klasa Thread implementuje interfejs Runnable, a klasa dziedzicząca po niej też go musi definiować. Różnice są tylko w sposobie deklarowania wątku, czyli z punktu programisty. Z koncepcyjnego punktu widzenia różnic nie ma. Spójrzmy na przykład:

Programowanie w Internecie. Java

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

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan

Bardziej szczegółowo

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykł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ółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

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

Bardziej szczegółowo

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

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

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

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Java EE produkcja oprogramowania

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

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

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

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wykład 4: Klasy i Metody

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

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Dziedziczenie. dr Jarosław Skaruz

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

Bardziej szczegółowo

Wątki w Javie. Piotr Tokarski

Wątki w Javie. Piotr Tokarski Wątki w Javie Piotr Tokarski Wprowadzenie Co to są wątki? Co to są wątki? Każdy program ma przynajmniej jeden wątek Co to są wątki? Każdy program ma przynajmniej jeden wątek Wątki są po to, by symulować

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

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

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

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

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

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. 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ółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Bardziej szczegółowo

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

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

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

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

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

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

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 8 Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Java Język programowania

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

Bardziej szczegółowo

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? 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ółowo

Wykład 2: Podstawy Języka

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

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Spis treści. 1 Java T M

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

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Wykład 6: Dziedziczenie

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

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

Bardziej szczegółowo

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. 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ółowo

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 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ółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

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

Bardziej szczegółowo

Aplikacje w środowisku Java

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 1. 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ółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Aplikacje w Javie- wykład 11 Wątki-podstawy

Aplikacje w Javie- wykład 11 Wątki-podstawy 1 Aplikacje w Javie- wykład 11 Wątki-podstawy 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/ http://docs.oracle.com/javase/9/docs/

Bardziej szczegółowo

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. 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ółowo

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Wprowadzenie do języka Java

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

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

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

Bardziej szczegółowo

Programowanie obiektowe

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;

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

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)

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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 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ółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

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

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

2. Składnia, środowisko i konwencje w Javie

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,

Bardziej szczegółowo

Definicje klas i obiektów. Tomasz Borzyszkowski

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

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Podstawy programowania obiektowego

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

Bardziej szczegółowo

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 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ółowo

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

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

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

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

Bardziej szczegółowo

Podstawy języka Java. przygotował: pawel@kasprowski.pl

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

Bardziej szczegółowo

Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja...

Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja... Java niezbędnik programisty spotkanie nr 3 Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja... 1 Definicja klasy [modyfikator] class nazwa_klasy { [modyfikator] nazwa_typu

Bardziej szczegółowo

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

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

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Podstawowe części projektu w Javie

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

Bardziej szczegółowo

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 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ółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

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

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykł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ółowo

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003 Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy

Bardziej szczegółowo