Projekt 01 Proj6b opis id 82981 Nieznany

background image

Programowanie 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: Klasy abstrakcyjne i polimorfizm

Programowanie obiektowe Nr. proj.: 06b, 2 x 45 minut

dr inż. Grzegorz Filo


1. Cel laboratorium

Celem ćwiczenia jest zbudowanie aplikacji obliczeniowej przy wykorzystaniu technik

definiowania klas abstrakcyjnych i mechanizmów polimorfizmu. Aplikację należy
zaimplementować w środowisku Turbo C++ 2006.
2. Wymagane oprogramowanie

Zadanie należy wykonać przy wykorzystaniu środowiska programowania

Borland Turbo C++ 2006.
3. Zadanie do wykonania

Temat: Należy zmodyfikować aplikację wykonaną w ramach projektu 6a:

3.1) Zastosować następujący sposób dziedziczenia:

TBryla  

    TKula 

 

TStozek 

 

TWalec    TRura 

Abstrakcyjna klasa

TBryla

powinna zawierać:

• składnik

Objetosc

typu

double

w sekcji

protected

;

• czysto wirtualną metodę

double Oblicz()

w sekcji

protected

;

• metodę wirtualną

void PokazDane(TStringGrid*)

w sekcji

public

;

• metodę

void  Wypisz(TLabel*)

w sekcji

public

formatującą i wypisującą

w kontrolce

TLabel

wartość objętości bryły.

Ciało metody PokazDane() w klasie

TBryla

:

void TBryla::PokazDane(TStringGrid* G){ 
  G‐>RowCount = 2; 

   

  G‐>Cells[0][0]="Nazwa"; 

   

  G‐>Cells[1][0]="Wartość"; 
}; 

3.2) W klasach potomnych należy:

• przedefiniować metody wirtualne z klasy abstrakcyjnej wypisując kolejne parametry

definiowane w klasach pochodnych, np. w klasie TKula:

void TKula::PokazDane(TStringGrid* G){ 
  TBryla::PokazDane(G); 
  G‐>Cells[0][1]="R"; 
  G‐>Cells[1][1]=FloatToStrF(R,ffFixed,6,2); 
}; 

• zdefiniować funkcje przypisujące wartości zdefiniowanym w każdej klasie

parametrom. Należy zastosować konwencję nazw set-get, np. w klasie

TKula

należy

zdefiniować publiczną funkcję

void setR(double)

;

• z klas potomnych należy usunąć metodę

void Wypisz()

.

background image

Programowanie obiektowe, opracowanie: dr inż. Grzegorz Filo

IIS, M-72

3.3) Logika działania aplikacji jak w laboratorium 6a, należy uwzględnić następujące
wskazówki:

w klasie formatki (domyślnie

TForm1

) w sekcji

public

zdefiniować wskaźniki do

obiektów poszczególnych klas, np.:

TBryla* B; 
TKula* Kula;   // itd. 

• w konstruktorze formatki utworzyć obiekty pokazywane przez wskaźniki (oprócz

TBryla

) i wywołać programowo kliknięcie na komponent

TRadioGroup

, natomiast w

metodzie FormDestroy zniszczyć.

w procedurze obsługi kliknięcia na

TRadioGroup

przypisać wskaźnik

TBryla

:

 

     switch(RadioGroup1‐>ItemIndex){ 
 

    case 0: B = Kula; break; 

 

    case 1: B = Stozek; break; 

 

    case 2: B = Walec; break; 

 

    case 3: B = Rura; break; 

     } 
     B‐>PokazDane(StringGrid1); 
     B‐>Wypisz(Label1); 

• w procedurze obsługi kliknięcia na przycisk przypisać dane stosując rzutowanie RTTI

oraz mechanizm obsługi wyjątków:


   

double x; 

   

Label1‐>Caption = "Pole = ???"; 
try{ 

 

if(dynamic_cast<TKula*>(B)){ 

 

  x = StrToFloat(StringGrid1‐>Cells[1][1]); 

 

  if (x<0) throw ERangeError("Ujemna wartość R !");; 

 

  (dynamic_cast<TKula*>(B))‐>setR(x); 

 

}; 

 

// itd 
B‐>Wypisz(Label1); 

  }catch(EConvertError & e){ 
 

ShowMessage( "Niepoprawna wartość parametru"); 

  }catch(ERangeError & e){ 
 

ShowMessage(e.Message); 

  } 

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;


Wyszukiwarka

Podobne podstrony:
Projekt 02 Proj7 opis id 829818 Nieznany
9 01 2014 Nahotko Opis id 48150 Nieznany (2)
5 12 2013 Nahotko Opis id 39936 Nieznany (2)
IS wyklad 14 15 01 09 MDW id 22 Nieznany
projekt sr tr 2014 id 398557 Nieznany
28 01 2014 Lechowski id 31904 Nieznany (2)
59 01 032 036 id 41760 Nieznany (2)
projekty gry planszowe FD id 40 Nieznany
Pr konst opis id 382146 Nieznany
ei 2005 01 02 s080 id 154144 Nieznany
3 01 norm a4 id 33367 Nieznany (2)
biochemia pyt opis id 86492 Nieznany
Lab1 Csharp opis id 258954 Nieznany
Projekt SNAKE Snake Game id 831 Nieznany
zulz 01 2010 2011 id 593227 Nieznany
28 11 2013 Nahotko Opis id 3191 Nieznany (2)
projekt rakow gotowy rk id 3994 Nieznany
LM SZ 01 2013 mat id 271607 Nieznany
opis 4 id 336794 Nieznany

więcej podobnych podstron