Programowanie obiektowe pojęcia sciaga.docx

(23 KB) Pobierz

1) KLASA, OBIEKT, INSTANCJA KLASY, POLE, METODA

Klasa- abstrakcyjny typ danych działający na takich samych zasadach jak typy wbudowane. Klasa to byt programistyczny określający jakie właściwości i metody będą miały obiekty, które zostaną utworzone na jej podstawie.

Obiekt- element stworzony na podstawie klasy. Zmienna (lub instancja klasy) typu będącego klasą. Obiekt należy ujmować jako szczególny rodzaj zmiennej — przechowuje on dane, ale może też wykonywać operacje na samym sobie. Każdy obiekt posiada typ i własną pamięć.

Instancja klasy- Jest to kopia wszystkich pól klasy. Podczas tworzenia nowej instancji, tworzone są zmienne będące jej polami, oraz m.in. jest wywoływany jej konstruktor.

Pole- dana składowa klasy deklarowana jak zmienna. Pól nie inicjalizujemy jawnie w treści klasy. Do tego celu służy specjalna metoda, zwana konstruktorem.

Metoda - Podprogram składowy klasy, którego zadaniem jest działanie na rzecz określonych elementów danej klasy lub klas z nią spokrewnionych.

Nazwy metod są widoczne na zewnątrz wyłącznie po użyciu operatora dostępu do składowej (kropka

lub strzałka).

Metody maja pełny dostęp do składowych klasy do której przynależą (publicznych i prywatnych),

Metody można przeciążać na zasadach identycznych jak zwykłe funkcje.

 

2) HERMETYZACJA, KAPSUŁKOWANIE, POLIMORFIZM, WIELOPOSTACIOWOŚĆ, DZIEDZICZENIE – które z nich oznaczają to samo,

Hermetyzacja= enkapsulacja= kapsułkowanie- polega na ukrywaniu pewnych danych składowych lub metod obiektów danej klasy tak, aby były one dostępne tylko metodom wewnętrznym danej klasy lub funkcjom zaprzyjaźnionym.

Polimorfizm= wielopostaciowość- mechanizm pozwalający programiście używać wartości, zmiennych i podprogramów na kilka różnych sposobów (wyabstrahowania wyrażeń od konkretnych typów). Istotą polimorfizmu jest to, aby to system (kompilator i system czasu wykonania) decydował o szczegółach, nie programista.

Polimorfizm statyczny (czasu kompilacji) – kompilator wybiera odpowiedni kod pasujący do sytuacji np. Przeciążanie operatorów:

a << 1 // oznacza przesunięcie bitowe liczby a w lewo,

a << 1 // jeśli a jest strumieniem, to liczba 1 jest przesyłana do tego strumienia.

Polimorfizm dynamiczny (czasu wykonania) –wybór właściwego kodu do wykonania musi być przesunięty do momentu wykonywania programu (metody wirtualne).

Dziedziczenie (inheritance)- to technika tworzenia nowych klas z wykorzystaniem klas istniejących, przy założeniu, że nowa utworzona klasa przejmuje i udostępnia kopię interfejsu klasy podstawowej. Umożliwia łatwe i sprawne wykorzystywanie już raz napisanego kodu.

Dziedziczenie dzielimy na wielopokoleniowe, polegające na wywodzeniu się klas pochodnych z jednej klasy bazowej oraz wielokrotne, polegające na dziedziczeniu jednocześnie z kilku klas.

 

3) VOLATILE, STATIC, MUTABLE, CONST, INLINE, PRIVATE, PROTECTED, PUBLIC

Volatile- informuje kompilator, że obiekt może sie zmieniać bez jego wiedzy i przy każdym odwołaniu sie do tego obiektu powinien rzeczywiście zwrócić sie do przydzielonych temu obiektowi komórek pamięci.

Metody ulotne (volatile)- dotyczą obiektów, które mogą zmieniać swoje wartości poza kontrolą kompilatora (porty we/wy).

Static- Element statyczny jest elementem, który jest powiązany z klasą, a nie z obiektem tej klasy, czyli np. statyczna metoda nie może się odwołać do niestatycznej zmiennej lub funkcji.

Modyfikator static sprawia, że obiekt w danej funkcji jest umieszczany w tej samej pamięci, co zmienna globalna i nie jest usuwany wraz z zakończeniem funkcji.

Mutable- Słowo kluczowe, umożliwia modyfikowanie zmiennej klasy wewnątrz metody zadeklarowanej jako stała. Słowa kluczowego nie należy nadużywać.

