Klasy

Nasza ocena:

4
Wyświetleń: 707
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Klasy - strona 1

Fragment notatki:


Klasy Wykład 4 10/10/25 2 Klasy  Definiujemy własne typy danych (klasy)  Dodajemy składowe takie jak  int ,  float  lub inne klasy  Opisujemy zachowanie tworząc tzw. metody, czyli funkcje  składowe  Definicja klasy  class nazwa { ... //ciało klasy }; //ważny jest średnik na końcu  Tworzenie obiektów zdefiniowanych przez klasę  odbywa się w znany już sposób  nowy_typ a;  Klasa, a obiekt  Klasa to typ obiektu, a nie sam obiekt 10/10/25 3 Składniki klasy  Składniki definiujemy w ciele klasy  class CPunkt { public: float x; float y; };  Dostęp do składników  obiekt.składnik  wskaźnik_do_obiektu-składnik  (*wskaźnik_do_obiektu).składnik  referencja.składnik  Przykład cpp_4.1 10/10/25 4 Funkcje składowe  Składnikami klas mogą być także funkcje – nazywamy je metodami  Metody zwykle pracują na składowych klasy  Deklaruje się je w znany już sposób  void licz();  float max(float, float);  Nazwy deklarowane w klasie mają zakres  ważności równy obszarowi całej klasy  Klasa nie ma początku ani końca 10/10/25 5 Enkapsulacja   Wszystkie elementy klasy zostają zamknięte w  jednym kontenerze  Jest ona bardzo ważną cechą języka C++,  ponieważ odzwierciedla sposób naszego myślenia o  obiektach  Opisujemy składowe i metody do których możemy  się odwoływać na rzecz konkretnych obiektów  Możemy używać metod o takich samych nazwach w  stosunku do obiektów różnych typów. Nie jest to  przeładowywanie nazw, ponieważ mamy różne  zakresy nazw 10/10/25 6 Hermetyzacja informacji  Składniki i metody zamknięte w klasie mogą być  dostępne na zewnątrz, ale NIE MUSZĄ  Do określania poziomu dostępu służą etykiety  private – oznacza, że składniki i metody są  dostępne tylko z wnętrza klasy  protected – związane z dziedziczeniem (na razie  traktowane jak  private )  public – oznacza, że składniki i metody są  dostępne zarówno z wnętrza klasy jak i spoza klasy  Przykład cpp_4.2 10/10/25 7 Funkcje składowe – definicja  Gdzie można zdefiniować funkcje składowe  Wewnątrz samej klasy, wtedy automatycznie stają  się funkcjami  inline  Definiuje się je wtedy tak jak zwykłe funkcje  Na zewnątrz klasy. W samej klasie funkcje zostają  tylko zadeklarowane  typ_zwracany nazwa_klasy::funkcja(...) {...}  Nie są wtedy  inline , ale można je takimi  uczynić  Przykład cpp_4.3 10/10/25

(…)

… na dołączeniu odpowiedniego przyrostka literowego,
(oznaczającego jej typ) do nazwy zmiennej np. s – oznacza
zmienną zawierającą łańcuch znaków, b – zmienną typu bool,
i – int, itd..
9
Zalecana notacja...

Nazwy plików z kodem źródłowym klas powinny
być takie jak sama nazwa klasy







Punkt.cpp
Punkt.h
Deklaracje przyjaźni umieszczamy na samej górze
Potem umieszczamy instrukcja typedef
Metody…
… jakiegoś typu
należy odczytywać ten sam typ
Przykład cpp_4.13
10/10/25
23
Pola bitowe




Pola bitowe to specjalny typ składnika klasy polegający
na tym, iż dane przechowywane są na określonej
liczbie bitów
class CPort{
unsigned int read : 1;
unsigned int status : 2;
};
Raczej nie stosuje się, chyba że w specjalnych
sytuacjach, gdzie konieczne jest duże upakowanie
danych lub obsługa specjalistycznej…
… jest jedną z najczęściej
przeładowywanych funkcji
Konstruktor nie jest obowiązkowy
Konstruktor nic nie zwraca

10/10/25
Nawet void!!!
12
Destruktor

Destruktor jest również specjalną funkcją
składową klasy






Jest przeciwieństwem konstruktora
Jest uruchamiany automatycznie tak jak
konstruktor, ale przy likwidowaniu obiektu
Służy np. do zwalniania pamięci
Destruktor nazywa się tak jak nazwa klasy z tą
różnicą, że poprzedzona jest znakiem ‘~’
Destruktor również nie jest obowiązkowy
Destruktor nic nie zwraca


Nawet void!!!
Przykład cpp_4.5
10/10/25
13
Składnik statyczny






Składnik statyczny jest użyteczny kiedy chcemy, aby
poszczególne obiekty danej klasy posługiwały się tą samą daną
Taka dana jest tworzona w pamięci jednokrotnie i istnieje nawet
jeśli nie ma ani jednego obiektu…
… klasy mimo iż nie
jest składnikiem tej klasy
Funkcja może być przyjacielem więcej niż jednej
klasy
Dzięki funkcjom zaprzyjaźnionym możemy dawać
dostęp do zmiennych prywatnych funkcjom, które nie
mogłyby być funkcjami składowymi
Do funkcji zaprzyjaźnionej nie jest przesyłany
wskaźnik this
Deklaracja funkcji zaprzyjaźnionej



friend typ nazwa (...);
Miejsce deklaracji nie ma znaczenia (private…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz