Strukture i klase
| Sjedište: | CARNET - Arhiva 2021 Loomen |
| E-kolegij: | Algoritmi i programiranje 2. razred |
| Knjiga: | Strukture i klase |
| Otisnuo/la: | Gost (anonimni korisnik) |
| Datum: | subota, 21. ožujka 2026., 17:15 |
Opis
Strukture su složeni tip podataka.
Uporaba polja omogućavala nam je pohranu više podataka pod jednim imenom kako bismo smanjili broj varijabli u programu. U polju su svi podaci biti istog tipa.
Stukture nam omogućavaju grupiranje podataka različitih tipova.
Za deklaraciju strukture koristimo ključnu riječ struct. Unutar stukture može se nalaziti proizvoljan broj članova različitih tipova.
1. Strukture
Strukture su složeni tip podataka.
Uporaba polja omogućavala nam je grupiranje i pohranu više podataka pod jednim imenom kako bismo smanjili broj varijabli u programu. U polju su svi podaci bili istog tipa.
Strukture nam omogućavaju grupiranje podataka različitih tipova.
Za deklaraciju strukture koristimo ključnu riječ struct.
Ime strukture uvijek započinje velikim slovom kako bismo ju razlikovali od varijable. Unutar stukture može se nalaziti proizvoljan broj članskih varijabli različitih tipova. Vidljivost članskih varijabli defaultno je public, mogu biti još i private i protected.
Struktura može biti globalna ili lokalna ovisno gdje je deklarirana.
Prilikom deklaracije strukture, iako kompajleru govorimo da ona postoji ne dolazi do alokacije memorije, nego tek kada deklariramo varijablu iz strukture.
Osnovna prednost uporabe struktura u odnosu na pojedinačne varijable je to što možemo proslijediti cijelu strukturu u funkciju.
Ukoliko odlučimo dodati nove članske varijable u strukturu ne moramo mijenjati deklaraciju funkcije. Funkcija može vratiti strukturu što je jedan od načina vraćanja više varijabli.
Struktura može sadržavati druge strukture.
Obično je veličina memorije koju zauzima struktura suma veličina koju u memoriji zauzimaju pojedine članske varijable sturkture, no može biti i veća! Uzrok tome je što kompajler ponekad umeće praznine u strukture (padding).
Strukture je moguće dijeliti u više datoteka, dodavanjem strukture u u zaglavlje.
2. Primjer uporabe strukture
Primjer:1. deklariramo strukturu Zaposlenik s 5 članskih varijabli
2. inicijaliziramo vrijednosti članskih varijabli za dvije varijable tipa strukture Zaposlenik
3. prosljeđujemo (by value - kopiju vrijednosti) cijelu strukturu za pojedinu varijablu strukture funkciji ispisInformacija()
3. Polja struktura
Deklaracija polja struktura razlikuje se od deklaracije strukture:
Polje tipa strukture možemo inicijalizirati u kodu na slijedeći način:
Elemente polja zatim možemo pretraživati po različitim ključevima, ispisivati ih, računati i sl. ovisno o vrsti podataka u polju.
4. Klase i objekti
Kod objektno orijentiranog programiranja (OOP) težište je projektiranju aplikacije kao skupa objekata koji izmjenjuju poruke.
OOP se temelji na klasama.
Klase su korisnički definirani tipovi podataka koji grupiraju povezane informacije.
Klase sadrže članske varijable koje mogu biti različitih tipova, te mogu sadržavati metode (funkcije klase) što strukture nisu mogle.
Defaultna vidljivost im je private, a mogu biti i public i protected, nazivamo ih i modifikatorima vidljivosti.
Instance klase su varijable tipa klase, odnosno zovemo ih još i objektima.
Objekt (engl. object) je naziv za skup svojstava koja možemo objediniti u smislenu cjelinu.
Pravila koja propisuju od čega je pojedini objekt sagrađen te kakva su njegova svojstva nazivaju se klasama.
Klasa je samo opis, dok je objekt stvarna, konkretna realizacija napravljena na temelju klase.

Kada je klasa jednom definirana, može se pomoću nje konstruirati neograničen broj objekata koji se zatim mogu koristiti.
U programu je objekt opisan varijablama koje mu određuju stanje i funkcijama koje mu određuju ponašanje.
Funkcije mijenjaju stanje objekta, a po potrebi mogu stvarati i nove objekte.
Za pristup članovima preko objekata i referenci koristi se operator . (točka), a u slučaju pristupa preko pokazivača operator -> (minus i veće od).
Funkcije objekta mogu pristupati svim članskim varijablama i funkcijama. Klijenti mogu vidjeti samo javne članske varijable i funkcije.
5. Ponovimo
6. Konstruktori i destruktori
Do
sada nismo inicijalizirali podatkovne članove - varijable (dodjeljivali im
vrijednost) unutar same klase, nego smo ih samo deklarirali

Klasa/objekt može imati više konstruktora.
Prilikom stvaranja objekta poziva se samo jedan konstruktor.
Konstruktor može biti s parametrima ili bez njih.
Konstruktor - stvaranje objekata
Destruktor - uništavanje objekata
Varijable
ugrađenih tipova podataka možemo definirati i nakon toga im dodijeliti neku
vrijednost:



Primjer
konstruktora s parametrima i bez njih:

Konstruktori,
kao i ostali članovi klase, podliježu pravima pristupa.
Kao što se objekt može stvoriti, tako se mora moći i uništiti
~ ime klase {}
Destruktor je metoda koja se automatski poziva prilikom uništavanja objekta
Ima jednako ime kao i klasa uz prefiks ~ (tilda)
Klasa/objekt može imati samo jedan destruktor
Ne može imati ni povratne vrijednosti niti parametre

7. Primjeri konstruktora i destruktora
1. primjer: Napišite C++ program s deklaracijom klase bezParametara. Klasa treba imati jednu člansku varijablu (duljinu stranice pravilnog šesterokuta) čiju vrijednost treba inicijalizirati putem konstruktora klase, te dvije funkcije bez parametara od kojih jedna računa opseg, a druga površinu pravilnog šesterokta. U mainu treba:



2. primjer: Na prethodni primjer treba dodati konstruktor s jednim parametrom (duljina) za koji će korisnik u mainu unijeti vrijednost. U mainu treba:



8. Primjeri konstruktora i destruktora
3. primjer: Napišite C++ program s deklaracijom klase sesterostranaPrizma.
Klasa treba imati dvije članske varijable (duljinu stranice pravilnog šesterokuta i visinu).
Jednom te vrijednosti treba inicijalizirati putem konstruktora klase koji ne prima parametre,
a drugi puta putem konstruktora klase koji prima ta dva parametra iz maina,
te dvije funkcije bez parametara od kojih jedna računa oplošje, a druga volumen te prizme. U mainu treba:


