do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
KURS JĘZYKA C++ PODSTAWY
00. Informacje ogólne - wstęp 01. Praca z konsolą - początki - cout 02. Zmienne (int, float, double) 03. Konsola cd. - cin 04. Zmienne tekstowe - (char, string) 05. Operatory 06. Instrukcje warunkowe (if - else, switch - case) 07. Pętle (for, while) 08. Instrukcje warunkowe cd. 09. Break, Continue 10. Funkcje 11. Zakresy ważności 12. Tablice zmiennych 13. Mała powtórka :))) 14. Struct - struktury 15. String, Vector - wstęp do STL 16. Wskaźniki, referencje 16a. Wskaźnik do typów prostych 16b. Wskaźnik do funkcji 16c. Operatory new i delete 16d. Referencje 17. Pliki źródłowe i nagłówkowe Zadania powtórzeniowe 18. Class - klasy 19. Konstruktor , destruktor 20. Argumenty domyślne, przeciążanie (przeładowanie) funkcji i operatorów C++ FAQ: 01. Operacje na plikach, odczyt/zapis02. Nie działa mi polecenie gotoxy() co robić ? 03. Jaki podręcznik do nauki C++ ? ostatnia aktualizacja: 29.08.2005 CLASS - KLASY
Na wstępie można powiedzieć, że klasa to taka "trochę" rozbudowna struktura :). Nie jest to może najszczęśliwsze określenie
ale zawsze to jakiś punkt zaczepienia żeby nikogo na początku nie zniechęcić :)
Jeśli nie jesteś pewien co i jak ze strukturami to radzę się cofnąć do odpowiedniej lekcji bo teraz na pewno będzie coraz ciekawiej ale nie licz na to, że łatwiej :) Utworzenie klasy nie różni się specjalnie od tworzenia struktury (za wyjątkiem słowa kluczowego class). oczywiście tak jak w strukturze w klasie można także umieszczać sobie zmienne. i tu napotykamy na pierwszy "problem". Tak zadeklarowane zmienne tworzone są jako zmienne prywatne danej klasy i nie ma do nich dostepu z zewnątrz. Przeprowadźmy próbę: Jak widać to co zadziała bez problemu w przypadku struktur tu już się nie uda. W przypadku klasy należy w sposób jawny określić dostęp do poszczególnych elementów danej klasy. Każdy element klasy może być oznaczony jako: public, private lub protected. Na początek zajmiemy się dwoma pierwszymi przypadkami. public - element jest dostępny z zewnątrz klasy, można go dowolnie wywoływać/modyfikować private - element jest prywatnym elementem danej klasy i tylko ona ma możliwość jego wywołania/modyfikacji Na początek zmodyfikujmy nasz kod, teraz powinen się uruchomić bez problemu gdyż dostępne zmienne oznaczyliśmy jako public (wszystko co występuje po słowie "public:" jest typu publicznego aż wystąpienia innego określenia dostępu). Tu gwoli wyjaśnienia należy dodać, że w przypadku struktur domyślnie wszystkie ich elementy są typu public natomiast w klasach domyślnie są traktowane jako private. W przypadku struktur traktowaliśmy je jako "opakowanie" na zmienne innych typów, w przypadku klas definicję tego opakowania można także rozszerzyć o funkcje. Jak widać mamy w powyższym przykładzie obiekty dostępne jako: publiczne - zmienną o nazwie i_Zmienna oraz funkcję o nazwie Wpisz prywatne - zmienną o nazwie i_ZmiennaPrywatna Do wszystkiego co jest oznaczone jako publiczne mamy dostęp z zewnątrz, do elementów prywatnych klasy dostęp ma tylko dana klasa. Jak widać aby zmienić zawartość zmiennej i_ZmiennaPrywatna musieliśmy utworzyć specjalną funkcję w tej klasie która za dla nas to zrobi. Ktoś może zapytać po co takie utrudnianie sobie życia? Jak na razie to może wyglądać jako zbędne komplikowanie sobie życia no bo jaki zysk z tego, że aby odwołać się do zmiennej musimy pisać jakieś specjalne do tego celu służące funkcje. Na chwię obecną może wydawać się to zbędnym nakładem pracy ale przy większych projektach mechanizm ten daje nam niesamowite możliwości kontrolowania tego co dzieje się z poszczególnymi składowymi naszej klasy. Wyobraź sobie sytuację, że twoja klasa składa się z dziesiątek zmiennych/funkcji i odwołujesz się do niej dziesiątki/setki razy w swoim programie. W przypadku swobodnego dostępu do wszystkich zmiennych nie jesteś w stanie w prosty sposób zapanować nad wymianą informacji, bo właściwie w każdym miejscu twojego programu można dowolnie modyfikować zmienne danej klasy, natomiast jeśli uczynisz zmienne prywatnymi wtedy każda modyfikacja będzie musiała się odbywać wyłącznie przez wyspecjalizowane funkcje wbudowane samą klasę. Znacznie ułatwia to późniejszą modyfikację programu, wprowadzanie do niego poprawek oraz przyspiesza wyszukiwanie ewentualnych błędów. Wybór należy do Ciebie aby ułatwić sobie życie teraz traktuj wszystko jako public, lecz aby mieć mniej problemów w przyszłości warto czasem pomyśleć nad zastosowaniem private :). Jeszcze kilka słów o funkcji Wpisz, jest ona zdeklarowana i zdefiniowana w samej klasie (tak jak w ww przykładzie) oczywiście jest to dopuszczalne ale raczej stosuje się taki zapis tylko w przypadku bardzo prostych funkcji (np 1 linijkowych :) ) normalnie bardziej rozbudowane funkcje definiujemy poza samą klasą. W klasie podane jest tylko, że będzie coś takiego jak funkcja Wpisz, która nie zwraca rezultatu swojego działania (void) oraz przyjmuje jeden parametr typu int (nie trzeba podawać nazwy parametru, jest to konieczne dopiero w definicji klasy). Natomiast samą definicję funkcji podajemy poniżej sygnalizując (MojaKlasa::), że jest to funkcja składowa podanej klasy. Takie "wyrzucanie" definicji na zewnątrz klasy daje na chwilę obecną taką korzyść, że treść programu jest bardziej przejrzysta i czytelna (oczywiście korzyści jest o wiele więcej ale na chwilę obecną nie są one istotne). Myslę, że na początek o klasach te kilka słów wstępu wystarczy. Kontynuacja już wkrótce. 1. Utwórz klasę która będzie miała możliwość przechować następujące dane: wiek, imię, nazwisko, adres. Wszystkie zmienne danej klasy mają być oznaczone jako PRYWATNE, napisz do tej klasy funkcje PUBLICZNE odpowiadające za odczyt i zapis ww zmiennych. |
|