Historia i podstawowe koncepcje. Tomasz Borzyszkowski



Podobne dokumenty
Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Java jako język programowania

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe zastosowanie języka Java SE

Spis treści. 1 Java T M

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

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Java EE produkcja oprogramowania

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Podstawy Programowania Obiektowego

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Programowanie obiektowe - 1.

Wykład 1: Wprowadzenie do technologii Java

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Programowanie obiektowe. Wprowadzenie

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

WPROWADZENIE DO JĘZYKA JAVA

Modelowanie i Programowanie Obiektowe

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Multimedia JAVA. Historia

Programowanie w Internecie. Java

WPROWADZENIE DO JĘZYKA JAVA

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

Podstawy i języki programowania

Definicje klas i obiektów. Tomasz Borzyszkowski

Ćwiczenie 1. Przygotowanie środowiska JAVA

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

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

Podstawy języka Java. przygotował:

Podstawy programowania. Wprowadzenie

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Szablony funkcji i klas (templates)

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

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

Pakiety i interfejsy. Tomasz Borzyszkowski

Interfejsy i klasy wewnętrzne

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

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

Technologie obiektowe

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Wykład 9: Polimorfizm i klasy wirtualne

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

Język programowania. Andrzej Bobyk

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Programowanie w języku C++ Grażyna Koba

Technologie i usługi internetowe cz. 2

Bezpieczne programowanie w Javie kontrola dostępu. Security Programming in Java Access Control

Historia modeli programowania

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Dziedziczenie. Tomasz Borzyszkowski

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

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

Programowanie obiektowe

Podstawy programowania wykład

Aplikacje w środowisku Java

Projektowanie obiektowe. Roman Simiński Polimorfizm

Szablony funkcji i szablony klas

Zapisywanie algorytmów w języku programowania

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie obiektowe

Wykład 9: Metody wirtualne i polimorfizm

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

ZARZĄDZANIU. Wykład VI. dr Jan Kazimirski

Podstawy Języka Java

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Programowanie obiektowe

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

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Wykład 4: Klasy i Metody

Wykład 7: Pakiety i Interfejsy

Paradygmaty programowania

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

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

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

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

Wprowadzenie do języka Java

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Praktyka Programowania

Wykład 8: klasy cz. 4

private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne.

Dokumentacja do API Javy.

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

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

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

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,

Języki i metody programowania Java INF302W. Wykład 1 (część 1) na podstawie Autor Dr inż. Zofia Kruczkiewicz

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

Transkrypt:

Historia i podstawowe koncepcje Tomasz Borzyszkowski

Język C W latach 1960-70 trwają intensywne prace nad pierwszymi językami programowania zapewniającymi: Łatwość użycia Efektywność kodu Łatwość rozszerzania Pierwszymi językami były: BASIC, COBOL i FORTRAN. Jednak ich konstrukcje przewidziane w ww. językach nie sprzyjały pisaniu programów efektywnych i łatwych w rozumieniu. Lata 1960. Martin Richards stworzył język BCPL; podstawy programowania strukturalnego Koniec 1960. Ken Thompson opierając się na BCPL zdefiniował język B 1969. Dennis Ritchie opierając się na języku B zdefiniował język C zaimplementowany przez Dennisa Ritchie na komputerze DEC PDP-11 działającym pod systemem UNIX 2

Język C cd Przez lata standard języka C był wyznaczany przez implementacje systemu UNIX - opisany przez B. Kernighana i D. Ritchie The C Programming Language. W 1989 ANSI (American National Standards Institute) opracował standard języka C. Język C swą popularność zawdzięcza temu, że został zaprojektowany, zaimplementowany i rozwijany przez programistów (w większości wywodzących się z systemu UNIX). Był pierwszym językiem łączącym w sobie cechy, rzadko osiągane we wcześniejszych językach, tj: Strukturalny kod Niezależność od sprzętu Łatwość przyswajania 3

Język C++ W latach 1970. i 1980. C stał się dominującym językiem programowania. Skąd więc potrzeba nowego języka programowania? Rosnąca złożoność programów. Tym razem zaczęto szukać lepszej metodologii radzenia sobie z bardzo złożonymi programami, a nie nowego języka. Wynikiem tych poszukiwań była nowa metodologia programowania: Programowanie zorientowane obiektowo (OOP) C++ został wymyślony przez Bjarne Stroustrup w 1979 roku w Bell Laboratory w Murray Hill, New Jersey. Początkowo C++ nazywał się C with Classes. W 1983 zmieniono nazwę na C++. Sukces C++ bazował na sukcesie języka C, podobnie jak składnia języka bazowego. W 1997 powstał standard ANSI/ISO języka C++. 4

