Programowanie Obiektowe Java

Podobne dokumenty
Programowanie Obiektowe Java

Programowanie obiektowe

Java jako język programowania

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

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

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

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

Tworzenie aplikacji w języku Java

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

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

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

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe - Java

Ćwiczenie 1. Przygotowanie środowiska JAVA

PO: Java PROJEKTY. Małgorzata Janik. Zakład Fizyki Jądrowej

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

WPROWADZENIE DO JĘZYKA JAVA

Wykład Ćwiczenia Laboratorium Projekt Seminarium

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

Modelowanie i Programowanie Obiektowe

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Programowanie obiektowe. Wprowadzenie

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

Java EE produkcja oprogramowania

PO: Java PROJEKTY. Małgorzata Janik. Zakład Fizyki Jądrowej

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

Podstawy i języki programowania

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

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

Zajęcia trwają 15 tygodni (2 godziny wykładu, 2 godziny laboratorium tygodniowo) Zaliczenie zajęć jest uwarunkowane zaliczeniem zajęć laboratoryjnych

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

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

Podstawy języka Java. przygotował:

1 Podstawy c++ w pigułce.

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

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Podstawy Programowania Obiektowego

Podstawy programowania skrót z wykładów:

Wprowadzenie do języka Java

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

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Java Podstawy JUST JAVA Michał Bereta Intytu Modelowania Komputerowego Wydział Fizyki, Matematyki i Informatyki Stosowanej

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

2. Składnia, środowisko i konwencje w Javie

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

1 Atrybuty i metody klasowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

1 Podstawy c++ w pigułce.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

K_W04 K_W04 K_W04. Opis

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

Spis treści. 1 Java T M

Programowanie obiektowe 1 - opis przedmiotu

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

Wstęp do programowania w języku Java

Java Język programowania

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

WPROWADZENIE DO JĘZYKA JAVA

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Technologie i usługi internetowe cz. 2

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

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

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

PRZEWODNIK PO PRZEDMIOCIE

Programowanie obiektowe

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

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

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

Java Podstawy. Michał Bereta

Wykład 4: Klasy i Metody

Programowanie w Internecie. Java

Programowanie, algorytmy i struktury danych

Rok akademicki: 2012/2013 Kod: JFM s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Programowanie obiektowe

Wstęp do programowania w języku Java

Umieszczanie kodu. kod skryptu

Rozdział 4 KLASY, OBIEKTY, METODY

Java EE produkcja oprogramowania

Dokumentacja do API Javy.

Multimedia JAVA. Historia

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

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

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Technologie obiektowe

Programowanie w Javie

Podstawy programowania obiektowego

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

Język ludzki kod maszynowy

Podstawy Programowania C++

Zaliczenie przedmiotu:

Transkrypt:

Programowanie Obiektowe Java Małgorzata Janik Zakład Fizyki Jądrowej malgorzata.janik@pw.edu.pl

Regulamin Warunki zaliczenia Wykład Laboratoria Projekt 2/79

Programowanie Obiektowe Strona internetowa przedmiotu http://java.fizyka.pw.edu.pl/ Wykłady 15 h, 2 h przez pierwszą połowę semestru Laboratoria 30 h, 2h co tydzień Projekt realizowany w domu, trzy zajęcia projektowe sprawdzające postępy prac 3/79

Warunki zaliczenia Wykład 7 wykładów x 2h co tydzień +0.5 oceny w górę (za minimum 6 wykładów) Projekt 55 pkt Laboratoria: zajęcia punktowane 10 x 5 pkt = 50 pkt Laboratoria: kolokwium Ilość punktów Ocena 62 74.5 3 1 x 20 pkt = 20 pkt Warunek zaliczenia: Zaliczony projekt 75-87 3.5 Zaliczone kolokwium 87.5 99.5 4 > 50% punktów za całość (łącznie) 100-112 4.5 > 112.5 5 4/79

Laboratoria przewidzianych jest 15 zajęć laboratoryjnych (w tym 10 punktowanych, 3 projektowe, 1 kolokwium, 1 poprawy) obecność jest obowiązkowa (możliwe są maksymalnie 2 nieobecności); spóźnienie na zajęcia powyżej 15 minut automatycznie jest odnotowane jako nieobecność; zajęcia trwają 90 minut, odbywają się bez przerwy; Laboratoria: zajęcia punktowane (10 zajęć) Zadania są dostępne na stronie java.fizyka.pw.edu.pl za każde zadanie można otrzymać 0-5 pkt w trakcie pisania programu wolno korzystać z napisanych przez siebie programów oraz zasobów Internetu (w szczególności dokumentacji Java); nie można korzystać z programów innych studentów ani komunikatorów napisany w trakcie trwania laboratorium program należy oddać na tych samych zajęciach za skończenie programu po zajęciach (w domu) i przedstawieniu go w kolejnym tygodniu można uzyskać dodatkowe punkty (do 2.5 punkta) 5/79

