Posty

Konstruktory w języku C++. Szczegółowa analiza krok po kroku

Cześć! Zgodnie z obietnicą z poprzedniego postu, dzisiaj zajmiemy się konstruktorami. Operatorem przypisania(którego efekt działania jest podobny do konstruktora kopiującego) zajmiemy się innym razem. Od czego należy zacząć ? Od definicji. Jest to specjalna metoda w ciele klasy, wywoływana na samym początku istnienia obiektu. Na razie wystarczy definicji. Teraz wyjaśnijmy sobie jej znaczenia. Jak widać konstruktor będzie dosyć podobny do zwykłych metod. Ma on jedną tą różnicę że wywołuje się na samym początku istnienia instancji klasy(czyli obiektu). Jak wygląda zapis ? #include <iostream> class MyClass { public: MyClass() { std::cout<<"To ja konstruktor.\n"; } }; int main(){ MyClass myClass; } I oto mamy Nasz konstruktor. No w sumie fajnie, ale po co mi konstruktor ? Konstruktor wywołuje się na samym początku istnienia obiektu, przez co jest możliwe zainicjowanie zmiennych w klasie bez narażenia się na ich odczyt, gdy jeszcze nie i...

Przyjaźnienie klas i atrybut private

Cześć! Na początku wyjaśnimy definicje. Czym jest przyjaźnienie klas ? Jest to możliwość ujrzenia prywatnych danych przez inną klasę. Co ważne, to klasa definiuje kto jest jej przyjacielem, a nie bezpośrednio klasa, która korzysta z tych dobrodziejstw korzysta. Atrybut private - Coś prywatnego, zastrzeżonego tylko dla wybranych. W tym konkretnym przykładzie będą to atrybuty prywatne klasy. Po co to ? Prywatne znaczy nie dostępnego dla każdego. Nie zawsze chcemy dzielić informacje między wszystkie dostępne klasy. Wiąże się z tym zasada nie udostępniania informacji, których nie potrzebują. Listonosz, który przynosi Nam pocztę powinien wiedzieć gdzie mieszkamy, ale nie koniecznie musi wiedzieć, jakim samochodem jeździmy. Oczywiście jeśli nie jest to Fiat Multipia. Jak to wykorzystać w programowaniu obiektowym ? #include <iostream> struct Set; struct MyStruct { private: int value=0; void setValue(int v) { value = v; } public: void showValue() { std::cout...

Programowanie obiektowe w C++. Cz. 2 Atrybuty: Public i protected.

Cześć! Dzisiaj zajmiemy się tak jak jest wspomniane w tytule atrybutami public i protected klasy. Czym one są? Public- Coś publicznego, dostępnego dla klasy. Klasa udostępnia swoje dane każdemu kto chce. Protected - Klasa ma metody, lub zmienne częściowo chronione przed odczytem lub modyfikacją. Mogą odczytać tylko klasy dziedziczące. Przykład: class MyClass { public: void showValue(int value) { std::cout<<value<<'\n'; } }myClass;///Dzięki temu że jest średnik można definiować obiekt bezpośrednio po nawiasach int main() { myClass.showValue(10); } W przeciwieństwie do poprzedniej lekcji, wystarczyło dodać atrybut public, by zadziałało. Jak można pokazac atrybut protected w akcji? class MyClass { protected: void show() { std::cout<<"Hello! It's MyClass\n"; } }; class SecondClass:public MyClass { public: void showInBaseClass() { this->show();} }; int main() { SecondClass sec; sec.showInBas...

Programowanie obiektowe w języku C++.Cz.1 Klasy oraz struktury

Cześć! Dzisiaj zajmiemy się programowaniem obiektowym. Rozszyfrujmy na samym początku znaczenie tego sformułowania. Programowanie obiektowe - Programujemy w sposób obiektowy. Czyli używając obiektów. Czym jest obiekt? Jest to reprezentacja szczegółowa klasy lub struktury. Zobaczmy na prosty przykład class MyClass ///Przyjęło się nazywać nazwy klas z dużej litery { };///Średnik na końcu jest związany z bezpośrednim tworzeniem obiektu klasy. Ale o tym później int main() { MyClass myClass;///Obiekt } Jak widzimy obiekt to reprezentacja klasy lub struktury(Zamiast class możemy wstawić struct. Zadziała w ten sam sposób). Wróćmy do klasy. Pojawia się pytanie: Po co mi klasa ? Do definiowania w jej wnętrzu metod(funkcji w klasie), oraz zamiennych. Dlaczego klasa lub struktura, a nie porozrzucane po całym programie ? Ta kwestia jest złożona. Pierwszym powodem dla którego warto stosować klasę jest porządek, ale to subiektywna kwestia. Najważniejszym jest to, że progr...

