• Nie Znaleziono Wyników

Programowanie Obiektowe Java

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie Obiektowe Java"

Copied!
123
0
0

Pełen tekst

(1)

Programowanie Obiektowe

Java

Małgorzata Janik

Zakład Fizyki Jądrowej

(2)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 2/792/79

Adiunkt w Zakładzie Fizyki Jądrowej Wydziału Fizyki PW

dr inż. Małgorzata Janik

Kończyłam wydział Fizyki (fizyka komputerowa) i Wydział MiNI (computer science) PW

Prowadzę badania z Fizyki Cząstek w eksperymencie ALICE na Wielkim Zderzaczu Hadronów w CERN

Materia w stanie “plazmy kwarkowo-gluonowej”

Korelacje między

produkowanymi cząstkami

Kim jestem?

(3)

Regulamin

Warunki zaliczenia

Wykład Laboratoria

Projekt

(4)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 4/794/79

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 samodzielnie, trzy zajęcia projektowe sprawdzające postępy prac

Programowanie Obiektowe

(5)

Wykład – 7 wykładów x 2h co tydzień

Projekt

65 pkt

Laboratoria: zajęcia punktowane

10 x 5 pkt = 50 pkt

Laboratoria: kolokwium

1 x 20 pkt = 20 pkt

Warunek zaliczenia:

Zaliczony projekt

Zaliczone kolokwium

> 50% punktów za całość (łącznie)

Warunki zaliczenia

Ilość punktów Ocena

67.5 – 80.5 3

81 - 94 3.5

94.5 – 107.5 4 108 - 121 4.5

> 121.5 5

(6)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 6/796/79

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); przez obecność rozumie się zalogowanie do platformy MS Teams w celu uzyskania omówienia treści zadania do

realizacji lub/oraz oddania programu z poprzednich zajęć

zajęcia trwają 90 minut, odbywają się bez przerwy;

zajęcia odbywają się zgodnie z planem z dziekanatu, prowadzący ma jednak prawo umawiać się indywidualnie po konsultacji ze studentami w innym terminie przy zachowaniu realizacji jednego programu tygodniow.

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

na napisanie i odesłanie prowadzącemu programu studenci mają tydzień (należy przesłać program najpóźniej o godzinie 23:59 w dniu poprzedzającym zajęcia); w przypadku odesłania po tym czasie prowadzący ma prawo nie przyjąć programu lub ocenić go na mniejszą liczbę punktów;

oddanie (omówienie) i ocenienie programu następuje na kolejnych zajęciach;

studenci są zachęcani do zadawania pytań w trakcie zajęć

Laboratoria

(7)

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) w skończonym czasie (90 min)

za kolokwium można otrzymać 0-20 pkt

aby “zaliczyć” kolokwium, należy zdobyć min. 8 pkt

Poprawy (zajęcia nr 14)

Przewiduje się na zajęciach numer 14 poprawy kolokwium

Jest to również czas na ewentualne poprawy punktacji z laboratorium (do 5 punktów)

Laboratoria

(8)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 8/798/79

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

Projekty

(9)

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, 0-5 pkt) – min. 25% punktów [zajęcia projektowe]

III. Release Candidate (10 zajęcia, 0-5 pkt) – 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ęć → pierwsza godzina zajęć

Omówienie kodu druga godzina zajęć → pierwsza godzina zajęć

Projekty

(10)

10/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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.

(11)

Tematy Projektó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ł

Kilka przykładów

(12)

12/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

Tematy Projektów

Kilka przykładów

Program do symulacji toru lotu rzutu ukośnego

(13)

Tematy Projektów

Kilka przykładów

(14)

14/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

Tematy Projektów

Kilka przykładów

Efekt Dopplera, symulacja

(15)

Tematy Projektó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ł

Kilka przykładów

(16)

16/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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

(17)

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

(18)

18/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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

(19)

Projekt

5 + 10 + 50 = 65 pkt

Laboratoria: zajęcia punktowane

10 x 5 pkt = 50 pkt

Laboratoria: kolokwium

1 x 20 pkt = 20 pkt

Łącznie punktów: 65 + 50 + 20 pkt = 135 pkt

Wykład

Warunek zaliczenia:

Zaliczony projekt

Zaliczone kolokwium

> 50% punktów za całość (łącznie)

