Java język programowania zorientowany obiektowo



Podobne dokumenty
Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH

Projektowanie systemów informacyjnych: język UML

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Zobacz to na własne oczy. Przyszłość już tu jest dzięki rozwiązaniu Cisco TelePresence.

Harmonogramowanie projektów Zarządzanie czasem

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Administrator Konta - osoba wskazana Usługodawcy przez Usługobiorcę, uprawniona w imieniu Usługobiorcy do korzystania z Panelu Monitorującego.

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

System kontroli wersji SVN

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

Procedura nadawania uprawnień do potwierdzania Profili Zaufanych w Urzędzie Gminy w Ryjewie

RZECZPOSPOLITA POLSKA. Prezydent Miasta na Prawach Powiatu Zarząd Powiatu. wszystkie

Uchwała z dnia 20 października 2011 r., III CZP 53/11

Zad.1 Pokazać pierwszeństwo trybu odmów przed zezwalaj.

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

TAJEMNICA BANKOWA I OCHRONA DANYCH OSOBOWYCH W PRAKTYCE BANKOWEJ

Procedura nadawania uprawnień do potwierdzania, przedłuŝania waŝności i uniewaŝniania profili zaufanych epuap. Załącznik nr 1

POLITYKA PRYWATNOŚCI

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

MINISTERSTWO PRACY I POLITYKI SPOŁECZNEJ

InsERT GT Własne COM 1.0

INSTRUKCJA DLA UCZESTNIKÓW ZAWODÓW ZADANIA

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

System do kontroli i analizy wydawanych posiłków

Konferencja Sądu Arbitrażowego przy SIDiR WARUNKI KONTRAKTOWE FIDIC KLAUZULA 13 JAKO ODMIENNY SPOSÓB WYKONANIA ROBÓT A NIE ZMIANA UMOWY

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap Urzędzie Gminy w Ułężu

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Moduł 2 Planowanie prac z zakresu eksploatacji maszyn i urządzeń elektrycznych

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

System Komunikacji Niewerbalnej tłumacz języka migowego online. Robert Gdela Prezes Seventica Sp. z o.o.

Warunki Oferty PrOmOcyjnej usługi z ulgą

zgubił całą naszą korespondencję Można by tak wymieniać bez bezpieczeństwa, gdyby była wykonana dnia poprzedniego rozwiązałaby niejeden problem.

Kompozycja i dziedziczenie klas

Wartości domyślne, szablony funkcji i klas

API transakcyjne BitMarket.pl

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Edycja geometrii w Solid Edge ST

Sieci komputerowe cel

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Bazy danych. Andrzej Łachwa, UJ, /15

KRYTERIA DOSTĘPU. Działanie 2.1,,E-usługi dla Mazowsza (typ projektu: e-administracja, e-zdrowie)

1. PODMIOTEM ŚWIADCZĄCYM USŁUGI DROGĄ ELEKTRONICZNĄ JEST 1) SALESBEE TECHNOLOGIES SP. Z O.O. Z SIEDZIBĄ W KRAKOWIE, UL.

Regulamin Usługi Certyfikat SSL. 1 Postanowienia ogólne

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Tworzenie modelu obiektowego

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Załącznik nr 8. Warunki i obsługa gwarancyjna

Ogólna charakterystyka kontraktów terminowych

Budowa systemów komputerowych

Oprogramowanie FonTel służy do prezentacji nagranych rozmów oraz zarządzania rejestratorami ( zapoznaj się z rodziną rejestratorów FonTel ).

Charakterystyka systemów plików

Zamawiający potwierdza, że zapis ten należy rozumieć jako przeprowadzenie audytu z usług Inżyniera.

REGULAMIN SKLEPU INTERNETOWEGO 1 POSTANOWIENIA OGÓLNE

Polityka prywatności i wykorzystywania plików cookies w serwisie internetowym mateuszgrzesiak.tv