Const- Słowem kluczowym const deklaruje się tzw. stałe. Obiekty z modyfikatorem const mogą być inicjalizowane, natomiast nie mogą być przypisywane poza ich inicjalizacją. Zadeklarowanie metody jako stałej oznacza że dana metoda nie zmienia stanu obiektu na rzecz którego została wywołana czyli nie zmienia żadnej jego składowej

Inline- modyfikator stosowany w przypadku funkcji bardzo krótkich, sprawiający że kompilator w miejscu wywołania funkcji inline wstawia od razu ciało tej funkcji, bez zachodzenia operacji wywołania i powrotu z funkcji.

Public- specyfikator dostępu, składowe obiektu (z tej części interfejsu) są dostępne dla wszystkich.

Private- specyfikator dostępu, składowe dostępne wyłącznie dla twórcy typu.

Protected- specyfikator dostępu, znaczenie jak w private, ale klasa dziedzicząca ma do nich dostęp, a nie ma dostępu do private.

 

4) RODZAJE METOD I METODY SPECJALNE: KONSTRUKTOR, DESTRUKTOR, STATYCZNE, ULOTNE, INLINE, PRYWATNE, PUBLICZNE, STAŁE, KTÓRE W/W SŁOWA KLUCZOWE DO NICH PASUJĄ,

Konstruktor i destruktor to dwie specyficzne metody każdej klasy, wywoływane w ściśle określonych momentach „życia” obiektu.

Konstruktor- Metoda w klasie, która nazywa się tak samo jak klasa oraz nie zwraca żadnej wartości,  jest wywoływana automatycznie w chwili tworzenia obiektu tej klasy. Głównym jego przeznaczeniem jest inicjalizacja pól i wykonanie czynności koniecznych do poprawnego działania tworzonego obiektu. Może przyjmować argumenty - tak jak zwykła funkcja czy metoda.

Konstruktor domyślny- Jeśli sami żadnego konstruktora nie zdefiniowaliśmy, to możemy zakładać, że system dostarczy własny konstruktor domyślny, który jest publiczny, nie ma żadnych parametrów i nie wykonuje żadnych czynności - jego ciało będzie puste.

Destruktor-  wywoływany jest automatycznie w momencie niszczenia obiektu (usuwania obiektu z pamięci). Przeznaczeniem destruktora jest wykonanie czynności końcowych dla obiektu, np. zwalnianie zasobów, zamykanie plików, zamykanie połączeń z bazami danych, nazywa się tak samo jak klasa, z tym że przed nazwą musi wystąpić znak ~ (tylda), nie zwraca żadnej wartości.

Metody statyczne- metoda klasowa - metoda klasy, która nie jest wywoływana w kontekście żadnego konkretnego obiektu tej klasy. Metody statyczne z reguły służą do obsługi składowych statycznych klas. Deklarujemy ją jak każdą inną metodę tyle, że deklaracja musi być poprzedzona słowem static. Definicja metody poza klasą nie może już zawierać słowa static. Metody statyczne nie mogą być deklarowane jako const i volatile. Nie zawierają wskaźnika this, tak więc nie możemy z niej odwoływać się do pól niestatycznych klasy.

Metody ulotne (volatile)- pkt. 3

Inline- pkt. 3.

Metody prywatne- metody, które działają tylko wewnątrz klas w których są zadeklarowane.

Metody publiczne- dostępne zarówno wewnątrz klasy, jak i na zewnątrz. Oczywiście należy pamiętać, że odwołania do pól i metod mogą występować tylko dla wcześniej utworzonego obiektu danej klasy

Metody stałe- zadeklarowanie metody jako stałej oznacza, że dana metoda nie zmienia stanu obiektu na rzecz którego została wywołana czyli nie zmienia żadnej jego składowej.

             

5) STAŁOŚĆ DLA OBIEKTÓW, JAKIE ELEMENTY W KLASIE MOGĄ BYĆ STAŁE, JAKIE METODY MOŻEMY WYWOŁYWAĆ DLA OBIEKTÓW STAŁYCH.

Obiekty stałe przez cały czas działania programu mają ten sam stan (przechowują tę samą wartość) i nie mogą go zmieniać.

Zmienne i metody mogą być stałe (const), a konstruktor i destruktor nie.

Na rzecz obiektu stałego można wywoływać wyłącznie metody zadeklarowane jako stałe.