Warunki zaliczenia

Ilość punktów Ocena

67.5 – 80.5 3

81 - 94 3.5

94.5 – 107.5 4 108 - 121 4.5

> 121.5 5

Pytania?

(20)

20/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

Zaczynamy…!

(21)

Programowanie Obiektowe Trochę historii

Programowanie Strukturalne

Programowanie Zorientowane Obiektowo Zachowania i Atrybuty

Trochę wstępu..

(22)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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 maszynowego

(kolumna druga rozpoczynająca się od 6C 36 00)

Przykład kodu asemblera dla procesora Motorola 8-bit 6800

Źródło: Wikipedia

(23)

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.

(24)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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.

(25)

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.

(26)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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.

(27)

https://xkcd.com/292/

(28)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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).

(29)

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

Problemy z programowaniem

strukturalnym

(30)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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++)

(31)

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.

(32)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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

- kolor ZIELONY - marka DAEWOO + Tankuj()

+ Jedź()

Samochód

- kolor ZIELONY - marka DAEWOO + Tankuj()

+ Jedź()

Człowiek

- nazwisko EINSTEIN - zawód FIZYK

+ Śpij()

+ GenerujNobla()

Toster

- producent HB - typ POP-UP + Grzej()

+ WyrzućTosty()

(33)

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).

(34)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

Programowanie Obiektowe

Na obiekty składają się atrybuty i zachowania:

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

Samochód

- kolor ZIELONY - marka DAEWOO + Tankuj()

+ Jedź()

Toster

- producent HB - typ POP-UP + Grzej()

+ WyrzućTosty() atrybuty

zachowania

(35)

Programowanie Obiektowe

Na obiekty składają się atrybuty i zachowania:

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.

Samochód

- kolor ZIELONY - marka DAEWOO + Tankuj()

+ Jedź()

Toster

- producent HB - typ POP-UP + Grzej()

+ WyrzućTosty() atrybuty

zachowania

(36)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

Atrybuty i ich wartości

Należy pamiętać, że atrybut (pole składowe) i jego wartość, to dwie różne rzeczy :

– 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).

Samochód

- kolor ZIELONY - marka DAEWOO

atrybuty wartości atrybutów

(37)

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).

(38)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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());

}

(39)

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.

(40)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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());

}

Instancja klasy = konkretny obiekt.

(41)

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());

}

Atrybuty.

Zwykle nazywamy je polami (ang. fields).

Nie powinny być dostępne z zewnątrz.

(42)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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 / akcje, które możemy wywołać na naszym obiekcie.

Np. utworzenie obiektu o konkretnych wartościach atrybutów czy zwrócenie informacji o obiekcie w postaci napisu (String).

Czyli funkcje składowe (metody).

(43)

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

(44)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 44/79

Dlaczego Java?

(45)

Why Java?

(46)

46/79

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 46/79

TIOBE Index - Luty 2020

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.

Najbardziej

popularny?

(47)

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.

(48)

48/79

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 48/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ę.

(49)

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”.

(50)

50/79

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 50/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.

(51)

Dlaczego Java?

Najbardziej popularny Pożądany na rynku

Podobny do C/C++

Prosty w użyciu

Standardowe API i biblioteki

Przenośny

(52)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 52/79

O co właściwie chodzi?

Co trzeba zainstalować?

Maszyna Wirtualna JDK

Edycje Java

Jar

(53)

Maszyna Wirtualna

Kod źródłowy pliki *.java

Kod bajtowy (bytecode) pliki *.class

Wirtualna maszyna Java (JVM)

wykonywanie w środowisku Win/Unix/…

kompilacja

ładowanie

(54)

54/79

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 54/79

Maszyna Wirtualna

Java Virtual Machine (JVM)

Abstrakcyjna maszyna obliczeniowa, zdolna do wykonwania programu napisanego w Javie

– (wykonywania kodu bajtowego Javy)

Maszyna Wirtualna Javy nie jest nazwą konkretnego produktu.

– 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

(55)

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.

(56)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 56/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

(57)

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.

JAR

(58)

Java Development Kit (JDK)

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java™ SE 8u281

Korzystamy z

Java 8, nie 13!

(59)

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)

(60)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 60/79

Kot dla przykucia uwagi

(61)

Środowisko

Eclipse

(62)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 62/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.