UCHWAŁ A SENATU RZECZYPOSPOLITEJ POLSKIEJ. z dnia 18 października 2012 r. w sprawie ustawy o zmianie ustawy o podatku dochodowym od osób fizycznych

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Gdańsku

RZECZPOSPOLITA POLSKA MINISTER CYFRYZACJI

WYJAŚNIENIA. Wyjaśniam

Trwałość projektu co zrobić, żeby nie stracić dotacji?

Logowanie do mobilnego systemu CUI i autoryzacja kodami SMS

Ogłoszenie o zwołaniu Zwyczajnego Walnego Zgromadzenia IDM Spółka Akcyjna w upadłości układowej z siedzibą w Krakowie na dzień 30 czerwca 2015 roku

Warszawska Giełda Towarowa S.A.

ZP/6/2015 WYKONAWCA NR 1 Pytanie 1 Odpowiedź: Pytanie 2 Odpowiedź: Pytanie 3 Odpowiedź: Pytanie 4 Odpowiedź: Pytanie 5 Odpowiedź:

UCHWAŁA. SSN Zbigniew Kwaśniewski (przewodniczący) SSN Anna Kozłowska (sprawozdawca) SSN Grzegorz Misiurek

Kancelaria Radcy Prawnego

GENERALNY INSPEKTOR OCHRONY DANYCH OSOBOWYCH

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Łabiszynie

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Konfiguracja historii plików

WYROK W IMIENIU RZECZYPOSPOLITEJ POLSKIEJ. SSN Bogusław Cudowski (przewodniczący) SSN Jolanta Frańczak (sprawozdawca) SSN Krzysztof Staryk

Microsoft Management Console

Projektowanie bazy danych

2) Drugim Roku Programu rozumie się przez to okres od 1 stycznia 2017 roku do 31 grudnia 2017 roku.

REGULAMIN INTERNETOWEJ OBSŁUGI KLIENTA

INSTRUKCJA RUCHU I EKSPLOATACJI SIECI DYSTRYBUCYJNEJ

Ewidencja abonentów. Kalkulacja opłat

Podatek przemysłowy (lokalny podatek od działalności usługowowytwórczej) :02:07

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

Systemy mikroprocesorowe - projekt

OIGD 89/2013 Kraków, 8 lipca 2013 r. Pani/Pan Prezes Członkowie Ogólnopolskiej Izby Gospodarczej Drogownictwa

Projekt MES. Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Barcinie

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO

Uchwała nr 21 /2015 Walnego Zebrania Członków z dnia w sprawie przyjęcia Regulaminu Pracy Zarządu.

Polityka prywatności strony internetowej wcrims.pl

A X E S S INSTRUKCJA UŻYTKOWNIKA

DOTACJE NA INNOWACJE. Zapytanie ofertowe

PERSON Kraków

VinCent Office. Moduł Drukarki Fiskalnej

Procedura działania Punktu Potwierdzającego. Profile Zaufane epuap. w Urzędzie Miejskim w Miłakowie

Regu g l u a l min i n w s w pó p ł ó p ł r p acy O ow o iązuje od dnia

art. 488 i n. ustawy z dnia 23 kwietnia 1964 r. Kodeks cywilny (Dz. U. Nr 16, poz. 93 ze zm.),

Transkrypt:

