Modu 5 - Klasy i obiekty

Podobne dokumenty
Dokumentacja do API Javy.

Rozdział 4 KLASY, OBIEKTY, METODY

Sposoby przekazywania parametrów w metodach.

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

Metody Metody, parametry, zwracanie wartości

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Projektowanie algorytmów rekurencyjnych

Modu 1 rodowisko programistyczne

Aplikacje w środowisku Java

Definiowanie własnych klas

Modu 6 Kompozycja i dziedziczenie

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Technologie i usługi internetowe cz. 2

Kompozycja i dziedziczenie klas

Podstawy Języka Java

11.6 Klasa do obsługi liczb wymiernych

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

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

Wstęp do programowania obiektowego. Wykład 2

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

Zadania do wykonaj przed przyst!pieniem do pracy:

Modu 2 Typy danych, zmienne i operatory

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

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

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

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Wykład 4: Klasy i Metody

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

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Klasy i obiekty cz II

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

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

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

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

Kompozycja i dziedziczenie klas

Programowanie obiektowe

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Programowanie obiektowe

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

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

Podstawy Programowania Obiektowego

Definicje klas i obiektów. Tomasz Borzyszkowski

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Platformy Programistyczne Podstawy języka Java

Enkapsulacja, dziedziczenie, polimorfizm

Wykład 8: klasy cz. 4

Do czego służą klasy?

Programowanie obiektowe

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Podstawy i języki programowania

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

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

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

Programowanie obiektowe

Programowanie obiektowe

Polimorfizm. dr Jarosław Skaruz

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Klonowanie MAC adresu oraz TTL

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Materiały do zajęć VII

Programowanie obiektowe

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

1 Atrybuty i metody klasowe

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

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

UML a kod. C++, Java i C#

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

Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik

KLASY cz.1. Dorota Pylak

Aplikacje w środowisku Java

Programowanie obiektowe

Podstawy Programowania semestr drugi. Wykład czternasty

Klasy abstrakcyjne, interfejsy i polimorfizm

Podstawy programowania obiektowego

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Bazy danych Podstawy teoretyczne

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

PROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

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

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Podstawy programowania obiektowego

Język ludzki kod maszynowy

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Transkrypt:

MODU 5 - KLASY I OBIEKTY 45 Modu 5 - Klasy i obiekty Zawarto jednostki Po zrealizowaniu jednostki bdziesz w stanie: wskaza rónice midzy klas, a obiektem prawidowo tworzy klasy z wykorzystaniem pól i metod tworzy i wykorzystywa konstruktory posugiwa si operatorem this wykorzysta enkapsulacj do ochrony danych Wprowadzenie do zagadnie Java jest jzykiem, w którym realizowana jest idea programowania zorientowanego obiektowo (ang. OOP Object Oriented Programming). Tworzenie aplikacji odbywa si z wykorzystaniem odpowiednich, wspópracujcych ze sob elementów, zwanych obiektami, konstruowanych na podstawie wzorca zwanego klas. Biblioteki Javy zawieraj poka*ny zbiór gotowych do uycia klas, które uatwiaj tworzenie programów, jednake zoone aplikacje skadaj si najcz+ciej z szeregu nowych klas, tworzonych przez programist. KLASY W otaczajcej rzeczywisto+ci wystpuje szereg obiektów tego samego typu (np. samochody, drzewa, studenci) Klas nazywamy zbiór stanów oraz zachowa. opisujcych obiekty nalece do tej samej kategorii. Jest to pewnego rodzaju wzorzec, na podstawie którego jeste+my w stanie utworzy konkretn wersj obiektu (np. czerwony samochód marki Fiat, wysokie drzewo). W skad kadej klasy wchodz: pola (zmienne), zawierajce informacje opisujce wa+ciwo+ci (stany) obiektów, metody (podprogramy), modelujce zachowania obiektów. OBIEKTY Na podstawie zdefiniowanej klasy tworzone s obiekty, rónice si wa+ciwo+ciami. Kady obiekt posiada wasny zbiór pól, których warto+ci okre+laj jego indywidualno+. Na podstawie klasy moliwe jest zatem utworzenie dowolnej liczby obiektów (instancji klasy), nalecych do tej samej kategorii, zrónicowanych pod wzgldem wa+ciwo+ci. Tworzenie klasy Proces definiowania klasy polega na okre+leniu jej skadowych, tj. pól oraz metod, reprezentujcych stany i zachowania obiektów, które bd tworzone w oparciu o t klas. Poniszy przykad ilustruje klas Telefon, stanowic wzorzec dla zbioru opisywanych telefonów. Kady telefon posiada pewne unikalne cechy (numer telefonu, czny czas rozmów) oraz zachowania, tj. czynno+ci, które moe wykona (zadzwo.).

