5. Przykład
Jako podsumowanie powyższych rozważań przeanalizujemy
pełny przykład definicji klasy. Mimo, że już od dwóch wykładów posługujemy
się fragmentami (różnych) definicji klasy Para (są one zawarte w programach przykładowych do wykładów w katalogu samples) - dokładne poznanie tej klasy
pozostawimy do następnego wykładu, bowiem nadaje się ona doskonale do sczegółowego
prześledzenia co dzieje się przy tworzeniu obiektów i wywoływaniu metod.
Ta szczegółowa analiza potrzebna jest dla pełnego zrozumienia przede wszystkim
właśnie sposobu poslugiwania się metodami.
Zauważmy, że budując klasę publikacji, staramy się znaleźć wspólne atrybuty
wszystkich publikacji. Zatem np. właściwość "autor" zostaje tu pominięta,
bo nie wszystkie publikacje (np. czasopisma) mają autorów
O każdej publikacji powinniśmy wiedzieć: jaki jest jej tytuł, kto ją wydał, rok wydania, jaki jest jej numer identyfikacyjny (ISBN, ISSN, jakiś inny), jaka jest cena (powiedzmy hurtowa). ile egzemplarzy tej publikacji posiada księgarnia. Te wszystkie atrybuty - w naturalny sposób - będą stanowić pola klasy. public class Publication { private String title; private String publisher; private int year; private String ident; private double price; private int quantity; ... } Każda publikacja może pojawić się jako obiekt w naszym programie, gdy użyjemy
wyrażenia new. Obiekt ten powinien być jakoś zainicjowany - dlatego musimy
dostarczyć odpowiedni konstruktor, który będzie inicował podanymi argumentami
elementy obiektu. public class Publication { private String title; private String publisher; private int year; private String ident; private double price; private int quantity; public Publication(String t, String pb, int y, String i, double pr, int q) { title = t; // pole title uzyskuje wartość parametru t publisher = pb; // pole publisher uzyskuje wartość parametru pb year = y; ident = i; // itd... price = pr; quantity = q; } ... } Teraz - w innej klasie ( np. w metodzie main umieszczonej w innej klasie)
możemy stworzyć obiekt - książkę pt. "Psy", wydaną przez wydawnictwo "Dog
& Sons", o cenie 21 zł. Na razie nie mamy jeszcze żadnego egzemplarza
tej książaki. Publication b = new Publication("Psy", "Dog & Sons", 2002, "ISBN6789", 21.0, 0); Co możemy robić z publikacjami? public class Publication { ... // Metody klasy // Zwraca tytuł public String getTitle() { return title; } // Zwraca wydawcę public String getPublisher() { return publisher; } // Zwraca rok wydania public int getYear() { return year; } // Zwraca numer identyfikacyjny public String getIdent() { return ident; } // Zwraca cenę public double getPrice() { return price; } // Zmienia cenę public void setPrice(double p) { price = p; } // Zwraca liczbę egzemplarzy public int getQuantity() { return quantity; } // Zakup n egzemplarzy public void buy(int n) { quantity += n; } // Sprzedaż n egzemplarzy public void sell(int n) { quantity -= n; } }
Mając gotową klasę Publikacji możemy przetestować jej działanie. class PubTest { public static void main(String[] args) { // Tworzenie obiektu - publikacji Publication b = new Publication("Psy", "Dog & Sons", 2002, "ISBN6789", 21.0, 0); int n = 10; // kupimy n = 10 egzemplarzy b.buy(n); // łatwo policzyć koszt zakupu double koszt = n * b.getPrice(); System.out.println("Na zakup " + n + " publikacji:"); System.out.println(b.getTitle()); System.out.println(b.getPublisher()); System.out.println(b.getYear()); System.out.println(b.getIdent()); System.out.println("---------------\nwydano: " + koszt); // teraz sprzedamy 4 egzemplarze i zobaczymy ile zostało b.sell(4); System.out.println("Po sprzedaży zostało " + b.getQuantity() + " pozycji"); } } Na zakup 10 publikacji:
Psy Dog & Sons 2002 ISBN6789 --------------- wydano: 210.0 --------------- Po sprzedaży zostało 6 pozycji Program wyprowadzi na konsolę następujące dane:
|