Laboratoria Wskazane jest aby zadania kończyć w trakcie zajęć. Możliwe jest również oddanie ostatecznej wersji programu na następnych zajęciach (ewentualnie wcześniej w trakcie konsultacji). Za skończenie programu po zajęciach możliwe będzie zdobycie dodatkowych 2.5 punktów ale tylko w przypadku przedstawienia w pełni działającego programu; poprawa polega na zademonstrowaniu działającego programu oraz dyskusji z prowadzącym 6/79

Laboratoria Kolokwium celem kolkwium jest zweryfikowanie indywidualnych umiejętności studenta z zakresu programowania w języku Java zadanie do napisania samodzielnie (bez pomocy prowadzącego) za kolokwium można otrzymać 0-20 pkt w trakcie pisania programu wolno korzystać z napisanych przez siebie programów oraz zasobów Internetu (w szczególności dokumentacji Java) napisany w trakcie trwania laboratorium program należy oddać prowadzącemu na tych samych zajęciach (nie ma możliwości kończenia w domu) aby zaliczyć kolokwium, należy zdobyć min. 8 pkt Poprawy Przewiduje się na zajęciach numer 14 poprawy kolokwium Jest to również czas na ewentualne poprawy punktacji z laboratorium (do 5 punktów) Są to zajęcia nieobowiązkowe 7/79

Projekty Celem wprowadzenia projektów jest: 1) Nauczenie pracy zespołowej nad projektami informatycznymi 2) Nauczenie studentów samodzielnej pracy (tj. bez ciągłego wsparcia prowadzącego) nad większym projektem 3) Napisanie większego kawałka kodu do tej pory Wasze największe projekty informatyczne miały zwykle kilkaset linii kodu teraz możemy to zmienić 4) Zapoznanie studentów z problematyką tworzenia gotowych projektów, taką tak: a. Standardy kodu b. Budowanie projektu 8/79

Projekty Realizowane zespołowo zespoły dwuosobowe Zaliczenie czterech etapów kontrolnych : I. Specyfikacja (3 zajęcia), 0 5 punktów, dokument udostępniany drogą mailową do 3 tygodnia zajęć II. Prototype - User Interface (5 zajęcia) min. 25% punktów [zajęcia projektowe] III. Release Candidate (10 zajęcia) min. połowa punktów [zajęcia projektowe] IV. Final (15 zajęcia) ostateczna punktacja [zajęcia projektowe] Zaliczenie polega na: I. Oddanie dokumentu specyfikacji prowadzącemu laboratoria II IV. Zajęcia projektowe Prezentacja: (5-8 min na grupę) pierwsza godzina zajęć Omówienie kodu druga godzina zajęć 9/79

Realizowany Zespołowo W drugim tygodniu zajęć należy wysłać prowadzącemu e-mail z informacją o: Członkach zespołu Pomyśle na projekt Temat projektu powinien zostać uzgodniony z prowadzącym laboratoria przed przygotowaniem specyfikacji Przykłady tematów na stronie http://java.fizyka.pw.edu.pl/lista-projektow Zawsze można wybrać własny projekt Tematy w danej grupie nie mogą się powtarzać (kto pierwszy ten lepszy) Wystarczy OK od prowadzącego Projekt jest realizowany zespołowo, ale uzyskana ocena jest indywidualna. Wkład każdego z członków zespołu będzie oceniany indywidualnie przez prowadzącego. 10/79

Tematy Projektów Kilka przykładów Układ słoneczny w 3D Fizyka ruchu wielu ciał Modelowanie ruchu cząstki w polu EM Symulacja toru lotu pocisków artylerii Symulacja gry w bilard Model bomby atomowej Twój Własny Pomysł 11/79

Tematy Projektów Kilka przykładów Program do symulacji toru lotu rzutu ukośnego 12/79

Tematy Projektów Kilka przykładów Program do symulacji układu złożonego z wykorzystaniem modelu Vicseka 13/79

Tematy Projektów Kilka przykładów Efekt Dopplera, symulacja 14/79

Tematy Projektów Kilka przykładów Układ słoneczny w 3D Fizyka ruchu wielu ciał Modelowanie ruchu cząstki w polu EM Symulacja toru lotu pocisków artylerii Symulacja gry w bilard Model bomby atomowej Twój Własny Pomysł Interaktywny model ukł. planetarnego w 3D, Java FX - możliwość tworzenia i symulacji ruchu we własnych układach planetarnych 15/79

Specyfikacja W trzecim tygodniu zajęć należy wysłać prowadzącemu e-mail z przygotowaną specyfikacją. Punktowana jest oddzielnie, 0 5 pkt. Specyfikacja jest dokumentem opisującym funkcjonalności waszego programu Dokładnie opisać działanie programu Model matematyczny; wzory Szkice interfejsu Scenariusze użycia + diagramy UML (dodatkowe punkty) Listę dodatkowych funkcjonalności Należy określić ocenę, jaką Państwo chcielibyście uzyskać oraz przygotować tabelę zadań. Jak długa? Jak najkrótsza, ale musi byż zrozumiała i zawierać wszystkie niezbędne elementy Jakość specyfikacji (język, edycja) też jest oceniana 16/79

