złożone typy




[ Code Zone ] - Serwis programistyczny - C/C++





















  Strona główna
| Język C++ | C++
Builder | Programy
| Narzędzia
| Forum | Księga
gości | Sznurki | Kontakt








Złożone typy danych





W C++ istnieją trzy rodzaje typów strukturalnych:

Struktury
Klasy
Unie

Struktury

Strukturą w języku C++ nazywamy kilka zmiennych
powiązanych w jeden typ danych. Są one stosowane dla zgrupowania
powiązanych ze sobą logicznie danych różnego typu. Struktury
deklarujemy za pomocą słowa kluczowego struct.
Przykład deklaracji typu struktury:

struct Czlowiek{  AnsiString
Imie;  AnsiString Nazwisko;  unsigned
int Wiek;  char Plec;}; //pamiętaj o średniku po zamknięciu bloku

Jeśli zadeklarujesz już strukturę to zapewne będziesz
chciał zadeklarować zmienne strukturalne tego typu. Możesz to robić
na dwa sposoby. Pierwszy - jeszcze w deklaracji struktury pomiędzy
klamrą zamykającą na średnikiem wpisujesz oddzieloną przecinkami
listę identyfikatorów, drugi - poza strukturą, tak jak zwykłą
zmienną np.

Czlowiek WhiteRAVEN; /*
deklaracjazmiennej strukturalnej typu Człowiek o identyfikatorze
WhiteRAVEN*/

Aby odwołać się do poszczególnych elementów struktury
używamy operatora kropki (" . ") pomiędzy identyfikatorem zmiennej
strukturalnej, a identyfikatorem elementu należącego do struktury
np.

WhiteRAVEN.Imie = "Adam";WhiteRAVEN.Nazwisko =
"Dziendziel";WhiteRAVEN.Wiek = 15;WhiteRAVEN.Plec =
'M';AnsiString Imie_i_Nazwisko = WhiteRAVEN.Imie + " " +
WhiteRAVEN.Nazwisko;

Zauważ, że operacje te nie różnia się niczym od
operacji na zwykłych zmiennych, prócz tego, że teraz one są
zgrupowane w jeden typ i używamy kropki, aby się do nich odwołać.


Uwaga! W przypadku używania wskaźników na zmienne
strukturalne zamiast operatora kropki używamy strzałki ( " -> ")
np.

Czlowiek * WhiteRAVEN; /* deklaracja
wskaźnika na strukturę Człowiek o id. WhiteRAVEN
*/WhiteRAVEN = new Czlowiek; //
rezerwacja pamięci dla wskaźnikaWhiteRAVEN->Imie =
"Adam"; // wypełnienie
pólWhiteRAVEN->Nazwisko = "Dziendziel";delete
Czlowiek; // zwolnienie pamięci wskaźnika


Klasy

Klasą w języku C++ nazywamy "strukturę" zawierającą
procedury obsługujące jej elementy. Jest to maksymalnie uproszczone
porównanie. Klasy są esensją programowania obiektowego. Celem osoby
tworzącej jakiś obiekt (klasę, komponent, kontrolkę ActiveX) jest
stworzenie elementu wykonującego jakieś zadane i sprecyzowane cele w
sposób nie wymagający od użytkownika obiektu żadnej ingerencji w
jego kod źródłowy. Klasę deklarujemy przy użyciu słowa kluczowego
class np.

class
Czlowiek{public:  AnsiString Imie; 
AnsiString Nazwisko;  unsigned int
Wiek;  char Plec;  AnsiString
Imie_i_Nazwisko();  void WyswietlDane();};


Ale to jeszcze nie koniec, musimy napisać te dwie
zadeklarowane metody. Ich nazwa musi być poprzedzona nazwą klasy i
operatorem podwójnego dwukropka (" : : ").

// 1. funkcja składowa klasy
zwracająca imię z nazwiskiemAnsiString
Czlowiek::Imie_i_Nazwisko(){  AnsiString Wynik = Imie +
" " + Nazwisko;  return Wynik;}// 2. funkcja wyświetlająca danevoid
Czlowiek::WyswietlDane(){  ShowMessage("Imię:
"+Imie+"\nNazwisko: "+Nazwisko+"\nWiek: "   
+AnsiString(Wiek)+"\nPłeć: "+AnsiString(Plec));}

