PO Klasy i kapsułkowanie: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 3: | Linia 3: | ||
== Wprowadzenie == | == Wprowadzenie == | ||
Poznaliśmy dotąd tę cześć Javy, która praktycznie nie korzysta z możliwości | |||
oferowanych przez programowanie obiektowe. Na tym wykładzie zajmiemy się definiowaniem klas. Zobaczymy jak pozwalają one strukturalizować tworzone programy oraz ochronić dane zawarte w obiektach. | |||
== Definiowanie klas == | |||
Definicja klasy wprowadza do programu nowy typ, a co bardziej istotne, daje programiście do dyspozycji nowe pojęcie, którego może używać przy budowanie swojej aplikacji. W Javie można definiować klasy na najwyższym poziomie zagnieżdżeń struktury programu, można też deklarować klasy zagnieżdżone, czyli takie, których definicja jest zawarta w innej klasie lub interfejsie (mogą to być klasy składowe, lokalne lub anonimowe). W tym wykładzie będziemy się zajmować tylko klasami niezagnieżdżonymi, aczkolwiek zdecydowana większość zawartych tu informacji odnosi się do wszystkich rodzajów klas. Nie będziemy też zajmować się tu definiowaniem wyliczeń, które z punktu widzenia składni Javy również są klasami. | |||
=== Składnia deklaracji === | |||
Deklaracja klasy może przyjąć w najprostszej postaci następującą postać | |||
class Pusta{ | |||
} | |||
Taka postać oczywiście nie jest zbyt użyteczna. Jak widać deklaracja klasy zaczyna się od slowa '''class''' (poprzedzonego być może pewnymi modyfikatorami), po którym znajduje się nazwa klasy<ref>Po nazwie klasy mogę się pojawić informacje o parametrach tej klasy dotyczących typów oraz informacje o nadklasie lub implementowanych interfejsach - w tym wykładzie te informacje pomijamy, zajmiemy się nimi w dalszych wykładach.</ref> oraz treść klasy ujęta w nawiasy klamrowe. | |||
Ponieważ zwykle chcemy, by klasy definiowane na najwyższym poziomie struktury programu były dostępne w całym programie, zwykle przed deklaracją takiej klasy umieszczamy modyfikator '''public'''. | |||
W treści klasy umieszcza się deklaracje składowych klasy, to znaczy atrybutów, metod i konstruktorów.<ref>Można też zadeklarować lokalne klasy lub interfejsy, można też zadeklarować blok inicjujący.</ref>. Te deklaracje mogą być poprzedzone modyfikatorami. | |||
Deklaracja atrybutu składa się z (podanych w takiej właśnie kolejności) typu, nazwy i nieobowiązkowej części inicjującej. Deklaracja atrybutu kończy się średnikiem. Na przykład definicja klasy przechowującej imię i nazwisko osoby może wyglądać tak: | |||
class Osoba{ | |||
String imię; | |||
String nazwisko; | |||
} | |||
Deklaracja metody zaczyna się od podania typu wyniku (lub słowa kluczowego '''void'''), identyfikatora metody, następnie otoczonej okrągłymi nawiasami listy parametrów formalnych (być może pustej) oraz treści metody.<ref>Po liście parametrów może się pojawić lista wyjątków zgłaszanych przez deklarowaną metodę, ale to zagadnienie omawiamy w treści innego wykładu</ref>. Treść metody to po prostu instrukcja bloku. Załóżmy, że chcemy dodać do naszej klasy metody do odczytywania imienia i nazwiska: | |||
class Osoba{ | |||
String imię; | |||
String nazwisko; | |||
String imię(){ return imię; } | |||
String nazwisko(){ return nazwisko; } | |||
} | |||
Reguły składni Javy ogólnie zabraniają deklarowania dwu rzeczy w tym samym zasięgu z ta samą nazwą, ale zadeklarowanie metody i atrybutu o tej samej nazwie nie prowadzi do żadnych niejednoznaczności (przy wywołaniu metody zawsze trzeba podać po jej nazwie otoczoną nawiasami listę parametrów). | |||
''Konstruktor'' jest specjalnym rodzajem metody. Służy do tworzenia nowych obiektów klasy, w której jest zadeklarowany | |||
== Klasy abstrakcyjne == | |||
== Przypisy == | == Przypisy == | ||
<references/> | <references/> |
Wersja z 11:37, 3 paź 2006
Wprowadzenie
Poznaliśmy dotąd tę cześć Javy, która praktycznie nie korzysta z możliwości oferowanych przez programowanie obiektowe. Na tym wykładzie zajmiemy się definiowaniem klas. Zobaczymy jak pozwalają one strukturalizować tworzone programy oraz ochronić dane zawarte w obiektach.
Definiowanie klas
Definicja klasy wprowadza do programu nowy typ, a co bardziej istotne, daje programiście do dyspozycji nowe pojęcie, którego może używać przy budowanie swojej aplikacji. W Javie można definiować klasy na najwyższym poziomie zagnieżdżeń struktury programu, można też deklarować klasy zagnieżdżone, czyli takie, których definicja jest zawarta w innej klasie lub interfejsie (mogą to być klasy składowe, lokalne lub anonimowe). W tym wykładzie będziemy się zajmować tylko klasami niezagnieżdżonymi, aczkolwiek zdecydowana większość zawartych tu informacji odnosi się do wszystkich rodzajów klas. Nie będziemy też zajmować się tu definiowaniem wyliczeń, które z punktu widzenia składni Javy również są klasami.
Składnia deklaracji
Deklaracja klasy może przyjąć w najprostszej postaci następującą postać
class Pusta{ }
Taka postać oczywiście nie jest zbyt użyteczna. Jak widać deklaracja klasy zaczyna się od slowa class (poprzedzonego być może pewnymi modyfikatorami), po którym znajduje się nazwa klasy<ref>Po nazwie klasy mogę się pojawić informacje o parametrach tej klasy dotyczących typów oraz informacje o nadklasie lub implementowanych interfejsach - w tym wykładzie te informacje pomijamy, zajmiemy się nimi w dalszych wykładach.</ref> oraz treść klasy ujęta w nawiasy klamrowe.
Ponieważ zwykle chcemy, by klasy definiowane na najwyższym poziomie struktury programu były dostępne w całym programie, zwykle przed deklaracją takiej klasy umieszczamy modyfikator public.
W treści klasy umieszcza się deklaracje składowych klasy, to znaczy atrybutów, metod i konstruktorów.<ref>Można też zadeklarować lokalne klasy lub interfejsy, można też zadeklarować blok inicjujący.</ref>. Te deklaracje mogą być poprzedzone modyfikatorami.
Deklaracja atrybutu składa się z (podanych w takiej właśnie kolejności) typu, nazwy i nieobowiązkowej części inicjującej. Deklaracja atrybutu kończy się średnikiem. Na przykład definicja klasy przechowującej imię i nazwisko osoby może wyglądać tak:
class Osoba{ String imię; String nazwisko; }
Deklaracja metody zaczyna się od podania typu wyniku (lub słowa kluczowego void), identyfikatora metody, następnie otoczonej okrągłymi nawiasami listy parametrów formalnych (być może pustej) oraz treści metody.<ref>Po liście parametrów może się pojawić lista wyjątków zgłaszanych przez deklarowaną metodę, ale to zagadnienie omawiamy w treści innego wykładu</ref>. Treść metody to po prostu instrukcja bloku. Załóżmy, że chcemy dodać do naszej klasy metody do odczytywania imienia i nazwiska:
class Osoba{ String imię; String nazwisko; String imię(){ return imię; } String nazwisko(){ return nazwisko; } }
Reguły składni Javy ogólnie zabraniają deklarowania dwu rzeczy w tym samym zasięgu z ta samą nazwą, ale zadeklarowanie metody i atrybutu o tej samej nazwie nie prowadzi do żadnych niejednoznaczności (przy wywołaniu metody zawsze trzeba podać po jej nazwie otoczoną nawiasami listę parametrów).
Konstruktor jest specjalnym rodzajem metody. Służy do tworzenia nowych obiektów klasy, w której jest zadeklarowany
Klasy abstrakcyjne
Przypisy
<references/>