Specyfikacja Wszystkie szczegóły są opisane w szablonie specyfikacji Do ściągnięcia tutaj: http://java.fizyka.pw.edu.pl/specyfikacja Specyfikacja może ewoluować w czasie 17/79

Więcej informacji http://java.fizyka.pw.edu.pl/projekty Wymogi formalne Specyfikacja (w tym tabela zadań) Przykładowe tematy Podział pracy w zespole, plagiaty Proponowane dodatkowe funkcjonalności 18/79

Warunki zaliczenia Projekt 5 + 50 = 55 pkt Laboratoria: zajęcia punktowane 10 x 5 pkt = 50 pkt Laboratoria: kolokwium 1 x 20 pkt = 20 pkt Łącznie punktów: 55 + 50 + 20 pkt = 125 pkt Ilość punktów Ocena Wykład 62 74.5 3 75-87 3.5 +0.5 oceny w górę Warunek zaliczenia: Zaliczony projekt 87.5 99.5 4 Zaliczone kolokwium 100-112 4.5 > 50% punktów za całość (łącznie) > 112.5 5 Pytania? 19/79

Zaczynamy! 20/79

Trochę wstępu.. Programowanie Obiektowe Trochę historii Programowanie Strukturalne Programowanie Zorientowane Obiektowo Zachowania i Atrybuty

Zamierzchła przeszłość Pierwsze komputery były programowane bezpośrednio z użyciem kodu maszynowego lub z wykorzystaniem asemblera. Pierwsze asemblery przypadają na połowę lat 50. Przykład kodu asemblera dla procesora Motorola 8-bit 6800 Przykład kodu maszynowego (kolumna druga rozpoczynająca się od 6C 36 00) Źródło: Wikipedia

Zamierzchła przeszłość Pierwsze komputery były programowane bezpośrednio z użyciem kodu maszynowego lub z wykorzystaniem asemblera. Pierwsze asemblery przypadają na połowę lat 50. Kontrola przepływu w programie odbywała się głównie przy pomocy warunkowych i bezwarunkowych instrukcji skoku. Instrukcja skoku (goto) pozwala na powtórne wykorzystanie tego samego fragmentu kodu ale sprawia też, że program jest zdecydowanie mniej czytelny. Fragmentu kodu w Perlu

Programowania radosne początki Jeżeli znamy podstawowe konstrukcje algorytmiczne i potrafimy je zagnieżdżać, wówczas teoretycznie jesteśmy w stanie napisać każdy algorytm. Jednakże, długość kodu programu nastaje się coraz większa i po pewnym czasie nie jesteśmy w stanie objąć wszystkiego wzrokiem i umysłem. Zastosowanie podprogramu (np. funkcji) pozwala podzielić algorytm na zbiór mniejszych, wydzielonych części.

