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.



Podobne dokumenty
Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Programowanie w Języku C 2

private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne.

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

C++/Konstruktor i destruktor

Rozdział 4 KLASY, OBIEKTY, METODY

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Podstawy Programowania Obiektowego

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Wstęp do Programowania 2

Programowanie komputerowe. Zajęcia 7

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

TEMAT : KLASY DZIEDZICZENIE

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie w C++ by-sa/ 3. 0/ legalcode.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Struktury Struktura polami struct struct struct struct

Deklaracja struktury w C++

Tablice (jedno i wielowymiarowe), łańcuchy znaków

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Do czego służą klasy?

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Materiały do zajęć VII

Wykład 8: klasy cz. 4

PARADYGMATY PROGRAMOWANIA Wykład 4

Lab 9 Podstawy Programowania

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Podstawy Programowania Obiektowego

Programowanie obiektowe

Wykład 5: Klasy cz. 3

Wykład 4: Klasy i Metody

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie:

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

10. Programowanie obiektowe w PHP5

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Przeciążanie operatorów

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Język C++ zajęcia nr 2

C++ Przeładowanie operatorów i wzorce w klasach

C++ - [4-7] Polimorfizm

Wstęp do programowania obiektowego. Wykład 2

C-struktury wykład. Dorota Pylak

Dokumentacja do API Javy.

1 Definiowanie prostych klas

Do czego służą klasy?

Programowanie obiektowe, wykład nr 10. Metaprogramowanie cz.2: szablony struktur i klas

Dziedziczenie. Ogólna postać dziedziczenia klas:

Programowanie w Internecie. Java

Programowanie 2. Język C++. Wykład 3.

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

KLASY cz.1. Dorota Pylak

Definiowanie własnych klas

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

Programowanie, część I

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

PARADYGMATY PROGRAMOWANIA Wykład 3

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

C-struktury wykład. Dorota Pylak

Zaawansowane programowanie w C++ (PCP)

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Mechanizm dziedziczenia

Aplikacje w środowisku Java

Polimorfizm, metody wirtualne i klasy abstrakcyjne

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Programowanie Obiektowe i C++

Podstawy programowania skrót z wykładów:

Algorytmy i język C++

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Laboratorium 1 - Programowanie proceduralne i obiektowe

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Szablony funkcji i szablony klas

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Programowanie obiektowe w języku

OBIEKTY PHP. G. Panuś

Pola i metody statyczne

Programowanie obiektowe i C++ dla matematyków

Język C++ Programowanie obiektowe

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Transkrypt:

C++/Czym jest obiekt 1 C++/Czym jest obiekt Aby odpowiedzieć na pytanie zadane w temacie, zadajmy sobie inne: Co nazywamy obiektem w świecie rzeczywistym? Otóż wszystko może być obiektem! Drzewa, zwierzęta, miasta, auta, ludzie... W programowaniu również obiektem może być dowolny twór, o jakim pomyślimy. Tworząc "świat programu" można stworzyć obiekt, którego użycie będzie bardziej "namacalne" od szeregu parametrów, porozrzucanych w różnych zmiennych. To różni programowanie strukturalne od programowania obiektowego. Projekt i twór klasa i obiekt Zanim stworzymy jakiś obiekt, trzeba ustalić czym ten obiekt będzie. W zależności od tego, czy chcemy stworzyć wirtualny samochód, czy samolot, należy określić dwie rzeczy: jakie właściwości będzie miał ten obiekt, jakie będzie miał metody działania. W związku z tym, przed stworzeniem jakiegokolwiek obiektu należy przedstawić kompilatorowi jego projekt(wzorzec), czyli określić jego klasę. 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. Jednak sam projekt nie sprawi jeszcze, że dostaniemy obiekty (to tak jakby po narysowaniu projektu domu chcieć zamieszkać na kartce papieru :-)). Trzeba jeszcze obiekt utworzyć, co oznacza po prostu deklarację obiektu na podstawie pewnej klasy: NazwaKlasy MojObiekt; Wygląda to jak deklaracja zwykłej zmiennej i tak jest w istocie w C++ tworząc klasę definiuje się nowy typ danych. Podobnie jak w przypadku zmiennych, można utworzyć wiele obiektów danej klasy. Definicja klasy Ogólny szablon definiowania klas w C++ wygląda następująco: class NaszaNazwaKlasy... // pola i metody składowe klasy ; Po słowie kluczowym class następuje nazwa naszej klasy (prawidła jej nazywania są takie same jak dla zmiennych). W nawiasach klamrowych umieszcza się definicje składowych klasy: pól i metod określając dla nich specyfikatory dostępu. Należy pamiętać o średniku za klamerką zamykającą definicję klasy. Oto przykładowa definicja klasy: class NazwaKlasy public: //pola i metody są publicznie dostępne //definiowanie pól int poleint; float polefloat;

