Podobne dokumenty
Dokumentacja do API Javy.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Wykład 7: Pakiety i Interfejsy

Enkapsulacja, dziedziczenie, polimorfizm

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

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Języki i metody programowania Java. Wykład 2 (część 2)

Wykład 4: Klasy i Metody

Programowanie obiektowe

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

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Polimorfizm. dr Jarosław Skaruz

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

Wykład 5: Więcej o Klasach i Metodach

KLASY, INTERFEJSY, ITP

Programowanie obiektowe

Wykład 2: Podstawy Języka

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

Programowanie w Internecie. Java

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Klasy i obiekty cz II

Języki i metody programowania Java Lab2 podejście obiektowe

Java niezbędnik programisty spotkanie nr 3. Modyfikatory, jednostki kompilacji, tworzenie/inicjalizacja, odśmiecanie/ finalizacja...

Technologie i usługi internetowe cz. 2

Materiały do zajęć VII

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

Programowanie obiektowe

Podstawy Języka Java

Projektowanie aplikacji internetowych laboratorium

Programowanie obiektowe

Przypomnienie o klasach i obiektach

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Platformy Programistyczne Podstawy języka Java

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe. Wykład 03. Maciej Wołoszyn 17 marca Polimorfizm oraz wczesne i późne wiazanie

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

Definiowanie własnych klas

Java: interfejsy i klasy wewnętrzne

Aplikacje w środowisku Java

Programowanie obiektowe

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

1 Atrybuty i metody klasowe

TEMAT : KLASY DZIEDZICZENIE

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Programowanie obiektowe

Podstawy programowania obiektowego

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Programowanie obiektowe

Aplikacje w środowisku Java

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Klasy abstrakcyjne, interfejsy i polimorfizm

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Wykład 8: klasy cz. 4

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Dziedziczenie. dr Jarosław Skaruz

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Część 4 życie programu

Kompozycja i dziedziczenie klas

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

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe

Programowanie 3 - Funkcje, pliki i klasy

Programowanie w Javie - wykład 3

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Zaawansowane programowanie w języku C++ Klasy w C++

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

TEMAT : KLASY POLIMORFIZM

Programowanie w Javie - wykład 2

Programowanie obiektowe i zdarzeniowe

Przykład -

Java EE produkcja oprogramowania

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

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Wykład 6: Dziedziczenie

Programowanie - instrukcje sterujące

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Plik klasy. h deklaracje klas

Języki i metody programowania Java INF302W Wykład 2 (część 1)

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Zaawansowane aplikacje WWW - laboratorium

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

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

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

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Transkrypt:

