Programowanie obiektowe to metoda budowania programów komputerowych za pomocą obiektów. Obiekt łączy ze sobą grupę danych – często o różnych typach – i operujący na nich zestaw funkcji. Inaczej można powiedzieć, że obiekt zawiera dane składowe (pola) oraz funkcje składowe (metody) połączone w spójny element programu. Dane składowe przechowują stan obiektu, a funkcje realizują określoną funkcjonalność.
Typem obiektu jest klasa. Klasa jest schematem budowy każdego obiektu danej klasy. Każdy obiekt danej klasy stanowi jej instancję.
Klienci to część programu korzystająca z danego obiektu i nie należąca do klasy tego obiektu.
#pragma once //deklaracja klasy class Czas { public: void ustawCzas(int g, int m, int s ) { godz = g; min = m; sek = s; } void drukujCzas(); private: int godz, min, sek; }; // nigdy nie zapominac o ;
#include<iostream> #include "czas.h" //definicja (implementacja) funkcji skladowej drukujCzas() void Czas::drukujCzas() { std::cout << godz << ":" << min << ":" << sek << std::endl; }
#include<cstdlib> #include<iostream> #include "czas.h" using namespace std; int main(int argc, char *argv[]) { Czas t; t.ustawCzas(12, 32, 0); t.drukujCzas(); system("pause"); return 0; };
Nie zapomnij postawić średnika po nawiasie zamykającym deklarację klasy.
Pozostaw pustą linię między defnicjami metod, to podniesie czytelność programu.
Aby uniknąć dwuznaczności nie używaj tych samych nazw dla argumentów (aktualnych) przekazanych do funkcji i dla parametrów występujących w definicji.
Zgodnie z regułami programowania obiektowego pola (dane składowe) klasy powiny znaleźć się w sekcji private:, natomiast metody (funkcje składowe) - w sekcji public:. Jest właściwe deklarowanie niektórych funkcji jako private:, jeśli mają być dostępne tylko dla innych metod tej samej kalsy.
Czas t; //referencja do obiektu t klasy czas; Czas & refT = t; t.ustawCzas(13, 30, 0); refT.drukujCzas(); //wskaznik do obiektu t Czas * wskT = &t; wskT->ustawCzas(11, 20, 15); t.drukujCzas();
// Nowy obiekt na ktory wskazuje wskTStart Czas * wskTStart = new Czas; wskTStart->ustawCzas(10, 15, 0); wskTStart->drukujCzas(); delete wskTStart;