MODU 5 - KLASY I OBIEKTY 46 Telefon - nrtelefonu : String - lacznyczasrozmow : int - cenarozmowy : double + zadzwon(string) : void + obliczkwotedozaplaty () : double + ustawcenerozmowy (double) : void Rysunek 1. Diagram UML 59 klasy Telefon. Definicja klasy w jzyku Java realizowana jest za pomoc sowa kluczowego class 60 : class Telefon { // ciao klasy (skadowe klasy) Kada tworzona klasa moe zawiera zbiór pól oraz metod stanowicych skadowe klasy. POLA KLASY Pola to zmienne deklarowane wewntrz klasy. W przypadku braku jawnej inicjalizacji zmiennej otrzymuje ona warto+ domy+ln 61. Zwyczajowo deklaracja pól klasy wystpuje przed deklaracj metod. Poniszy kod programu zawiera definicj klasy Telefon wraz z wchodzcymi w jej skad polami. class Telefon { // deklaracja pól klasy private String numertelefonu; private int lacznyczasrozmow; private static double cenarozmowy = 0.48; // z/min. Pola statyczne (oznaczone w kodzie specyfikatorem static), w przeciwie.stwie do pól niestatycznych, s wspólne dla wszystkich obiektów danej klasy 62. Dostp do nich jest moliwy bez konieczno+ci tworzenie obiektu klasy. W powyszym przykadzie pole cenarozmowy dotyczy wa+ciwo+ci odnoszcej si do wszystkich obiektów klasy Telefon. Dostp do pól klasy jest moliwy zgodnie z rodzajem uytego w deklaracji specyfikatora dostpu 63. METODY KLASY Metody deklarowane w klasie stanowi odpowiednik zachowa. konkretnych obiektów. Sposób deklaracji metod zosta omówiony w poprzednim module. Warto przypomnie o metodach statycznych (klasowych), do których dostp moliwy jest bez konieczno+ci tworzenia obiektu danej klasy. Metody te nie mog zatem odwoywa si do niestatecznych (instancyjnych) skadowych klasy (pól i metod) powizanych z konkretnym obiektem. Poniszy kod programu zawiera definicj klasy Telefon wraz z jej skadowymi polami oraz metodami. 59 Wicej informacji o diagramach UML zobacz: http://www.uml.com.pl/ 60 Dopuszczalne jest uycie dwóch rodzajów modyfikatorów dostpu: public (klasa ogólnie dostpn) oraz brak modyfikatora (klasa dostpna wewntrz pakietu). 61 W przypadku braku jawnej inicjalizacji pól klasy, przyjmuj one warto+ci domy+lne (pola numeryczne warto+ 0, pole logiczne warto+ false, natomiast pola klasowe warto+ null). 62 Pola statyczne nazywane s do+ czsto polami klasowymi. 63 Zobacz: Tabela 1, str. 36.

MODU 5 - KLASY I OBIEKTY 47 class Telefon { // deklaracja pól private String numertelefonu; private int lacznyczasrozmow; private static double cenarozmowy = 0.48; // z/min. // deklaracja metod public double obliczkwotedozaplaty() { return cenarozmowy * (lacznyczasrozmow / 60); public static void ustawcenerozmowy(double nowacena){ cenarozmowy = nowacena; public void zadzwon(string nrtelefonu) { System.out.println ("Dzwoni4 do: " + nrtelefonu); System.out.println ("Dry5, dry5..."); System.out.println ("Rozmowa w toku..."); int czasrozmowy = (int) (Math.random()*3600); lacznyczasrozmow += czasrozmowy; System.out.println ("Rozmowa zako5czona. "); System.out.printf ("Czas rozmowy: %d min. %d sek.", czasrozmowy/60, czasrozmowy%60); KONSTRUKTORY Konstruktor jest metod, która wywoywana zostaje w momencie tworzenia obiektu 64. Nazwa konstruktora musi by zgodna z nazw klasy, nie moe on równie zwraca adnej warto+ci 65. W skad konstruktora wchodz instrukcje, które naley wykona w trakcie tworzenia obiektu. Szczególnym przypadkiem jest tu nadanie warto+ci pocztkowej polom obiektu, które moe zosta zrealizowane albo w momencie deklaracji pola, albo te poprzez przypisanie warto+ci w konstruktorze obiektu. Poniszy kod programu zawiera deklaracj konstruktora Telefon(String) dla klasy Telefon. Zawiera on instrukcj przypisujc warto+ pocztkow dla pola numertelefonu. public Telefon (String numer) { numertelefonu = numer; W przypadku braku jawnie zadeklarowanego konstruktora, Java automatycznie wywouje konstruktor domy+lny 66. Moliwe jest przecianie konstruktorów, podobnie jak innych metod zadeklarowanych w klasie. Tworzenie obiektów Definicja klasy udostpnia wzorzec, na podstawie którego tworzone s obiekty wystpujce w programie. Ich interakcja realizowana poprzez wywoywanie metod stanowi o tre+ci tworzonej aplikacji Rysunek 2 przedstawia schemat tworzenia obiektów na podstawie klasy Telefon. 64 Skadnia tworzenia obiektu zawiera operator new oraz nazw konstruktora, który ma zosta wywoany. 65 Przez nazw konstruktora nie moe pojawi si równie sowo kluczowe void 66 Konstruktor domy+lny posiada pust liczb parametrów i jest tworzony przez Jav wycznie wtedy, gdy klasa nie posiada adnego jawnie zadeklarowanego konstruktora.

MODU 5 - KLASY I OBIEKTY 48 Telefon - nrtelefonu : String - lacznyczasrozmow : int - cenarozmowy : double Telefon Jasia Telefon Kasi Telefon Ani nrtelefonu: "601342754" lacznyczasrozmow: 4769 nrtelefonu: "0126410991" lacznyczasrozmow: 8102 nrtelefonu: "503286333" lacznyczasrozmow: 1981 Rysunek 2. Tworzenie obiektów na podstawie klasy. Tworzenie nowych obiektów w Javie polega na uyciu operatora new, po którym wystpuje nazwa odpowiedniego konstruktora. Poniszy kod zawiera przykad utworzenia obiektu klasy Telefon: Telefon telefonmarka = new Telefon("808123456"); Operator new tworzy na podstawie wzorca (klasy) nowy obiekt oraz umieszcza go w pamici operacyjnej. Warto+ci zwracan podczas tworzenia obiektu jest referencja do miejsca, w którym zosta on utworzony. Warto+ ta przypisana zostaje do zmiennej typu obiektowego, co pozwala na odwoanie si do skadowych obiektu: public class WykorzystanieObiektow { public static void main(string args[]) { Telefon telefonjasia = new Telefon("0124430981"); // wywoanie metody zadzwon() na rzecz obiektu telefonjasia telefonjasia.zadzwon("687934267"); Pojcia dodatkowe Definiowanie klas oraz tworzenie obiektów powizane jest +ci+le z typem referencyjnym, przechowujcym odwoania do obiektów. Wykorzystujc referencj oraz operator kropki uzyskujemy dostp do skadowych klasy. Kto i na jakich zasadach posiada dostp do poszczególnych skadowych okre+laj specyfikatory dostpu. Dostp do poszczególnych pól klasy odbywa si zazwyczaj za po+rednictwem zadeklarowanych metod.

MODU 5 - KLASY I OBIEKTY 49 METODY DOST"POWE I MODYFIKUJ&CE Metody dostpowe (ang. accessor (getter) methods) s uywane do odczytu warto+ci pól (instancyjnych i statycznych). Nazwa takiej metody zazwyczaj skada si z czasownika pobierz (ang. get) oraz nazwy pola. Zadaniem metod modyfikujcych (ang. mutator (setter) methods) jest nadanie bd* te zmiana warto+ci pól (instancyjnych i statycznych). Nazwa metody zawiera zwykle czasownik ustaw (ang. set) oraz nazw pola. Metody modyfikujce z reguy nie zwracaj adnej warto+ci. class Zeszyt{ private int liczbakartek; // metoda dost4powa public int pobierzliczbekartek() { return liczbakartek; // metoda modyfikujeca public void ustawliczbekartek(int liczbakartek) { this.liczbakartek = liczbakartek; SOWO KLUCZOWE THIS Sowo this oznacza referencj do biecego obiektu. Uatwia to dostp do jego skadowych, jak równie umoliwia wywoanie odpowiednich konstruktorów. Czsto this jest wykorzystywane, gdy nazwa parametru metody jest identyczna z nazw pola 67, umoliwiajc odrónienie tych identyfikatorów. class Student { private String nazwisko; public void ustawnazwisko(string nazwisko) { // inicjalizacja pola "nazwisko" wartogcie parametru "nazwisko" this.nazwisko = nazwisko; Wywoanie konstruktora z ciaa innego konstruktora jest moliwe poprzez uycie sowa kluczowego this wraz z ewentualn list parametrów 68. class Monitor { private String nazwa; private static int liczbamonitorów; public Monitor(){ liczbamonitorów++; public Monitor(String nazwa) { this(); // wywoanie konstruktora bezparametrowego this.nazwa = nazwa; // inicjalizacja pola wartogcie parametru OKRE*LANIE WIDOCZNO*CI SKADOWYCH KLASY Prawidowe okre+lenie widoczno+ci poszczególnych skadowych klasy umoliwia ukrycie implementacji. Zgodnie z zasadami OOP, dostp do pól powinien by realizowany wycznie za pomoc metod dostpowych i modyfikujcych (tworzcych tzw. interfejs obiektu). Proces ukrywania skadowych klasy nazywany jest enkapsulacj 69 i odbywa si poprzez uycie odpowiedniego modyfikatora dostpu (zazwyczaj private). 67 Tak zwane przesanianie zmiennych. 68 Wywoanie konstruktora przy uyciu this musi wystpi na pocztku bloku instrukcji.. 69 Enkapsulacja czsto nazywana jest równie hermetyzacj danych.

MODU 5 - KLASY I OBIEKTY 50 class Osoba{ // pola prywatne dost4p moiliwy tylko za pogrednictwem odpowiednich metod private String imie; private String nazwisko; private double pensja; // konstruktor public Osoba(String imie, String nazwisko, double pensja) { this.imie = imie; this.nazwisko = nazwisko; this.pensja = pensja; // publiczna metoda umoiliwiajeca zmian4 pensji danej osoby public void ustawpensje(double nowapensja) { pensja = nowapensja; Pytania sprawdzaj"ce 1. Czym jest klasa oraz jakie posiada cechy. 2. Do czego wykorzystywane s diagramy UML? 3. Czym jest obiekt oraz w jaki sposób jest tworzony. 4. Jaka rol w programowaniu obiektowym spenia operator new? 5. Wska rónice midzy metod, a konstruktorem. 6. Jaki proces zachodzi podczas wykonywania poniszej instrukcji: Laptop laptopfirmowy = new Laptop("Lenovo"); 7. Wymie. i scharakteryzuj skadowe klasy. 8. Czy niezainicjowane pola posiadaj warto+ pocztkow? Je+li tak, to jak? 9. Czy kada klasa musi posiada konstruktor? 10. Poniszy kod programu zawiera definicj klasy wraz z jej skadowymi. Wska ewentualne bdy. class PenDrive { private String nazwa; private int pojemnosc; public PenDrive(String nazwa, int pojemnosc){ nazwa = nazwa; pojemnosc = pojemnosc; return true; 11. Czy moliwe jest utworzenie nowego obiektu klasy PenDrive w nastpujcy sposób? PenDrive mojpendrive = new PenDrive(); 12. Jak funkcj peni sowo kluczowe this? 13. Jakie jest gówne zastosowanie enkapsulacji? 14. Poniej podany zosta kod programu wykorzystujcy klas PenDrive. Czy odwoanie do pola pojemnosc jest poprawne? PenDrive mojpendrive = new PenDrive("Toshiba", 4096); mojpendrive.pojemnosc = 8192; 15. Wska rónice midzy statycznymi (klasowymi) i niestatycznymi (instancyjnymi) polami klasy.

MODU 5 - KLASY I OBIEKTY 51 16. Dlaczego z metody statycznej nie jest moliwe odwoanie do skadowych instancyjnych? 17. Podaj sytuacje, w których wykorzystuje si metody prywatne? 18. Wska przykad zastosowania metod dostpowych oraz modyfikujacych dla klasy PenDrive. 19. Jaka informacja zostanie wy+wietlona na konsoli po wykonaniu poniszego kodu programu: Student[] studenci = new Student[10]; System.out.println(studenci[4]); 20. Wska bd w poniszym kodzie programu, wykorzystujcym klas Telefon: int n = 10; Telefon[] telefony = new Telefon[n]; for (int i = 0; i < n; i++) { telefony[i].zadzwon("112"); Zadania do wykonania TWORZENIE KLAS Zadanie 90 TelefonyKowalskich.java Rodzina Kowalskich to Ania i Jarek. Oboje posiadaj telefony i korzystaj z nich czsto. Napisz w peni funkcjonaln klas Telefon, sprawd* jej dziaanie tworzc obiekty telefonów Anii i Jarka. Wykonaj rozmow z telefonu Anii oraz Jarka oraz oblicz kwot do zapaty, jak powinna zapaci Ania..

MODU 5 - KLASY I OBIEKTY 52 Rozwi.zanie class Telefon { // deklaracja pól private String numertelefonu; private int lacznyczasrozmow; private static double cenarozmowy = 0.48; // z/min. // konstruktor public Telefon (String numer) { numertelefonu = numer; // deklaracja metod public double obliczkwotedozaplaty() { return cenarozmowy * (lacznyczasrozmow / 60); public static void ustawcenerozmowy(double nowacena){ cenarozmowy = nowacena; public void zadzwon(string nrtelefonu) { System.out.println ("Dzwoni4 do: " + nrtelefonu); System.out.println ("Dry5, dry5..."); System.out.println ("Rozmowa w toku..."); int czasrozmowy = (int) (Math.random()*3600); lacznyczasrozmow += czasrozmowy; System.out.println ("Rozmowa zako5czona. "); System.out.printf ("Czas rozmowy: %d min. %d sek.", czasrozmowy/60, czasrozmowy%60); public class TelefonyKowalskich { public static void main(string[] args){ Telefon telefonani = new Telefon("783982331"); Telefon telefonjarka = new Telefon("608234982"); telefonani.zadzwon("0124239832"); telefonjarka.zadzwon("112"); double kwota = telefonani.obliczkwotedozaplaty(); System.out.printf("Ania ma do zapaty %f z.", kwota); Zadanie 91 TelefonInfo.java Uzupenij klas Telefon o metody dostpowe oraz modyfikujce dla wszystkich pól. Sprawd* dziaanie utworzonych metod (np. wy+wietlenie numeru telefonu, wy+wietlenie cznego czasu rozmów, zmiana numeru telefonu dla konkretnych obiektów). Zadanie 92 WybieraneNumery.java Rozszerz funkcjonalno+ klasy Telefon poprzez dodanie listy dziesiciu ostatnio wybieranych numerów. Zmodyfikuj metod zadzwon(string)oraz dodaj metod wy+wietlajc list pocze. pokazwybieranenumery(). Wskazówka List ostatnio wybieranych numerów moesz przechowa w tablicy: private String[] wybieranenumery; Modyfikacja tablicy powinna nastpowa przy kadym wywoaniu metody zadzwon(string)

MODU 5 - KLASY I OBIEKTY 53 Zadanie 93 Licznik.java W zaawansowanych programach czsto istnieje konieczno+ dokonania zliczania liczby wykonywanych czynno+ci. Zdefiniuj klas Licznik z jednym polem prywatnym ilosc. Dopisz metod dostpow zwracajc warto+ pola ilosc oraz modyfikujc, której zadaniem bdzie inkrementacja pola ilosc. Nastpnie napisz program, który wykorzysta utworzon klas do zliczania liczby znaków spacji w podanym przez uytkownika zdaniu. Zadanie 94 Stoper.java Sprawdzanie wydajno+ci aplikacji wie si z pomiarem czasu jej wykonania. Zaprojektuj klas Stoper. Jej gównym zadaniem bdzie pomiar czasu pomidzy uruchomieniem stopera, a jego zatrzymaniem. Zastanów si jakie pola i metody bd potrzebne do realizacji tego zadania. Wykorzystaj metod currenttimemillis() z klasy System. Rozwi.zanie class Stoper { // deklaracja pól private long start; private long stop; private String nazwa; // konstruktory public Stoper() { nazwa = ""; public Stoper(String nazwa) { this.nazwa = nazwa; // metody public void start(){ start = System.currentTimeMillis(); public void stop(){ stop = System.currentTimeMillis(); public double pobierzwynik(){ return (stop - start) / 1000.0; Zadanie 95 TesterWydajnosciAplikacji.java Wykorzystaj klas Stoper do sprawdzenia, jaki jest czas wyznaczania kolejnych liczb pierwszych. Napisz program, który wyznaczy 1000 liczb pierwszych poprzez sprawdzenie kolejnych liczb naturalnych N, czy podzielne s wycznie przez N. Nastpnie porównaj szybko+ dziaania tej metody z algorytmem sita Eratostenesa. Który z algorytmów jest szybszy? Zastanów si, nad optymalizacj kodu, w celu zwikszenia wydajno+ci. Zadanie 96 PomiarCzasowPosrednich.java W wikszo+ci zada. z zastosowaniem stopera niezbdny jest pomiar czasów po+rednich (midzyczas). Dodaj do klasy Stoper odpowiedni metod zwracajc midzyczas osignity w chwili jej wywoania. Zmodyfikuj program sprawdzajcy wydajno+ metod liczby pierwsze, dokonujc pomiaru i wy+wietlania czasu oblicze., po obliczeniu kolejnych 250 liczb pierwszych. Zadanie 97 Kartografia.java Wspórzdne geograficzne wyraane s za pomoc dugo+ci i szeroko+ci geograficznej, mierzonych w stopniach, minutach i sekundach. Napisz program, który umoliwia przechowywanie informacji dotyczcych pooenia dowolnie wybranych miejscowo+ci oraz pozwala na wyznaczenie odlego+ci, które je dziel. Wybierz 3 dowolne miejscowo+ci (w tym miejscowo+, w której zamieszkujesz), a nastpnie odszukaj w sieci Internet ich wspórzdne geograficzne. Wyznacz odlego+ci dzielce te miejscowo+ci. Wy+wietl rezultaty na konsoli.

MODU 5 - KLASY I OBIEKTY 54 Rozwi.zanie Utwórz klas WspolrzedneGeograficzne, która stanowi bdzie podstaw do tworzenia obiektów reprezentujcych dowolne miejscowo+ci. Konstruktor klasy powinien zawiera parametry okre+lajce pooenie (wspórzdne geograficzne) miejscowo+ci. Utwórz metod statyczn umoliwiajc wyznaczenie (w stopniach, minutach i sekundach) odlego+ci dzielcej dwie dowolnie wybrane miejscowo+ci. Zadanie 98 UlamkiZwykle.java Java nie posiada klasy dla obsugi uamków zwykych. Zdefiniuj klas Ulamek, zawierajc pola licznik oraz mianownik, a take przykadowe metody (tworzenie uamka, upraszczania uamka, wy+wietlanie). Sprawd* dziaanie klasy tworzc uamki oraz wy+wietlajc je na konsoli.

MODU 5 - KLASY I OBIEKTY 55 Rozwi.zanie class Ulamek { // deklaracja pól private int licznik; private int mianownik; // konstruktory public Ulamek() { this.licznik = 0; this.mianownik = 1; public Ulamek(int licznik) { this.licznik = licznik; this.mianownik = 1; public Ulamek(int licznik, int mianownik) { this.licznik = licznik; this.mianownik = mianownik; uprosculamek(this); // metody private static int oblicznwd(ulamek a) { int l,m; l = a.licznik; m = a.mianownik; if (l < 0) l = - l; if (m < 0) m = - m; while ( l!= m) { if (l > m) l = l - m; else m = m - l; return l; private static void uprosculamek(ulamek a) { int nwd; nwd = oblicznwd(a); a.licznik /= nwd; a.mianownik /= nwd; public String tostring() { return this.licznik + "/" + this.mianownik; public class UlamkiZwykle { public static void main (String[] args) { Ulamek x = new Ulamek(4,6); Ulamek y = new Ulamek(10,12); System.out.println ("Ulamek x = " + x); System.out.println ("Ulamek y = " + y);

MODU 5 - KLASY I OBIEKTY 56 Zadanie 99 OperacjeNaUlamkach.java Uzupenij klas Ulamek o brakujce metody umoliwiajce przeprowadzenie podstawowych operacji na tym typie danych. Sygnatury metod znajdziesz poniej. Sprawd* poprawno+ wszystkich metod. public static Ulamek iloczynulamkow(ulamek a, Ulamek b) public static Ulamek sumaulamkow(ulamek a, Ulamek b) public static Ulamek ilorazulamkow(ulamek a, Ulamek b) public static Ulamek roznicaulamkow(ulamek a, Ulamek b) public static Ulamek nazwykly(double a) public static double nadziesietny(ulamek a) Zadanie 100 OperacjeNaDatach.java Sprawd* ile dni ju przeye+, którego dnia tygodnia si urodzie+ i ile dni zostao do sesji egzaminacyjnej. Utwórz klas reprezentujc dat. Uytkownik ma moliwo+ utworzenia obiektów tej klasy podajc dzie., miesic oraz rok. Klasa ma zawiera metod obliczajc liczb dni pomidzy dwoma datami, zwracajc dzie. tygodnia oraz podajc znak zodiaku, który jest odpowiedni dla danej daty. Zadanie 101 LiczbyZespolone.java Liczby zespolone to liczby w postaci x+iy, gdzie x i y to liczby rzeczywiste a i jest pierwiastkiem z -1. Liczba x jest cz+ci rzeczywista liczby zespolonej, a y cz+ci urojona. Utwórz klas LiczbyZespolone umoliwiajc tworzenie liczb zespolonych oraz podstawowe operacje z ich udziaem (dodawanie, odejmowanie, mnoenie, obliczanie warto+ci bezwzgldnej, zwracanie cz+ci rzeczywistej, urojonej, wy+wietlanie liczby zespolonej). Wskazówka Wicej informacji o liczbach zespolonych znajdziesz na stronie: http://pl.wikipedia.org/wiki/liczby_zespolone Zadanie 102 StypendiumNaukowe.java Do uzyskania stypendium naukowego wymagana jest +rednia ozyskanych ocen, wiksza bd* równa 4.8. Pobierz ze standardowego wej+cia oceny studenta i sprawd* czy uzyska on wymagana +redni. Skorzystaj z wasnej klasy Statystyka obliczajcej +redni arytmetyczn.

MODU 5 - KLASY I OBIEKTY 57 Rozwi.zanie import java.util.*; class Statystyka { // deklaracja pól private double dane[]; // konstruktory public Statystyka(double[] tablica) { dane = tablica; // metody public double sredniaarytmetyczna(){ double suma = 0; for (double x : dane) suma += x; return (suma / dane.length); public class StypendiumNaukowe{ public static void main(string[] args){ Scanner wejscie = new Scanner(System.in); System.out.print("Podaj ilogs ocen: "); int n = wejscie.nextint(); double[] oceny = new double[n]; for(int i=0;i<n;i++){ System.out.print("Podaj ocen4: "); oceny[i] = wejscie.nextdouble(); Statystyka obliczenia = new Statystyka(oceny); double srednia = obliczenia.sredniaarytmetyczna(); System.out.println("Stypendium naukowe " + (srednia >= 4.8? "zostao przyznane" : "nie zostao przyznane")); Zadanie 103 ObliczenieStatystyczne.java Szef Ani poprosi j o wyznaczenie podstawowych wska*ników statystycznych dla kilku cigów danych. Poniej zamieszczone zostay dane, dostarczone przez szefa Ani. Dodaj do klasy Statystyka niezbdne metody (mediana, dominanta, odchylenie +rednie, wariancja, odchylenie standardowe) oraz przedstaw uzyskane wyniki. Klient 1: 0.5, 4.7, 3.8, 7.9, 5.2, 6.0, 3.5, 7.1 Klient 2: 9.3, 2.6, 6.3, 5.2, 3.5, 8.3, 8.1, 3.0, 3.1, 5.2, 7.7 Klient 3: 2.1, 2.5, 2.8, 3.4, 4.5, 3.9, 5.6, 6.0, 5.7, 3.4, 2.4, 9.1, 8.3, 8.8 Zadanie 104 ObiektRzeczywisty.java Znajd* obiekt wystpujcy w rzeczywisto+ci i stwórz dla niego odpowiedni implementacj w Javie (klasa plus przykadowe obiekty). Zadanie 105 NajlepsiGracze.java Gry komputerowe posiadaj list najlepszych rezultatów osignitych przez poszczególnych grajcych. Osoby, które uzyskay najwiksz liczb punktów zajmuj najwysze miejsce. Utwórz program, który na podstawie osignitych rezultatów przez 30 grajcych, sporzdzi list 10 najlepszych wyników. Przykad listy przedstawiono poniej. Liczb uzyskanych punktów wygeneruj losowo z przedziau <0,10000>. Miejsce Gracz Wynik 1 Terminator 3523 2 Alex 2865 3 Morfeusz 1982 4 Easyrider 1634 5 Merlin 1321

MODU 5 - KLASY I OBIEKTY 58 Rozwi.zanie Wykorzystaj w zadaniu poniszy kod programu. Klasa Gracz bdzie przechowywa dane poszczególnych grajcych (nick, wynik), natomiast klasa NajlepszaDziesiatka list dziesiciu grajcych, którzy osignli najlepszy rezultat. Uzupenij ponisze klasy wykorzystujc enkapsulacj danych, konstruktory oraz metody dostpowe i modyfikujce. class Gracz { String nick; int wynik; public Gracz(String nick, int wynik){ this.nick = nick; this.wynik = wynik; public int pobierzwynik(){ return wynik; public String tostring(){ return nick + " " + wynik + "\n"; class NajlepszaDziesiatka { Gracz[] top; public NajlepszaDziesiatka(){ top = new Gracz[10]; public void dodajgracza(gracz gracz){ public String tostring() { String wynik = ""; for(gracz x : top) wynik += x; return wynik;