Programowanie Obiektowe Java
|
|
- Szczepan Cybulski
- 5 lat temu
- Przeglądów:
Transkrypt
1 Programowanie Obiektowe Java Małgorzata Janik Zakład Fizyki Jądrowej
2 Projekty Szczegoły na temat projektów można znaleźć na stronie: Targi Pracyhttps://targipracyit.pl/PW IT 2/30
3 Powtórzenie Który element Javy sprawia, że stosunkowo łatwo odpalać programy na różnych platformach / systemach operacyjnych?
4 Maszyna Wirtualna
5 Pliki nagłówkowe W C/C++ używaliśmy plików nagłówkowych (.h lub.hpp) zawierające opis interfejsu modułu: Deklaracje zmiennych, funkcji, klas, itp. W Javie (ani w C#) nie występują.
6 Programowanie Obiektowe Trochę historii Programowanie Strukturalne Programowanie Zorientowane Obiektowo Zachowania i Atrybuty
7 Zamierzchła przeszłość Pierwsze komputery były programowane bezpośrednio z użyciem kodu maszynowego lub z wykorzystaniem asemblera. Pierwsze asemblery przypadają na połowę lat 50. Przykład kodu asemblera dla procesora Motorola 8-bit 6800 Przykład kodu maszynowego (kolumna druga rozpoczynająca się od 6C 36 00) Źródło: Wikipedia
8 Zamierzchła przeszłość Pierwsze komputery były programowane bezpośrednio z użyciem kodu maszynowego lub z wykorzystaniem asemblera. Pierwsze asemblery przypadają na połowę lat 50. Kontrola przepływu w programie odbywała się głównie przy pomocy warunkowych i bezwarunkowych instrukcji skoku. Instrukcja skoku (goto) pozwala na powtórne wykorzystanie tego samego fragmentu kodu ale sprawia też, że program jest zdecydowanie mniej czytelny. Fragmentu kodu w Perlu
9 Programowania radosne początki Jeżeli znamy podstawowe konstrukcje algorytmiczne i potrafimy je zagnieżdżać, wówczas teoretycznie jesteśmy w stanie napisać każdy algorytm. Jednakże, długość kodu programu nastaje się coraz większa i po pewnym czasie nie jesteśmy w stanie objąć wszystkiego wzrokiem i umysłem. Zastosowanie podprogramu (np. funkcji) pozwala podzielić algorytm na zbiór mniejszych, wydzielonych części.
10 Programowanie strukturalne Definicja: paradygmat programowania opierający się na podziale kodu źródłowego programu na procedury i hierarchicznie ułożone bloki. Rozwijał się w opozycji do programowania wykorzystującego proste instrukcje warunkowe i skoki (goto). Początki programowania strukturalnego przypadają na Lata 60. XX wieku, a ważnym głosem w dyskusji o programowaniu strukturalnym był list Edsgera Dijkstry z 1974 roku: Instrukcja goto powinna zostać usunięta z wszystkich wysokopoziomowych języków programowania (to znaczy z wszystkich poza - prawdopodobnie - czystym kodem maszynowym. Programowanie strukturalne zwiększa czytelność i ułatwia analizę programów, co stanowi znaczącą poprawę w stosunku do trudnego w utrzymaniu spaghetti code często wynikającego z użycia instrukcji goto.
11 Programowanie strukturalne Definicja: paradygmat programowania opierający się na podziale kodu źródłowego programu na procedury i hierarchicznie ułożone bloki. Rozwijał się w opozycji do programowania wykorzystującego proste instrukcje warunkowe i skoki (goto). Początki programowania strukturalnego przypadają na Lata 60. XX wieku, a ważnym głosem w dyskusji o programowaniu strukturalnym był list Edsgera Dijkstry z 1974 roku: Instrukcja goto powinna zostać usunięta z wszystkich wysokopoziomowych języków programowania (to znaczy z wszystkich poza - prawdopodobnie - czystym kodem maszynowym. Programowanie strukturalne zwiększa czytelność i ułatwia analizę programów, co stanowi znaczącą poprawę w stosunku do trudnego w utrzymaniu spaghetti code często wynikającego z użycia instrukcji goto. Spagetti code = trudny do zrozumienia kod źródłowy programu. Używano wielu instrukcji warunkowych i następnych w nich zagnieżdżonych konstrukcji GOTO. Droga przez kolejne rozkazy była tak poplątana, że odczytanie takiego kodu i zrozumienie go było bardzo uciążliwe, a ewentualne modyfikacje zwykle prowadziły do błędów w programie.
12 Programowanie strukturalne Programowanie strukturalne polega na tworzeniu programów wyłącznie w oparciu o trzy kompozycje algorytmiczne: Sekwencyjną (instrukcje wykonują się jedna po drugiej), Warunkową (instrukcje warunkowe if, if else, switch) Iteracyjną (pętle for, while, do while). Zabronione są algorytmy wykorzystujące instrukcję skoku (GOTO).
13 Problemy z programowaniem strukturalnym W przypadku programowania strukturalnego często mamy doczynienia z danymi,które muszą być widoczne w całym programie (dla wielu funkcji) i wiele funkcji może je zmieniać = tzw. dane globalne. W takim wypadku każda funkcja może zmienić dane, które mają wpływ na działanie wszystkich innych elementów prorgamu. Czyli jedna niewielka zmiana może popsuć działanie całego kodu w wielu różnych miejscach.
14 Problemy z programowaniem strukturalnym Koncepcja programowania obiektowego pierwotnie pojawiła się w Simuli 67, języku zaprojektowanym do zastosowań symulacyjnych, stworzonym przez Ole-Johana Dahla i Kristena Nygaarda z Norsk Regnesentral w Oslo. Mówi się, że pracowali oni nad symulacjami zachowania się statków i mieli kłopoty z opanowaniem wszystkich zależności, jakie wywierały na siebie nawzajem wszystkie parametry statków w symulacji. Wtedy wpadli na pomysł, by pogrupować typy statków w różne klasy obiektów, a każda z klas sama odpowiadałaby za określanie własnych danych i zachowań. Upraszczamy program, grupując kod w klasy, w których każda jest odpowiedzialna tylko za samą siebie (swoje dane i swoje funkcje) Programowanie obiektowe zyskało status techniki dominującej w połowie lat 80 (dzięki C++)
15 Programowanie Obiektowe Programy definiujemy za pomocą obiektów. Koncepcja obiektów fizycznych jest znana każdemu Możemy sobie wyobrazić samochód, człowieka, toster.
16 Programowanie Obiektowe Programy definiujemy za pomocą obiektów. Koncepcja obiektów fizycznych jest znana każdemu. Obiekty w programowaniu to są modele rzeczywistych obiektów fizycznych. Samochód Człowiek Toster - kolor ZIELONY - nazwisko EINSTEIN - producent HB - marka DAEWOO - zawód FIZYK - typ POP-UP + Tankuj() + Śpij() + Grzej() Programowanie+ Obiektowe (Wykład) Jedź() + GenerujNobla() + WyrzućTosty()
17 Programowanie Obiektowe Obiekty w programie reprezentują w pewnym stopniu obiekty rzeczywiste Jeśli chcemy zaprogramować aplikacje dla zarządzania szpitalem, zapewne będziemy musieli stworzyć obiekty odpowiadające pacjentom, lekarzom, pielęgniarkom, ochronie, W rzeczywistości to obiekty oddziałują ze sobą. W przypadku programów komputerowych jest podobnie: obiekty wysyłają do siebie wiadomości (wywołanie funkcji na innym obiekcie), a czasem uzyskują informacje zwrotne (zwracane zmienne).
18 Programowanie Obiektowe Na obiekty składają się atrybuty i zachowania: Toster Samochód - kolor ZIELONY - marka DAEWOO + Tankuj() + Jedź() atrybuty zachowania - producent HB - typ POP-UP + Grzej() + WyrzućTosty() Obiekty zawierają więc zarówno dane (wartości atrybutów) oraz zachowanie (możliwe akcje które dany obiekt może wykonać) zarówno - różnica między programowaniem proceduralnym a obiektowym
19 Programowanie Obiektowe Na obiekty składają się atrybuty i zachowania: Toster Samochód - kolor ZIELONY - marka DAEWOO + Tankuj() + Jedź() atrybuty zachowania - producent HB - typ POP-UP + Grzej() + WyrzućTosty() Dobrze zaprojektowany program zakłada, że wartości atrybutów nie może zmienić nic poza obiektem, do którego należą czyli wszystkie zmiany następują poprzez wywołanie odpowiednich zachowań (wywołanie funkcji) Enkapsulacja, metody Set i Get. Każdy obiekt odpowiada za swoje dane.
20 Atrybuty i ich wartości Należy pamiętać, że atrybut (pole składowe) i jego wartość, to dwie różne rzeczy : Samochód - kolor ZIELONY - marka DAEWOO atrybuty wartości atrybutów Każdy samochód będzie miał kolor, ale nie każdy będzie zielony. Sam atrybut jest jak pusta formatka, w którą możemy wpisywać wartości charakterystyczne dla naszego obiektu (konkretnej instancji naszej klasy).
21 Atrybuty i ich wartości Należy pamiętać, że atrybut (pole składowe) i jego wartość, to dwie różne rzeczy : Sam atrybut jest jak pusta formatka, w którą możemy wpisywać wartości charakterystyczne dla naszego obiektu (konkretnej instancji naszej klasy).
22 Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; double x, y; public static void main(string[] args) { Punkt p1 = new Punkt (30,30); System.out.println(p1.Wypisz());
23 Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; double x, y; public static void main(string[] args) { Punkt p1 = new Punkt (30,30); System.out.println(p1.Wypisz()); W programowaniu obiektowym klasa reprezentuje obiekty. Definicja klasy zwykle nie reprezentuje konkretnego obiektu, ale raczej typ.
24 Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; double x, y; public static void main(string[] args) { Punkt p1 = new Punkt (30,30); Instancja klasy = konkretny obiekt. System.out.println(p1.Wypisz());
25 Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; Atrybuty. double x, y; Zwykle nazywamy je polami (ang. fields). Nie powinny być dostępne z zewnątrz. public static void main(string[] args) { Punkt p1 = new Punkt (30,30); System.out.println(p1.Wypisz());
26 Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; double x, y; Zachowania / akcje, które możemy wywołać na naszym obiekcie. Np. utworzenie obiektu o konkretnych public static void main(string[] args) { wartościach atrybutów czy zwrócenie Punkt p1 = new Punkt (30,30); informacji o obiekcie w postaci napisu System.out.println(p1.Wypisz()); (String). Czyli funkcje składowe (metody).
27 Obiektowa Java vs. C++ W latach 90 to C++ był uważany za lidera programowania obiektowego. Ale C++ jest językiem hybrydowym : pozwala na programowanie strukturalne, bądź obiektowe, bądź miksowanie obu paradygmatów co w oczywisty sposób może prowadzić (i często prowadzi) do powstawania kodu który jest skomplikowany i trudny w utrzymaniu Java stworzona została od początku jako język służący do programowania obiektowego
28 Powtórzenie Struktura Programu Struktura Klasy Metody Dziedziczenie Oraz nowości Klasa Object Konstruktory i Super
29 Struktura programu package... //deklaracja pakietu, opcjonalna ale zalecana import... // deklaracje importu public class Punkt { //deklaracje konstruktorów Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; //deklaracje metod public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; //deklaracje pól double x, y; public class KlasaStartowa { public static void main(string[] args) { Punkt p1 = new Punkt (30,30); System.out.println(p1.Wypisz()); //funkcja główna
30 Struktura klasy class NazwaKlasy { //deklaracje konstruktorów NazwaKlasy(lista parametrów){ //treść/zawartość konstruktora //deklaracje metod Typ1 metoda1(lista parametrów) { //treść/zawartość metody1 return obiekttyp1;... //deklaracje pól Typ pole1;... Typ polen;
31 Struktura klasy class NazwaKlasy { //deklaracje konstruktorów NazwaKlasy(lista parametrów){ //treść/zawartość konstruktora //deklaracje metod Typ1 metoda1(lista parametrów) { //treść/zawartość metody1 return obiekttyp1;... //deklaracje pól Typ pole1;... Typ polen; Metody = Funkcje składowe
32 Definiowanie metody [modyfikatory] TypZwracanejWartości nazwametody (TypArgumentu1 zmienna1,,typargumentun zmiennan) { TypZwracanejWartości zwracanawartość; // kod metody, w którym można korzystać ze zmiennych 1..N return zwracanawartość; // jeśli metoda void - nic nie zwraca Metody mogą być zadeklarowane bezpośrednio w klasie lub odziedziczone po nadklasach lub interfejsach.
33 Metody public class Punkt extends Object{ double x = 0, y = 0; Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; void przesun(double parametr1, double parametr2){ x += parametr1; y += parametr2; double odlegloscodpoczatkuukladu(){ return Math.sqrt(x*x+y*y); String tostring(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text;
34 Korzystanie z utworzonych metod public class PunktTest2 { public static void main(string[] args) { Punkt p = new Punkt(0,0); int i=0; while (i<10){ p.przesun(5, 10); double d = p.odlegloscodpoczatkuukladu(); System.out.println(p + " Odległość od (0, 0): " + d); i++;
35 Struktura klasy class NazwaKlasy { //deklaracje konstruktorów NazwaKlasy(lista parametrów){ //treść/zawartość konstruktora //deklaracje metod Typ1 metoda1(lista parametrów) { //treść/zawartość metody1 return obiekttyp1;... //deklaracje pól Typ pole1;... Typ polen;
36 Struktura klasy [modyfikatory] class NazwaKlasy [extends NazwaKlasyNadrzednej] [implements NazwaInterfejsu] { //deklaracje konstruktorów NazwaKlasy(lista parametrów){ //treść/zawartość konstruktora //deklaracje metod Typ1 metoda1(lista parametrów) { //treść/zawartość metody1 return obiekttyp1;... //deklaracje pól Typ pole1;... Typ polen;
37 Struktura klasy [modyfikatory] class NazwaKlasy [extends NazwaKlasyNadrzednej] [implements NazwaInterfejsu] { //deklaracje konstruktorów NazwaKlasy(lista parametrów){ //treść/zawartość konstruktora //deklaracje metod Typ1 metoda1(lista parametrów) { //treść/zawartość metody1 return obiekttyp1;... //deklaracje pól Typ pole1;... Typ polen;
38 Struktura klasy [modyfikatory] class NazwaKlasy [extends NazwaKlasyNadrzednej] [implements NazwaInterfejsu] { //deklaracje konstruktorów extends oznacza dziedziczenie NazwaKlasy(lista parametrów){ = rozszerzenie klasy nadrzędnej //treść/zawartość konstruktora Możemy dziedziczyć po własnych klasach, albo tych zawartych w standardowym API. Jeśli chcemy uzyskać spersonalizowaną ramkę, dziedziczymy po JFrame. //deklaracje metod Jeśli chcemy uzyskać spersonalizowany przycisk, dziedziczymy po JButton. Typ1 metoda1(lista parametrów) { //treść/zawartość metody1 return obiekttyp1;... //deklaracje pól Typ pole1;... Typ polen;
39 Szybkie tworzenie klasy pochodnej w Eclipse 39/85
40 Dziedziczenie package pl.wyklad1.klasapokazowa; public class KlasaPrzykladowa { public class KlasaPochodna extends KlasaPrzykladowa { // deklaracje konstruktorów KlasaPrzykladowa() { x = 0; tekst = "domyslny"; public void wypisz() { System.out.println(x + " " + y + " " + tekst); int y = 10; // deklaracje metod public void wypisz() { System.out.println(x + " " + tekst); // deklaracje pól int x; String tekst; Klasa Nadrzędna Superclass Klasa Pochodna (podrzędna) Subclass
41 Szybkie tworzenie klasy (Object)
42 Struktura klasy [modyfikatory] class NazwaKlasy [extends NazwaKlasyBazowej] [implements NazwaInterfejsu] { //deklaracje konstruktorów extends oznacza dziedziczenie. NazwaKlasy(lista parametrów){ Możemy dziedziczyć po własnych klasach, //treść/zawartość konstruktora albo tych zawartych w standardowym API. Jeśli chcemy uzyskać ramkę, dziedziczymy po JFrame. //deklaracje metod Jeśli chcemy uzyskać przycisk, dziedziczymy po JButton. metoda1(lista parametrów) { Tworząc nową klasę w Javie zawsze używamy dziedziczenia. //treść/zawartość metody1 Jeśli nie napiszemy jawnie extends, return wobiekttyp1; takim wypadku dziedzicznymy po klasie Object. Typ1... //deklaracje pól Typ pole1;... Typ polen;
43 Przykład: public class Punkt { //konstruktor dwuargumentowy Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; //pola double x = 0, y = 0; Nawet jeśli nie ma jawnego dziedziczenia, powstała klasa jest rozszrzerzeniem klasy Object Powyższa deklaracji klasy jest równoważna temu: public class Punkt extends Object { double x = 0, y = 0; Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2;
44 Klasa Object
45 Klasa Object
46 Przykład przedefiniowania (przeciążenia) metody tostring() odziedziczonej z klasy bazowej Object public class Punkt extends Object{ double x = 0, y = 0; Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; public String tostring(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text;
47 Klasa Object
48 metoda equals() Służy ona do porównywania, czy dwa obiekty są sobie równe. Implementując metodę equals(), należy pamiętać o kilku zasadach metoda equals musi być zwrotna, czyli a.equals(a)==true. metoda equals musi być symetryczna, czyli a.equals(b)==b.equals(a). metoda equals musi być przechodnia, czyli jeżeli a.eqauls(b)==true i b.equals(c)==true to a.equals(c)==true. (Jednak gdy: a.equals(b)==false i b.equals(c)==false to a.equals(c) może być true) metoda equals musi być konsekwenta, czyli gdy dwa razy (w różnych chwilach czasu) porównujemy te same obiekty, to wynik tego porównania powinien być taki sam. obiekt jest nie równy null, czyli a.equals(null)==false dla każdego a nie będącego null To metoda, której powinniśmy używać porównując dwa obiekty. Np. dwa String-i: if (ala == Ala ) źle! if (ala.equals( Ala )) dobrze
49 Struktura klasy [modyfikatory] class NazwaKlasy [extends NazwaKlasyNadrzednej] [implements NazwaInterfejsu] { //deklaracje konstruktorów NazwaKlasy(lista parametrów){ //treść/zawartość konstruktora //deklaracje metod Typ1 metoda1(lista parametrów) { //treść/zawartość metody1 return obiekttyp1;... //deklaracje pól Typ pole1;... Typ polen; Konstruktory i dziedziczenie
50 Konstruktor Specjalna metoda danej klasy, wywoływana podczas tworzenia jej instancji. Podstawowym zadaniem konstruktora jest zainicjowanie obiektu. W C++/Javie: Nazywa się tak samo jak klasa Nic nie zwraca (brak napisu void przed nazwą) Może przyjmować: 0 parametrów (konstruktor domyślny / bezargumentowy) kilka parametrów (konstruktory z argumentami) Obiekt tej samej klasy (konstruktor kopiujący)
51 Konstruktory public class Punkt{ Punkt (){ x = 0; y = 0; Konstruktor domyślny Punkt (double parametr1, double parametr2){ x = parametr1; Konstruktor z y = parametr2; parametrami Punkt (Punkt p){ x = p.x; y = p.y; Konstruktor kopiujący double x, y;
52 Konstruktory i dziedziczenie super(p1, p2) jest równoważne z: new Punkt(p1,p2) public class Kolo extends Punkt { double promien = 0; public Kolo(double parametr1, double parametr2, double parametr3) { super(parametr1, parametr2); promien = parametr3; public Kolo(){ super(); promien = 10; Konstruktor bezargumentowy domyślne parametry klasy public Kolo (Punkt p, double parametr ){ super(p.x, p.y); promien = parametr; public Kolo(Kolo k){ super(k.x,k.y); promien = k.promien; Konstruktor kopiujący
53 Konstruktory i dziedziczenie public class Kolo extends Punkt { double promien = 0; public Kolo(double parametr1, double parametr2, double parametr3) { super(parametr1, parametr2); promien = parametr3; public Kolo(){ promien = 10; Uwaga, jeśli klasa Punkt nie miałaby żadnego konstruktora: OK. Java stworzyłaby pusty konstruktor domyślny dla klasy nadrzędnej. public Kolo (Punkt p, double parametr ){ super(p.x, p.y); promien = parametr; public Kolo(Kolo k){ super(k.x,k.y); promien = k.promien; Konstruktor kopiujący
54 Konstruktory i dziedziczenie public class Kolo extends Punkt { double promien = 0; public Kolo(double parametr1, double parametr2, double parametr3) { super(parametr1, parametr2); promien = parametr3; Uwaga, jeśli klasa Punkt nie miałaby konstruktora public Kolo(){ bezargumentowego, ALE miała inny konstruktor, promien = 10; pojawi się błąd: Implicit super constructor punkt() is undefined. public Kolo (Punkt p, double parametr ){ super(p.x, p.y); promien = parametr; public Kolo(Kolo k){ super(k.x,k.y); promien = k.promien; Konstruktor kopiujący
55 Konstruktory i dziedziczenie public class Kolo extends Punkt { double promien = 0; public Kolo(double parametr1, double parametr2, double parametr3) { super(parametr1, parametr2); promien = parametr3; public Kolo(){ super(0,0); promien = 10; public Kolo (Punkt p, double parametr ){ super(p.x, p.y); promien = parametr; public Kolo(Kolo k){ super(k.x,k.y); promien = k.promien; Konstruktor kopiujący
56 Użycie super jako Konstruktora Konstruktory nie są dziedziczone Wywołanie konstruktora nad-klasy: super(lista-parametrow) Musi być pierwszą instrukcją konstruktora podklasy: class NadKlasa {... class PodKlasa extends NadKlasa { PodKlasa(...) { super(...);...
57 Użycie konstruktorów public class KoloTest { public static void main(string[] args) { Kolo a,b,c,d,e; // Wykorzystanie różnych konstruktorów: a = new Kolo (10,10,5); b = new Kolo(); Punkt p1 = new Punkt (30,30); c = new Kolo (p1, 30); d = new Kolo (new Punkt(40,40), 40 ); e = new Kolo(c); System.out.println("" + a + "\n" + b + "\n"+ c + "\n" + d + "\n"+ e); // Jeśli klasa pochodna Kolo nie ma zdefiniowanej własnej metody // tostring() wykorzystywana jest metoda tostring klasy bazowej Punkt System.out.println(new Kolo(60,60,60)); // tworzenie "chwilowego" // obiektu bez referencji, na potrzeby wywołania metody
58 Odwołanie do Nadklasy przez super Odwołanie do elementu nad-klasy: super.pole super.metoda() Stosowane szczególnie gdy składowe podklasy przesłaniają składowe nad-klasy o tych samych nazwach.
59 Użycie super w metodach public class Superclass { public void printmethod() { System.out.println("Wypisano w nadklasie."); Jeśli nadpiszemy metodę z nadklasy, ale nadal chcemy ją wykorzystać, możemy użyć słowa kluczowego super. public class Subclass extends Superclass { // przeciąża (nadpisuje) metodę z nadklasy public void printmethod() { super.printmethod(); System.out.println("Wypisano w podklasie"); public static void main(string[] args) { Subclass s = new Subclass(); s.printmethod(); Efekt: Wypisano w nadklasie. Wypisano w podklasie.
60 Szybkie tworzenie klasy pochodnej w Eclipse Stwórz metody: Konstruktory z klasy nadrzędnej 60/85
61 Konstruktory z klasy nadrzędnej public class ZamykaneOkienko extends JFrame { public ZamykaneOkienko() throws HeadlessException { public ZamykaneOkienko(GraphicsConfiguration arg0) { super(arg0); public ZamykaneOkienko(String arg0) throws HeadlessException { super(arg0); public ZamykaneOkienko(String arg0, GraphicsConfiguration arg1) { super(arg0, arg1); Konstruktory klasy nadrzędnej dodane przez Eclipse a /** args */ public static void main(string[] args) { ZamykaneOkienko zo = new ZamykaneOkienko(); zo.setvisible(true); 61/85
62 Konstruktory z klasy nadrzędnej public class ZamykaneOkienko extends JFrame { public ZamykaneOkienko() throws HeadlessException { this.setsize(640,480); setdefaultcloseoperation(exit_on_close); public ZamykaneOkienko(GraphicsConfiguration arg0) { super(arg0); this.setsize(640,480); setdefaultcloseoperation(exit_on_close); Nasze rozszerzenie klasy nadrzędnej: konkretne ustawienia, dodatkowe elementy. public ZamykaneOkienko(String arg0) throws HeadlessException { super(arg0); this.setsize(640,480); setdefaultcloseoperation(exit_on_close); Konstruktory klasy nadrzędnej dodane przez Eclipse a public ZamykaneOkienko(String arg0, GraphicsConfiguration arg1) { super(arg0, arg1); this.setsize(640,480); setdefaultcloseoperation(exit_on_close); /** args */ public static void main(string[] args) { ZamykaneOkienko zo = new ZamykaneOkienko(); zo.setvisible(true); 62/85
63 Szybkie tworzenie klasy pochodnej w Eclipse 63/85
64 Szybkie tworzenie klasy pochodnej w Eclipse Metody abstrakcyjne (w C++ mówiliśmy czysto wirtualne ) to metody niedokończone. Jeśli klasa nadrzędna ma takie metody, to musimy je dokończyć w klasie podrzędnej, by móc stworzyć obiekt danej klasy Eclipse pomaga nam w tym przygotowując odpowiedni kod. Jeśli dana klasa nadrzędna nie ma takiej metody, zaznaczenie checkbox a nic nie zmieni. 64/85
65 Przygotowanie do laboratorium Komponenty w Javie Podpowiedzi Eclipse a Layout Manager
66 Komponenty Okienka: JFrame lub JFrame frame = new JFrame(); frame.setsize(640, 480); Frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setvisible(true); public class MyFrame extends JFrame { public MyFrame() { this.setsize(640,480); setdefaultcloseoperation(exit_on_close); public static void main(string[] args) { MyFrame mf = new MyFrame(); mf.setvisible(true); (zalecane) Dla domyślnego okna naciśnięcie [X] nie powoduje zamkniecia aplikacji. Aby to zmienić, należy wywołać metodę setdefaultcloseoperation(). 66/85
67 SetDefaultCloseOperation() EXIT_ON_CLOSE DISPOSE_ON_CLOSE zamyka aplikację zamyka ramke, usuwa obiekt reprezentujacy ramke, ale pozostawia pracujaca aplikację DO_NOTHING_ON_CLOSE nic nie robi (pozostawia ramke otwarta i kontynuuje prace aplikacji) HIDE_ON_CLOSE ukrywa ramke pozostawiajac pracujaca aplikacje (domyślne) 67/85
68 Komponenty Okienka: JFrame JFrame frame = new JFrame(); frame.setsize(640, 480); frame.setvisible(true); lub public class MyFrame extends JFrame { public MyFrame() { this.setsize(640,480); public static void main(string[] args) { MyFrame mf = new MyFrame(); mf.setvisible(true); (zalecane) Kontener: JPanel JPanel panel = new JPanel(); lub public class MyPanel extends JPanel {... public static void main(string[] args) { MyPanel mp = new MyPanel(); 68/85
69 Komponenty Guzik: JButton JButton buttonok = new JButton("OK"); panel.add(buttonok); JLabel label = new JLabel("To jest etykieta"); panel.add(label); Etykieta: JLabel JTextField field = new JTextField("To jest pole tekstowe"); panel.add(field); Pole tekstowe: JTextField 69/85
70 Dodawanie komponentu utworzenie komponentu (obiektu pewnej klasy) oraz ustawienie jego właściwości określenie kontenera pośredniego panelu z zawartością (ang. content pane) - czasem wywołanie metody add() kontenera lub kontenera pośredniego Komponent komponent = new Komponent(arg); kontener.add(komponent) Kontener (np. JPanel) to także rodzaj komponentu, i może być dodany jako element innego kontenera panelglowny.add(panelmniejszy) JButton button1 = new JButton("OK"); panel.add(button1); 70/85
71 Okno z przyciskiem 71/85
72 Podpowiedzi Eclipse a Pamiętajcie o możliwości naciśnięcia ikonki błedu po lewej stronie, żeby: Dodać odpowiednie klasy (import-y) Uzyskać podpowiedź jak naprawić błąd Jeśli szukacie odpowiedniej metody, zawsze warto nacisnąć kropkę i przejrzeć listę dostępnych funkcji Listę można też przywołać naciskając CTRL + spacja 72/85
73 Kontrolki Swing JButton JCheckBox JComboBox JList JMenu JRadioButton JSlider JSpinner JTextField JPasswordField 73/85
74 Kontrolki do wyświetlania informacji oraz kontrolki najwyższego poziomu JLabel JPanel JProgressBar JScrollPane JSeparator JSplitPane JToolTip JTabbedPane JToolBar JInternalFrame JLayeredPane RootPane 74/85
75 Rozmieszczanie komponenetów Layout Manager Sposób rozmieszczenia komponentów zależny od zarządcy układu (Layout Manager) Zastosowanie zarządcy układu w kontenerze metoda setlayout() Predefiniowani zarządcy układu ciągły FlowLayout siatkowy - GridLayout brzegowy BorderLayout kartowy CardLayout torebkowy - GridBagLayout pudełkowy BoxLayout wiosenny SpringLayout grupowy - GroupLayout 75/85
76 Layout Manager FlowLayout Najprostszy layout manager i domyślny dla każdego JPanel u. Wrzuca komponenty jeden po drugim do pojedynczego wiersza. Jeśli zabraknie miejsca w danym wierszu, wrzuca do kolejnego. Umieszczenie komponentów zależy od rozmiaru kontenera, więc nie możemy jasno określić, w którym dokładnie miejscu wyląduje nasz guzik. 76/85
77 Layout Manager GridLayout GridLayout ustala ten sam rozmiar dla wszystkich komponentów po czym wrzuca je w siatkę o określonej ilości kolumn i wierszy. 77/85
78 Layout Manager BorderLayout Możliwe składniki: PAGE_START LINE_START CENTER LINE_END PAGE_END Wygodne do robienia np. menu po lewej stronie albo nagłówka i stopki. Nie wszystkie składniki muszą być dodane 78/85
79 Layout Manager W ramach osobnych paneli można zastosować różne typ zarządzania rozmieszczeniem komponentów BorderLayout (gówny, lewy i centrum) + 2 x GridLayout BorderLayout + GridLayout ( 4 x 3 ) + GridLayout ( 5 x 1 ) + FlowLayout 79/85
80 Layout Manager W ramach osobnych paneli można zastosować różne typ zarządzania rozmieszczeniem komponentów BorderLayout (gówny, lewy i centrum) + 2 x GridLayout BorderLayout + GridLayout ( 4 x 3 ) + GridLayout ( 5 x 1 ) + FlowLayout 80/85
81 Użycie LM JPanel panel1 = new JPanel(new FlowLayout()); JPanel panel2 = new JPanel(new BorderLayout()); panel1.add(acomponent1); panel2.add(acomponent2, BorderLayout.PAGE_START); Można też dawać wskazówki co do wielkości komponentów wywołując metody na konkretnych komponentach setminimumsize, setpreferredsize, and setmaximumsize. np. component.setmaximumsize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE)); 81/85
82 Rozmiary komponentów Silnie zależą od użytego Layout Managera 82/85
83 Dziękuję za Uwagę! Do zobaczenia za tydzień. Porozmawiamy o interfejsach i obsłudze zdarzeń. m.in. jak oprogramować używanie guzików 83/85
Programowanie Obiektowe Java
Programowanie Obiektowe Java Małgorzata Janik Zakład Fizyki Jądrowej malgorzata.janik@pw.edu.pl http://java.fizyka.pw.edu.pl/ Projekt W drugim tygodniu zajęć należy wysłać prowadzącemu e-mail z informacją
Bardziej szczegółowoKlasy abstrakcyjne. Klasę abstrakcyjną tworzymy przy pomocy modyfikatora abstract
Klasy abstrakcyjne Klasa abstrakcyjna jest to klasa której obiekty nie mogą być tworzone, może być natomiast dziedziczona. Może posiadać konstruktor, może on być jednak wywołany tylko przez klasy pochodne.
Bardziej szczegółowoJava: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
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ółowoJava. 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ółowoPodstawy Języka Java
Podstawy Języka Java Wprowadzenie do AWT AWT Abstract Window Toolkit, biblioteka wykorzystywana do budowy graficznych interfejsów użytkownika w Javie AWT do obsługi elementów interfejsu użytkownika wykorzystuje
Bardziej szczegółowoProgramowanie zdarzeniowe
Programowanie zdarzeniowe II. Biblioteka Swing Małgorzata Prolejko ZDA JA16Z03 Plan Struktura Swing Komponenty proste Ramki Kolejność warstw Zarządca układu Panele Komponenty złożone Okna dialogowe i wewnętrzne
Bardziej szczegółowoStruktura programu: package pl.mojastrona.mojpakiet; import javax.swing.*; import java.awt.container; class MojaKlasa extends Jframe {
Struktura programu: package pl.mojastrona.mojpakiet; import javax.swing.*; import java.awt.container; class MojaKlasa extends Jframe { public MojaKlasa() {... class KlasaStartowa { MojaKlasa ob1; MojaKlasa
Bardziej szczegółowoProgramowanie w Javie Wykład 6 Okienka w Javie (AWT)
Programowanie w Javie Wykład 6 Okienka w Javie (AWT) Płock 2014/2015 Wprowadzenie do AWT AWT Abstract Window Toolkit, wykorzystywany do budowy graficznych interfejsów użytkownika w Javie AWT do obsługi
Bardziej szczegółowoJava - interfejs graficzny
Java - interfejs graficzny Pakiet Swing Pakiet Swing przygotował: pawel@kasprowski.pl Czym jest Swing? Rozszerzenie AWT (Abstract Windows Toolkit) do tworzenia GUI (Graphical User Interface) w Javie import
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ół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ół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ół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ół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ół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ół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ół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ół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ółowoKontenery i komponenty graficzne
JAVA Kontenery i komponenty graficzne Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Opracował: Andrzej Nowak Kontenery Aplikacja okienkowa składa
Bardziej szczegółowoPodstawy Języka Java
Podstawy Języka Java Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących
Bardziej szczegółowoJava biblioteka Swing
Java biblioteka Swing Podstawowe klasy Klasa JComponent Klasa JFrame Klasa JFrame Klasa bazowa dla okien Ważne właściwości: settitle ( ) setdefaultcloseoperation ( ) setsize ( ), setlocation ( ) setlayout
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ółowoMateriał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com GUI-Swing Wstęp do tworzenia prostych aplikacji z interfejsem graficznym (GUI) przy pomocy Swing, rysowanie prostych
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ół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ół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ół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 obiektowe
Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc
Bardziej szczegół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ółowoWYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
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ółowoKlasy. 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ółowoModelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
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ół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ółowoProgramowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006
Programowanie graficznego interfejsu użytkownika Wykład 8 Maciej Wołoszyn mailto:woloszyn@fatcat.ftj.agh.edu.pl 10 maja 2006 Spis treści 1 JFC/Swing 1 1.1 Prosty przykład.................................
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ółowoMultimedia 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ół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ół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ół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ół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ół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ół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ółowoJę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ół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ółowoMateriały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Bardziej szczegółowoKurs 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ółowoTEMAT : 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ół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ółowoLaboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6
Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
Bardziej szczegółowoJęzyki i metody programowania Java. Wykład 2 (część 2)
Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego
Bardziej szczegółowoProgramowanie graficznych interfejsów użytkownika
Programowanie obiektowe Programowanie graficznych interfejsów użytkownika Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie
Bardziej szczegółowoLaboratorium 1 - Programowanie proceduralne i obiektowe
Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?
Bardziej szczegółowoInstrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania
Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:
Bardziej szczegół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ół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ół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ół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ół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ół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ół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ół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ółowo1. Język JAVA. 1. Pierwszy program. 2. Kalkulator. 3. Klasy. 4. Dziedziczenie
1. Język JAVA 1. Pierwszy program Napisać program, który: 1. wypisuje na ekran dowolny tekst. 2. Wypisuje argumenty podane w linii poleceń. 2. Kalkulator 1. Program wypisuje sumę liczb podanych jako parametr.
Bardziej szczegółowoJęzyki i metody programowania Java INF302W Wykład 2 (część 1)
Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja
Bardziej szczegółowoUML 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ółowo1 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ółowoC++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.
C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,
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ółowoJAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt
JAVA Pliki - zapis i odczyt Opracował: Andrzej Nowak Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Strumienie wejścia i wyjścia Strumienie wejścia
Bardziej szczegółowoPodstawy 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ół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 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ół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ółowoJava niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika
Java niezbędnik programisty spotkanie nr 12 Graficzny interfejs użytkownika 1 Graphical User Interface (GUI) Abstract Window Toolkit Swing słabo się prezentuje mało obiektowy projekt i implementacja zajęły
Bardziej szczegółowoPWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub
PWSG Ćwiczenia 12 Wszystkie ukończone zadania należy wysłać na adres: sara.m.jurczyk@gmail.com lub sarajurczyk@kul.lublin.pl Zadanie 1: Różnica między zwykłymi polami/metodami, a polami/metodami static
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ółowoJęzyki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:
Języki Programowania Prowadząca: dr inż. Hanna Zbroszczyk e-mail: gos@if.pw.edu.pl tel: +48 22 234 58 51 Konsultacje: piątek: 12.00 13.30 www: http://www.if.pw.edu.pl/~gos/students/jp Politechnika Warszawska
Bardziej szczegółowoPierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10
Pierwsza ramka dr Anna Łazińska, WMiI UŁ Podstawy języka Java https://www.javatpoint.com 1 / 10 Pierwsza ramka - kod package myframe1; import javax.swing.jframe; import javax.swing.jlabel; class MyFrame1
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ół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ółowoTworzenie elementów graficznych
Tworzenie elementów graficznych Elementy graficzne w Javie pozwalające tworzyć Graficzny Interfejs Użytkownika (GUI) możemy podzielić na dwie grupy: AWT (Abstract Window Toolkit) bibliotek klas służąca
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ółowoProgramowanie 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ół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ółowoMarcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science
Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Wszystkie komponenty są rozmieszczane przez domyślny
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ółowoWstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO
Wstęp do programowania obiektowego Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO 1 Cele przedmiotu Zapoznanie z podstawowymi pojęciami oraz technikami programowania obiektowego na przykładzie
Bardziej szczegółowoKurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016
Wykład 4 23 marca 2016 Graficzny interfejs użytkownika - GUI W Javie możemy skorzystać z dwóch bibliotek do tworzenia graficznych interfejsów: AWT (Abstract Windowing Toolkit) podstawowa biblioteka będaca
Bardziej szczegółowoPrzypomnienie o klasach i obiektach
Wykład 14 Programowanie obiektowe ciąg dalszy, str 1 Przypomnienie o klasach i obiektach -5 należydo int 314 należy do double false należy do boolean {27, 314,-15 należy do double[] wartość należy do typ
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ół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ółowoDziedziczenie jednobazowe, poliformizm
Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Graficzny Interfejs Użytkownika mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Spis treści Graficzny Interfejs
Bardziej szczegółowoWykł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ółowoJęzyk JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 5, część 1 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do grafiki w Javie 2. Budowa GUI: komponenty, kontenery i układanie komponentów 3. Budowa GUI: obsługa
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ółowoInstrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do pracowni specjalistycznej z przedmiotu Obiektowe programowanie aplikacji Kod przedmiotu: TS1C410201
Bardziej szczegółowo