Java język programowania zorientowany obiektowo Artur Piętas Poniższy artykuł przedstawia ideę programowania zorientowanego obiektowo w kontekście jednego z najpopularniejszych języków programowania, jakim jest Java. W pracy został zawarty opis kluczowych założeń podejścia obiektowego oraz podstawowe informację na temat technologii Java. 1. Programowanie zorientowane obiektowo Programowanie obiektowe dostarcza programistom wyższy poziom abstrakcji, aniżeli programowanie strukturalne czy proceduralne. Zaletami języków obiektowych są w głównej mierze łatwość pisania i konserwacji kodu, możliwość wielokrotnego wykorzystania jego fragmentów w różnych projektach oraz zgodność modeli obiektowych ze światem rzeczywistym.[1,2] Bruce Eckel w swoich publikacjach przytacza pięć głównych cech Smalltalka, będącego pierwszym językiem obiektowym. Cechy te w przejrzysty sposób obrazują ideę podejścia obiektowego: 1. Wszystko jest obiektem. Obiekt jest pewnego rodzaju zmienną przechowującą nie tylko dane, ale umożliwiającą również realizowanie na sobie pewnych operacji. Dowolne pojęcie ze świata rozwiązywanego problemu (pojazdy, budynki, zwierzęta, usługi, itd.) można wyrazić w programie za pomocą obiektu. 2. Program to zbiór obiektów, które poprzez wysyłanie komunikatów, mówią sobie nawzajem, co robić. Wysłanie komunikatu do obiektu jest równoznaczne z zażądaniem wykonania przez niego pewnej operacji. Innymi słowy wywoływana jest funkcja należąca do danego obiektu. 3. Każdy obiekt ma własną pamięć, w skład której wchodzą inne obiekty. Oznacza to, że nowy obiekt powstaje poprzez połączenie w jeden pakiet grupę już istniejących obiektów. W ten sposób powstają rozbudowane aplikacje, których złożoność ukryta jest za prostotą obiektów. 1

4. Każdy obiekt posiada swój typ. Innymi słowy każdy obiekt jest instancją określonej klasy, gdzie klasa jest synonimem typu. Kluczowa cechą wyróżniającą daną klasę jest odpowiedź na pytanie: Jakie komunikaty można do niej wysyłać?. 5. Wszystkie obiekty danego typu mogą otrzymywać te same komunikaty. To stwierdzenie okazuje się być nieco mylące. Ponieważ obiekt typu okrąg jest jednocześnie obiektem typu figura, co za tym idzie okrąg może otrzymywać komunikaty odpowiednie dla figury. Oznacza to, że istnieje możliwość pisania kodu odwołującego się do figury, który będzie automatycznie obsługiwał wszystkie obiekty pasujące do opisu typu figura. Ta zastępowalność jest jedną z najpotężniejszych idei programowania zorientowanego obiektowo.[1,2] 2. Ukrywanie implementacji Ukrywanie implementacji (inaczej hermetyzacja, enkapsulacja) polega na czynieniu pewnych atrybutów danego obiektu niedostępnymi w bezpośredni sposób dane są ukryte i traktowane jako nierozdzielna całość z usługami. Twórca danej klasy udostępnia programiście klientowi tylko te pola i metody, które są mu realnie potrzebne aby wykonać określone zadanie. Użytkownik w prosty sposób odróżnia to co jest dla niego istotne, od tego co może zignorować, nie ingerując przy tym w określone fragmenty kodu, a tym samym powodując powstawanie błędów. Z drugiej strony, twórca klasy może w prosty sposób przebudowywać swoją klasę, bez obawy o jej działanie po stronie klienta.[1] Java posiada trzy słowa kluczowe, zwane specyfikatorami dostępu służące do ustalania rozgraniczeń w klasach: 1. public (publiczny) definicje są dostępne dla każdego, 2. private (prywatny) dostęp do nich ma tylko twórca danej klasy wewnątrz jej funkcji składowych, 3. protected (chroniony) działa podobnie jak private, z tą różnicą, że klasy pochodne mają dostęp do elementów chronionych swojej klasy bazowej.[1] 2

