Podstawy języka JAVA oraz programowania obiektowego.
Java to obiektowy język programowania stworzony przez grupę roboczą pod kierunkiem
Jamesa Goslinga z firmy Sun Microsystems. Java jest językiem tworzenia programów
zródłowych kompilowanych do kodu bajtowego, czyli postaci wykonywanej przez maszynę
wirtualną. Język cechuje się silnym typowaniem. Jego podstawowe koncepcje zostały przejęte
z języka Smalltalk (maszyna wirtualna, zarządzanie pamięcią) oraz z języka C++ (duża część
składni i słów kluczowych).
Javy nie należy mylić ze skryptowym językiem JavaScript, z którym wspólną ma jedynie składnię
podstawowych instrukcji.
Obecnym właścicielem tej technologii jest Oracle Corporation.
Typowanie silne inaczej Silna typizacja to system typów w języku programowania, w którym
każde wyrażenie ma ustalony typ i nie można go używać w kontekście przeznaczonym dla innych
typów. Silna typizacja wykrywa pewne błędy, jednak ogranicza znacznie język i tworzy wiele
fałszywych błędów. Np. mieszanie liczb zmiennoprzecinkowych i całkowitych jest prawie zawsze
w pełni poprawne, jednak niektóre systemy silnie typizowane uznają je za błąd.
Kluczowe koncepcje języka JAVA:
Obiektowość.
W przeciwieństwie do proceduralno-obiektowego języka C++, Java jest silnie ukierunkowana na
obiektowość. Wszelkie dane i akcje na nich podejmowane są pogrupowane w klasy obiektów.
O obiekcie można myśleć jako o samoistnej części programu, która może przyjmować określone
stany i ma określone zachowania, które mogą zmieniać te stany bądz przesyłać dane do innych
obiektów. Wyjątkiem od całkowitej obiektowości (jak np. w Smalltalku) są typy proste (int,
float itp.).
Dziedziczenie
W Javie wszystkie obiekty są pochodną obiektu nadrzędnego (jego klasa nazywa się po prostu
Object), z którego dziedziczą podstawowe zachowania i właściwości. Dzięki temu wszystkie mają
wspólny podzbiór podstawowych możliwości, takich jak ich: identyfikacja, porównywanie,
kopiowanie, niszczenie czy wsparcie dla programowania współbieżnego.
Choć C++ udostępniał dziedziczenie wielobazowe, projektanci Javy odeszli od tego pomysłu. Java
umożliwia jedynie dziedziczenie jednobazowe, a więc wyłącznie jedna klasa może przekazać
swoje właściwości i operacje jako podstawę do rozszerzania ich o dodatkowe możliwości. Dzięki
temu wyeliminowano możliwość konfliktów między właściwościami przekazywanymi przez klasy
nadrzędne.
By zrekompensować spadek elastyczności wynikający z pojedynczego dziedziczenia
wprowadzono interfejsy oraz podklasy umożliwiające wielokrotne dziedziczenie implementacji.
Pozwalają one nazwać pewien określony zbiór operacji, dzięki czemu można określić, że dany
obiekt, któremu przypisano dany interfejs (implementujący go), umożliwia wykonanie owego
zestawu operacji.
Niezależność od architektury.
Tę właściwość Java ma dzięki temu, że kod zródłowy programów pisanych w Javie
kompiluje się do kodu pośredniego. Powstały kod jest niezależny od systemu operacyjnego i
procesora, a wykonuje go tzw. wirtualna maszyna Javy, która (między innymi) tłumaczy kod
uniwersalny na kod dostosowany do specyfiki konkretnego systemu operacyjnego i procesora.
W tej chwili wirtualna maszyna Javy jest już dostępna dla większości systemów operacyjnych
i procesorów.
Sieciowość i obsługa programowania rozproszonego.
Dzięki wykorzystaniu reguł obiektowości, Java nie widzi różnicy między danymi płynącymi z pliku
lokalnego a danymi z pliku dostępnego przez HTTP czy FTP.
Biblioteki Javy udostępniają wyspecjalizowane funkcje umożliwiające programowanie rozproszone
zarówno między aplikacjami Javy (RMI) jak i między aplikacją Javy a aplikacjami napisanymi w
innych językach (CORBA, usługi sieciowe).
Niezawodność i bezpieczeństwo.
W zamierzeniu Java miała zastąpić C++ obiektowego następcę języka C. Jej projektanci zaczęli
od rozpoznania cech języka C++, które są przyczyną największej liczby błędów programistycznych,
by stworzyć język prosty w użyciu, bezpieczny i niezawodny.
O ile po pięciu odsłonach Javy jej prostota jest dyskusyjna, o tyle język faktycznie robi dużo, by
utrudnić programiście popełnienie błędu. Przede wszystkim Java ma system wyjątków czyli
sytuacji, gdy kod programu natrafia na nieprzewidywane trudności, takie jak np.:
" operacje na elemencie poza zadeklarowaną granicą tablicy lub elemencie pustym
" czytanie z niedostępnego pliku lub nieprawidłowego adresu URL
" podanie nieprawidłowych danych przez użytkownika
Programowanie obiektowe informacje ogólne.
Programowanie obiektowe (ang. object-oriented programming) paradygmat programowania,
w którym programy definiuje się za pomocą obiektów elementów łączących stan (czyli dane,
nazywane najczęściej polami) i zachowanie (czyli procedury, tu: metody). Obiektowy program
komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu
wykonywania zadań. Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie
dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić
pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów.
Powszechnie uważa się, że najważniejsze są następujące cechy:
Abstrakcja
Każdy obiekt w systemie służy jako model abstrakcyjnego "wykonawcy", który może wykonywać
pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie, bez
ujawniania, w jaki sposób zaimplementowano dane cechy. Procesy, funkcje lub metody mogą być
również abstrahowane, a kiedy tak się dzieje, konieczne są rozmaite techniki rozszerzania
abstrakcji.
Przykład abstrakcji w języku JAVA:
public interface IterListy
{
public void pierwszy();
public void ostatni();
public void następny();
public boolean czy_ostatni();
}
public void przetwarzaj_listę(IterListy iter_listy)
{
while (! iter_listy.czy_ostatni())
{
iter_listy.następny();
}
}
Hermetyzacja (inna używana nazwa to enkapsulacja, (ang.) encapsulation) Hermetyzacja polega
na ukrywaniu pewnych danych składowych lub metod obiektów danej klasy tak, aby były one
dostępne tylko metodom wewnętrznym danej klasy lub funkcjom zaprzyjaznionym.
Gdy dostęp do wszystkich pól danej klasy jest możliwy tylko i wyłącznie poprzez metody, lub
inaczej mówiąc: gdy wszystkie pola w klasie znajdują się w sekcji prywatnej, lub chronionej, to
taką hermetyzację nazywa się hermetyzacją pełną.
Hermetyzację realizuje się za pomocą słów kluczowych public, protected oraz private. Te słowa
kluczowe pozwalają określić widoczność atrybutów i metod. Widoczność zdeklarowana przez
słowo public jest widocznością globalną. Każda instancja będzie mogła mieć dostęp do atrybutów,
których widoczność jest określona przez słowo kluczowe public. Widoczność określona przez
słowo kluczowe private jest widocznością prywatną. Tylko instancje danej klasy będą miały dostęp
do atrybutów, których widoczność określona jest słowo kluczowe private. Widoczność atrybutów w
klasie domyślnie jest widocznością prywatną. Znaczenie słowa kluczowego protected jest
równoważne znaczeniu słowa kluczowego public w danej klasie oraz znaczeniu słowa kluczowego
private w podklasach danej klasy.
Przykład abstrakcji w języku JAVA:
public interface IterListy
{
public void pierwszy();
private void ostatni();
public void następny();
public boolean czy_ostatni();
}
public void przetwarzaj_listę(IterListy iter_listy)
{
while (! iter_listy.czy_ostatni())
{
iter_listy.następny();
}
}
Polimorfizm.
Referencje i kolekcje obiektów mogą dotyczyć obiektów różnego typu, a wywołanie metody dla
referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Jeśli
dzieje się to w czasie działania programu, to nazywa się to póznym wiązaniem lub wiązaniem
dynamicznym. Niektóre języki udostępniają bardziej statyczne (w trakcie kompilacji) rozwiązania
polimorfizmu - na przykład szablony i przeciążanie operatorów w C++.
Dziedziczenie.
Porządkuje i wspomaga polimorfizm i enkapsulację dzięki umożliwieniu definiowania i tworzenia
specjalizowanych obiektów na podstawie bardziej ogólnych. Dla obiektów specjalizowanych nie
trzeba redefiniować całej funkcjonalności, lecz tylko tę, której nie ma obiekt ogólniejszy. W
typowym przypadku powstają grupy obiektów zwane klasami, oraz grupy klas zwane drzewami.
Odzwierciedlają one wspólne cechy obiektów.
Wyszukiwarka
Podobne podstrony:
JP SS 5 podstawy JavaJP SS 5 podstawy Java (3)JP SS 5 podstawy JavaJava Podstawy, Programowanie, ZastosowaniaJava Podstawy Wydanie VIII javpd3Java Podstawowe typy?nychpodstawy programowania javaJAVA 04 literały i typy podstawowe(2)JAVA 01 podstawowe informacjeJava podstawy jezyka wyklad1Wyk6 ORBITA GPS Podstawowe informacjejava text FieldPositionPodstawowe informacje o Rybnie3 podstawy teorii stanu naprezenia, prawo hookeazestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6więcej podobnych podstron