(63)

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

(64)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 64/79

http://www.eclipse.org/downloads

Eclipse

(65)

http://www.eclipse.org/users

Eclipse

(66)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 66/79

Co ściągnąć?

Java Development Kit (JDK) 8, Standard Edition (SE)

– Najnowsza jest JDK 15, ale będziemy

domyślnie używać najpopularniejszej JDK 8

● Eclipse (http://www.eclipse.org )

– Sugeruję ściągnąć najnowszy Eclipse dostępny na stronie

(obecnie Eclipse IDE 2020 12) ‑12)

http://www.oracle.com/technetwork/java/javase/downloads/index.html

(67)

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 )

(68)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 68/79

Co mamy w programie?

Ważne dla projektów!

(69)

Czego się nauczycie na zajęciach?

Tworzenia graficznego interfejsu użytkownika (GUI) – Java Swing

– Kontrolki w okienku

Okienko Guziki

Slidery

Pola

Suwaki Listy

rozwijane Napisy Pola

wyboru

(70)

70/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

Czego się nauczycie na zajęciach?

Tworzenia graficznego interfejsu użytkownika (GUI) – Java Swing

– Ustawienie kontrolek w okienku

(71)

Czego się nauczycie na zajęciach?

Tworzenia graficznego interfejsu użytkownika (GUI) – Java Swing

– Obsługa zdarzeń

oprogramowanie kontrolek

- Wyskakujące okienka

(72)

72/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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!

(73)

Czego się nauczycie na zajęciach?

● Animacje

– Regularnie zmieniając rysowany obrazek w czasie

uzyskacie proste animacje

(74)

74/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

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

(75)

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!

(76)

76/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

Czego się nauczycie na zajęciach?

● Multimedia

– Obsługa dźwięku w Javie

– Obsługa plików multimedialnych (video)

(77)

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

– ...

(78)

78/79 Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW)

● Tyle tytułem wstępu, zaczynamy kodowanie...!

C O

D E

(79)

Podstawy

Struktura programu Typy danych

Operatory

Instrukcje sterujące

Pętle

(80)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 80/79

Hello World

C++ / Java

(81)

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

(82)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 82/79

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

Struktura programu

(83)

Typy proste JAVA

(84)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 84/79

Operatory

(85)

Instrukcje sterujące

analogiczne do C

(86)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 86/79

Instrukcje „if” można zagłębiać lub dokonywać wielokrotnego wyboru:

analogiczne do C

(87)

switch-case

Nadal analogiczne do C

(88)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 88/79

Brak „break” przy pierwszym warunku – wynikiem będzie wypisanie „0” i „1”

switch-case

analogiczne do C

(89)

Pętla „for

• 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.

analogiczne do C

(90)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 90/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

(91)

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:

(92)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 92/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 {

}

(93)

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){

}

}

(94)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 94/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

In strukcja 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.

(95)

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.

Konwencja kodu

(96)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 96/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ę.

(97)

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 ;

(98)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 98/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

*/

(99)

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

(100)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 100/79

//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};

Typ tablicowy

(101)

typ łańcuchowy (String)

• zaimplementowano jako obiekt

• automatyczne konwersje z innych typów i łączenie

• znaki łańcuchów są indeksowane od 0

• znak nieistniejący to -1

operatory: +, =, += mają specjalne znaczenie dla obiektów klasy String

Coś nowego!

(102)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 102/79

typ łańcuchowy (String)

• zaimplementowano jako obiekt

• automatyczne konwersje z innych typów i łączenie

• znaki łańcuchów są indeksowane od 0

• znak nieistniejący to -1

operatory: +, =, += mają specjalne znaczenie dla obiektów klasy String

String s1;

String s2=‘‘Ala”;

s1=s2+‘‘ma Asa” // s1 będzie zawierać napis „Ala ma Asa”

Z obiektami typu String można konkatenować liczby towarzyszy temu niejawne wywołanie metody toString()

int k=1;

s1 = k+k+s2; // s1 będzie zawierać 2Ala s1=s2+k+k; // s1 będzie zawierać Ala11 s1=s2+(k+k); // s1 będzie zawierać Ala2

Coś nowego!

(103)

Podstawy

String [przyklad]

(perspektywy)

(104)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 104/79

typ łańcuchowy (String)

