Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai
Sztringek Szöveges adatok kezelése
Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális null karakter jelzi Nem kell ismerni a tömb hosszát 0x022B3A01 0x022B3A02 0x022B3A03 0x022B3A04 0x022B3A05 0x022B3A06 H e l l o \0
Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális null karakter jelzi Nem kell ismerni a tömb hosszát 0x022B3A01 0x022B3A02 0x022B3A03 0x022B3A04 0x022B3A05 0x022B3A06 0x48 0x65 0x6C 0x6C 0x6F 0x00 char *mystring = "This is a string literal.";
C műveletek sztringeken C++ változatról később strlen strcpy strncpy strcat strncat strcmp strncmp strchr strcspn strstr strtok Sztring hossza (termináló null nélkül) Átmásol egy sztringet egy másikba Átmásol n karaktert egy sztringből egy másikba Egymás után fűz két sztringet Az egyik sztring végére illeszti a másik sztring első n karakterét Összehasonlít két sztringet Összehasonlítja két sztring első n karakterét Visszaad egy pointert a keresett karakter első megjelenésére A sztring eleje a megadott karakterek első megjelenéséig Visszaad egy pointert a keresett sztring első megjelenésére Feladarabolja a sztringet a megadott karakterek mentén Bővebben: http://www.cplusplus.com/reference/cstring/
Osztályok alapjai Tagváltozók, tagfüggvények Konstruktor, destruktor
Összetett típusok Gyakran szükséges összetartozó adatok együttes tárolása és kezelése Pl. bankszámla adatai összetartoznak Struktúra (struct): Összetett típus Több tagváltozóval rendelkezhet A tagváltozók is lehetne struktúrák Az adatok hierarchikusan érhetők el Inicializáló listával inicializálható struct Person char *name; int age; }; Person p = "Vince", 24 }; p.age = 25;
Tagfüggvények Tagfüggvény (member function, method): Egy összetett típuson végzett művelet A típushoz rendelt függvény Automatikusan hozzáfér a példány változóihoz struct Person char *name; int age; void print() cout << name << ": " << age << endl; } }; void print(person p) cout << p.name << ": " << p.age << endl; } Person p; p.name = "Vince"; p.age = 24; print(p); p.print();
Hozzáférés pointereken keresztül Person p; Person *pp = &p; (*pp).name = "Vince"; Pp->name = "Vince"; (*pp).print(); pp->print(); A this pointer: Minden tagfüggvényben automatikusan elérhető Az aktuális objektumpéldányra mutat
Osztályok Osztály (class): Összetartozó adatok egységbe zárt csoportja Belső állapot és viselkedés Sablon Objektum (object): Egy osztály példánya, saját belső állapottal, adatokkal Nagyon hasonlít a struktúrára DE: a tagváltozókhoz alapértelmezés szerint csak a tagfüggvények férnek hozzá
Láthatóság Struktúrák és osztályok esetén is megadható Ki láthatja a tagváltozót/tagfüggvényt? Védhető a belső állapot (illetéktelen kód nem fér hozzá) Szintek: Private: csak a tagfüggvények látják Public: bárki láthatja (többit lásd később) Alapértelmezés: Struktúra: minden public Osztály: minden private Ajánlás: Tagváltozók ne legyenek publikusak! A publikus függvények biztosítsák az objektum szolgáltatásait, a segédfüggvények legyenek privátok
Láthatóság Person.cpp Person.h class Person private: char *name; int age; public: void print(); }; void Person::print() cout << name << ": " << age << endl; }
Konstruktor Hogyan inicializáljuk a privát tagváltozókat? Konstruktor függvény (constructor method): A példány/objektum létrehozásakor fut le Fogadhat paramétereket Hozzáfér a tagváltozókhoz class Person char *name; int age; public: Person(char *n); }; Person p("vince"); Person *p = new Person("Vince"); Person p; Person *p = new Person;
Konstruktor Hogyan inicializáljuk a privát tagváltozókat? Konstruktor függvény (constructor method): A példány/objektum létrehozásakor fut le Fogadhat paramétereket Hozzáfér a tagváltozókhoz class Person char *name; int age; public: Person(char *n); Person(); }; Person p("vince"); Person *p = new Person("Vince"); Person p; Person *p = new Person;
Konstruktor class Person char *name; int age; public: Person(char *name, int age) : age(age) strcpy(this->name, name); } };
Destruktor Destruktor függvény (destructor method): A példány/objektum által használt memória felszabadítása előtt fut le Megszűnik a lokális változó, delete hívás Hozzáfér a tagváltozókhoz Célja a lefoglalt erőforrások (pl. memória) felszabadítása class Person char *name; int age; public: Person(char *name, int age); ~Person() delete[] name; } };
Köszönöm a figyelmet!