PROGRAMOWANIE OBIEKTOWE |
POB 1. Książka kontaktowa. Opracować
program pozwalający przechowywać informacje o kontakcie ze znajomymi. POB 2.
Kalkulator 3D -
-O nazwa1 nazwa2 – zwraca różnice obiętości pomiędzy
bryłami o nazwie 1 i 2 POB 3
Rejestracja Samochodów Należy stworzyć klasy Samochód,
Kolor i Baza.
Pierwsza z tych klas będzie zawierała informacje o samochodzie: kolor
(z klasy Kolor),
rok produkcji. Bedzie zawierała również funkcję kolizja która zwóci nowy samochód bez roku produkcji ale
z kolorem powstałym z połączenia samochodów biorących udział w
kolizji. Klasa Kolor
zawiera informacje o składowych R, G, B oraz metodę mieszaj(Kolor k)
która powie jaki kolor powstanie w wyniku połączenia dwoch kolorów.
Klasa Baza
przechowuje informacje o samochodach w postaci listy jednokierunkowej.
Informacje do listy są wczytywane i zachowywane na dysku w pliku baza.txt. Użytkownik może komunikuje się z programem
poprzez interfejs textowy. Klawiszami funkcyjnymi będą: -
N - dodanie nowego samochodu do bazy -
L kolor– wypisanie wszystkich samochodów o podanym
kolorze -
L rok produkcji – wypisanie listy samochodów z
danego roku -
K samochod1 samochod2– podać informacje co powstało
w wyniku kolizji tych samochodów. POB 4 Należy utworzyć klasy Koło,
Kwadrat i
Punkt.
Klasy Kolo
i Kwadrat
dziedziczą po klasie Punkt
i
przechowują informacje o parametrach odpowiadającego obiektu (promień
lub wielkości boków). W klasie Punkt przechowuje się współrzędne (x, y) oraz nazwę
obiektu. Informacje o
wszystkich obiektach w programie należy przechowywać za pomocą listy
dwukierunkowej cyklicznej. Komunikacja pomiędzy programem a użytkownikiem
odbywa się w sposób tekstowy. Następujące polecenia powinny
spowodować akcję: -
N – utworzenie nowego obiektu (koło lub kwadrat) -
L koło - wypisanie wszystkich kół -
L kwadrat - wypisanie wszystkich kwadratów -
P koło/kwadrat – wypisuje pole powierzchni
wszystkich koł lub kwadratów -
W nazwa1 nazwa2 – określa czy obiekty o nazwie1
i nazwie2 mają część wspólną i jeśli tak to podają
rozmiar tego pola. POB 5. Program fakturujący. Pewna firma potrzebuje programu który uprości
wystawianie faktur. Każda faktura jest wystawiana dla jakiejś firmy którą
realizuje klasa Odbiorca.
Klasa ta zawiera następujące informacje: nazwa, adres , numer NIP.
Firma wystawiająca fakturę jest reprezentowany przez klasę Wystawiajacy,
która zawiera takie same informacje jak klasa Odbiorca. A obie te klasy (tj. Odbiorca
i Wystawiajacy)
dziedziczą po klasie Firma.
Ponadto każda faktura jest reprezentowana przez klasę Faktura i ma swój indywidualny numer. Wszystkie dane o firmach i wystawionych fakturach są
przechowywane na dysku. Uruchomienie programu powoduje załadowanie tych
danych. Użytkownik programu dzięki tekstowemu menu
powianiem móc: -
N – dodać nową firmę - U – usunąć firmę (w takim przypadku faktury wystawione dla danej firmy nadal zawierają wszystkie dane) - F – wystawić nową fakturę POB. 6 Macierze - podmacierze Należy napisać klasę Macierz
reprezentującą liczby rzeczywiste. Konstruktory tej klasy będą wyglądać w następujący
sposób: -
Macierz() – utworzy macierz jednoelementową -
Macierz(int s) – utworzy macierz o s kolumnach i s
wierszach. -
Macierz( int w, int k) – utworzy macierz
o w wierszach i k kolumnach Będzie ona zawierać następujące metody: -
Generuj() - wypełni macierz losowymi liczbami -
Wypełnij(double tab[]) – wypełni macierz wartościami z
tablicy (w przypadku gdy wartości będzie za mało należy wyświetlić
stosowny komunikat) -
Porownaj(Macierz m) – dokona porównania czy macierz porównywana
(m) zawiera się w macierzy porównywanej i poda współrzędne punktów
identyczności Ponadto należy przeciążyć następujące
operatory: -
<< - wyświetli na ekranie macierz -
== - wywoła metodę Porównaj(Macierz m) Rozwiązanie uogólnić wykorzystując macierz
szablonową. POB 7. Macierze liczb zespolonych Napisać klasę Cplx która będzie reprezentować
liczby zespolone. Klasa Macierz będzie reprezentować tablicę
2-wymiarową liczb zespolonych. Obiekty klasy Macierz powinny być
tworzone jednym z poniższych konstruktorów: -
Macierz() - utworzy
macierz 1 na 1 -
Macierz(int s) – utworzy macierz o s kolumnach i s
wierszach. -
Macierz( int w, int k) – utworzy macierz
o w wierszach i k kolumnach -
Macierz(bool b) - utworzy
macierz 1 na 1 i jeżeli wartość b będzie true to należy wypełnić
ją losowymi liczbami zespolonymi -
Macierz(int s, bool b) – utworzy macierz o s wierszach i s
kolumnach, i jeżeli wartość b będzie true to należy wypełnić
ją losowymi liczbami zespolonymi -
Macierz( int w, int k, bool) – utworzy macierz
o w wierszach i k kolumnach, i jeżeli wartość b będzie true
to należy wypełnić ją losowymi liczbami zespolonymi Ponadto
należy przeciążyć operatory +, -, * tak aby następujące wywołanie
spowodowało: -
M1 + M2 – dodanie do macierzy M1 macierzy M2 -
M1 – M2 – odjęcie od macierz M1 macierzy M2 -
M1 * M2 – pomorzenie macierzy M1 przez macierz M2 POB 8. Kalkulator bin-hex-dec Należy napisać klasy Binary,
Hex i
Any które
będą odpowiednio reprezentować liczby binarne, heksadecymalne i
liczby zapisane w systemie zdefiniowanym przez użytkownika. Wszystkie
te klasy będą dziedziczyć po klasie Liczba w której będzie zapisana
liczba w kodzie dziesiątkowym. Użytkownik powinien moc dodać, odjąć,
pomnożyć, podzielić dowolną liczbę (spośród zdefiniowanych przez
siebie). Dzięki tekstowemu interfejsowi -
B liczba – nowa liczba binarna -
H liczba – nowa liczba heksadecymalna -
R liczba – przedefiniowanie klasy Any tab aby podana
liczba określała wielkość jednostki w tej klasie -
A liczba – nowa liczba zdefiniowana przez użytkownika Należy zwrocić uwagę aby uzytkownik mogł
wprowadzać liczby w następujące sposób: B(01010)
+ H(4D), B(01010)
- A(12), POB 9 Pewna wideoteka potrzebuje elektronicznego systemu rejestracji wypożyczania kaset wideo. Dlatego też należy napisać program realizujący tę operację w następujący sposób. Klasa Kaseta reprezentuje kasetę wideo, jest ona opisywana przez następujące pola numer, tytuł, reżyser, głównych aktorów. Każda kaseta zalicza się do jakiegoś gatunku: komedia, dramat itp. Informacja ta jest przechowywana w oddzielnej klasie Gatunek. Wideoteka posiada również informacje o swoich klientach. Dane te są reprezentowane przez klasę Klient która dziedziczy po klasie Osoba. Poza danymi odziedziczonymi klasa Klient zawiera informacje stanie obecnym konta (czy klient cos wypożyczył) oraz historie tego co zostało wypożyczone przez tego klienta. Informacja ta powinna być przechowywana przez listę dwukierunkową nie cykliczna. Klasa Osoba zawiera następujące informacje: imię, nazwisko, adres. Obsługa wideoteki będzie posługiwać się tekstowym interfejsem i domaga się obsłużenia następujących poleceń: - N – nowa kaseta - W numer numer_klienta - wypożycz kasetę o numerze klientowi o numerze_klienta - Z numer – zwrot kasety - S numer_klienta – przedstawia procentowo informacje o rodzaju wypożyczonych kaset UWAGA Całość informacji należy przechowywać na dysku z automatycznym załadowaniem informacji przy uruchomieniu aplikacji. POB. 10 Napisać klasę Punkt reprezentującą jeden z punktów w grafie. Punkt ten będzie miał swoje położenie w przestrzeni 2D przedstawione w postaci zmiennych x i y, oraz tablicę krawędzi którymi jest połączony z innymi punktami. Dla krawędzi została przewidziana oddzielna klasa Krawedz, która będzie zawierała informacje skąd i dokąd jest prowadzona krawędź oraz jej koszt. Napisać program, który będzie szukał w grafie drogi o najniższym koszcie. Oraz umożliwi wprowadzanie nowego grafu użytkownikowi przez menu tekstowe, w którym zostaną zdefiniowane następujące polecenia: - N – nowy graf - P – nowy punkt - K z_punktu do_punktu waga– dodaj krawędź z podanego punktu do podanego punktu o okreslonej wadze - W – wyliczyć i wyświetlić wynik UWAGA Należy przeciążyć następujące operatory: Krawedz + Punkt Punkt + Krawedz << punkt - wyświetlenie wyniku jeżeli punkt będzie miejscem startu. |
|