background image

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. 

background image

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;