Powstanie języka Java Powody powstania języka Java: Stworzenie języka niezależnego od platformy sprzętowej nadającego się także do zastosowań niekomputerowych np.: mikrofalówki, telefony komórkowe,... Internet: potrzeba jednolitego i bezpiecznego języka do oprogramowania aplikacji przesyłanych siecią W 1991 roku w Sun Microsystem, Inc. po 18 miesiącach James Gosling, Patrick Naughton, Chris Warth, Ed Frank i Mike Sheridan stworzyli pierwszą wersję języka nazwanego wtedy Oak. Wiosną 1995 roku oficjalnie ogłoszono powstanie języka nazwanego Java Java bazuje na składni języków C i C++ oraz na obiektowych koncepcjach C++, jednak nie jest w żaden sposób z nimi zgodna. 5

Java: właściwości języka Aplety i aplikacje W Javie można tworzyć dwa rodzaje programów: aplikacje i aplety. Aplikacje to programy, które są uruchamiane na komputerze pod kontrolą zainstalowanego systemu operacyjnego. Aplet jest aplikacją zaprojektowaną i stworzoną do przesyłania przez sieć Internet i wykonywania przez przeglądarki sieciowe. Bezpieczeństwo Uruchamianie zwykłych programów pochodzących z internetu wymaga znacznej ostrożności. Aplety języka Java są bezpieczne. W czasie ich uruchamiania zostaje im przydzielony kawałek pamięci komputera. Poza nim aplet nie może korzystać z innych zasobów - czasem środowisko tego typu nazywa się sandbox. Niezależność od platformy Do internetu podłączone są różne typy komputerów i nie tylko. Aplety Javy są uniwersalnymi programami, uruchamialnymi na każdej platformie. 6

Bytecode Rozwiązanie problemu bezpieczeństwa i niezależności od platformy sprzętowej tkwi w tym, że w wyniku kompilacji programu nie otrzymujemy kodu wykonywalnego lecz kod zwany bytecode. Bytecode jest wysoko zoptymalizowanym zbiorem instrukcji zaprojektowanym do wykonania przez system wykonawczy Javy, zwany Java Virtual Machine (JVM). JVM jest interpreterem bytecodu. Języki poprzedzające Javę (C i C++) były językami w pełni kompilowanymi, tj. kompilacja polegała na wyprodukowaniu kodu wykonywalnego na danej platformie sprzętowej. Co więcej, dla każdej platformy sprzętowej trzeba było wyprodukować kompilator. W przypadku języka Java sytuacja jest prostsza. Wystarczy zaimplementować na każdej platformie znacznie prostszą JVM i uruchamiać pod jej kontrolą uniwersalny bytecode. 7

OOP koncepcje Java jest tak silnie związana z OOP, że nie ma możliwości napisania nieobiektowego programu (jak to ma miejsce w C++). Dlatego musimy poznać podstawowe koncepcje OOP zanim przystąpimy do pisania kodu. Dwie koncepcje programowania: Model procesowy: program jest serią akcji, tj. kodem, wykonywanych na danych; model ten jest wykorzystywany w językach proceduralnych: C, Pascal,...; model jest tym trudniejszy do stosowania im program jest większy i bardziej złożony Model OOP: program jest zorganizowany wokół danych, tj. obiektów, a nie akcji, i zbioru dobrze zdefiniowanych interfejsów do danych; często OOP określa się jako: dane kontrolujące dostęp do kodu 8

OOP abstrakcja Ludzie często używają abstrakcji w życiu radząc sobie w ten sposób ze skomplikowanymi zjawiskami/obiektami. Np.: ludzie nie myślą o samochodzie jako o zbiorowisku dziesiątek tysięcy części, a raczej jak o dobrze zdefiniowanym obiekcie o unikalnym zachowaniu. Do zarządzania abstrakcją służą klasyfikacje hierarchiczne, pomagające rozbić złożone problemy na prostsze. Obiekty abstrakcyjne często w rzeczywistości składają się z wielu komponentów. Np.: obiekt samochód składa się z wielu komponentów (układ kierowniczy, hamulce, silnik,...) lecz z zewnątrz jest postrzegany jako całość. Obiekty komponenty mogą porozumiewać się ze sobą przesyłając do siebie komunikaty. Komunikaty te mogą być ukryte przed obserwatorem zewnętrznym - też obiektem. 9