/** Program demonstrujący działanie klasy GregorianCalendar import java.util.*; public class TestKalendarza // zbuduj d i zainicjalizuj z aktualną datą GregorianCalendar d = new GregorianCalendar(); int dzisiaj = d.get(calendar.day_of_month); int miesiac = d.get(calendar.month); // zmien d na początku miesiąca d.set(calendar.day_of_month, 1); int dzientygodnia = d.get(calendar.day_of_week); // drukuj nagłówek System.out.println("Ni Pn Wt Śr Cz Pt So"); // puste pola pierwszej linii zapełnij spacjami for (int i = Calendar.SUNDAY; i < dzientygodnia; i++ ) System.out.print(" "); do // drukuj dzień int dzien = d.get(calendar.day_of_month); if (dzien < 10) System.out.print(" "); System.out.print(dzien); // aktualny dzień zaznacz * if (dzien == dzisiaj) System.out.print("* "); else System.out.print(" "); // po każdej sobocie zacznij nową linię if (dzientygodnia == Calendar.SATURDAY) System.out.println(); // przesuń d na następny dzień d.add(calendar.day_of_month, 1); dzientygodnia = d.get(calendar.day_of_week); while (d.get(calendar.month) == miesiac); // pętla kończy się, gdy d staje się pierwszym dniem następnego miesiąca // jeśli trzeba, wydrukuj ostatnią linię if (dzientygodnia!= Calendar.SUNDAY) System.out.println(); 1

/** Parametry metod zasięg i działanie public class TestParam /* Test 1: Metody nie mogą zmieniać parametrów liczbowych System.out.println("Test potrojwartosc:"); double procent = 10; System.out.println("Przed: procent=" + procent); potrojwartosc(procent); System.out.println("Po: procent=" + procent); /* Test 2: Metody mogą zmieniać stan obiektów przekazywanych przez parametry System.out.println("\nTest potrojpensje:"); Pracownik henryk = new Pracownik("Henryk", 50000); System.out.println("Przed: pensja = " + henryk.pobierzpensje()); potrojpensje(henryk); System.out.println("Po: pensja = " + henryk.pobierzpensje()); /* Test 3: Metody nie mogą przyrównywać nowych obiektów do zmiennych, będących parametrami System.out.println("\nTest zamien:"); Pracownik a = new Pracownik("Alicja", 70000); Pracownik b = new Pracownik("Bartek", 60000); System.out.println("Przed: a = " + a.pobierznazw()); System.out.println("Przed: b = " + b.pobierznazw()); zamien(a, b); System.out.println("Po: a = " + a.pobierznazw()); System.out.println("Po: b = " + b.pobierznazw()); public static void potrojwartosc(double x) // nie działa x = 3 * x; System.out.println("Koniec metody: x = " + x); public static void potrojpensje(pracownik x) // działa x.podniespensje(200); System.out.println("Koniec metody: pensja = " + x.pobierzpensje()); public static void zamien(pracownik x, Pracownik y) Pracownik temp = x; x = y; y = temp; System.out.println("Koniec metody: x = " + x.pobierznazw()); System.out.println("Koniec metody: y = " + y.pobierznazw()); 2

class Pracownik // uproszczona klasa Pracownik public Pracownik(String n, double p) nazwisko = n; public String pobierznazw() public void podniespensje(double oprocent) double podwyzka = pensja * oprocent / 100; pensja += podwyzka; private String nazwisko; /** Używanie konstruktorów import java.util.*; public class TestKonstruktora // umieść w tablicy obsługi trzy obiekty typu Pracownik Pracownik[] obsluga = new Pracownik[3]; obsluga[0] = new Pracownik("Henryk", 40000); obsluga[1] = new Pracownik(60000); obsluga[2] = new Pracownik(); // wyświetl informacje o wszystkich obiektach typu Pracownik for (int i = 0; i < obsluga.length; i++) Pracownik p = obsluga[i]; System.out.println("nazwisko = " + p.pobierznazw() + ",id = " + p.pobierzid() + ",pensja = " + p.pobierzpensje()); 3

class Pracownik // trzy przeładowane konstruktory public Pracownik(String n, double p) nazwisko = n; public Pracownik(double p) // wywołuje konstruktor Pracownik(String, double) this("pracownik #" + nastepnyid, p); // konstruktor domyślny public Pracownik() // nazwisko zainicjalizowane jako "" -- definicja niżej // wartość zmiennej pensja nie określona -- zainicjalizowana jako 0 // id zainicjalizowany w bloku inicjalizacji public String pobierznazw() public int pobierzid() return id; // blok inicjalizacyjny obiektu id = nastepnyid; nastepnyid++; // statyczny blok inicjalizacyjny static Random generator = new Random(); // nadaj zmiennej nastepnyid losową wartość z przedziału 0 i 9999 nastepnyid = generator.nextint(10000); private String nazwisko = ""; // bezpośrednia inicjalizacja zmiennej składowej private int id; private static int nastepnyid; 4

/** Działanie pakietów importowanie import folder1.folder2.folder3.*; // w tym pakiecie jest zdefiniowana klasa Pracownik public class TestPakietu // ze względu na polecenie import nie musimy używać tutaj // nazwy com.horstmann.corejava.pracownik Pracownik henryk = new Pracownik("Henryk Haker", 50000, 1989, 10, 1); /** // podnieś pensję o 5% henryk.podniespensje(5); // wyświetl informacje o Henryku System.out.println("nazwisko = " + henryk.pobierznazw() + ",pensja = " + henryk.pobierzpensje()); definicja package folder1.folder2.folder3; // klasy zawarte w tym pliku są częścią tego pakietu import java.util.*; // polecenia import pojawiają się po poleceniu package public class Pracownik public Pracownik(String n, double p, int rok, int miesiac, int dzien) nazwisko = n; GregorianCalendar kalendarz = new GregorianCalendar(rok, miesiac - 1, dzien); // GregorianCalendar rozpoczyna liczenie miesięcy od zera dzienzatrudnienia = kalendarz.gettime(); public String pobierznazw() public Date pobierzdzienzatrudnienia() return dzienzatrudnienia; 5

public void podniespensje(double oprocent) double podwyzka = pensja * oprocent / 100; pensja += podwyzka; private String nazwisko; private Date dzienzatrudnienia; /** DZIEDZICZENIE rozszerzanie klas import java.util.*; public class TestMenadzera // utwórz obiekt menadżera Menadzer szef = new Menadzer("Karol Kraker", 80000, 1987, 12, 15); szef.zmienbonus(5000); Pracownik[] obsluga = new Pracownik[3]; // wypełnij tablicę obsługi obiektami Menadzer i Pracownik obsluga[0] = szef; obsluga[1] = new Pracownik("Henryk Haker", 50000, 1989, 10, 1); obsluga[2] = new Pracownik("Tomasz Tester", 40000, 1990, 3, 15); // wyświetl na ekranie informacje o wszystkich obiektach w tablicy for (int i = 0; i < obsluga.length; i++) Pracownik p = obsluga[i]; System.out.println("nazwisko = " + p.pobierznazw() + ",pensja = " + p.pobierzpensje()); class Pracownik public Pracownik(String n, double p, int rok, int miesiac, int dzien) nazwisko = n; GregorianCalendar kalendarz = new GregorianCalendar(rok, miesiac - 1, dzien); // GregorianCalendar rozpoczyna liczenie miesięcy od 0 dzienzatrudnienia = kalendarz.gettime(); 6

public String pobierznazw() public Date pobierzdzienzatrudnienia() return dzienzatrudnienia; public void podniespensje(double oprocent) double podwyzka = pensja * oprocent / 100; pensja += podwyzka; private String nazwisko; private Date dzienzatrudnienia; class Menadzer extends Pracownik /** opis parametrów klasy @param n nazwisko pracownika @param p pensja @param rok rok zatrudnienia @param miesiac miesiąc zatrudnienia @param dzien dzień zatrudnienia public Menadzer(String n, double p, int rok, int miesiac, int dzien) super(n, p, rok, miesiac, dzien); bonus = 0; double pensjapodstawowa = super.pobierzpensje(); return pensjapodstawowa + bonus; public void zmienbonus(double b) bonus = b; private double bonus; 7

/** DZIEDZICZENIE zapobieganie dziedziczeniu, rzutowanie i klasy abstrakcyjne import java.text.*; public class TestOsoby Osoba[] osoby = new Osoba[2]; // wypełń tablicę osób obiektami typów Student i Pracownik osoby[0] = new Pracownik("Henryk Haker", 50000); osoby[1] = new Student("Maria Morris", "informatyki"); // wydrukuj nazwiska i opisy wszystkich osób w tablicy for (int i = 0; i < osoby.length; i++) Osoba o = osoby[i]; System.out.println(o.pobierzNazw() + ", " + o.pobierzopis()); abstract class Osoba public Osoba(String n) nazwisko = n; public abstract String pobierzopis(); public String pobierznazw() private String nazwisko; 8

class Pracownik extends Osoba public Pracownik(String n, double p) // przekaż n do konstruktora nadklasy super(n); public String pobierzopis() NumberFormat formator = NumberFormat.getCurrencyInstance(); return "pracownik o pensji " + formator.format(pensja); public void podniespensje(double oprocent) double podwyzka = pensja * oprocent / 100; pensja += podwyzka; class Student extends Osoba /** @param n nazwisko studenta @param d kierunek studiów w dopełniaczu public Student(String n, String d) // przekaż n do konstruktora nadklasy super(n); dopelniacz = d; public String pobierzopis() return "student " + dopelniacz; private String dopelniacz; 9