• zaimplementowano jako obiekt

• automatyczne konwersje z innych typów i łączenie

• znaki łańcuchów są indeksowane od 0

• znak nieistniejący to -1

operatory: +, =, += mają specjalne znaczenie dla obiektów klasy String

String s1;

String s2=‘‘Ala”;

s1=s2+‘‘ma Asa” // s1 będzie zawierać napis „Ala ma Asa”

Z obiektami typu String można konkatenować liczby;

towarzyszy temu niejawne wywołanie metody toString() int k=1;

s1 = k+k+s2; // s1 będzie zawierać 2Ala s1=s2+k+k; // s1 będzie zawierać Ala11 s1=s2+(k+k); // s1 będzie zawierać Ala2

Coś nowego!

(105)

typ łańcuchowy (String)

//Przykład użycia obiektów String public class StringPrzyklad

{

public static void main(String args[]) {

String s1 = "Hello";

String s2;

s2 = s1; //pełna kopia obiektu s1 = "World";

System.out.println( "s1=" + s1 ); //s1=World System.out.println( "s2=" + s2 ); //s2=Hello s1 = 20+20+"";

s2 = (20==30)+"";

System.out.println( "s1=" + s1 ); //s1=40

System.out.println( "s2=" + s2 ); //s2=false System.out.println( s1.charAt(1) ); //0

System.out.println( s1.charAt(2) );

// java.lang.StringIndexOutOfBoundsException:

// String index out of range: 2

(106)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 106/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

(107)

Dokumentacja on-line (javadoc):

http://docs.oracle.com/javase/

(108)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 108/79

API Documentation

(Application Programming Interface -

interfejs programowania aplikacji )

(109)

Dziękuję za Uwagę!

Do zobaczenia za tydzień.

Będę więcej opowiadać o projektach.

(110)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 110/79

Dziedziczenie

W jaki sposób zdefiniować klasę pochodną, dziedziczącą po już istniejącej?

public class KlasaPochodna extends KlasaPrzykladowa { public void wypisz()

{

System.out.println(x + " " + y + " " + tekst);

}

int y = 10;

}

public static void main(String[] args) {

//KlasaPrzykladowa kp = new KlasaPrzykladowa();

KlasaPochodna kp = new KlasaPochodna();

kp.wypisz();

}

Efekt?

package pl.wyklad1.klasapokazowa;

public class KlasaPrzykladowa { // deklaracje konstruktorów

KlasaPrzykladowa() { x = 0;

tekst = "domyslny";

}

// deklaracje metod

public void setX(int aX) { x = aX;

}

public int getX() { return x;

}

public void wypisz() {

System.out.println(x + " " + tekst);

}

// deklaracje pól int x;

String tekst;

}

(111)

Dziedziczenie

W jaki sposób zdefiniować klasę pochodną, dziedziczącą po już istniejącej?

public class KlasaPochodna extends KlasaPrzykladowa { public void wypisz()

{

System.out.println(x + " " + y + " " + tekst);

}

int y = 10;

}

public static void main(String[] args) {

//KlasaPrzykladowa kp = new KlasaPrzykladowa();

KlasaPochodna kp = new KlasaPochodna();

kp.wypisz();

package pl.wyklad1.klasapokazowa;

public class KlasaPrzykladowa { // deklaracje konstruktorów

KlasaPrzykladowa() { x = 0;

tekst = "domyslny";

}

// deklaracje metod

public void setX(int aX) { x = aX;

}

public int getX() { return x;

}

public void wypisz() {

System.out.println(x + " " + tekst);

}

// deklaracje pól int x;

String tekst;

(112)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 112/79

Okienka w Javie

Dziedziczenie po JFrame

(113)

Frame

Własne okienko [przykład]

(114)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 114/79

package pl.wyklad1.klasapokazowa;

import javax.swing.JFrame;

public class PierwszeOkienko extends JFrame {

public static void main(String[] args) {

PierwszeOkienko po = new PierwszeOkienko();

po.setSize(500,500);

po.setVisible(true);

} }

Dziedziczenie po JFrame

(115)

Szybkie tworzenie klasy pochodnej w Eclipse

(116)

package pl.mojastrona.mojpakiet;

import javax.swing.*;

class MojeOkienko extends JFrame {

public MojeOkienko() {

...

} }

class KlasaStartowa {

MojeOkienko ob1 = new MojeOkienko();

public static void main(String[] args) {

...

} }

Określenie pakietu, do którego należą klasy zdefiniowane w tym pliku (opcjonalne…).

Zewnętrzne pakiety (lub pojedyncze klasy, nterfejsy),z których korzystamy w naszym programie. „odpowiednik”

dyrektywy #include w C/C++.

Deklaracja klasy rozszerzającej inną klasę (dziedziczenie)

Konstruktor – taka sama nazwa jak klasa, może być kilka definicji konstruktorów dla jednej klasy, np.

public MojeOkienko( int parametrPoczątkowy) {

}

Druga klasa, w której deklarowane są referencje do obiektów innej klasy, oraz tworzony jest nowy obiekt

operator „new” + wywołanie konstruktora

Metoda main klasy startowej – od niej rozpoczyna się uruchamianie programu

Struktura programu

(117)

Trzy najpopularniejsze rodzaje programów:

• aplikacja konsolowa – samodzielny program

pracujący w trybie konsolowym/tekstowym systemu operacyjnego,

• aplikacja graficzna – samodzielny program pracujący w trybie graficznym (okienkowym)

• aplet – najczesciej nieduzy program napisany w jezyk Java i umieszczony na stronie HTML i

uruchamiany wraz z nia przez przegladarke internetowa, obsługujaca jezyk Java.

(deprecated - już nie stosowane)

(118)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 118/79

Przykład – wykorzystanie metody Monte-Carlo do wyznaczenia liczby

Pole kwadratu:

Pole koła:

Losowanie N punktów, z czego

M leży wewnątrz koła.

(119)

Przykład – wykorzystanie metody Monte-Carlo do wyznaczenia liczby

class Monte_Carlo {

public static void main(String[] args) { double r1, r2;

int i, m=0, n=10000;

for (i=1 ; i<=n ; i++){

r1=Math.random()-0.5;

r2=Math.random()-0.5;

if (r1 *r1 + r2 *r2 <0.25) m++;

}

System.out.println("PI oszacowane = "

+ 4.* (double) m/n);

System.out.println("PI z Math.PI = " + Math.PI);

}

}

(120)

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 120/79

Ciekawostki

Operator trójargumentowy ?

(121)

Zamiast bloku „if-else” można użyć operatora trójargumentowego ?

Co jest równoważne:

…analogiczne do C

(122)

122/79

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 122/79

Projekt

Jeśli projekt został zaliczony, ocena z projektu może zostać zamieniona na punkty.

5.0 = 100% = 65 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

+0.5 oceny w górę

Warunek zaliczenia:

> 50% z projektu

> 50% punktów + zaliczone kolokwum

Powtarzanie przedmiotu

Pytania?

(123)

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)

24.02

2.03

9.03

16.03

– Pod koniec semestru – 1 h na wpisywanie ocen

Wykład

23.03

30.03

6.04

Cytaty

Powiązane dokumenty

Należy zmodyfikować kod klas: Figury, FiguryTreeMap, Figury_panel oraz Obraz1_4 dostosowując je do nowego typu pojemnika TreeMap podobnie jak w przypadku pojemnika ArrayList

Należy zmodyfikować nazwy klas: Obraz1_1 na Obraz1_4 (pakiet GUI), FiguryHashSet na FiguryTreeMap w pakiecie grafika wg slajdu 17, FiguryCollection ma FiguryMap, FiguryHashSetPanel

Na końcu tej funkcji umieszczamy wiersze: system(&#34;pause&#34;); - polecenie to zatrzymuje wykonanie programu do momentu naciśnięcia jakiegoś klawisza (pozwala to zobaczyć

CREATE TABLE table_name ( column1 datatype not null, column2 datatype,. column3 datatype,

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 49/98. Odwołanie do Nadklasy

public void actionPerformed(ActionEvent arg0) {  setTitle(&#34;Anonimowa klasa wewnetrzna&#34;);  . } }

Programowanie Obiektowe (Wykład) Małgorzata Janik (WF PW) 80/116 public class MenuWindow extends JFrame {.

strumieniowych związanych z plikami podaliśmy jako argument nazwę pliku → 4 klasy strumieni abstrakcyjnych. ● można także utworzyć strumień plikowy podając jako