OOP hermetyzacja Hermetyzacja jest mechanizmem łączącym kod i dane, na których kod operuje, i chroni je przed niepowołanym dostępem i niewłaściwym użyciem. Hermetyzacja często jest opisywana jako opakowanie ochronne dla kodu i danych chroniące je przed dostępem przez kod pochodzący z zewnątrz opakowania. Dostęp do danych i kodu wewnątrz opakowania jest kontrolowany przez zdefiniowany interfejs. Klasa jest definicją struktury (danych) i zachowania (kodu), które mogą być wspólne dla wielu obiektów. Każdy obiekt będący instancją danej klasy posiada struktury i zachowania zdefiniowane w klasie, choć poszczególne obiekty mogą się różnić strukturami i zachowaniami spoza klasy. Dane obiektów danej klasy nazywamy zmiennymi instancji, natomiast kod nazywamy metodami instancji lub krótko metodami. 10

OOP Klasa klasy Obiekt Metody prywatne Prywatne zmienne instancyjne Metody publiczne Publiczne zmienne instancyjne (niezalecane) 11

OOP dziedziczenie Dziedziczenie jest mechanizmem nabywania przez jeden obiekt własności innego obiektu. Dziedziczenie, podobnie jak abstrakcja wspiera koncepcję klasyfikacji hierarchicznej. Przykład: Zwierze Ssak Ryba Koń Delfin Rekin Płotka 12

OOP polimorfizm Polimorfizm (z greckiego: wiele form) jest własnością pozwalającą użyć jeden interfejs dla pewnej klasy akcji. Poszczególne akcje są determinowane przez sytuację (środowisko czasu wykonywania). Przykład: Rozważmy program, w którym potrzebujemy trzech rodzajów stosów: liczb całkowitych, liczb zmiennopozycyjnych i znaków. Algorytm implementujący każdy stos jest taki sam (push, pop,...), natomiast różni się danymi, na których operuje. W zwykłych językach programowania zwykle tworzymy trzy różne implementacje stosów. Używając OOP możemy zaprogramować ogólne zachowanie stosów i stosować je do różnych sytuacji. Nieformalnie koncepcję polimorfizmu można opisać jako: Jedna metoda, wiele możliwości wykonania Wybranie odpowiedniej możliwości wykonania w zależności od kontekstu wywołania jest sprawą kompilatora a nie programisty. 13

Pierwszy program class Example{ public static void main(string args[]){ System.out.println("To jest prosty program napisany w języku Java"); } } Patrz plik: Example.java W języku Java plik zawierający kod programu zazwyczaj nazywa się tak jak zdefiniowana w nim klasa i nazywany jest jednostką kompilacji. Kompilator Javy wymaga by plik posiadał rozszerzenie.java. Wynikiem kompilacji jest bytecode w pliku o takiej samej nazwie jak definiowana klasa i rozszerzeniu.class. Kompilacja: Wykonanie: $ javac Example.java $ java Example 14

Pierwszy program wyjaśnienia class Example{ Słowo kluczowe class oznacza, że tu zaczyna się definicja nowej klasy. public static void main(string args[]){ Ta linia zaczyna metodę main(). Jest to metoda, która rozpoczyna wykonanie programu. public jest specyfikacją dostępu do definiowanych elementów. Tu oznacza, kod spoza klasy ma dostęp do definiowanego elementu. Przeciwnym jest private. static oznacza, że mamy dostęp do definiowanego elementu bez konieczności tworzenia obiektu danej klasy. String args[] definiuje tablicę args elementów klasy String, będących parametrami wywołania programu. System.out.println("To jest... ); Do potoku System.out (synonim stdout) wysyła tekst będący parametrem. 15

Kolejne programy Zobacz plik Example2.java, zawierający proste obliczenia numeryczne. Skompiluj i wykonaj program. num = + num Jest wyrażeniem wyliczającym się do obiektu typu String. Wartość num jest rzutowana na jej reprezentację napisową i doklejona do końca napisu num = Zobacz plik IfSample.java, zawierający przykłady użycia instrukcji warunkowej. Skompiluj i wykonaj program. Zobacz plik ForTest.java, zawierający przykłady użycia pętli iteracyjnej. Skompiluj i wykonaj program. Zobacz plik BlockTest.java, zawierający przykłady użycia pętli iteracyjnej z blokiem instrukcji. Skompiluj i wykonaj program. 16