Programowanie strukturalne Definicja: paradygmat programowania opierający się na podziale kodu źródłowego programu na procedury i hierarchicznie ułożone bloki. Rozwijał się w opozycji do programowania wykorzystującego proste instrukcje warunkowe i skoki (goto). Początki programowania strukturalnego przypadają na Lata 60. XX wieku, a ważnym głosem w dyskusji o programowaniu strukturalnym był list Edsgera Dijkstry z 1974 roku: Instrukcja goto powinna zostać usunięta z wszystkich wysokopoziomowych języków programowania (to znaczy z wszystkich poza - prawdopodobnie - czystym kodem maszynowym. Programowanie strukturalne zwiększa czytelność i ułatwia analizę programów, co stanowi znaczącą poprawę w stosunku do trudnego w utrzymaniu spaghetti code często wynikającego z użycia instrukcji goto.

Programowanie strukturalne Definicja: paradygmat programowania opierający się na podziale kodu źródłowego programu na procedury i hierarchicznie ułożone bloki. Rozwijał się w opozycji do programowania wykorzystującego proste instrukcje warunkowe i skoki (goto). Początki programowania strukturalnego przypadają na Lata 60. XX wieku, a ważnym głosem w dyskusji o programowaniu strukturalnym był list Edsgera Dijkstry z 1974 roku: Instrukcja goto powinna zostać usunięta z wszystkich wysokopoziomowych języków programowania (to znaczy z wszystkich poza - prawdopodobnie - czystym kodem maszynowym. Programowanie strukturalne zwiększa czytelność i ułatwia analizę programów, co stanowi znaczącą poprawę w stosunku do trudnego w utrzymaniu spaghetti code często wynikającego z użycia instrukcji goto. Spagetti code = trudny do zrozumienia kod źródłowy programu. Używano wielu instrukcji warunkowych i następnych w nich zagnieżdżonych konstrukcji GOTO. Droga przez kolejne rozkazy była tak poplątana, że odczytanie takiego kodu i zrozumienie go było bardzo uciążliwe, a ewentualne modyfikacje zwykle prowadziły do błędów w programie.

https://xkcd.com/292/

Programowanie strukturalne Programowanie strukturalne polega na tworzeniu programów wyłącznie w oparciu o trzy kompozycje algorytmiczne: Sekwencyjną (instrukcje wykonują się jedna po drugiej), Warunkową (instrukcje warunkowe if, if else, switch) Iteracyjną (pętle for, while, do while). Zabronione są algorytmy wykorzystujące instrukcję skoku (GOTO).

Problemy z programowaniem strukturalnym W przypadku programowania strukturalnego często mamy doczynienia z danymi, które muszą być widoczne w całym programie (dla wielu funkcji) i wiele funkcji może je zmieniać = tzw. dane globalne. W takim wypadku każda funkcja może zmienić dane, które mają wpływ na działanie wszystkich innych elementów prorgamu. Czyli jedna niewielka zmiana może popsuć działanie całego kodu w wielu różnych miejscach.

Problemy z programowaniem strukturalnym Koncepcja programowania obiektowego pierwotnie pojawiła się w Simuli 67, języku zaprojektowanym do zastosowań symulacyjnych, stworzonym przez Ole-Johana Dahla i Kristena Nygaarda z Norsk Regnesentral w Oslo. Mówi się, że pracowali oni nad symulacjami zachowania się statków i mieli kłopoty z opanowaniem wszystkich zależności, jakie wywierały na siebie nawzajem wszystkie parametry statków w symulacji. Wtedy wpadli na pomysł, by pogrupować typy statków w różne klasy obiektów, a każda z klas sama odpowiadałaby za określanie własnych danych i zachowań. Upraszczamy program, grupując kod w klasy, w których każda jest odpowiedzialna tylko za samą siebie (swoje dane i swoje funkcje) Programowanie obiektowe zyskało status techniki dominującej w połowie lat 80 (dzięki C++)

Programowanie Obiektowe Programy definiujemy za pomocą obiektów. Koncepcja obiektów fizycznych jest znana każdemu Możemy sobie wyobrazić samochód, człowieka, toster.

Programowanie Obiektowe Programy definiujemy za pomocą obiektów. Koncepcja obiektów fizycznych jest znana każdemu. Obiekty w programowaniu to są modele rzeczywistych obiektów fizycznych. Samochód Człowiek Toster - kolor ZIELONY - nazwisko EINSTEIN - producent HB - marka DAEWOO - zawód FIZYK - typ POP-UP + Tankuj() + Śpij() + Grzej() Programowanie +Obiektowe Jedź() (Wykład) + GenerujNobla() + WyrzućTosty()

Programowanie Obiektowe Obiekty w programie reprezentują w pewnym stopniu obiekty rzeczywiste Jeśli chcemy zaprogramować aplikacje dla zarządzania szpitalem, zapewne będziemy musieli stworzyć obiekty odpowiadające pacjentom, lekarzom, pielęgniarkom, ochronie, W rzeczywistości to obiekty oddziałują ze sobą. W przypadku programów komputerowych jest podobnie: obiekty wysyłają do siebie wiadomości (wywołanie funkcji na innym obiekcie), a czasem uzyskują informacje zwrotne (zwracane zmienne).

Programowanie Obiektowe Na obiekty składają się atrybuty i zachowania: Toster Samochód - kolor ZIELONY - marka DAEWOO + Tankuj() + Jedź() atrybuty zachowania - producent HB - typ POP-UP + Grzej() + WyrzućTosty() Obiekty zawierają więc zarówno dane (wartości atrybutów) oraz zachowanie (możliwe akcje które dany obiekt może wykonać) zarówno - różnica między programowaniem proceduralnym a obiektowym

Programowanie Obiektowe Na obiekty składają się atrybuty i zachowania: Toster Samochód - kolor ZIELONY - marka DAEWOO + Tankuj() + Jedź() atrybuty zachowania - producent HB - typ POP-UP + Grzej() + WyrzućTosty() Dobrze zaprojektowany program zakłada, że wartości atrybutów nie może zmienić nic poza obiektem, do którego należą czyli wszystkie zmiany następują poprzez wywołanie odpowiednich zachowań (wywołanie funkcji) Enkapsulacja, metody Set i Get. Każdy obiekt odpowiada za swoje dane.

Atrybuty i ich wartości Należy pamiętać, że atrybut (pole składowe) i jego wartość, to dwie różne rzeczy : Samochód - kolor ZIELONY - marka DAEWOO atrybuty wartości atrybutów Każdy samochód będzie miał kolor, ale nie każdy będzie zielony. Sam atrybut jest jak pusta formatka, w którą możemy wpisywać wartości charakterystyczne dla naszego obiektu (konkretnej instancji naszej klasy).

Atrybuty i ich wartości Należy pamiętać, że atrybut (pole składowe) i jego wartość, to dwie różne rzeczy : Sam atrybut jest jak pusta formatka, w którą możemy wpisywać wartości charakterystyczne dla naszego obiektu (konkretnej instancji naszej klasy).

Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; } public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; } double x, y; } public static void main(string[] args) { Punkt p1 = new Punkt (30,30); System.out.println(p1.Wypisz()); }

Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; } public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; } double x, y; } public static void main(string[] args) { Punkt p1 = new Punkt (30,30); System.out.println(p1.Wypisz()); } W programowaniu obiektowym klasa reprezentuje obiekty. Definicja klasy zwykle nie reprezentuje konkretnego obiektu, ale raczej typ.

Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; } public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; } double x, y; } public static void main(string[] args) { Punkt p1 = new Punkt (30,30); Instancja klasy = konkretny obiekt. System.out.println(p1.Wypisz()); }

