Techniki obiektowe, opracowanie: dr inż. Grzegorz Filo
IIS, M-72
Politechnika Krakowska im. Tadeusza Kościuszki
Wydział Mechaniczny
Instytut Informatyki Stosowanej M-7
Zakład Grafiki i Modelowania Komputerowego M-72
Laboratorium: Obsługa sytuacji wyjątkowych
Programowanie obiektowe Nr. proj.: 07, 2 x 45 minut
dr inż. Grzegorz Filo
1. Cel laboratorium
Celem ćwiczenia jest praktyczne wykorzystanie wiadomości na temat obsługi sytuacji
wyjątkowych na przykładzie języka C++. Zostaną wykorzystane wiadomości teoretyczne na
temat przechwytywania wyjątków programowych oraz programowego zgłaszania wyjątków.
2. Wymagane oprogramowanie
Zadanie należy wykonać przy wykorzystaniu środowiska programowania
Borland C++ Builder 2006.
3. Zadanie do wykonania
Temat: Zaprojektować i zaimplementować program obliczający pole powierzchni
kształtownika o nazwie kątownik.
3.1) Należy zastosować przedstawiony wzór
i skorzystać z załączonego rysunku ideowego.
(
)
2
1
2
2
4
1
)
(
r
r
g
b
g
g
a
P
−
⋅
⎟
⎠
⎞
⎜
⎝
⎛ −
+
−
⋅
+
⋅
=
π
3.2) Wykorzystać komponenty środowiska C++ Builder następujących klas:
TStringGrid (Standard):
dane dla kątownika, dwie kolumny: Nazwa, Wartość. W
kolejnych wierszach należy podawać następujące dane:
• Długość poziomego ramienia a;
• Wysokość pionowego ramienia g,
• Grubość ramienia g;
• Promień zaokrąglenia wewnętrznego R;
• Promień zaokrąglenia zewnętrznego R
1
.
TLabel (Standard):
wyświetlenie wyniku obliczonego pola przekroju;
• Właściwość Caption (typu AnsiString) definiuje tekst etykiety,
TButton (Standard):
uruchomienie
obliczeń
• Właściwość Caption (typu AnsiString) definiuje tekst na komponencie,
• Zdarzenie OnClick zachodzi po kliknięciu na obszar komponentu.
Techniki obiektowe, opracowanie: dr inż. Grzegorz Filo
IIS, M-72
3.3) Zdefiniować klasę (w odrębnym module):
TKatownik:
Składniki private:
double A, B, G, R, R1;
double
Pole(void);
Składniki public:
Konstruktor
zwykły i domniemany (wszystkie wymiary = 0)
int
PrzypiszDane(TStringGrid
S);
double
ObliczPole();
W module powinny być włączone biblioteki
<vcl.h> oraz <Grids.hpp>. Następnie
należy zdefiniować wskaźnik do obiektu klasy
TKatownik. Obiekt powinien być
prywatnym składnikiem klasy formatki, powinien zostać utworzony w czasie startu programu,
natomiast zniszczony podczas zamykania programu.
Należy przypisać następujące dane początkowe (w komponencie klasy
TStringGrid):
A = 50, B = 50, G = 4.8, R = 5.2, R1 = 3.6.
3.3) Logika działania programu:
• Po kliknięciu na przycisk następuje wywołanie metody PrzypiszDane(). Metoda
ta konwertuje wartości wprowadzone w polach obiektu
TStringGrid na liczby
rzeczywiste i przypisuje ich wartości do odpowiednich pól obiektu. W przypadku
wystąpienia wyjątku funkcja zwraca indeks wiersza
TStringGrid, w którym
nastąpił wyjątek. W tym przypadku użytkownik otrzymuje odpowiedni komunikat
i obliczenia nie są wykonywane.
• Jeżeli konwersja przebiegła pomyślnie, metoda PrzypiszDane() zwraca 0.
Wtedy następuje wywołanie metody
ObliczPole(). Metoda ta sprawdza
poprawność następujących zależności pomiędzy wymiarami:
o
A, B, G, R, R1 > 0
//”Ujemna wartość parametru !”;
o
G < A/2, G < B/2,
//”Zbyt duża wartość G !”;
o
R<A/2,
R<B/2 //”Zbyt
duża wartość R !”
o
R1
<
G, //”Zbyt
duża wartość R1 !”
• W przypadku nie spełnienia wyżej wymienionych zależności metoda rzuca wyjątek
klasy
ERangeError z odpowiednim komunikatem. Wyjątek powinien być
przechwycony w metodzie
ButtonXClick() i odpowiednio obsłużony.
• Jeżeli wszystkie dane i zależności są poprawne, wynik zostaje wyświetlony na
kontrolce klasy
TLabel.
4. Bibliografia
[1] Matulewski
J.,
C++Builder i Turbo C++. Podstawy
, Wydawnictwo Helion,
Gliwice 2006;
[2] Daniluk
A.,
C++ Builder Borland Deweloper Studio 2006. Kompendium programisty
,
Wydawnictwo Helion, Gliwice 2006;
[3] Matulewski
J.
C++Builder 2006. 222 gotowe rozwiązania
, Wydawnictwo Helion,
Gliwice 2006;