6) CZYM SIĘ RÓŻNIĄ: KLASA I OBIEKT, ZMIENNE STATYCZNE I NIE STATYCZNE, METODY STATYCZNE I NIE STATYCZNE, POLA STATYCZNE I NIE STATYCZNE

Klasa to abstrakcyjny typ danych, a obiekt to element stworzony na podstawie klasy (instancja klasy). Metoda to funkcja umieszczona wewnątrz klasy.

Klasa jest jakby projektem technicznym, który określa z czego obiekt się składa, co możemy z nim robić i jak on na to zareaguje. Klasa jako taka nie istnieje w pamięci, jest tylko jakby nowym typem danych, który użytkownik dodał do kompilatora. Dopiero utworzenie obiektu tej klasy powoduje przydzielenie pamięci, tak jak to było przy deklarowaniu zmiennych.

Zmienna statyczna- zmienna, która w danym bloku programu posiada dokładnie jedną instancję i istnieje przez cały czas działania programu. W języku C++ każda zmienna globalna jest jednocześnie zmienną statyczną.

Zmienna niestatyczna- taka która nie istnieje przez cały czas działania programu- po wyjściu z zakresu, w którym jest używana, zostaje "zniszczona".

Metoda statyczna- pkt. 4.

Metoda niestatyczna-

Pole statyczne- może być klasą, podczas gdy pole niestateczne jedynie referencją lub wskaźnikiem do klasy,

Pole statyczne- można użyć jako wartości domyślnej argumentu metody klasy, co nie jest akceptowalne dla pól niestatycznych.

 

7) JAKIE ELEMENTY WCHODZĄ W SKŁAD KLASY, JAKIE MAMY POZIOMY DOSTĘPU DO SKŁADOWYCH, CO TO JEST INTERFEJS KLASY, CO ZNACZY PUBLIC, PRIVATE, PROTECTED,

W skład klasy mogą wchodzić: Pola, metody, konstruktory, destruktory, klasy zagnieżdżone, operatory.

Poziomy dostępu do składowych: Public, private, protected- pkt. 3.

Interfejs klasy – to zbiór metod publicznych, uważanych za metody bezpośrednio przydatne użytkownikom klasy.

 

8) POLIMORFIZM, POLIMORFIZM STATYCZNY I DYNAMICZNY ORAZ ICH RÓŻNICE. Z KTÓREJ Z CECH (HERMETYZACJA, WIELOPOSTACIOWOŚĆ, DZIEDZICZENIE) MUSIMY KORZYSTAĆ ABY ZASTOSOWAĆ POLIMORFIZM DYNAMICZNY.

Polimorfizm, polimorfizm statyczny i dynamiczny, różnice- pkt. 2.

Odp. wielopostaciowość

 

9) DZIEDZICZNIE, NA JAKICH ZASADACH UZYSKUJEMY DOSTĘP DO ELEMENTÓW KLASY BAZOWEJ, CO MOŻEMY ROZSZERZYĆ W KLASIE POCHODNEJ W ODNIESIENIU DO KLASY BAZOWEJ, METODY WIRTUALNE, PRZESŁONIĘCIE A NADPISYWANIE METOD.

Dziedziczenie- pkt. 2.

Dostęp do elementów klasy bazowej można uzyskać jawnie w następujący sposób:  [klasa_bazowa::...]klasa_bazowa::element

Zapis ten umożliwia dostęp do elementów klasy bazowej, które są "przykryte" przez elementy klasy nadrzędnej (mają takie same nazwy jak elementy klasy nadrzędnej). Jeżeli nie zaznaczymy jawnie o który element nam chodzi kompilator uzna że chodzi o element klasy nadrzędnej, o ile taki istnieje (przeszukiwanie będzie prowadzone w głąb aż kompilator znajdzie "najbliższy" element).

Metody wirtualne- pozwalają na przesłanianie (zastępowanie) metod w podklasach. Do definiowania metody wirtualnej służy słowo kluczowe: virtual.

Aby zasłonić metodę z klasy bazowej w klasie nadrzędnej należy zdefiniować funkcje ze słowem kluczowym override z dokładnie tą samą nazwą i parametrami.

Aby odwołać się do przesłoniętej metody należy użyć słowa kluczowego base.

Nie jest wymogiem przesłanianie metody wirtualnych w klasach nadrzędnych.

Nadpisywanie odbywa się poprzez przeładowanie?

Przeładowanie...

Zgłoś jeśli naruszono regulamin