1 / 24

Java

3 MPDI. Programowanie obiektowe. Java. W6. Program – zbiór obiektów komunikujących się ze sobą Każdy obiekt ma określony typ (klasa) Obiekty tej samej klasy używają takich samych metod komunikowania się. Cały program Java jest obiektem !!. Definiujemy klasę. public class NazwaKlasy {

goro
Download Presentation

Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3MPDI Programowanie obiektowe Java W6

  2. Program – zbiór obiektów komunikujących się ze sobą Każdy obiekt ma określony typ (klasa) Obiekty tej samej klasy używają takich samych metod komunikowania się Cały program Java jest obiektem !!

  3. Definiujemy klasę publicclass NazwaKlasy { ..... Pola i metody } • jeśli public to klasa może być dostępna z innych package (pakietów) • można importować pakiety • import nazwa_pakietu.* • import nazwa_pakietu.Klasa class NazwaKlasy { ..... Pola i metody } tu klasa dostępna tylko z innych klas pakietu

  4. Klasa posiada: ▪ Pola – stan obiektu Pole może również być obiektem ▪ Metody – komunikowanie się ze „światem” ▪ Tożsamość Każdy obiekt (instancja klasy) musi zostać utworzony przed pierwszym użyciem instrukcja new

  5. class Test { public String przedmiot= new String(); publicint wynik=0; publicint jakiWynik() { return wynik;} publicvoid nadajWynik(int w) { wynik = w; } } class Student // dostępna klasa Test w pakiecie {Test t=new Test();//pole obiektowe public Student(String przedmiot,int wynik_f) //konstruktor { t.nadajWynik(wynik_f); System.out.println(t.jakiWynik()); } }

  6. Wówczas możemy w klasie Main przykładowo: publicclass Main { publicstaticvoid main() { Student st1=new Student("fizyka",5); } }

  7. Klasa nazwa_instancji= new Klasa(…); albo konstruktor klasa nazwa_instancji; nazwa_instancji = new Klasa(…); Konstruktor to metoda klasy – nazwa taka jak nazwa klasy

  8. Konstruktor Dla każdej klasy istnieje specjalna metoda dostęp NazwaKlasy ( argumenty) {...} jeśli nie ma konstruktora o konstruktor domyślny

  9. Modyfikatory pól i metod private protected public static final tak deklasujemy stałe: protectedstaticfinalint FONT_SIZE = 14;

  10. Uruchomienie programu • Klasa publiczna • Posiada jedną metodę publiczną main

  11. public, abstract, final dostęp_kl class NazwaKlasy { dostęp typ nazwaPola; dostęp typ nazwaMetody (typ1 argument1, typ2 argument2) { ciało metody } } dostęp – private, public, protected, nic czyli package access

  12. Pola i metody statyczne - static Korzystanie z metod statycznych bez konieczności utworzenia instancji klasy! Zawartość pól statycznych nie zależy od instancji Z metod statycznych dostęp TYLKO do pól statycznych Idea stosowania - Metody statyczne są wywoływane nie dla konkretnej instancji, więc stosujemy je wtedy kiedy metoda nie operuje na danych zależnych od instancji. Takich typowych zastosowań jest wiele Nazwa_klasy.pole Nazwa_klasy.metoda

  13. publicclass Prog { • publicstaticvoid main(String[] args) { • //metodastatyczna - bezobiektu • Stat.st(); • Stat.x1=5;// można - choćniemaobiektu • System.out.println(Stat.x1); • Stat n1=new Stat(); • n1.x1=6; • n1.x2=10; • Stat n2=new Stat(); • n2.x1=8; • n2.x2=12; • System.out.println(n1.x1);//wyświetli 8 • System.out.println(n2.x1);//wyświetli 8 • System.out.println(n1.pobierz_x1());//8 • System.out.println(n2.pobierz_x1());//8 • System.out.println(n1.x2);// wyświetli 10 • System.out.println(n2.x2);// wyświetli 12 • } Przykład publicclassStat { staticintx1; int x2; staticvoid st(){ System.out.println("statyczna"); } staticint pobierz_x1(){ returnx1; } }

  14. Typy proste ▪ boolean (true, false) ▪ char (znak Unicode) 16 bit ▪ byte (całkowite [-127, 127] ) 8bit ▪ short, int, long (całkowite) 16, 32, 64 bit ▪ float, double 32, 64 bit Do każdego z typów klasy opakowujące (Wrappers) Boolean, Character, Byte, Short, Integer, Long, Float, Double String jest obiektem!!!

  15. Instrukcje – jak JavaScript (PHP) if ( warunek ) { ....} else {....} if ( warunek ) { ....} else if (warunek 2) {....} else {....}

  16. for (int i=0; i<10; i++) { ....} while (warunek) { ....} do .... while (warunek)

  17. switch (zmienna) { case warość1: instrukcje; break; case wartość2: instrukcje; break; ....... default : instrukcje; }

  18. Znamy już przesłanianie metod class A { void pisz(){ System.out.println( "oryginał" ); } } class B extends A { void pisz(){ System.out.println( "przesłonięta" ); } }

  19. class Main { public static void main( String[] args ) { A a = new A(); B b = new B(); A ab = new B(); a.pisz(); // oryginał b. pisz(); // (2) przesłonięta ab. pisz(); // (3) przesłonięta } }

  20. Konwersja int i=7; float k=i; int i; char c='a'; i=(int) c; rzutowanie

  21. Słowo kluczowethis class Osoba{ String imię; String nazwisko; Osoba(String imię, String nazwisko){this.imię = imię;this.nazwisko = nazwisko; } String imię(){ return imię; } String nazwisko(){ return nazwisko; } } Może ono występować nie tylko w konstruktorach, ale w dowolnych metodach. Oznacza ono obiekt, na rzecz którego wykonywana jest metoda (w przypadku konstruktora obiekt, który jest tworzony za pomocą tego konstruktora). Dzięki użyciu this możemy wskazać, czy chodzi nam o pole obiekt (this.imię) czy o parametr metody (imię).

  22. Przeciążanie metod public String dajGlos() { return "HAU"; } public String dajGlos(String v) { //nowa metoda - ta sama nazwa - (przeciążona) // argumenty decydują, //która metoda zostanie wykonana if (v=="głośno") return "HAU HAU HAU"; elsereturn "hau hau hau"; } argumenty decydują, która metoda zostanie wykonana

  23. class Test { public int wynik=0; public int jakiWynik() { return wynik;} public void ustawWynik(int w) { wynik = w; } } class Student // "widzi" klasę Test jeśli obie w pakiecie { Test fizyka=new Test();//pole obiektowe public Student(int wynik_f) //konstruktor { fizyka.ustawWynik(wynik_f); } } Student s=new Student(5); System.out.println(s.fizyka.wynik);

  24. class Test { private int wynik=0; public int jakiWynik() { return wynik;} public void ustawWynik(int w) { wynik = w; } publicint pobierzWynik() { return wynik; } } class Student { Test fizyka=new Test(); public Student(int _wynik) { fizyka.ustawWynik(_wynik); } } Student s=new Student(5); System.out.println(s.fizyka.pobierzWynik());

More Related