Programowanie obiektowe pojęcia


Obiekty i klasy
Najwa\niejsze cechy programowania obiektowego:
" Abstrakcja
" Hermetyzacja
" Polimorfizm
" Dziedziczenie
" Zdatność kodu do wielokrotnego wykorzystania
Metoda statyczna
1. Nie mo\e być ona wywołana na rzecz któregokolwiek z obiektów klasy (w ciele metody nie jest
dostępny nawet wskaznik this). Jeśli statyczna metoda klasy zostanie zadeklarowana jako publiczna,
mo\na ją wywołać, kwalifikując jej nazwę nazwą klasy i operatorem zasięgu.
np.
static int HowMany ( ) { return num_strings; }
// wywołanie
int count = String::HowMany( );
2. Jako metoda statyczna nieskojarzona z \adnym obiektem klasy, mo\e odwoływać się jedynie do
statycznych danych tej klasy.
np.
// HowMany mo\e odwoływać się jedynie do składowej num_strings
Mo\e ona słu\yć do ustawienia wspólnego wskaznika dla wszystkich metod klasy, kontrolującego
zachowanie jej interfejsu
Składowa statyczna=? Pole statyczne
Jest to zmienna przydziału statycznego (static).
static int num_strings;
Ma ona specyficzną własność: program tworzy tylko jedną kopię statycznej składowej klasy niezale\nie od
liczby utworzonych obiektów klasy. Składowa ta będzie współu\ytkowana przez wszystkie obiekty danej
klasy.
Wskaznik this
Wskazuje on obiekt, na rzecz którego wywołano metodę:
const akcje & akcje::top_val (const akcje & s) const
{
if (s.total_val > total_val)
return s;
else
return *this;
}
Metoda inline
Funkcja, której definicja znajduje się w deklaracji klasy automatycznie staje się metodą rozwijaną w miejscu
wywołania (tak jakby została zadeklarowana z parametrem inline). Mo\na jednak\e zrobić to poza
deklaracją klasy, wystarczy poprzedzić definicję metody słowem inline.
Np.
Inline void akcje::cena_udziału;
Stosowanie metody do obiektu
1. Deklarowanie zmiennej typu klasy:
akcje Tom, Kate; // analogicznie int x, y;
2. Odwołanie do składowych struktur:
Kate.show( );
Oznacza to, \e w wywoływaniu metody nazwy składowych odnoszą się do obiektu, na rzecz którego są
wywoływane.
Kate.udzialy = cena;
Kapsułkowanie
Jest to gromadzenie i wyodrębnianie od abstrakcji szczegółów implementacji klasy jej składowych oraz
metod. Polega na umiejscawianiu danych oraz funkcji, w sekcjach: private, protected lub public.
Hermetyzacja
Jest to umiejscawianie danych oraz funkcji w sekcji private.
Metoda typu const
Deklaracja metody poprzedzona słowem const sprawia, \e obiekt na rzecz którego została ona wywołana
nie zostanie zmieniony.
Klasa a struktura
Jedyna ró\nicą jest mo\liwość zdefiniowania dostępu do danych poprzez umiejscowienie etykiet private,
protected lub public. Struktury przyjmują za domyślne publiczność składowych, nie ma mo\liwości zmiany
tego statusu.
Argumenty domyśle funkcji
Jest to przypisanie danemu argumentowi funkcji zadaną wartość, robimy to w deklaracji funkcji.
Konstruktor
" to metoda nazywająca się tak samo jak klasa
" uruchamia się automatycznie na rzecz nowopowstałego obiektu
" nie konstruuje obiekt klasy tylko inicjalizuje składowe klasy
" nie zwraca \adnej wartości
" mo\e być przeładowywany
Destruktor
" to metoda nazywająca się tak samo jak klasa. Poprzedzona jest znakiem ~ (tyldy)
" uruchamia się automatycznie na rzecz obiektu tu\ przed jego likwidacją
" nie likwiduje obiektu
" nie posiada \adnych argumentów
" nie zwraca \adnej wartości
" nie mo\e być przeładowywany
Przecią\anie funkcji, metod, operatorów
Inaczej polimorfizm, czyli wielopostaciowość. Przecią\anie funkcji to mo\liwość wiązania jedną nazwą
wielu funkcji. Definiujemy tak funkcje po to, by wykonywały takie samo zadanie, tylko \e na ró\nych
parametrach. Podobnie jak czasowniki mające więcej ni\ jedno znaczenie, to czytelnik (tutaj kompilator
odgaduje znaczenie z kontekstu). Przecią\anie operatorów to np. & jako referencja i and.
Program obiektowy
Ró\ni się on od proceduralnego tym, i\ decyzje podejmowane są nie w trakcie kompilacji, lecz głównie w
czasie wykonywania programu. Zapewnia to elastyczność na ró\norakie warunki pojawiające się w trakcie
wykonywania.
Programowanie obiektowe
Zajmujemy się głównie danymi, a nie algorytmami, a miernikiem tego jest ich abstrakcja, czyli tworzenie
nowych struktur danych na potrzeby programu.
Konstruktor kopiujący
Wykorzystywany jest do kopiowania obiektu do nowo utworzonego obiektu tej samej klasy, czyli
inicjalizacja za pomocą innego obiektu tej samej klasy, jest więc stosowany wyłącznie podczas
inicjalizacji, a nie podczas zwykłego przypisania.
akcje pierwsza;
akcje druga(pierwsza);
Lista inicjalizacyjna konstruktora
Jest to lista składająca się z oddzielonych przecinkami wyra\eń inicjalizujących i jest poprzedzona
dwukropkiem. Umieszcza się ją za nawiasem ograniczającym listę parametrów konstruktora, ale przed jego
ciałem. Nie wolno stosować jej poza konstruktorem. Jest jedynym sposobem inicjalizacji składowych
deklarowanych ze słowem const oraz składowych będących referencjami.
akcje::akcje( int i, int val) : cena(val), ilosc(i), dochod(i*Val)
{
}


Wyszukiwarka

Podobne podstrony:
świerszczyński,programowanie obiektowe,Pojęcia klasy i obiektu; dziedziczenie
Programowanie Obiektowe Ćwiczenia 5
[C ]Rataj Podstawy programowania obiektowego
Programowanie Obiektowe W Visual Basic Net Dla Ka dego
JavaScript Programowanie obiektowe
Podstawy Programowania 04 Programowanie Obiektowe
Jezyk C?ektywne programowanie obiektowe cpefpo
Programowanie Obiektowe W Pythonie
świerszczyński,programowanie obiektowe,Konstruktory i destruktory
Programowanie obiektowe i C
PHP profesjonalnie programowanie obiektowe i narzędzia programisty 08 2006

więcej podobnych podstron