3. Dziedziczenie Idea dziedziczenia wprowadza dwa podstawowe pojęcia: klasy bazowej i klasy potomnej. Klasa potomna jest wywodzona z klasy bazowej i przejmuje jej wszystkie składowe i właściwości. Do klasy potomnej można dodać nowe atrybuty bądź zmienić istniejące. Taka zmiana określana jest jako przesłonięcie (ang. overriding) i polega na redefinicji w klasie potomnej istniejącej już metody bazowej w celu zmiany jej zachowania. [1] Rys. 1 Przykładowy diagram UML przedstawiający hierarchię klas Powyższy diagram UML przedstawia klasyczny przykład dziedziczenia z figurami geometrycznymi. Bazowym typem jest Figura. Posiada pięć metod (w tym wypadku publicznych) pozwalających na wykonywanie na niej pewnych operacji. Poprzez dziedziczenie wywodzone są z niej specyficzne typy figur: Okrąg, Prostokąt i Trójkąt. Każdy z podtypów przesłania dwie metody rysuj() i wymaz() z interfejsu klasy bazowej, które teraz będą działały inaczej. Dodatkowo z klasy Prostokąt wywiedziono klasę Kwadrat, która otrzyma wszystkie cechy klas Figura i Prostokąt oraz nową metodę obliczpole(). W rezultacie otrzymano wielopoziomową hierarchie klas. [1] W architekturze języka Java, oprócz typów podstawowych jakimi są int, float, etc, wszystko jest obiektem. Wszystkie klasy wywodzą się z klasy bazowej Object. Można zatem powiedzieć że owa architektura posiada wielopoziomową hierarchię klas o strukturze drzewa z korzeniem. Tym korzeniem jest klasa Object.[1] 3

4. Polimorfizm Polimorfizm (zwany również wiązaniem dynamicznym, późnym wiązaniem, wiązaniem czasu wykonania) jest trzecim kluczowym składnikiem języka programowania zorientowanego obiektowo, zaraz pod dziedziczeniu i abstrakcji danych. Jest to potężne narzędzie pozwalające programiście wyabstrahować od konkretnego typu. [3] Polimorficzne wywołanie metod daje możliwość danemu typowi odróżnienie siebie od innych, podobnych. Trwa to tak długo, jak długo są one wywiedzione z tego samego typu bazowego. Odróżnienie to polega na odmiennym działaniu metod, które mogą być wywoływane poprzez interfejs wspólnej klasy bazowej.[3] 5. Java język programowania zorientowany obiektowo Java jest to uniwersalny, wieloplatformowy, obiektowy język programowania stworzony przez zespół pod kierownictwem Jamesa Goslinga z firmy Sun Microsystems. Został zaprojektowany z myślą o prostocie i niezawodności. Składnia języka jest wzorowana na C++, ale zaznaczają się wyraźne różnice w organizacji obydwu języków. Wiele aspektów z języka C++ zostało pominiętych, za to pewne mechanizmy zostały zaczerpnięte z innych języków programowania. [4] Java jest językiem silnie typowanym. Taka specyfikacja wprowadza wyraźną granicę pomiędzy błędami kompilacji, które mogą i muszą być wykryte w czasie kompilacji oraz błędami czasu wykonywania. W czasie kompilacji kod źródłowy programu zostaje przetłumaczony na kod pośredni, tzw. bytecode, który jest sekwencją instrukcji dla Wirtualnej Maszyny Javy. Na czas wykonania składają się ładowanie i podpięcie klas niezbędnych do działania danej aplikacji oraz właściwe wykonanie programu. [4] Obecnie technologia Java należy do firmy Oracle Corporation i jest stale rozwijana. Najnowsza wersja języka Java Standard Edition 7, jest zaimplementowana na dwóch produktach tejże firmy: Java SE Development Kit (JDK) 7 oraz Java SE Runtime Environment (JRE) 7.[4] JRE 7 dostarcza bibliotek, Wirtualną Maszynę Javy (JVM) oraz inne komponenty potrzebne do uruchomienia aplikacji napisanych w języku Java. JDK 7 zawiera wszystkie elementy JRE 7, a ponadto narzędzia programistyczne takie jak kompilatory i debuggery niezbędne przy tworzeniu oprogramowania. [4] 4

