Laboratorium nr 7
Temat: Definiowanie klas i obiektów - pojedynczych jak i tablic. Struktura i obsługa bazy danych.
1) Definiowanie klasy i obiektu - pojedynczego jak i tablicy.
W języku C++, w porównaniu do zwykłego C, istnieje możliwość używania klas (class). W
rzeczywistości klasa jest typem danych, podobnym do struktur (struct), gdzie oprócz danych można
przechowywać również funkcje. Zmienne typu class nazywają się obiektami.
Uwagi:
●
W celu wskazania, że definiowane zmienne lub funkcje są składowymi klasy używa się operatora
zakresu :: , np.
void klasa::funkcja (void) {...}
●
Dane i funkcje mogą być umieszczone w klasie na dwa sposoby – jako prywatne (private) i
publiczne (public). Prywatność oznacza, że żadna część programu nie może odwoływać się do
takiego elementu poza samym obiektem. W celu poprawy modularności oraz bezpieczeństwa w
programie, większość zmiennych w klasie powinna być prywatna.
# include <stdio.h>
struct baza {
char imie[10];
char nazwisko[25];
char telefon[10];
};
main() {
struct baza osoba;
/*pobranie danych*/
printf("Podaj dane:\n");
printf("\tImie: ");
gets(osoba.imie);
printf("\tNazwisko: ");
gets(osoba.nazwisko);
printf("\tNumer telefonu: ");
gets(osoba.telefon);
/*wypisanie danych*/
printf("\nDane osobowe:\n");
printf("\tImie: %s\n", osoba.imie);
printf("\tNazwisko:%s\n",osoba.nazwisko);
printf("\tTelefon:%s\n",osoba.telefon);
return 0;
}
#include <iostream>
using namespace std;
class baza {
private:
char imie[10];
char nazwisko[25];
char telefon[10];
public:
void pobierz();
void wyswietl();
};
void baza::pobierz(){
cout << "Podaj dane\n";
cout << "\tImie: ";
cin >> imie;
cout << "\tNazwisko: ";
cin >> nazwisko;
cout << "\tTelefon: ";
cin >> telefon;
};
void baza::wyswietl(){
cout << "Dane osobowe\n";
cout << "\tImie: " << imie << "\n";
cout<<"\tNazwisko:"<<nazwisko<< "\n";
cout<<"\tTelefon :"<<telefon << "\n";
};
int main() {
class baza osoba;
osoba.pobierz();
osoba.wyswietl();
return 0;
}
Uwagi:
●
W przypadku obiektów istnieje możliwość definiowania tablicy obiektów:
class baza osoby[10]
●
Wskaźniki do obiektów działają na tej samej zasadzie jak wskaźniki do innych zmiennych; do
obiektu można odwołać się poprzez wskaźnik; w tym celu korzysta się operatora strzałki
−
>
adres_osoby->imie
●
Funkcja składowa klasy otrzymuje niejawnie adres obiektu, który ją wywołał. Wewnątrz funkcji
składowej zmienna this jest wskaźnikiem do obiektu, który wywołał dana funkcję. Ponadto
można jej zawsze przekazać jawnie argumenty typu jej własnej lub innej klasy
this->imie
●
Program powinien składać się z trzech plików (! zasadę tę należy stosować we wszystkich
kolejnych ćwiczeniach), tj.:
–
pliku main.cpp zawierający funkcje main()
–
pliku klasa.cpp z definicją zmiennych i funkcji klasy
–
pliku nagłówkowego klasa.h
main.cpp
#include "klasa.h"
int main() {
class baza osoby[5];
int i=0;
osoby[i].pobierz();
osoby[i].wyswietl();
return 0;
}
klasa.h
#include <iostream>
using namespace std;
class baza {
private:
char imie[10];
char nazwisko[25];
char telefon[10];
public:
void pobierz();
void wyswietl();
};
klasa.cpp
#include "klasa.h"
void baza::pobierz(){
cout << "Podaj dane\n";
cout << "\tImie: ";
cin >> this->imie;
cout << "\tNazwisko: ";
cin >> this->nazwisko;
cout << "\tTelefon: ";
cin >> this->telefon;
};
void baza::wyswietl(){
cout << "Dane osobowe\n";
cout << "\tImie: " << this->imie << "\n";
cout << "\tNazwisko: " << this->nazwisko << "\n";
cout << "\tTelefon: " << this->telefon << "\n";
};
2.) Zadanie: Opracuj program tworzący i obsługujący bazę danych osobowych, korzystając z klas i
obiektów. Program powinien zawierać możliwość wprowadzenia danych, zapisania oraz pobrania danych
z dysku. Program powinien korzystać z funkcji oraz sprawdzać poprawność wprowadzanych danych.
Przykładowe menu:
1. Wprowadź dane
2. Zapisz dane na dysk
3. Pobierz dane z dysku
4. Wyświetl dane
5. Koniec