Zachowania i atrybuty na przykładzie public class Punkt { Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; } public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; } Atrybuty. double x, y; } Zwykle nazywamy je polami (ang. fields). Nie powinny być dostępne z zewnątrz. public static void main(string[] args) { Punkt p1 = new Punkt (30,30); System.out.println(p1.Wypisz()); }

Zachowania i atrybuty na przykładzie public class Punkt { } Punkt (double parametr1, double parametr2){ x = parametr1; y = parametr2; } public String Wypisz(){ String text; text = "Wspolrzedne ("+ x + ", " + y + ")"; return text; } double x, y; Zachowania / akcje, które możemy wywołać na naszym obiekcie. Np. utworzenie obiektu o konkretnych public static void main(string[] args) { wartościach atrybutów czy zwrócenie Punkt p1 = new Punkt (30,30); informacji o obiekcie w postaci napisu System.out.println(p1.Wypisz()); (String). } Czyli funkcje składowe (metody).

Obiektowa Java vs. C++ W latach 90 to C++ był uważany za lidera programowania obiektowego. Ale C++ jest językiem hybrydowym : pozwala na programowanie strukturalne, bądź obiektowe, bądź miksowanie obu paradygmatów co w oczywisty sposób może prowadzić (i często prowadzi) do powstawania kodu który jest skomplikowany i trudny w utrzymaniu Java stworzona została od początku jako język służący do programowania obiektowego

Dlaczego Java? 44/79

Why Java? 45/79

TIOBE Index - Luty 2019 Najbardziej popularny? https://www.tiobe.com/tiobe-index/ Basically the calculation comes down to counting hits for the search query +"<language> programming" it's an attempt to measure the size of each language's community of developers. 46/79

Podobieństwo do C/C++ Łatwa składnia Java ma składnię znajomą dla każdego kto miał do czynienia z C, C++ lub C#, czyli mniej więcej dla ~99.9% programistów. 47/79

Biblioteki Standardowe interfejsy programowania aplikacji (API) Szeroki zestaw podstawowych bibliotek czeka, aby być wykorzystywany. Są też na komputerach klienta, jeśli tylko ma zainstalowaną Javę. 48/79

Prosty w użyciu Szczegóły implementacji zrobi za Ciebie Java jest językiem wysokiego poziomu Została zaprojektowana, by być przyjazna początkującemu użytkownikowi: będzie się sama zabezpieczać przed dużą ilością głupich pomysłów programisty (pamiętasz Segmentation Fault z C++? Szansa, że na nie wpadniesz tutaj, są duużo mniejsze!). Programujesz, nie przejmując się szczegółami przydzielania pamięci Garbage Collection : nie przejmujesz się też zwalnianiem zaalokowanej pamięci Java zrobi to za Ciebie możesz możesz zapomnieć o delete. 49/79

Przenośność Write Once, Run Anywhere Maszyna Wirtualna Aplikacje Java zwykle kompilujemy, uzyskując programy które można uruchomić na maszynie wirtualnej Java, niezależnie od architektury komputera czy też systemu operacyjnego. Musi się jedynie zgadzać zainstalowana wersja Javy. 50/79

Dlaczego Java? Najbardziej popularny Pożądany na rynku Podobny do C/C++ Prosty w użyciu Standardowe API i biblioteki Przenośny 51/79

O co właściwie chodzi? Co trzeba zainstalować? Maszyna Wirtualna JDK Edycje Java Jar 52/79

Maszyna Wirtualna Kod źródłowy pliki *.java kompilacja Kod bajtowy (bytecode) pliki *.class ładowanie Wirtualna maszyna Java (JVM) wykonywanie w środowisku Win/Unix/ 53/79

Maszyna Wirtualna Java Virtual Machine (JVM) Abstrakcyjna maszyna obliczeniowa, zdolna do wykonwania programu napisanego w Javie Maszyna Wirtualna Javy nie jest nazwą konkretnego produktu. (wykonywania kodu bajtowego Javy) Dostępna publicznie specyfikacja pozwala różnym producentom oprogramowania na tworzenie własnych maszyn wirtualnych pracujących pod kontrolą różnych środowisk i urządzeń. Jest zawarta w JRE: Java Runtime Environment 54/79