Teraz w dowolnym miejscu możesz zadeklarować obiekt
typu Człowiek np.

Czlowiek WhiteRAVEN;

a później manipulować jego danymi na pomocą operatora
kropki (lub strzałki - dla wskaźnika):

WhiteRAVEN.Imie = "Adam";WhiteRAVEN.Nazwisko =
"Dziendziel";WhiteRAVEN.Wiek = 15;WhiteRAVEN.Plec =
'M';WhiteRAVEN.WyswietlDate(); //wywołanie
funkcji składowejAnsiString Imie_i_Nazwisko =
WhiteRAVEN.Imie_i_Nazwisko(); /* wywołanie fukcji
zwracającej imię z nazwiskiem */

Klasy form w C++ Builder

Teraz uruchom C++ Buildera i przyjrzyj się plikowi
nagłówkowemu formatki (domyślnie "Unit1.h"). Znajdzież tam
deklarację klasy będącej formą aplikacji, jest ona zbudowana trochę
inaczej, ale nam to nie przeszkadza. Zwróć uwagę na to, że nazwa
formatki jest poprzedzona literą "T". Twoja forma jest tylko
definicją obiektu o nazwie "TForm1", a w pierwszych linijkach pliku
"Unit1.cpp" powinieneś znaleźć coś w stylu:

TForm1 * Form1;

W tym miejscu zadeklarowano wskaźnik o nazwie "Form1"
(typu "TForm1"), któremu zostanie przez aplikację (obiekt typu
TApplication) przypisana nowa forma. Dlatego, iż jest to wskaźnik,
aby odwołać się do właściwości formatki zawsze używamy operatora
strzałki ("->").

Wiesz już co to jest klasa i możesz dokonywać
operację na formie używając nie tylko inspektora obiektów ale i za
pomocą kodu np. (dla formy o nazwie "Form1"):

Form1->Caption = "Zmieniłem nazwę
okna";Form1->Color = clBlack; //zmieniłem
kolor tła

Podczas pisania strzałki powinno wyświetlić się
okienko pomocnicze w którym klawiszami kursora lub myszką możesz
wybrać szukany element i po naciśnięciu spacji lub dwukrotnym
kliknięciu jego nazwa zostanie napisana.

Forma aplikacji ma wiele właściwości, niektóre z nich
też są klasami i też odwołujesz się do nich za pomocą strzałki
(rzadko kropki). Jak poznać który element w wyświetlanym okienku
jest klasą? Otóż po jej nazwie jest dwukropek i jej typ, jeśli nie
należy on do typów
prostych (bool, int, char, double, float i pochodne: short,
long, signed, unsigned) to najprawdopodobniej jest klasą. Jeśli jest
to klasa AnsiString, to możesz ją traktować jak łańcuch znaków, do
którego przypisujesz znaki tak jak w powyższym przykładzie
("Caption" to AnsiString).

Unie

O uniach nie będę wiele pisał, gdyż są one niczym
innym jak tylko szczególnym przypadkiem struktury. Deklaruje się je
z użyciem słowa
kluczowego union, po którym - w nawiasach klamrowych -
występują deklaracje kolejnych pól unii. Różnica jest jedna: w
dowolnym momencie tylko jedno z pól unii może być wypełnione.
Przypisanie danych do jednego pola czyści pozostałe. Polami unii nie
mogą być złożone klasy, posiadające konstruktory. Unia zajmuje
pamięć taką, jaką potrzebuje jej największe pole.



WhiteRAVEN,
20.06.2001


Wyszukiwarka

Podobne podstrony:
05 Zlozone typy danych cwiczenia przygotowujace
typy zlozone
Małgorzata Klecka Poalkoholowe dzieci ze złożona niepełnosprawnością
Typy danych w MySQL
typy charakterw
typy
Siedem złożonych imion JahweU0120
EPC typy modele
zlozonosc natury ludzkiej
reakcje zlozone zadania

więcej podobnych podstron