1 / 24

Języki programowania obiektowego

Języki programowania obiektowego. Klasy i obiekty. Andrzej Chybicki Andrzej.Chybicki@eti.pg.gda.pl Pok. 744. Klasy. Klasa jest typem zmiennej, jest to typ własny, definiowany przez programistę. Programista sam definiuje co się znajduje w danej klasie (pola i funkcje)

jaron
Télécharger la présentation

Języki programowania obiektowego

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Języki programowania obiektowego Klasy i obiekty Andrzej Chybicki Andrzej.Chybicki@eti.pg.gda.pl Pok. 744

  2. Klasy • Klasa jest typem zmiennej, jest to typ własny, definiowany przez programistę. • Programista sam definiuje co się znajduje w danej klasie (pola i funkcje) • Wystąpieniem zmiennej typu klasa nazywany instancją danej klasy lub inaczej obiektem • Definiowanie własnych klas-typów sprawia, że program jest bardziej zbliżony do modelowanego problemu, ułatwia programiście pisanie programu i rozwiązywanie zagadnień • Struktura programu odpowiada strukturze problemu

  3. Klasy a struktury • Struktura jest klasą w której wszystkie pola i funkcje (ang. members) są jawne(public)

  4. Dostęp do zmiennych klasy • Public members • Private members

  5. Defining a member function

  6. Konstruktory • Aby utworzyć instancje danej klasy (obiekt) należy zainicjować zmienną typu klasa. • Konstruktor jest jawną funkcją danej klasy inicjującą w odpowiedni sposób pola danej klasy • Konstruktor zawsze jest jawny • Konstruktor nie jest niczym innym jak zwyklą funkcją (zawsze jawną) danej klasy zwracającą obiekt typu klasy w jakiej jest zaimplementowany

  7. Sposoby inicjalizacji obiektu

  8. I jeszcze trochę o konstruktorach • W praktyce warto definiować więcej niż jeden konstruktor danej klasy • Ułatwia to inicjalizacje obiektów • Tworzy klasy wszechstronniejszymi • Przyśpiesza programowanie

  9. Przykład

  10. Możliwe wywołania

  11. Zmienne statyczne • Zmienna statyczna ma dokładnie jedno wystąpienie w całym programie ( w przeciwieństwie do zmiennej zwykłej, która ma każdą kopię dla danego obiektu) • Zmienna statyczna jest deklarowana w ciele klasy i jest własnością klasy – NIE OBIEKTU!! • Zmienne statyczne „zastępują” w programowaniu obiektowym zmienne globalne • Aby skorzystać ze zmiennej statycznej nie trzeba inicjować obiektu danej klasy w której ta zmienna jest zadeklarowana

  12. Funkcje Constant

  13. Funkcje Const (Constant member functions) • Nie zmieniają zmiennych na których operują • Służą do odczytywania zmiennych z obiektu zapewniając ich niezmienność podczas odczytywania

  14. Destruktory • Konstruktor inicjuje obiekt, stwarza dla niego środowisko pracy zapewniając zasoby niezbędne do dzialania obiektu. • Obiekty niektórych klas mogą wymagać stosunkowo dużej ilości pamięci (i nie tylko pamięci) niezbędnej dla dzialania obietku. Np. Dane przestrzenne, dane z baz danych itp… • Gdy obiekt przestaje być potrzeby należy te zasoby zwolnić

  15. Destruktory – ciąg dalszy • Destruktory są funkcjami należącymi do danej klasy, które „niszczą” obiekt, zwalniając tym samym zasoby przez niego używane. • Destruktory są często używane niejawnie kiedy obiekt przestaje być w programie użyteczny • Tylko w nielicznych przypadkach programista zmuszony jest wywolywać destruktory bezpośrednio.

  16. Przykład użycia desktruktora • Klasa Table podczas inicjacji alokuje pamięć potrzebną do przetrzymywania „swoich” elementów • W samej klasie Table trzymany jest jedynie wskaźnik do miejsca w którym same dane są przechowywane • Podczas gdy obiekt staje się nam niepotrzebny chcemy tę pamięć zwolnić

  17. Desktruktory - przyklad • Podczas gdy obiekt staje się nam niepotrzebny chcemy mieć pewność ze zasoby pamięcia z których korzysta Table są też „uwolnione”. • Desktruktory mają taką samą jak konstruktor poprzedzony znakiem„~” • Używanie techniki desktruktorów jest szczególnie ważne w przypadku operowania na dużej ilości danych

  18. Przypadki konstruowania i dekonstruowania obiektów w C++ • A named automatic object, which is created each time its declaration is encounteredin the execution of theprogram and destroyed each time the program exits the blockin which it occurs • A freestoreobject, which is created using the n e w operator and destroyed using thed e l e t e operator • A nonstatic member object, which is created as a member of another class object andcreated and destroyed when the object of which it is a member is created anddestroyed • An array element, which is created and destroyed when the array of which it is an elementis created and destroyed • A local static object, which is created the first time its declaration is encountered inthe execution of the program and destroyed once at the termination of the program • A global, namespace, or class static object, which is created once ‘‘at the start of theprogram’’ and destroyed once at the termination of the program • A temporary object, which is created as part of the evaluation of an expression anddestroyed at the end of the full expression in which it occurs This list is roughly sorted in order of importance. The following subsections explain thesevariousways of creating objects and their uses.

More Related