Dokumentacja do API Javy.

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

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Aplikacje w środowisku Java

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Java: interfejsy i klasy wewnętrzne

Dziedziczenie. dr Jarosław Skaruz

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

Wykład 4: Klasy i Metody

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

Rozdział 4 KLASY, OBIEKTY, METODY

PHP 5 język obiektowy

Aplikacje w środowisku Java

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Kurs WWW. Paweł Rajba.

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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


1 Atrybuty i metody klasowe

Definiowanie własnych klas

Interfejsy i klasy wewnętrzne

Enkapsulacja, dziedziczenie, polimorfizm

Klasy abstrakcyjne i interfejsy

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

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

Programowanie w Internecie. Java

Programowanie obiektowe

Kompozycja i dziedziczenie klas

Materiały do zajęć VII

Wykład 6: Dziedziczenie

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

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

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

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Podstawy Języka Java

Programowanie obiektowe

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

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

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

Języki i metody programowania Java. Wykład 2 (część 2)

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

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

Java Język programowania

Przypomnienie o klasach i obiektach

Dziedziczenie. Tomasz Borzyszkowski

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie obiektowe

.NET Klasy, obiekty. ciąg dalszy

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Programowanie obiektowe

Multimedia JAVA. Historia

Podstawy programowania III

KLASY, INTERFEJSY, ITP

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie obiektowe

Definiowanie własnych klas

Wykład 8: klasy cz. 4

Platformy Programistyczne Podstawy języka Java

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Programowanie obiektowe

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Programowanie obiektowe

Programowanie w Javie wykład 8 Interfejsy

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

Typy sparametryzowane

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Programowanie obiektowe i zdarzeniowe

Mechanizm dziedziczenia

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Technologie i usługi internetowe cz. 2

Język Java część 2 (przykładowa aplikacja)

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Klasy i obiekty cz II

Programowanie obiektowe

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Mechanizm dziedziczenia

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Języki i techniki programowania Ćwiczenia 2

Programowanie obiektowe. Wykład 03. Maciej Wołoszyn 17 marca Polimorfizm oraz wczesne i późne wiazanie

Podstawy Programowania Obiektowego

Programowanie obiektowe

Kompozycja i dziedziczenie klas

Programowanie obiektowe - 1.

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Definicje klas i obiektów. Tomasz Borzyszkowski

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Kontenery i komponenty graficzne

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Transkrypt:

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 na podstawie którego tworzone są obiekty (instancje) tej klasy. Jeżeli przyjęlibyśmy, że foremka do zabawy w piasku jest klasą, to babki wykonane za pomocą tej foremki nazwalibyśmy obiektami tej klasy. Z reguły dostęp do pól składowych klasy możliwy jest tylko przez odpowiednie metody składowe danej klasy. Tego typu proces izolacji danych przed przypadkową i/lub niewłaściwą modyfikacją nazywamy enkapsulacją. (Zamykaniem w kapsułach obiekt jest tego typu kapsułą, która przechowuje dane i zapobiega dostępowi nich w inny sposób jak przez odpowiednie metody)

Tworzenie obiektu danej klasy Do przechowywania łańcuchów znakowych używaliśmy klasy String. W jaki sposób tworzymy obiekty tej klasy: String tekst; to jeszcze nie jest obiekt, to tylko pusta referencja do obiektu (nie wskazuje na nic). String tekst = To dopiero jest obiekt ; Powyższa deklaracja zmiennej tworzy obiekt typu String i umieszcza w zmiennej tekst referencję do niego. Obiekty danej klasy możemy tworzyć także w inny sposób używając operatora new. String tekst = new String( To takżeobiekt );