C++/Czym jest obiekt 2 //deklarowanie metod int Metoda1(); void Metoda2(); ; //pamiętaj o średniku! Użycie klasy Sama definicja klasy nie wystarczy, aby uzyskać dostęp do jej składowych. Należy stworzyć obiekt. Można przyjąć, że obiekt to zmienna typu klasowego. Deklaracja obiektu: NazwaKlasy Obiekt; Dostęp do pól i metod uzyskuje się operatorem (.): Obiekt.poleInt = 0;//przypisanie wartości polom Obiekt.poleFloat = 9.04; Obiekt.Metoda1();//wywołanie metody obiektu W przypadku deklaracji wskaźnika do obiektu: NazwaKlasy *ObiektWsk = new NazwaKlasy; Analogicznie jak w przypadku wskaźników na struktury operatorem dostępu do pola/metody klasy poprzez wskaźnik do obiektu staje się ->: ObiektWsk->poleInt = 0; //przypisanie wartości polom ObiektWsk->poleFloat = 9.04; ObiektWsk->Metoda1(); //wywołanie metody obiektu Należy pamiętać o zniszczeniu obiektu przed zakończeniem działania programu (lub kiedy nie jest nam już potrzebny): delete ObiektWsk; Przykład Stwórzmy klasę kostki do gry: class Kostka public: unsigned int wartosc; unsigned int maks; void Losuj(); ; Po definicji klasy, zdefiniujmy jeszcze metodę Losuj() zadeklarowaną w tej klasie: void Kostka::Losuj() wartosc = rand()%maks + 1;

C++/Czym jest obiekt 3 Warto zwrócić uwagę w jaki sposób się to robi. Nazwą metody dowolnej klasy jest NazwaKlasy::NazwaMetody. Poza tym aby uzyskać dostęp do pól klasy, w której istnieje dana metoda nie stosuje się operatora wyłuskania. Po tym można napisać resztę programu: int main() Kostka kostkaszescienna; //utworzenie obiektu kostkaszescienna.maks = 6; //określenie maksymalnej ilosci oczek kostkaszescienna.losuj(); //losowanie cout << "Wylosowano:" << kostkaszescienna.wartosc << endl;//wypisanie wyniku return 0; Autorekursja Wskaźnik this umożliwia jawne odwołanie się zarówno do atrybutów, jak i metod klasy. Poniższy program wymusza użycie wskaźnika this, gdyż nazwa pola jest taka sama jak nazwa argumentu metody wczytaj: #include <iostream> class KlasaThis int liczba; public: void wczytaj(int liczba) this->liczba=liczba; void wypisz() cout << liczba <<endl; ; int main() KlasaThis ObiektThis; ObiektThis.wczytaj(11); ObiektThis.wypisz(); return 0; Kontrola dostępu Istnieją trzy specyfikatory dostępu do składowych klasy: private (prywatny) - dostępne tylko z wnętrza danej klasy i klas/funkcji zaprzyjaźnionych. protected (chroniony) - dostępne z wnętrza danej klasy, klas/funkcji zaprzyjaźnionych i klas pochodnych. public (publiczny) - dostępne dla każdego. Jeśli sekwencja deklaracji składowych klasy nie jest poprzedzona żadnym z powyższych specyfikatorów, to domyślnym specyfikatorem (dla kompilatora) będzie private. Dzięki specyfikatorom dostępu inni programiści mają ułatwione korzystanie z utworzonej przez nas klasy, gdyż metody i pola, których nie powinni modyfikować, bo mogłoby to spowodować niepoprawne działanie obiektu, są oznaczone jako private lub protected i nie mogą z nich korzystać. Funkcje, które zapewniają pełną funkcjonalność klasy oznaczone są jako public i tylko do nich ma dostęp użytkownik klasy (do protected również, ale z ograniczeniami). Oto zmodyfikowany przykład z kostką, który zobrazuje cele kontroli dostępu:

C++/Czym jest obiekt 4 class Kostka public : void Losuj(); void Wypisz(); int DajWartosc(); void ZmienIloscScian(unsigned argmax); protected: unsigned wartosc; unsigned max; ; int Kostka::DajWartosc() return this->wartosc; void Kostka::ZmienIloscScian(unsigned argmax) if(argmax> 20) max = 20; else max = argmax; Zmodyfikowana klasa zezwala tylko na kostki maksymalnie dwudziestościenne. Ręczne modyfikacje zmiennej max są zabronione, można tego dokonać jedynie poprzez funkcję ZmienIloscScian, która zapobiega przydzieleniu większej ilości ścianek niż 20. Prywatny jest też atrybut wartość. Przecież nie chcemy aby była ona ustawiona inaczej niż przez losowanie! Dlatego możemy udostępnić jej wartość do odczytu poprzez metodę DajWartosc(), ale modyfikowana może być tylko na skutek działania metody Losuj(). Ćwiczenia 1. Napisz klasę reprezentującą człowieka. Musi on być opisany przy pomocy: imienia, nazwiska, płci, wieku, partnerki/partnera(jako wskaźnik). 2. Rozwiń klasę napisaną w 1. ćwiczeniu dodając ograniczenie, między partnerami nie może być większa niż 25% wieku starszej z nich. 3*. Jeśli zaznajomiłeś się z wektorami, dodaj kolejny parametr opisujący ludzi - zainteresowania, dodaj odpowiednią funkcję do dodawania nowych zainteresowań do listy oraz funkcję porównującą zainteresowania obu ludzi i zwracającą procent identycznych zainteresowań.

Źródła i autorzy artykułu 5 Źródła i autorzy artykułu C++/Czym jest obiekt Źródło: http://pl.wikibooks.org/w/index.php?oldid=171597 Autorzy: Albmont, Derbeth, Felix, Fidytek, Gang65, Kj, Lethern, Mythov, PGK, Piotr, 26 anonimowych edycji Źródła, licencje i autorzy grafik Grafika:Plume ombre.png Źródło: http://pl.wikibooks.org/w/index.php?title=plik:plume_ombre.png Licencja: GNU Free Documentation License Autorzy: Darkdadaah, Javierme, Rilegator, Rocket000 Licencja Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/