Platforma Java stanowi potężne narzędzie programistyczne. W jej skład wchodzą biblioteki do obsługi protokołów sieciowych, multimediów, grafiki 3D, plików, baz danych i wiele innych. Posiada rozbudowany moduł do tworzenia graficznych interfejsów użytkownika (GUI). Poniższy diagram przedstawia strukturę komponentów technologii Java:[4] Rys. 2 Diagram komponentów języka Java SE 7 6. Bezpieczeństwo technologii Java Architekci języka Java dołożyli wszelkich starań, aby aplikacje w nim tworzone były maksymalnie niezawodne i bezpieczne. Zrezygnowano z kilku aspektów obecnych w języku C++ oraz dodano nowe mechanizmy. W ten sposób zminimalizowano liczbę przypadków przysparzających najwięcej problemów programistom i generujących najwięcej błędów. [1,4] Jedną z cech języka Java zwiększającą jego niezawodność jest brak wielokrotnego dziedziczenia. Oznacza to, że obiekt nie może być więcej niż jednego typu. Wyeliminowano przez to powstawanie struktur kratowych oraz mogące wyniknąć niejednoznaczności dziedziczenia. [1,4] Kolejny ważnym aspektem jest kontrola zakresu indeksów tablic uniemożliwiająca odwołanie się do istniejącego indeksu podczas działania programu. W języku Java tablica jest obiektem posiadającym atrybut określający jej rozmiar. [1,4] 5

Istotnym mechanizmem jest tzw. odśmiecacz pamięci (ang. Garbage Collector) eliminujący potencjalne zagrożenie związane z wyciekiem pamięci. Programista został odciążony z obowiązku jawnego niszczenia obiektów (destruktory). W momencie kiedy dany obiekt nie jest już potrzebny, pamięć po nim zostaje automatycznie zwolniona. [1,4] W technologii Java zrezygnowano z arytmetyki wskaźników. Większość programistów C++ uważa, że jest to pewne ograniczenie nałożone na twórców oprogramowania, nie mniej jednak zabieg ten poprawił niezawodność aplikacji. Wyeliminowano możliwość fałszowania bądź zmiany wskazań uchwytów do obiektów na inny obszar pamięci. [1,4] Język Java posiada bardzo rozbudowany mechanizm obsługi wyjątków. Już sam kompilator wymusza na programiście napisanie kodu obsługującego sytuację wyjątkową mogącą wystąpić w danym momencie. Dzięki temu nie występuje przypadkowość obsługi (bądź braku obsługi) błędów, co więcej zostaje ułatwiona czytelność i pielęgnacja kodu. [1,4] Nie są to wszystkie aspekty czyniące Javę językiem bezpiecznym. Z całą pewnością Javę można implementować na urządzeniach o znaczeniu krytycznym, bez obawy o sprzęt i dane, zakładając oczywiście, że twórcy systemu mają odpowiednie kwalifikacje. [1,4] 7. Podsumowanie Język Java jest obecnie najpopularniejszym język programowania. Według portalu tiobe.com zajmuje on pierwsze miejsce w rankingu języków nie tylko obiektowych posiadając 17,874% udziału (dane z października 2011r.). Technologia firmy Oracle jest wykorzystywana w bardzo dużej liczbie projektów komercyjnych. Istniej możliwość tworzenia aplikacji webowych, desktopowych, mobilnych, implementacji na różnego rodzaju urządzeniach elektronicznych. Coraz więcej osób uczy się tego języka. Przyczynia się do tego jego prostota i otwartość kodów źródłowych Javy. 6

Literatura [1] Eckel Bruce: Thinking in Java, wydanie IV, Wydawnictwo Helion, 2006, pp. 37 90 [2] Eckel Bruce: Thinking in C++, Wydawnictwo Helion, pp. 25 66 [3] Wierzbicki Marek: Java programowanie obiektowe, Wydawnictwo Helion, 2005, pp. 11 31 Strony www: [4] Dokumentacja Javy ze strony Oracle: http://docs.oracle.com/javase/7/docs/ (11.2011) 7