Dziedziczenie Zadanie 1 Napisz klasę KolorowyPunkt, która dziedziczy po klasie Punkt a dodatkowo przechowuje informacje o kolorze. Uzupełnij ją o metody umożliwiające pobieranie i ustawianie koloru. Pamiętaj o wywołaniu konstruktora klasy bazowej. Wykorzystaj ją w metodzie Main(). Zadanie 2 Napisz program, w którym będą następujące klasy: Pracownik oraz Kierownik. Klasa Pracownik powinna posiadać następujące pola: imię, nazwisko, nip, data urodzenia, data zatrudnienia, pensja, dział. Klasa Kierownik powinna dziedziczyć po klasie Pracownik i dodatkowo powinna posiadać następujące pola: ilość podwładnych, typ kierownictwa, dodatek funkcyjny (wyrażony w procentach). W obydwóch klasach utwórz konstruktor, który pobierze dane od użytkownika. W klasie Pracownik utwórz metodę wirtualną, która wyświetli informację o pracowniku. Przesłoń ją w klasie Kierownik. W klasie Kierownik utwórz metodę, która pozwoli przyjąć nowego pracownika. W metodzie Main utwórz obiekt klasy Kierownik i wywołaj metody tej klasy. Zadanie 3 Napisz program, w którym będą następujące klasy: Sprzedawca oraz Kierownik Sprzedaży. Klasa Sprzedawca powinna posiadać następujące pola: imię, nazwisko, kod sprzedawcy, do kiedy zatrudniony, dział, wynagrodzenie. Klasa Kierownik Sprzedaży powinna dziedziczyć po klasie Sprzedawca i dodatkowo powinna posiadać następujące pola: uprawnienia, dodatek funkcyjny (wyrażony w procentach). W obydwóch klasach utwórz konstruktor, który pobierze dane od użytkownika. W klasie Sprzedawca utwórz metodę wirtualną, która wyświetli informację o sprzedawcy. Przesłoń ją w klasie Kierownik Sprzedaży. W klasie Kierownik Sprzedaży utwórz metodę, która obliczy i wyświetli płacę z uwzględnieniem dodatku. W metodzie Main utwórz obiekt klasy Kierownik Sprzedaży i Sprzedawca orazi wywołaj metody tych klas.
Zadanie 4 Napisz program, w którym będą dwie klasy: Komputer i KomputerPrzenosny. W klasach tych powinny znajdować się następujące pola: 1. Komputer a. Producent b. Model c. Płyta główna d. Procesor e. Karta graficzna f. Dysk twardy 2. KomputerPrzenosny a. Waga (powinna być z przedziału 1,2 kg 3,5 kg) b. Bateria c. Bluetooth (powinien przyjąć wartość: t lub n ) Klasa KomputerPrzenosny dziedziczy po klasie Komputer. W obydwu klasach utwórz konstruktor, który pobierze dane od użytkownika. Dodatkowo w klasie Komputer przeciąż konstruktor w taki sposób, by wartości pól były parametrami metody. W klasie Komputer utwórz także metodę, która wyświetli informacje o komputerze. Przesłoń ją w klasie KomputerPrzenosny. W metodzie Main() utwórz obiekt klasy KomputerPrzenosny oraz dwa obiekty klasy Komputer (wykorzystując różne konstruktory). Wyświetl informacje o komputerach.
Zadanie 5 Napisz program, w którym będą dwie klasy: Samochod i SamochodOsobowy. W klasach tych powinny znajdować się następujące pola: 1. Samochod a. Marka b. Model c. Nadwozie d. Kolor e. Rok produkcji f. Przebieg (nie może być ujemny) 2. SamochodOsobowy a. Waga (powinna być z przedziału 2 t 4,5 t) b. Pojemność silnika (powinna być z przedziału 0,8-3,0) c. Ilość osób Klasa SamochodOsobowy dziedziczy po klasie Samochod. W obydwu klasach utwórz konstruktor, który pobierze dane od użytkownika. Dodatkowo w klasie Samochod przeciąż konstruktor w taki sposób, by wartości pól były parametrami metody. W klasie Samochod utwórz także metodę, która wyświetli informacje o samochodzie. Przesłoń ją w klasie SamochodOsobowy. W metodzie Main() utwórz obiekt klasy SamochodOsobowy oraz dwa obiekty klasy Samochod (wykorzystując różne konstruktory). Wyświetl informacje o samochodach.
Zadanie 6 Napisz program, w którym będą dwie klasy: Telefon i TelefonDotykowy. W klasach tych powinny znajdować się następujące pola: 1. Telefon a. Producent b. Model c. Waga (powinna być z przedziału 100g-300g) d. Wymiary e. Akumulator f. Maksymalny czas czuwania (powinien być z przedziału 500-900 h) 2. TelefonDotykowy a. System operacyjny b. Typ rysika c. WAP (powinien przyjąć wartość: t lub n ) Klasa TelefonDotykowy dziedziczy po klasie Telefon. W obydwu klasach utwórz konstruktor, który pobierze dane od użytkownika. Dodatkowo w klasie Telefon przeciąż konstruktor w taki sposób, by wartości pól były parametrami metody. W klasie Telefon utwórz także metodę, która wyświetli informacje o telefonie. Przesłoń ją w klasie TelefonDotykowy. W metodzie Main() utwórz obiekt klasy TelefonDotykowy oraz dwa obiekty klasy Telefon (wykorzystując różne konstruktory). Wyświetl informacje o telefonach.
Zadanie 7 Napisz program, w którym będą dwie klasy: Przedmiot i PrzedmiotObowiazkowy. W klasach tych powinny znajdować się następujące pola: 1. Przedmiot a. Nazwa b. Godziny wykład (możliwe: 15 i 30 h) c. Godziny ćwiczenia (możliwe: 15 i 30 h) d. Punty ECTS (powinny być z przedziału 1-8) e. Prowadzący wykład f. Prowadzący ćwiczenia 2. PrzedmiotObowiazkowy a. Kierunek b. Specjalność c. Semestr Klasa PrzedmiotObowiazkowy dziedziczy po klasie Przedmiot. W obydwu klasach utwórz konstruktor, który pobierze dane od użytkownika. Dodatkowo w klasie Przedmiot przeciąż konstruktor w taki sposób, by wartości pól były parametrami metody. W klasie Przedmiot utwórz także metodę, która wyświetli informacje o przedmiocie. Przesłoń ją w klasie PrzedmiotObowiazkowy. W metodzie Main() utwórz obiekt klasy PrzedmiotObowiazkowy oraz dwa obiekty klasy Przedmiot (wykorzystując różne konstruktory). Wyświetl informacje o przedmiotach.
Zadanie 8 W programie utwórz dwie klasy: Czasopismo i Kwartalnik. Kwartalnik dziedziczy po klasie Czasopismo. Tworząc program wykorzystaj poniższe informacje o klasach. Klasa Czasopismo: 1. Pola: - nazwa - wydawnictwo - rok założenia - rok ostatniego numeru - ilość wydań w roku - liczba stron - cena 2. Za pomocą właściwości: - ustal i zwróć wartość dla pola cena (cena powinna być większa od zera), - ustal wartość dla pól rok założenia oraz rok ostatniego numeru, - zwróć wartość pola ilość wydań w roku ((rok ostatniego numeru - rok założenia )/ ilość wydań w roku). 3. Klasa ta posiada następujące metody: - wirtualną służącą do wyświetlania danych o czasopiśmie - abstrakcyjną służącą do określenia typu czasopisma. Klasa Kwartalnik: 1. Pola: - nr ISBN - miesiąc I wydania w roku (styczeń, luty, marzec, kwiecień) - redaktor 2. Metody:
- wyświetlanie danych o kwartalniku - określenie typu kwartalnika: -> nr ISBN brak, brak redaktora kwartalnik nierecenzowany -> nr ISBN brak kwartalnik nierecenzowany -> posiada nr ISBN i redaktora kwartalnik recenzowany -> miesiąc I wydania to styczeń lub luty kwartalnik wydawany z początkiem roku -> miesiąc I wydania to marzec lub kwiecień kwartalnik wydawany z początkiem II kwartału -> rok założenia wcześniejszy niż 2000 i posiada nr ISBN kwartalnik naukowy z długoletnią tradycją -> rok założenia późniejszy niż 2009 nowość Zadanie 9 Utwórz klasę Osoba, która zawiera następujące pola: nazwisko, imię, ulica, kod i miasto oraz dwie metody: wczytaj() i wyswietl(). Pierwsza z metod umożliwia wprowadzenie danych, natomiast druga wyświetla je na ekranie monitora. Dodaj do programu klasę Kadra, która dziedziczy po klasie Osoba oraz zawiera dwa dodatkowe pola: wyksztalcenie i stanowisko oraz dwie dodatkowe metody wczytaj1() i wyswietl1() - wykorzystaj w nich metody z klasy nadrzędnej.
Zadanie 10 Utwórz klasę bazową Figura oraz klasy pochodne według poniższego rysunku.. Klasa Figura ma zawierać: pole: nazwa (domyślnie figura geometryczna) odpowiednie konstruktory metodę Wyswietl() wyświetlającą komunikat: Figura geometryczna Podklasa Kolo ma zawierać: dodatkowe pole definiujące daną figurę (promień koła) odpowiednie konstruktory (skorzystać z konstruktorów klasy bazowej) metodę Pole() predefiniowaną metodę Wyswietl(), która wyświetla komunikat postaci (skorzystać z metody nadklasy): Figura geometryczna nazwa, pole figury:.... Kolejne podklasy mają zawierać: dodatkowe pola definiujące daną figurę (wysokość stożka/walca) konstruktory dodatkową metodę Objetosc() predefiniowaną metodę Pole() obliczającą pole powierzchni bocznej figury
predefiniowaną metodę Wyswietl(), która wyświetla komunikat postaci (skorzystać z metody nadklasy): Figura geometryczna nazwa, pole figury:..., objętość:.... Napisz program testowy definiujący po jednym obiekcie każdej klasy i wyświetlający komunikaty na temat każdego obiektu. Zadanie 11 Napisz program, w którym będą znajdowały się klasy Osoba, Student i Piłkarz (Student i Piłkarz dziedziczą po klasie Osoba). W klasie Osoba powinny znajdować się pola: imię, nazwisko, dataurodzenia oraz wirtualna metoda WypiszInfo. W klasie Student powinny znajdować się pola rok, grupa, nrindeksu oraz metoda WypiszInfo. W klasie Piłkarz powinny znajdować się pola: pozycja, klub, liczbagoli (początkowo wartość 0) oraz metody: WypiszInfo, StrzelGola. Metody WypiszInfo w klasach pochodnych powinny przesłaniać metodę wirtualną. Metoda StrzelGola powinna zwiększać o 1 wartość pola liczbagoli. Zadanie 12 Napisz klasy służące do reprezentowania figur geometrycznych, wykorzystujące mechanizm dziedziczenia: 1. klasa bazowa Figura ma przechowywać informacje na temat koloru, grubości krawędzi oraz wypełnienia (pusta/wypełniona), 2. klasa pochodna Kolo ma zapamiętywać współrzędne środka oraz promień, 3. klasa pochodna Prostokat ma zapamiętywać współrzędne górnego lewego rogu oraz długości boków a i b. Klasy pochodne mają zawierać metodę rysującą, która będzie wypisywała informacje o figurze: kolor, grubość krawędzi, wypełnienie wraz z pozostałymi informacjami, charakterystycznymi dla danej figury. W metodzie Main() zdefiniuj jedną tablicę przechowującą obiekty będące instancjami zarówno klasy Kolo jak i Prostokat. W petli foreach wywołaj dla każdego obiektu metodę rysującą.
Zadanie 13 Napisz klasę abstrakcyjną Figura, która będzie posiadała dwie właściwości: długość i szerokość, które będą pozwalały na przypisanie i odczytanie tych wartości, oraz jedną metodę Obwód, która będzie wyznaczała obwód figury wg. wzoru: obwód = 2 * (długość + szerokość). Następnie utwórz pustą klasę pochodną Prostokąt, dziedziczącą po klasie abstrakcyjnej Figura. Zbuduj przykład wykorzystania zdefiniowanych klas w metodzie Main() programu. Zadanie 14 Do klasy abstrakcyjnej Figura z poprzedniego zadania dodaj definicję metody abstrakcyjnej Powierzchnia, lecz jej nie implementuj. Następnie w klasie pochodnej Prostokąt zaimplementuj metodę Powierzchnia, która będzie zwracała pole powierzchni będące iloczynem długości i szerokości odziedziczone z klasy Figura. Sprawdź w praktyce działanie wprowadzonych zmian. Zadanie 15 Dodaj nową klasę do programu z poprzedniego zadania klasa Kolo ma dziedziczyć po klasie abstrakcyjnej Figura. Ponieważ obwód koła liczy się inaczej niż robi to metoda Obwód, zmień w klasie Figura definicję tej metody na metodę wirtualną zachowując jej dotychczasową zawartość. W klasie Kolo: 3. zaimplementuj metodę Obwód tak, aby poprawnie liczyła obwód koła, 4. zaimplementuj metodę liczącą powierzchnię przyjmując, że promień koła równy jest składowej długość. Sprawdź w praktyce działanie wprowadzonych modyfikacji. Zadanie 16 Do programu z poprzedniego zadania dodaj klasę Kwadrat, która dziedziczy po klasie Prostokąt. Klasa Kwadrat ma pozostać pusta, a przy późniejszym wykorzystaniu tej klasy w metodzie Main() programu należy pamiętać o przypisaniu takiej samej wartości do długości i szerokości. Dodatkowo klasę Kwadrat należy zdefiniować jako zamkniętą, wskazując, że dalsze dziedziczenie po niej nie jest możliwe. W tym celu przed class należy umieścić słowo kluczowe sealed.