Dziedziczenie

Transkrypt

Dziedziczenie
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.