370 likes | 560 Views
3 MPDI. Programowanie obiektowe. Java. W5. Java - obiektowy język programowania stworzony przez firmę Sun Microsystems. Java jest językiem tworzenia programów źródłowych kompilowanych do tzw. kodu bajtowego - czyli postaci wykonywanej przez maszynę wirtualną .
E N D
3MPDI Programowanie obiektowe Java W5
Java - obiektowy język programowania stworzony przez firmę Sun Microsystems. Java jest językiem tworzenia programów źródłowych kompilowanych do tzw. kodu bajtowego - czyli postaci wykonywanej przez maszynę wirtualną. Podstawowe koncepcje zostały przejęte z języka Smalltalk oraz z języka C++ (duża część składni i słów kluczowych).
Platforma Eclipse – początki IBM • elastyczna - może być dowolnie modyfikowane i rozszerzane przy pomocy wtyczek • darmowa • napisana w Javie • nie tylko Java – także C++, PHP, Python, JavaScript, Cobol • kontrolki graficzne SWT - podobne do Windows – pakiet Swing
Niezależność od architektury Kod źródłowy programów Javy kompiluje się do kodu pośredniego. Powstały kod jest niezależny od systemu operacyjnego i procesora. Java virtual machine tłumaczy kod uniwersalny na kod dostosowany dla konkretnego SO i procesora. Wirtualna maszyna Javy jest już dostępna dla większości systemów operacyjnych i procesorów. WADA kod pośredni jest interpretowany - jest wolniejszy niż kompilowany do kodu maszynowego. można dodatkowy kompilator (JIT lub GCJ) i wówczas już nieprzenośny kod ale dla konkretnej maszyny.
Eclipse (Helios) Instalacja Eclipse Platformę Eclipse można ściągnąć z: http://www.eclipse.org/downloads Aby prawidłowo działała należy zainstalować środowisko uruchomieniowe (maszyna wirtualna)- SUN lub Oracle: JRE – Java Runtime Evironment lub dające większe możliwości programistom JDK – Java Development Kit – daje możliwość m.in. tworzenia, kompilacji i uruchamiania aplikacji bezpośrednio w Windows. Następnie rozpakowujemy i kopiujemy pliki Eclipse – nie ma pliku instalacyjnego
plik .java (kod źródłowy) plik .java (kod źródłowy) bez Eclipse z JDK (Java SDK) kompilacja – javac uruchomienie - java plik .class
Uruchamiamy Eclipse, wybierając jako „workspace” (obszar roboczy) własny folder Pierwszy program
Package – pakiet klas klasy w ramach pakietu "widzą" się nawzajem Pakiety - ułatwiają organizację klas Jedna z klas pakietu powinna mieć metodę main W tej metodzie definiujemy działanie aplikacji
Silne typowanie oznacza, że każda wprowadzana zmienna czy pole musi mieć: przypisany typ przechowywanych w niej danych każda metoda musi: deklarować, jakiego typu dane zwraca (lub void, jeśli nic nie zwraca).
Klasa z metodą main package standard; public class Hello { public static void main(String[] args) { System.out.println("Witaj w świecie Javy"); } } metoda main – wykonywana! tu zazwyczaj tworzymy nowe obiekty dla danej klasy (własnej lub zdefiniowanej) i zmuszamy je do działania! Nazwa klasy taka sama jak nazwa pliku .java z definicją klasy
Uruchomienie programu • menu Run i wybieramy Run as > Java Application • zielona ikona z białą strzałką konsola (Console) – wyniki to co ustalimy w instrukcji System.out.println(……………);
Pola i metody dla klasy Pola mogą być typów prostych, ale jest wiele typów obiektowych zdefiniowanych w Javie – także wymagających poznania (i dołączenia odpowiednich bibliotek)
Operacje arytmetyczne Operatory arytmetyczne + – / * % (reszta z dzielenia całkowitego) – zmiana znaku inkrementacja i dekrementacja ++ -- (forma przedrostkowa i przyrostkowa)
Operatory przypisania np. x*=y oznacza x=x*y
Operatory relacyjne < > <= >= = = równe != różne Operatory logiczne ! negacja && logiczne AND || logiczne OR Operator warunkowy ? Składnia: zmienna=warunek ? wartość_jeśli_prawda :wartość_jeśli_fałsz ;
DUŻE I MAŁE litery istotne • – styl "wielbłądzi" • kapitalizowanie drugiego i następnych słów składowych • jest nieobowiązkowy, ale dobra praktyka programowania w Javie mojPierwszyProgram
W nazwach zmiennych i metod można używać polskich liter – dzięki wbudowanemu kodowaniu Unicode private int łódź; łódź=10; System.out.println(łódź/2);
Błędy niepoprawny kod jest podkreślony na czerwono po lewej stronie na marginesie – ikonka podpowiedzi! okno z zakładką TASKS – po prawej
Pomoce np. napisanie sysout i CTRL+spacja spowoduje: System.out.println(); Wszystkie w: Window > Preferences i wybrać Java > Editor > Templates
Klasa z metodą main publicclass Klasa1 { publicstaticvoidmain(String[] args) { int suma,A,B,C; A=4;B=7;C=9; suma=A+B+C; System.out.println("Wynik dodawania: "+ suma); int reszta= C % A; System.out.println("Reszta z dzielenia 9/4: "+ reszta); double y;//deklaracja y=5.2;//przypisanie wartości double Zet=7.56;//deklaracja i przypisanie System.out.println("Dzielenie: "+ y/Zet); } } instrukcje i deklaracje można przeplatać UWAGA na średniki! ;
Definicja klasy – nie ma metody main package standard; public class Kwadrat { // właściwości (atrybuty/pola) private float bok; private float pozycja; private int kolor; //lepiej obiekt java.awt.Color // operacje (metody) public float obliczPole() { return bok*bok; } public voidwyświetl(){ System.out.println(obliczPole()); } }
Schemat definicji pól i metod definicja pola public|privatetypnazwa [ =wartość]; definicja metody • public|privatetyp|voidnazwa { • co ma robić metoda • returnwyrażenie_typu_typ //jeśli nie void! • } | - alternatywnie [ ] - opcjonalnie public – dostępne w innej klasie pakietu private – niedostępne – tylko z wykorzystaniem metod! Przeważnie pola są prywatne, a metody publiczne, ale oczywiście może być inaczej
Tworzymy instancję obiektu w klasie Nowa klasa z metodą main • package standard; • publicclassprogram { • publicstaticvoid main(String[] args) { • Kwadrat p=new Kwadrat(); • } • } ale jakie parametry – wartości pól ma kwadrat?
można tak – tworzymy definicję metody: package standard; public class Kwadrat { // właściwości (atrybuty/pola) private float bok; private float pozycja; private int kolor; //lepiej obiekt java.awt.Color // operacje (metody) public void nadajBok(float a) { bok=a; } public float obliczPole() { return bok*bok; } public void wyświetl(){ System.out.println(obliczPole()); } }
i teraz… • package standard; • class program { • publicstaticvoidmain(String[] args) { • Kwadrat p=new Kwadrat(); • p.nadajBok(5); • p.wyświetl(); • } • }
albo bardziej elegancko… package standard; public class Kwadrat { // właściwości (atrybuty/pola) private float bok; private float pozycja; private int kolor; //lepiej obiekt java.awt.Color // operacje (metody) public Kwadrat(float a) { //metoda KONSTRUKTORA!!!! bok=a; } public float obliczPole() { return bok*bok; } public void wyświetl(){ System.out.println(obliczPole()); } }
i przy tworzeniu obiektu nadajemy wartość jako argument konstruktora • package standard; • publicclass program { • publicstaticvoid main(String[] args) { • Kwadrat k=new Kwadrat(5); • k.wyświetl(); • } • }
można utworzyć wiele obiektów.. instancji klasy • package standard; • publicclass program { • publicstaticvoid main(String[] args) { • Kwadrat k1=newKwadrat (5); • Kwadrat k2=newKwadrat (7); • k1.wyświetl(); • k2.wyświetl(); • } • }
może być wiele konstruktorów: publicclass Kwadrat { privatedouble bok; privatefloat pozycja; privateint kolor; //lepiej obiekt java.awt.Color publicKwadrat (double a) { bok=a; } publicKwadrat (int k) { kolor=k;} publicfloat obliczPole() { return bok*bok; } publicvoid wyświetl(){ System.out.println(obliczPole()); } } ale muszą się różnić liczbą lub typem argumentów, bo maja te same nazwy
Dziedziczenie publicclassFigura { privatefloat pozycja; privateint kolor; //metody publicfloat obliczPole() { return 0; } publicvoid wyświetl(){ System.out.println(obliczPole()); } }
publicclassKwadratextends Figura{ privatefloat bok; //pozycja i kolor dziedziczone privateint kolor; //lepiej obiekt java.awt.Color publicKwadrat(int a) { bok=a; } @Override // "przesłaniamy" operacje rodzica publicfloat obliczPole() { return bok*bok; } }
Projekt hierarchii klas dziedziczących powinien być sensowny Np. klasa Auto dziedziczy po klasie Pojazd klasa Student dziedziczy po klasie Człowiek itp. Klasa dziedzicząca domyślnie posiada wszystkie metody przodka i można w niej definiować nowe. Np. Człowiek ma nazwisko Student ma nazwisko i numer indeksu