Przeciążanie metd i peratrów Zadanie 1 W prgramie utwórz klasę Ksiazki. Klasa psiada pla przechwujące infrmacje : tytule książki, autrze książki, ilści strn, ilści rzdziałów i cenie (cena pwinna być większa d zera, prgram pwinien pbierać cenę tak dług, aż użytkwnik pda prawidłwą). W klasie pwinna znajdwać się także stała przechwująca infrmację rabacie standardwym (5%). Utwórz knstruktr klasy, który pbierze wartści pól d użytkwnika. Utwórz metdę, która bliczy i zwróci cenę książki p rabacie. Przeciąż ją w liście parametrów uwzględnij rabat pdany przez użytkwnika. W funkcji Main utwórz biekt klasy Ksiazki raz zmienną, która będzie przechwywać rabat pdany przez użytkwnika. Pbierz rabat d użytkwnika. Wyświetl infrmacje książce: tytuł, autr, liczba strn, ilść rzdziałów, cena, cena p rabacie standardwym raz cena p rabacie pdanym przez użytkwnika. Zadanie 2 W prgramie utwórz klasę Pracwnicy. Klasa psiada pla przechwujące infrmacje : nazwisku pracwnika, imieniu, płacy zasadniczej raz rk urdzenia(rk pwinna być większa d 1900 i mniejszy d 2000, prgram pwinien pbierać rk tak dług, aż użytkwnik pda prawidłwy). W klasie pwinna znajdwać się także stała przechwująca infrmację prcencie premii (10%). Utwórz knstruktr klasy, który pbierze wartści pól d użytkwnika. Przeciąż g tak, by wartści pól stanwiły listę parametrów. Utwórz metdę, która bliczy i zwróci płacę brutt (z uwzględnieniem premii). W funkcji Main utwórz dwa biekty biekt klasy Pracwnicy biektu utwórz za pmcą różnych knstruktrów. Wyświetl infrmacje bydwóch pracwnikach. Zadanie 3 W prgramie utwórz klasę Samchdy. Klasa psiada pla przechwujące infrmacje : marka, mdel, pjemnść silnika, rk prdukcji i cenie (cena pwinna być większa d zera, prgram pwinien pbierać cenę tak dług, aż użytkwnik pda prawidłwą). W klasie pwinna znajdwać się także stała przechwująca infrmację rabacie standardwym (8%). Utwórz knstruktr klasy, który pbierze wartści pól d użytkwnika. Utwórz metdę, która bliczy i zwróci cenę samchdu p rabacie. Przeciąż ją w liście parametrów uwzględnij rabat pdany przez użytkwnika. W funkcji Main utwórz biekt klasy Samchdy raz zmienną, która będzie przechwywać rabat pdany przez użytkwnika. Pbierz rabat d użytkwnika. Wyświetl infrmacje samchdzie: marka, mdel, pjemnść silnika, rk prdukcji, cena, cena p rabacie standardwym raz cena p rabacie pdanym przez użytkwnika.
Zadanie 4 W prgramie utwórz klasę Czaspisma. Klasa psiada pla przechwujące infrmacje : tytule, wydawcy, numerze, nakładzie, cenie (rk pwinna być większa d 0, prgram pwinien pbierać cenę tak dług, aż użytkwnik pda prawidłwy). W klasie pwinna znajdwać się także stała przechwująca infrmację rabacie standardwym (3%). Utwórz knstruktr klasy, który pbierze wartści pól d użytkwnika. Przeciąż g tak, by wartści pól stanwiły listę parametrów. Utwórz metdę, która bliczy i zwróci cenę p rabacie (z uwzględnieniem premii). W funkcji Main utwórz dwa biekty biekt klasy Czaspisma biektu utwórz za pmcą różnych knstruktrów. Wyświetl infrmacje bydwóch czaspismach. Zadanie 5 Przygtuj klasę Punkt3D pzwalającą na reprezentację punktów w przestrzeni 3D. Przyjmij, że współrzędne punktu są wartściami typu rzeczywisteg. W klasie zaimplementuj: przeciążny knstruktr jeden knstruktr bezargumentwy inicjujący współrzędne wartścią 0, raz drugi knstruktr inicjujący współrzędne wartściami przekazanych argumentów, właściwści pzwalające na dczytanie i zmianę wartści współrzędnych, metdę pzwalającą na wyznaczenie dległści między punktami: d ( A,B )= (x B x A ) 2 +( y B y A ) 2 +(z B z A ) 2
Zadanie 6 Napisz klasę Czas, która będzie służyła d reprezentwania czasu przy pmcy gdzin i minut. Klasa ma zawierać: jedn ple prywatne d przechwywania minut, przeciążny knstruktr, który przyjmuje w jednej wersji jeden argument reprezentujący minuty, zaś w drugiej wersji dwa argumenty reprezentujące gdziny raz minuty, przeciążną metdę TString(), która zwraca ciąg znaków w frmacie HH:mm, reprezentujący liczbę gdzin i minut, przeciążny peratr +, ddający d siebie dwie wartści czasu, przeciążny peratr -, dejmujący d siebie dwie wartści czasu. W metdzie Main() stwórz przykład wykrzystania klasy Czas. Zadanie 7 Przygtuj klasę Kl pzwalającą na reprezentwanie kół pdanym prmieniu. Przyjmij, że prmień jest wartścią typu rzeczywisteg większą d 0. W klasie zaimplementuj: przeciążny knstruktr jeden knstruktr bezargumentwy inicjujący prmień wartścią 1, raz drugi knstruktr inicjalizujący prmień wartścią przekazaneg argumentu, która musi być większa d 0, właściwść pzwalającą na dczytanie i zmianę wartści prmienia, właściwść pzwalającą na dczytanie i zmianę wartści średnicy, właściwść pzwalającą na uzyskanie pla pwierzchni kła, właściwść pzwalającą na uzyskanie bwdu kła. Klasa pwinna zgłaszać wyjątki w sytuacji, gdy prmień przyjmuje wartść równą lub mniejszą d 0. Przygtuj przykład użycia zaimplementwanej klasy.
Zadanie 8 Napisz klasę Macierz, która będzie zawierała: Pla: Wiersze, Klumny typu całkwiteg, tabmacierz dwuwymiarwa tablica liczb całkwitych, Knstruktry z mechanizmem składania knstruktrów: Pierwszy jak argumenty przyjmuje liczbę wierszy i klumn, Drugi jak argumenty przyjmuje liczbę wierszy, klumn raz tablicę dwuwymiarwą, Metdy: Equals() sprawdzająca, czy dwie macierze mają takie same wartści, TString() zwracająca zmienną typu string z elementami macierzy, (każdy wiersz w sbnej linii) Właściwści. Utwórz w metdzie Main() prgramu dwie macierze wykrzystując d teg dwa różne knstruktry, raz sprawdź działanie metd Equals() i TString() (następnie wykrzystaj verride). D klasy Macierz ddaj następnie metdę, która pzwli na ddawanie d siebie dwóch macierzy. Uzupełnij klasę peratr +, który będzie służył d ddawania dwóch macierzy. W wyniku działania teg peratra pwinna być zwracana macierz wynikwa. Ddawane macierze muszą mieć ten sam rzmiar. (przeciążanie peratrów) Uzupełnij klasę peratr *, który będzie służył d mnżenia dwóch macierzy. W wyniku działania teg peratra pwinna być zwracana macierz wynikwa. Liczba klumn pierwszej macierzy musi być równa liczbie wierszy drugiej macierzy. (przeciążanie peratrów)
Zadanie 9 Napisz klasę Osba, która będzie służyła d reprezentwania sób, które pisane są przez imię, nazwisk i datę urdzenia. Utwórz knstruktry, które będą wykrzystywały mechanizm składania knstruktrów d zainicjwania pól pisujących sbę, raz właściwści pzwalające na dczytanie raz zmdyfikwanie pszczególnych pól. Następnie uzupełnij klasę Osba mechanizm, który pzwli na wyświetlenie liczby sób. P wyświetleniu listy sób, prgram pwinien wypisać liczbę sób z użyciem publiczneg pla statyczneg zawierająceg dpwiednią wartść. Zadanie 10 Napisz prgram, w którym zdefiniuj klasę Samchd. Klasa ta pwinna mieć prywatne pla: marka, mdel. IlscDrzwi, pjemnscsilnika, sredniespalanie. Klasa ta ma psiadać właściwści dstępwe d wszystkich pól, które nie są statyczne raz ma umżliwiać przechwywanie infrmacji na temat liczby utwrznych biektów tej klasy (pprzez ple statyczne typu int nazwie ilscsamchdw i przypisanie mu wartści 0). W klasie Samchd pwinien być utwrzny knstruktr dmyślny, który wszystkim plm przyprządkwuje wartści: nieznana lub nieznany dla pól typu string, 0 dla pól typu int, 0.0 dla pól typu duble. Wywłanie knstruktra pwinn zwiększać 1 wartść pla statyczneg ilscsamchdw. Pwinien być także knstruktr przyjmujący następujące parametry: marka_, mdel_, ilscdrzwi_, pjemnscsilnika_, sredniespalanie_. TyKnstruktr ma przekazywać wartści parametrów plm. Wywłanie knstruktra pwinn zwiększać 1 wartść pla statyczneg ilscsamchdw. W klasie pwinna znaleźć się prywatna metda ObliczSpalanie zwracającej wartść typu duble i przyjmującej parametr dlugsctrasy typu duble. Metda ta ma bliczać spalanie samchdu na pdstawie pdanej wartści długści trasy i wartści pla sredniespalanie. Spalanie bliczamy według wzru: spalanie = (sredniespalanie * dlugsctrasy) / 100.0 W klasie pwinna także znaleźć się publiczna metda ObliczKsztPrzejazdu zwracającej wartść typu duble i przyjmującej parametry dlugsctrasy typu duble i cenapaliwa typu duble. Metda ta ma bliczać kszt przejazdu na trasie pdanej długści, zakładając pdaną cenę paliwa za litr. Metda ta ma wykrzystywać prywatną metdę ObliczSpalanie. Kszt przejazdu bliczamy według wzru: ksztprzejazdu = spalanie * cenapaliwa Utwórz publiczną metdę WypiszInf zwracającą wartść typu vid i nie przyjmującej żadnych parametrów. Metda ta ma wypisywać na ekranie knsli wartści wszystkich pól klasy Samchd.
Klasa Samchd ma umżliwiać bliczanie ceny paliwa ptrzebneg d przejechania danej trasy na pdstawie pdanej długści trasy i ceny paliwa za litr Klasa Samchd ma umżliwiać wypisanie na ekran knsli wszystkich infrmacji danym samchdzie (wartści pól, które nie są statyczne). Klasa Samchd ma umżliwiać wypisanie na ekran knsli infrmacji liczbie utwrznych biektów (pprzez metdę statyczną) Zadanie 11 1. Napisz prgram d bsługi zamówień. Prgram pwinien składać się z dwóch klas: Zamwienie raz Pzycja, przy czym każde zamówienie zawierać mże jedną lub więcej pzycji. Klasa Pzycja pwinna zawierać następujące pla: nazwatwaru (String) ilesztuk (int) liczba zamówinych sztuk cena (duble) cena pjedynczej sztuki raz metdy: knstruktr z parametrami umżliwiającymi ustalenie wartści pól klasy, metdę duble bliczwartsc() zwracającą wartść pzycji zamówienia, metdę String tstring() zwracającą łańcuch w frmacie: nazwa twaru (20 znaków), cena (10 znaków), liczba sztuk (4 znaki), wartść zamówienia (10 znaków), przykład: Cukier 4,00 zł 3 szt. 12,00 zł Klasa Zamwienie pwinna zawierać następujące pla: pzycje (tablica biektów kl. Pzycja) pzycje składwe zamówienia, ileddanych (int) liczba pzycji w zamówieniu, maksrzmiar (int) maksymalna liczba pzycji w zamówieniu raz metdy: knstruktr bezparametrwy maksrzmiar ustalany na wartść 10, knstruktr z parametrem kreślającym maksymalną liczbę pzycji w zamówieniu, metdę vid ddajpzycje(pzycja p), która ddaje pdaną pzycję d zamówienia, metdę duble bliczwartsc() zwracającą wartść zamówienia,
metdę String tstring(), która zwraca łańcuch zawierający spis pzycji zamówienia raz łączną wartść zamówienia. Przykładwa metda krzystająca z wspmnianych klas: public static vid main(string [] args) thrws IOExceptin { Pzycja p1 = new Pzycja("Chleb", 1, 3.5); Cnsle.WriteLine(p1); Pzycja p2 = new Pzycja("Cukier", 3, 4); Cnsle.WriteLine(p2); Zamwienie z = new Zamwienie(20); z.ddajpzycje(p1); z.ddajpzycje(p2); Cnsle.WriteLine(z); } Przykładwy wynik: Chleb 3,50 zł 1 szt. 3,50 zł Cukier 4,00 zł 3 szt. 12,00 zł Zamówienie: Chleb 3,50 zł 1 szt. 3,50 zł Cukier 4,00 zł 3 szt. 12,00 zł Razem: 15,50 zł 2. W klasie Zamwienie : zaimplementwać metdę vid usunpzycje(int indeks), która usuwa z zamówienia pzycję pdanym indeksie zaimplementwać metdę vid edytujpzycje(int indeks), która umżliwi edycję wybranej pzycji zamówienia, tj. nazwy twaru, ceny raz liczby sztuk
zmdyfikwać metdę vid ddajpzycje(pzycja p), tak by w stytuacji, gdy ddawany jest ten sam twar nie ddawała klejnej pzycji, lecz zwiększała liczbę sztuk w już istniejącej 3. W klasie Pzycja : zaimplementwać metdę duble bliczwartsczrabatem, która blicza wartść pzycji zamówienia p uwzględnieniu rabatu zależneg d liczby sztuk: 5 10 szt. rabat 5%, 10 20 szt. rabat 10 pwyżej 20 szt. rabat 15%. 4. Zmdyfikwać metdę bliczwartsc w klasie Zamwienie, tak by również wyświetlała infrmacje rabacie i łączny kszt zamówienia p jeg uwzględnieniu. 5. Zmdyfikwać metdę tstring, by wyświetlała również naliczny rabat i wartść z rabatem. 6. W bu klasach zaimplementwać interfejs Serializable umżliwiający zapis i dczyt danych z pliku realizwany przez metdy: metdę public static vid zapiszzamwienie(zamwienie z, String nazwapliku), która zapisze pdane w parametrze zamówienie d pliku nazwie pdanej drugim parametrem. metdę public static Zamwienie wczytajzamwienie(string nazwapliku), która wczyta z pliku pdanej nazwie zamówienie i zwróci je jak wynik.