JRE i JDK Java Runtime Environment (JRE) Pakiet zawierający wszystko, co potrzebne, by uruchomić program Java. Zawiera JVM (maszynę wirtualną) oraz implementację biblioteki Java Class. Zawiera wyłącznie narzędzia niezbędne do uruchomienia aplikacji. Java Development Kit (JDK) Oprócz tego, co JRE, zawiera również narzędzia dla programistów, pozwalające na tworzenie aplikacji na platformę JVM. 55/79

Java Development Kit (JDK) JDK narzędzia podstawowe java - interpreter javac - kompilator apt annotation processing tool javadoc appletviewer jar zarządca Java Archives (jars) jdb debugger javah narzędzie do tworzenia metod natywnych 56/79

JAR JAR (Java Archive) archiwum Java, czyli plik zawierający skompresowane (ZIP) pliki klas i zasobów. Tworzy sie je za pomocą narzędzia jar wchodzącego w skład JDK. Z klas znajdujących sie w pliku.jar można korzystać, w tym uruchamiać aplikacje. Jeden plik (archiwum) zawierający wszystkie ważne dla programu pliki składowe. Plik JAR może zawierać plik manifestu, znajdujący się w META-INF/MANIFEST.MF, który opisuje jak używać pliku. Zwykle ma rozszerzenie.jar. 57/79

Java Development Kit (JDK) http://www.oracle.com/technetwork/java/javase/downloads/index.html Java SE 8u201 / Java SE 8u202 Korzystamy z Java 8, nie 11!

Edycje Java Java Standard Edition (Java SE) Podstawowa platforma Java. Zawiera podstawowe biblioteki. Ta wersja nas interesuje. Java Enterprise Edition (Java EE) Rozszerzenie platformy podstawowej. Platforma przeznaczona m.in. dla systemów rozproszonych, tj. świadczacych usługi dla wielu użytkowników. Java Micro Edition (Java ME) jest to zbiór technologii i specyfikacji wykorzystywanych przez małe urzadzenia, takie jak: telefony komórkowe i inne małe urzadzenia. J2ME wykorzystuje niektóre komponenty J2SE, takie jak mniejsza maszyna wirtualna i odchudzone API. Inne (np. JavaFX) 59/79

Środowisko Eclipse 60/79

IDE - Integrated development environment (zintegrowane środowisko programowania) IDE - aplikacja (lub zespół aplikacji - środowisko) służących do tworzenia, modyfikowania, testowania i konserwacji oprogramowania. Aplikacje będące zintegrowanymi środowiskami programistycznymi charakteryzują się tym, że udostępniają złożoną, wieloraką funkcjonalność obejmującą edycję kodu źródłowego, kompilowanie kodu źródłowego, tworzenie zasobów programu (tzn. formatek / ekranów / okien dialogowych, menu, raportów, elementów graficznych takich jak ikony, obrazy itp.), tworzenie baz danych, komponentów i innych. 61/79