Wskaźniki w C++ cz.2

Cześć! Dzisiaj zajmiemy się drugą część wskaźników i związaną z Nią alokacją pamięci. Wyobraźmy sobie, że mamy tablicę o rozmiarze 4. I chcielibyśmy mieć tablicę o rozmiarze 5. Co w pierwszej chwili przychodzi Nam do głowy ? Alokacja na nowo. To nie jest jednak najlepszy pomysł, gdyż zobaczmy poniższy kod: int *myTable = new int [4]; for(int i=0;i<4;i++) myTable[i]=i; for(int i=0;i<4;i++) std::cout<<myTable[i]<<" "; std::cout<<'\n'; myTable = new int [5];//Alokuje na nowo for(int i=0;i<4;i++) std::cout<<myTable[i]<<" "; std::cout<<'\n'; Powyższy kod daje Nam jasno do zrozumienia, że spowoduje to utracenie danych w tablicy. Co więc powinniśmy zrobić? Tutaj sprawa nie jest taka prosta. Możemy włożyć tablicę myTable to innej tablicy. I potem skopiować ją do tej pierwszej. Zobaczmy to w akcji: int *myTable = new int [4]; int * secondTable = new int [4]; for(int i=0;i<4;i++) myTable[i]=...

Wskaźniki w C++ cz1

Cześć! Dzisiaj zajmiemy się rzeczą bardzo ważną i fundamentalną w rozwoju informatyki. Zajmiemy się wskaźnikami. Czym jest wskaźnik ? Wskaźnik to zmienna która, zawiera w sobie adres innej zmiennej. Pokażmy to na przykładzie: int * myPointer; int variable; myPointer = &variable; Co w tym momencie zrobiliśmy ? Przypisaliśmy do zmiennej myPointer adres zmiennej variable. Adres oznaczany jest &(ampersandem). Pojawia się teraz pytanie po co Nam adres ? Otóż do kilku ważnych rzeczy. Po pierwsze szybkość. Komputer wiedząc gdzie ma się udać zrobi coś szybciej, niż przeszukując bit po bicie. Po co jeszcze ? By  za-alokować dynamicznie pamięć. Brzmi groźnie. W istocie sprowadza się do tego, że jeśli chcemy mieć pamięć dynamiczną, czyli taką którą możemy usunąć, gdy nie jest Nam potrzebna lub coś do Niej dodać(co jest kłopotliwe). Dlaczego potrzebuje do tego wskaźników ? Wskaźnik zawiera adres i komputer dzięki temu adresowi wie gdzie będzie zawierać się dynamic...

Tablice w języku C++

Cześć! Dzisiaj zajmiemy się tablicami. Tablica to uporządkowany, znajdujący się w pamięci obok siebie, zestaw danych. Zestawem danych może być cokolwiek. Może to być liczba, string, lub inny typ danych. To co odróżnia tablicę od innych struktur, to jej uporządkowanie w pamięci obok siebie. Pamięć to zestaw rekordów, z których każdy ma swój adres. Czym jest adres ? Adres to (zazwyczaj) liczba, która jest unikalna dla całej pamięci i wskazuje, że chodzi nam o ten konkretny adres. Dla przykładu: Adres:  1      2             3 Dane:   35    79    "Ala ma kota" To jest właśnie takie przyporządkowanie do adresu, odpowiadającym im danych. Jak to się ma do tablic. O ile w przypadku innych danych, lub zmiennych, mogą(zwykle nie są, w pojedyńczym programie) być one porozrzucane po całej pamięci. Tak w przypadku tablic, są one obok siebie. Teraz: Jaki jest cel, ż...