Wykorzystywanie istniejących klas Tworzymy obiekt istniejącej w pakiecie java.lang.utils klasy Date. Do tworzenia obiektów danej klasy używamy operatora new. import java.util.date; public class TestDaty { public static void main(string[] args) { Date dzisiejszadata = new Date(); System.out.println(dzisiejszaData);

Wykorzystywanie istniejących klas cd. import java.util.*; class TestKalendarza { public static void main(string[] args) { GregorianCalendar datazkalendarza = new GregorianCalendar(); int rok = datazkalendarza.get(calendar.year); int miesiac = datazkalendarza.get(calendar.month)+1; int dzien = datazkalendarza.get(calendar.day_of_month); System.out.println(rok+" : "+miesiac+" : "+dzien);

Tworzenie własnej klasy Ogólna postać klasy wygląda następująco: class NazwaKlasy { konstruktor1 konstruktor2... metoda1 metoda2... pole1 pole2

konstruktor Konstruktor to specjalna metoda wywoływana podczas tworzenia obiektu. Własności konstruktorów: Nazwa konstruktora musi być taka sama jak nazwa klasy Konstruktor może być wywołany tylko przez operator new Klasa może posiadać więcej niż jeden konstruktor Konstruktor nie zwraca wartości Konstruktor może posiadać zero lub więcej parametrów

Konstruktor cd. Konstruktor wykorzystywany jest do inicjalizacji obiektów danej klasy. Jeżeli nie stworzymy konstruktora, to zostanie stworzony konstruktor domyślny, który inicjalizuje zmienne w następujący sposób: Liczbą przypisuje wartość zero Wartością logicznym false Referencją null

Konstruktor cd. Możemy sami stworzyć konstruktor domyślny (bezparametrowy), który określi wartości początkowe naszych pól w określony przez nas sposób (zalecane jest tworzenie własnych domyślnych konstruktorów) class klasa { klasa() { pole1 = 0; pole2 = wartość ;...

Tworzenie własnej klasy - przykład class Okrag { Okrag() //konstruktor domyślny { this.promien=0; Okrag(double r) //inny konstruktor { this.promien=r; double pole() //metoda { return Okrag.PI*this.promien*this.promien; double promien; //pola static final double PI=3.14;

Wykorzystanie stworzonej klasy public class Main { public static void main(string[] args) { Okrag o = new Okrag(10); System.out.println("Pole okręgu wynosi :"+o.pole());

Inny przykład public class Program { public static void main(string[] args){ String tmp = JOptionPane.showInputDialog("Podaj promień : "); double p = Float.parseFloat(tmp); Okrag o = new Okrag(p); String s = "Pole koła o promieniu "+p+" = "+o.pole(); JOptionPane.showMessageDialog(null,s);

Modyfikatory dostępu Określają kto i w jaki sposób będzie miał dostęp do klas i/lub ich składowych. Rodzaje modyfikatorów: Modyfikatory klas : public : klasa dostępna dla wszystkich innych klas final : klasa finalna (nie można po niej dzisdziczyć) abstract : klasa abstrakcyjna zawierająca puste metody Modyfikatory pól i metod public : nieograniczony dostęp protected : dostęp rodzimego pakietu i klas dziedziczących private : dostęp tylko dla metod danej klasy - : dostęp dla pakietu rodzimego

Kompozycja Jeżeli w definicji klasy użyjemy jako pól obiektów innych klas to powstała w ten sposób konstrukcja nosi nazwę kompozycji: class Samochód { Silnik silniksamochodu; Zawieszenie zawieszeniesamochodu; Nadwozie nadwiziesamochodu

dziedziczenie Dziedziczenie tworzenie klas na bazie juz istniejących pozwalających rozszerzyć lub/i zmienić ich funkcjonalność. Ogólny schemat dziedziczenia: class klasa_pochodna extends klasa bazowa {... // pola i metody będące uzupełnieniem klasy bazowej // przeładowane metody...

Przeładowanie metody Jeżeli w podklasie (klasie potomnej) zdefiniujemy metodę o takiej samej nazwie jak metoda klasy bazowej, to obiekty klasy potomnej będą używały nowej wersji metody zamiast metody klasy bazowej. Sytuację taką nazywamy przeładowaniem metody.

Przykład przeładowania class Pracownik {... int pobierzwynagrodzenie() { return pensja;... private int pensja; class Kierownik extends Pracownik {... int pobierzwynagrodzenie() { return super.pobierzwynagrodznie + dodatekfunkcyjny; private int dodatekfunkcyjny;

Słowo kluczowe super W poprzednim przykładzie użyliśmy słowa kluczowego super w celu dostępu do metody klasy nadrzędnej. (jest to odpowiednik konstrukcji NazwaKlasyBazowej::nazwaMetody() w c++ ) W naszym przykładzie użycie konstrukcji: class Kierownik extends Pracownik { int pobierzwynagrodzenie(){ return pensja + dodatekfunkcyjny; Zwróciłoby błąd ze względu na fakt, że pole pensja jest polem prywatnym klasy Pracownik i dostęp do niego jest mozliwy jedynie przez metodę pobierzwynagrodzenie(). Dlaczego więc nie tak: int pobierzwynagrodzenie(){ return pobierzwynagrodzenie() + dodatekfunkcyjny; ponieważ w ten sposób zapętlimy program.

Przykład przeładowania: Załóżmy że mamy klasę Pracownik reprezentującą pracowników danej firmy, każdy z pracowników otrzymuje wynagrodzenie. Niech metoda pobierzwynagrodzenie() zwraca pensję pracownika. Dodatkowo stanowiska kierownicze otrzymują dodatek funkcyjny. Jak będzie wyglądała metoda pobierzwynagrodzenie() dla klasy Kierownik? Pracownik Kierownik

Wywołanie konstruktora nadklasy Tworząc konstruktor klasy potomnej zaleca się wywołanie konstruktora nadklasy. class Kierownik extends Pracownik { Kierownik (String i, String n, int pensja, int dodatek) { super(i,n,p); dodatekfunkcyjny = dodatek; private int dodatekfunkcyjny; Uwaga: wywołanie konstruktora nadklasy musi nastąpić jako pierwsze w konstruktorze podklasy.

Klasy finalne Jeżeli chcemy aby jakaś klasa była ostatnią w hierarchii i nie można było po niej dziedziczyć to oznaczamy ją modyfikatorem final. W naszej przykładowej hierarchii klas reprezentujących strukturę firmy za klasę finalną możemy uznać klasę reprezentującą prezesa. final class Prezes extends Dyrektor {...

Metody finalne Jeżeli w danej klasie zdefiniujemy metodę jako finalną to w żadnej podklasie nie będzie można jej przładować. W naszym przykładzie moglibyśmy tak postąpić na przykład z metodą zwracającą nazwisko pracownika, ponieważ nie zależnie od stanowiska nazwisko zawsze wygląda tak samo. class Pracownik {... public final String podajnazwisko()...

Klasy abstrakcyjne Oznaczamy je słowem kluczowym abstract, są fundamentem do budowy innych klas, nie mogą posiadać swoich instancji (obiektów), mogą posiadać metody abstrakcyjne W naszym przykładzie abstrakcyjną klasą mogłaby być klasa reprezentująca wszystkie osoby abstract class Osoba {...

interfejsy Interfejs jest przepisem na to co klasa powinna robić, bez określania sposobu w jaki powinna to robić. W innym ujęciu interfejs jest zbiorem wymagań dotyczących klas które chcą go implementować (dostosowywać się do interfejsu).

Interfejsy cd. Jeżeli chcielibyśmy, aby obiekty tworzonych przez nas klas można było np. sortować z użyciem tej samej metody to musielibyśmy wyposażyć je w uniwersalną metodę która porównuje obiekty danej klasy. Jak sprawić aby wszystkie tworzone przez nas klasy musiały posiadać określoną metodę? Należy stworzyć interfejs, który będzie implementowany przez wszystkie klasy.

Przykład interfejsu public interface dasieposortowac { int porownaj(object inny); Jak widać interfejs dasieposortowac nie implementuje metody porownaj. Implementacji metody porównaj musimy dokonać wewnątrz klas, które będą implementowały nasz interfejs.

Właściwości interfejsów Interfejsy nie są klasami, Interfejsy nie posiadają zmiennych Interfejsy mogą posiadać stałe (są one automatycznie typu public static final) Wszystkie metody interfejsu są publiczne Nie możemy tworzyć obiektów interfejsu przy użyciu operatora new. Możemy deklarować zmienne interfejsów, które będą wskazywały na obiekty implementujące dany interfejs Wiele klas może implementować jeden interfejs Jedna klasa może implementować wiele interfejsów

Interfejs rzeczywisty przykład Chcemy aby wszystkie tworzone przez nas klasy podawały nazwisko autora poprzez metodę autor(). Tworzymy interfejs Copyright: public interface Copyright { void autor();

Implementacja interfejsu class Rownanie implements Copyright {... void autor () { System.out.println( Jan Kowalski 2006 );...

Dlaczego interfejs Dlaczego nie użyć klasy abstrakcyjnej zamiast interfejsu? Ponieważ większość tworzonych przez nas klas rozszerza już jakieś klasy bazowe, a w jezyku Java nie istnieje wielokrotne dziedziczenie (jak np. w c++). Konstrukcja typu: class Pracownik extends Osoba, Copyright wygeneruje błąd. Natomiast class Pracownik extends Osoba implements Copyright jest poprawną konstrukcją programistyczną w javie.

import java.awt.*; import javax.swing.*; Rzeczywisty przykład public class Main { public Main() { public static void main(string[] args) { beep b = new beep(); Timer t = new Timer(1000,b); do { t.start(); while (JOptionPane.showConfirmDialog(null,"Zakończyć beepanie?")!=0); t.stop(); class beep implements ActionListener { public void actionperformed(actionevent e){ Toolkit.getDefaultToolkit().beep();