IDE dla Javy Eclipse (http://www.eclipse.org) Netbeans (http://netbeans.org/), IntelliJ IDEA (http://www.jetbrains.com/idea/), Jcreator (http://www.jcreator.com/ ) Na laboratoriach używany będzie Eclipse 62/79

Eclipse http://www.eclipse.org/downloads 63/79

Eclipse http://www.eclipse.org/users 64/79

Co ściągnąć? Java Development Kit (JDK) 8, Standard Edition (SE) Najnowsza jest JDK 11, ale JDK 8 używane na laboratoriach powinno starczyć do wszystkiego co będziemy ćwiczyć http://www.oracle.com/technetwork/java/javase/downloads/index.html Eclipse (http://www.eclipse.org) Sugeruję ściągnąć najnowszy Eclipse dostępny na stronie (obecnie Eclipse IDE 2018 12)12) Na laboratoriach będziemy używać wersji: JDK 1.8.0_151 Eclipse 3.8.1 archive.eclipse.org/eclipse/downloads 65/79

Uwaga: aby pod Windows możliwe było stosowanie komend JDK trzeba do zmiennej systemowej PATH dodać katalog \bin z JDK (np. C:\Program Files\Java\jdk1.7.0_13\bin ) 66/79

Co mamy w programie? Ważne dla projektów! 67/79

Czego się nauczycie na zajęciach? Tworzenia graficznego interfejsu użytkownika (GUI) Java Swing Kontrolki w okienku Napisy Okienko Pola wyboru Guziki Listy rozwijane Slidery Suwaki Pola tekstowe 68/79

Czego się nauczycie na zajęciach? Tworzenia graficznego interfejsu użytkownika (GUI) Java Swing Ustawienie kontrolek w okienku 69/79

Czego się nauczycie na zajęciach? Tworzenia graficznego interfejsu użytkownika (GUI) Java Swing Obsługa zdarzeń oprogramowanie kontrolek - Wyskakujące okienka 70/79

Czego się nauczycie na zajęciach? Rysowanie Będziecie rysować figury geometryczne, linie, oraz punkty podążające za myszką jak w Paint cie! Zmieniać kolory Wczytywać obazki! 71/79

Czego się nauczycie na zajęciach? Animacje Regularnie zmieniając rysowany obrazek w czasie uzyskacie proste animacje 72/79

Czego się nauczycie na zajęciach? Operacje na plikach Zapis i odczyt różnych rodzajów plików Tesktowych, binarnych, obrazków Operacje na bazach danych Przechowywanie rekordów w bazach danych, odczytywanie tych danych 73/79

Czego się nauczycie na zajęciach? Rysowanie wykresów Bardzo duży zbiór gotowych szablonów dla różnych wykresów Łatwo można je zmieniać w czasie! 74/79

Czego się nauczycie na zajęciach? Multimedia Obsługa dźwięku w Javie Obsługa plików multimedialnych (video) 75/79

Czego się nauczycie na zajęciach? Inne Różnice między C++ a Java Parametry wywołania programu Dziedziczenie Interfejsy Kolekcje Obsługa wyjątków Obsługa zewnętrznych bibliotek, tworzenie PDFów Wstęp do Javy FX Programowanie wielowątkowe... 76/79

Tyle tytułem wstępu, zaczynamy kodowanie...! C O D E 77/79

Podstawy Struktura programu Typy danych Operatory Instrukcje sterujące Pętle 78/79

Hello World C++ / Java 79/79

Hello World C++ / Java Plik powinien nazywać się tak samo jak klasa z rozszerzeniem.java (Hello.java) Kompilacja z linii poleceń: javac Hello.java Uruchamianie z linii poleceń: java Hello 80/79

Struktura programu package... //deklaracja pakietu, opcjonalna ale zalecana import... // deklaracje importu import... /** Komentarz dokumentacyjny */ // To jest klasa A public class A {... } /* To jest komentarz wielowierszowy */ class B { public static void main(string[] args) {...//Metoda main klasy startowej od niej rozpoczyna się uruchamianie programu } }//Koniec klasy B 81/79

Typy proste JAVA 82/79

Operatory 83/79

Instrukcje sterujące analogiczne do C 84/79

Instrukcje if można zagłębiać lub dokonywać wielokrotnego wyboru: analogiczne do C 85/79

switch-case Nadal analogiczne do C 86/79

switch-case Brak break przy pierwszym warunku wynikiem będzie wypisanie 0 i 1 analogiczne do C 87/79

Pętla for analogiczne do C Zmienną i nazywamy Indeksem Pętli Indeks może być dowolnym typem prostym poza boolean. Warunek może być dowolnym zdaniem logicznym, należy jednak zwrócić uwagę by nie była to tautologia. Otrzymamy wtedy pętle nieskończoną Krok pętli może być dowolny jednak tak samo jak w przypadku warunku trzeba uważać na zapętlenie się programu. 88/79

do/while Obie te konstrukcje są bardzo podobne do siebie. Główna różnica polega na tym iż w pętli while warunek jest sprawdzany przed wykonaniem instrukcji, a w pętli do while po wykonaniu instrukcji. Oznacza to, że pętla do while wykona się co najmniej jeden raz niezależnie od warunku....analogiczne do C 89/79

break/continue Jeżeli chcemy przerwać wykonanie pętli jeżeli spełniony jest jakiś warunek to musimy użyć słowa break, a jeśli chcemy pominąć jakiś krok w pętli to musimy użyć słowa continue:...analogiczne do C 90/79

Konwencja kodu Nazwa klasy powinna coś znaczyć. Pierwsza litera w nazwie klasy pisana jest wielka litera. Jeśli nazwa klasy składa sie z kilku słów to pisze sie je łącznie, każde słowo rozpoczynajac z wielkiej litery: class MojaKlasa { } 91/79

Konwencja kodu Metody i pola oraz nazwy referencji pisze się analogicznie, poza tym ze pierwsza litera jest mała (należy pamiętać, że język Java rozróżnia małe i wielkie litery): class MojaKlasa{ int mojazmienna; void pobierzzmienna(int numerzmiennej){ } } 92/79

Konwencja kodu Instrukcja złożona to ciąg instrukcji pomiędzy nawiasami { }, nazywana blokiem instrukcji np.: instrukcja_grupujaca //klasa, metoda, itp. {... //blok kodu }//koniec instrukcja_grupujaca Instrukcja grupująca (np. klasa, metoda, instrukcja sterująca, np. pętla) rozpoczyna blok kodu. Jeśli zadeklarujemy w bloku zmienną to będzie ona widoczna tylko w tym bloku. Po klamrze zamykającej nie trzeba stawiać średnika. 93/79

Konwencja kodu Istnieja kilka wariantów stawiania nawiasów { }: while(i) { } while(i) { } while(i) { } Wszystkie te są poprawne. Warto jednak wybrać jeden i konsekwentnie sie go trzymać. Warto również po otwarciu klamry od razu postawić klamrę zamykająca. Pozwoli to uniknąć wielu niepotrzebnych błędów. 94/79

Konwencja kodu instrukcja_grupujaca { instrukcje bloku... }//koniec instrukcja_grupujaca Kod po klamrze otwierającej umieszcza sie w nowej linii. Każda linia bloku jest przesunięta (wcięta) względem pierwszego znaku instrukcja_grupujaca o stałą liczbę znaków. Blok kończy sie klamrą zamykającą w nowej linii na wysokości pierwszego znaku instrukcji grupującej. Blok warto kończyć komentarzem umożliwiającym identyfikacje bloku zamykanego przez dana klamrę. 95/79

Konwencja kodu Warto stosować nadmiarowości i dodatkowe separatory celem poprawienia czytelności kodu np.: int a = (c * 2) + (b / 3); zamiast: int a=c*2+b/3; 96/79

Konwencja kodu Ważnym elementem czytelnej konstrukcji kodu jest stosowanie komentarzy liniowych: int i = 5; //komentarz pojedynczej linii lub blokowych: /* blok komentarza: druga linia komentarza... */ lub blokowych z dodatkowymi gwiazdkami *: /* * blok komentarza: * druga linia komentarza */ 97/79

Typ tablicowy Tablice w Javie są jednowymiarowe, ale mogą zawierać inne tablice. Przy definicji typu nie podaje się wielkości tablicy Każda tablica jest obiektem i ma zdefiniowane pole length o wartości równej liczbie elementów w tablicy Zadeklarowanie tablicy nie przydziela jej pamięci! Aby przydzielić pamięć należy użyć new Tablice są indeksowane wartościami typu int, stąd największa tablica ma 2147483647 elementów. Jeśli potrzebujesz większej tablicy, coś jest nie w porządku z Twoim kodem 98/79

Typ tablicowy //przykłady deklaracji i tworzenia tablic int arr[]; int [] arr; //to samo co wyżej arr = new int[3]; int arr[] = { 0, 0, 0 }; //równoważne int arr[][]; arr[][] = new int[3][]; //powstaje tablica wektorów arr[0] = new int[5]; //pierwszy wektor arr[1] = new int[5]; arr[2] = new int[5]; //ostatni wektor arr[][] = new int[10][]; for (int i=0; i<10; i++) arr[i] = new int[i+1]; //tablica trójkątna arr[][] = { {1}, {0, 1}, {0, 0, 1} }; arr[0] = null; arr[1] = new int[10]; arr[2] = {10, 10}; 99/79

Literatura Java przewodnik dla początkujących, Herbert Schildt Thinking in Java - Bruce Eckel Java Podstawy - Cay Horstmann, Gary Cornell Java Receptury - Ian F. Darwin Java ćwiczenia praktyczne - Marcin Lis Java w zadaniach - Steve Potts Java po C++ - Jan Bielecki Java 4 Swing - Jan Bielecki Dokumentacja JAVA 100/79

Dokumentacja on-line (javadoc): http://docs.oracle.com/javase/ 101/79

API Documentation (Application Programming Interface interfejs programowania aplikacji ) 102/79

Dziękuję za Uwagę! Do zobaczenia za tydzień. Będę więcej opowiadać o projektach. 103/79

Powtarzanie przedmiotu Projekt Jeśli projekt został zaliczony, ocena z projektu może zostać zamieniona na punkty. 5.0 = 100% = 55 pkt. 3.0 = 51% = 28 pkt. W przeciwym wypadku obowiązkowe zaliczenie wszystkich etapów zgodnie z harmonogramem. Laboratoria: zajęcia punktowane 10 x 5 pkt = 50 pkt Ocena z laboratorium może zostać zamieniona na punkty. 100% = 50 pkt. Czyli jeśli ktoś zaliczył laboratorium na 3, może dostać 51% punktów = 26 pkt. W takim wypadku uczęszczanie na laboratoria nie jest obowiązkowe. Laboratoria: kolokwium 1 x 20 pkt = 20 pkt obowiązkowe. Niezaliczenie tych zajęć: brak uzyskania zaliczenia. Zalicznie oznacza zdobycie min. 8 punktów. Łącznie punktów: 50 + 55 + 20 pkt = 125 pkt Wykład Pytania? +0.5 oceny w górę Warunek zaliczenia: > 50% z projektu > 50% punktów + zaliczone kolokwum 104/79

Wykład Poniedziałek 16:15 18:00 2 h, pierwsza połowa semestru 7 wykładów : obecność na minimum 6: +0.5 oceny w górę Daty (możliwość zmiany) 18.02 25.02 4.03 11.03 Pod koniec semestru 1 h na wpisywanie ocen 18.03 25.03 1.04 105/79