SlideShare a Scribd company logo
1 of 12
Računarski praktikum 1
Predavanja
Goran Igaly
Sveučilište u Zagrebu
PMF, Matematički odsjek
5. predavanje
2
Klasa
 Uvodimo ključnu riječ class
 Klasa poopćava pojam strukture iz C-a
 Razlika između klase (class) i strukture (struct) u jeziku C++
 Sa stanovišta C++ prevoditelja primarno sintaksna – kod
strukture je sve podrazumijevano public dok je kod klase sve
podrazumijevano private
 Konceptualna razlika:
 Struktura je (ipak) namijenjena modeliranju skupa jednostavnih
podataka nad kojima ostali dijelovi programa direktno operiraju
 Klasa kao primarni koncept objektno orijentirane paradigme
(prisutan u svim objektno orijentiranim jezicima!) je namijenjen
modeliranju (predstavljanju) koncepata iz područja problema koji
rješavamo (DinamickoPolje, Stog, HashFile, ...) koji
imaju složeno ponašanje realizirano preko skupa funkcija članica
3
Primjer05
Kompajler
class DinamickoPolje
{
public:
int Inicijaliziraj(int inMaxBrojElem);
void Izbrisi();
int PostaviNovuVelicinu(int NoviBrojElem);
void PostaviElement(int Indeks, int Vrijednost);
int DohvatiElement(int Indeks);
int DodajElementNaKraj(int Vrijednost);
int BrojElemenata();
private:
int *_Podaci;
int BrojElem; // koliko stvarno ima elemenata u polju
int MaxBrojElemenata; // maksimalni raspoloživi prostor
};
4
Apstrakcija i enkapsulacija –
osnovni elementi OO paradigme
 Apstrakcija – odbacivanje onoga što je
sporedno, posebno i slučajno radi onoga što
je opće, zakonito i bitno
 Enkapsulacija (učahurivanje) -
onemogućavanje pristupa varijablama
članicama osim putem ugrađenih metoda za
njihovo čitanje i pisanje. Time se osigurava
da objekt ne može doći u neko nepredviđeno
stanje iz bilo kojeg razloga
5
A & E - Apstrakcija
 Apstrakcija – klase / objekti predstavljaju koncepte iz domene
problema koji rješavamo
 Klasa DinamickoPolje
 Apstrakcija koncepta dinamičkog polja s dobro definiranim
karakteristikama
 Nije li to isto što i struktura u C-u?
 Struktura predstavlja agregatni skup podataka nad kojima operiraju
“vanjski” elementi programa (funkcije)
 Vanjske funkcije nisu dio strukture – zbog toga struktura nije
“potpuna” jer je za razumijevanje koncepta koji predstavlja potrebno
proučiti nešto što nije dio same definicije strukture
 Struktura nije “zatvorena” u smislu da ne upravlja sama svojim
ponašanjem i stanjem!
 Modeliranjem koncepta pomoću klase rješavamo navedene
probleme
6
 Enkapsulacija
 “niti jedan dio složenog sustava ne bi smio ovisiti
o unutrašnjim detaljima drugog dijela”
 “unutrašnji detalji” – korisnika klase
DinamickoPolje uopće ne treba zanimati
kako je realizirana njegova funkcionalnost
(barem u teoriji )
A & E - Enkapsulacija
7
Primjer DinamickoPolje
implementacija
 Koncept dinamičkog polja je vrlo jednostavan i
praktički implicira način implementacije (dinamička
alokacija memorije za elemente polja), ali kod
složenijih klasa to ni u kojem slučaju nije tako
 Čak i kod dinamičkog polja možemo imati varijabilnost
u implementaciji:
Npr., ako je rukovanje memorijom skriveno od
korisnika klase, može se izraditi vlastiti modul za
upravljanje memorijom (ne koristimo malloc i
realloc, već vlastitu implementaciju – npr. radi
efikasnosti)
8
Primjer DinamickoPolje
enkapsulacija
 Enkapsulaciju postižemo deklariranjem
unutrašnjih detalja klase kao private
 Budući da tada ionako ne može pristupiti tim
dijelovima, korisnik klase
DinamickoPolje ne može o njima ni
ovisiti (zato jer ih ne može izravno referencirati
u programskom kodu kojega on piše)
9
Javno sučelje klase
 Sve što je u klasi deklarirano kao public dio
je javnog sučelja klase
 Javno sučelje klase predstavlja “prozor u
svijet” kroz koji klasa komunicira s ostalim
dijelovima programa
 Definiranjem članskih varijabli kao private,
klasa “skriva” svoje stanje
10
Enkapsulacija
u stvarnom životu i u programiranju
 Svaki sustav kod
kojega nije bitno kako
radi već što radi
 Postoji sučelje putem
kojega korisnik
komunicira sa
sustavom (npr. daljinski
upravljač - Play, Stop,
Eject, ... )
 Za korisnika klase
DinamickoPolje je
bitno da klasa ima
očekivano ponašanje,
a kako je unutar klase
omogućeno takvo
ponašanje, korisnika
(uglavnom) ne zanima!
11
Pojam objekta
 Ovako izgleda deklaracija klase (novi tip podatka):
class MojaKlasa {
...
};
 Slično kao i kod struktura, klasa predstavlja predložak iz kojega će se
kreirati objekti
 Kod struktura se konkretna instanca strukture naziva varijabla (strukture)
 Kod klase se konkretna instanca klase naziva se naziva objekt
 Klasa je jedna, a iz nje se može instancirati (stvoriti) proizvoljan broj
objekata
 Svi objekti imaju isti skup varijabli članica i funkcija članica
 Objekti se razlikuju po vrijednostima koje imaju njihove varijable članice (te
vrijednosti predstavljaju stanje objekta)
 Analogija sa strukturom podataka polje – svi elementi polja su istog tipa,
a vrijednosti pojedinih elemenata se razlikuju. Elementu polja se
pristupa putem indeksa
12
Kreiranje objekata
 Slično kao i kod struktura, kreiranje objekta
primarno podrazumijeva alociranje prostora u
memoriji gdje će objekt (odnosno njegove
članske varijable) biti fizički smješten
 Moguća su dva standardna načina:
 Smještanje objekta na stog - Objekt se deklarira
kao lokalni objekt unutar funkcije
 Smještanje objekta na heap (gomilu) - “životni vijek”
objekta nije vezan uz kontekst izvođenja funkcije
već se objekt eksplicitno mora “uništiti” (izbrisati iz
memorije)

More Related Content

More from Goran Igaly

Predavanja3. word 1
Predavanja3.   word 1Predavanja3.   word 1
Predavanja3. word 1Goran Igaly
 
Mogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projekti
Mogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projektiMogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projekti
Mogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projektiGoran Igaly
 
Nacionalni parkovi
Nacionalni parkoviNacionalni parkovi
Nacionalni parkoviGoran Igaly
 
Nova prezentacija
Nova prezentacijaNova prezentacija
Nova prezentacijaGoran Igaly
 
LaTeX - prvo predavanje
LaTeX - prvo predavanjeLaTeX - prvo predavanje
LaTeX - prvo predavanjeGoran Igaly
 
Predavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-a
Predavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-aPredavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-a
Predavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-aGoran Igaly
 
Računarski praktikum 1 - Razvoj softvera i dizajn
Računarski praktikum 1 - Razvoj softvera i dizajnRačunarski praktikum 1 - Razvoj softvera i dizajn
Računarski praktikum 1 - Razvoj softvera i dizajnGoran Igaly
 
Powerpoint za nastavnike 2016
Powerpoint za nastavnike 2016Powerpoint za nastavnike 2016
Powerpoint za nastavnike 2016Goran Igaly
 
Internet - korisnički dio
Internet - korisnički dioInternet - korisnički dio
Internet - korisnički dioGoran Igaly
 
Proračunske tablice - 3. dio
Proračunske tablice - 3. dioProračunske tablice - 3. dio
Proračunske tablice - 3. dioGoran Igaly
 
Predavanje9 - Excel 2. dio
Predavanje9 - Excel 2. dioPredavanje9 - Excel 2. dio
Predavanje9 - Excel 2. dioGoran Igaly
 
Računarski praktikum 1 - Excel 1
Računarski praktikum 1 - Excel 1Računarski praktikum 1 - Excel 1
Računarski praktikum 1 - Excel 1Goran Igaly
 
Obrada teksta - 2. dio
Obrada teksta - 2. dioObrada teksta - 2. dio
Obrada teksta - 2. dioGoran Igaly
 
Osnovni koncepti informatičke tehnologije
Osnovni koncepti informatičke tehnologijeOsnovni koncepti informatičke tehnologije
Osnovni koncepti informatičke tehnologijeGoran Igaly
 
Hrvatsko nazivlje u nastavi matematike
Hrvatsko nazivlje u nastavi matematikeHrvatsko nazivlje u nastavi matematike
Hrvatsko nazivlje u nastavi matematikeGoran Igaly
 
Hrvatsko nazivlje u matematici temeljni pojmovi - završno predavanje
Hrvatsko nazivlje u matematici   temeljni pojmovi - završno predavanjeHrvatsko nazivlje u matematici   temeljni pojmovi - završno predavanje
Hrvatsko nazivlje u matematici temeljni pojmovi - završno predavanjeGoran Igaly
 
Matematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuMatematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuGoran Igaly
 
Matematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuMatematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuGoran Igaly
 
Matematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuMatematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuGoran Igaly
 

More from Goran Igaly (20)

Predavanja3. word 1
Predavanja3.   word 1Predavanja3.   word 1
Predavanja3. word 1
 
Mogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projekti
Mogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projektiMogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projekti
Mogućnosti korištenja mikrokontrolera u obrazovanju i raniji slični projekti
 
Nacionalni parkovi
Nacionalni parkoviNacionalni parkovi
Nacionalni parkovi
 
Nova prezentacija
Nova prezentacijaNova prezentacija
Nova prezentacija
 
LaTeX - prvo predavanje
LaTeX - prvo predavanjeLaTeX - prvo predavanje
LaTeX - prvo predavanje
 
Predavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-a
Predavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-aPredavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-a
Predavanje 10 - Računarski praktikum 1 - Analiza i dizajn korištenjem UML-a
 
Računarski praktikum 1 - Razvoj softvera i dizajn
Računarski praktikum 1 - Razvoj softvera i dizajnRačunarski praktikum 1 - Razvoj softvera i dizajn
Računarski praktikum 1 - Razvoj softvera i dizajn
 
Powerpoint za nastavnike 2016
Powerpoint za nastavnike 2016Powerpoint za nastavnike 2016
Powerpoint za nastavnike 2016
 
Internet - korisnički dio
Internet - korisnički dioInternet - korisnički dio
Internet - korisnički dio
 
Proračunske tablice - 3. dio
Proračunske tablice - 3. dioProračunske tablice - 3. dio
Proračunske tablice - 3. dio
 
Predavanje9 - Excel 2. dio
Predavanje9 - Excel 2. dioPredavanje9 - Excel 2. dio
Predavanje9 - Excel 2. dio
 
Računarski praktikum 1 - Excel 1
Računarski praktikum 1 - Excel 1Računarski praktikum 1 - Excel 1
Računarski praktikum 1 - Excel 1
 
Obrada teksta - 2. dio
Obrada teksta - 2. dioObrada teksta - 2. dio
Obrada teksta - 2. dio
 
Osnovni koncepti informatičke tehnologije
Osnovni koncepti informatičke tehnologijeOsnovni koncepti informatičke tehnologije
Osnovni koncepti informatičke tehnologije
 
Zadaća 2 1
Zadaća 2 1Zadaća 2 1
Zadaća 2 1
 
Hrvatsko nazivlje u nastavi matematike
Hrvatsko nazivlje u nastavi matematikeHrvatsko nazivlje u nastavi matematike
Hrvatsko nazivlje u nastavi matematike
 
Hrvatsko nazivlje u matematici temeljni pojmovi - završno predavanje
Hrvatsko nazivlje u matematici   temeljni pojmovi - završno predavanjeHrvatsko nazivlje u matematici   temeljni pojmovi - završno predavanje
Hrvatsko nazivlje u matematici temeljni pojmovi - završno predavanje
 
Matematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuMatematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenju
 
Matematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuMatematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenju
 
Matematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenjuMatematički postupci u automatskom prevođenju
Matematički postupci u automatskom prevođenju
 

Predavanja 05 - Osnovne osobine klasa

  • 1. Računarski praktikum 1 Predavanja Goran Igaly Sveučilište u Zagrebu PMF, Matematički odsjek 5. predavanje
  • 2. 2 Klasa  Uvodimo ključnu riječ class  Klasa poopćava pojam strukture iz C-a  Razlika između klase (class) i strukture (struct) u jeziku C++  Sa stanovišta C++ prevoditelja primarno sintaksna – kod strukture je sve podrazumijevano public dok je kod klase sve podrazumijevano private  Konceptualna razlika:  Struktura je (ipak) namijenjena modeliranju skupa jednostavnih podataka nad kojima ostali dijelovi programa direktno operiraju  Klasa kao primarni koncept objektno orijentirane paradigme (prisutan u svim objektno orijentiranim jezicima!) je namijenjen modeliranju (predstavljanju) koncepata iz područja problema koji rješavamo (DinamickoPolje, Stog, HashFile, ...) koji imaju složeno ponašanje realizirano preko skupa funkcija članica
  • 3. 3 Primjer05 Kompajler class DinamickoPolje { public: int Inicijaliziraj(int inMaxBrojElem); void Izbrisi(); int PostaviNovuVelicinu(int NoviBrojElem); void PostaviElement(int Indeks, int Vrijednost); int DohvatiElement(int Indeks); int DodajElementNaKraj(int Vrijednost); int BrojElemenata(); private: int *_Podaci; int BrojElem; // koliko stvarno ima elemenata u polju int MaxBrojElemenata; // maksimalni raspoloživi prostor };
  • 4. 4 Apstrakcija i enkapsulacija – osnovni elementi OO paradigme  Apstrakcija – odbacivanje onoga što je sporedno, posebno i slučajno radi onoga što je opće, zakonito i bitno  Enkapsulacija (učahurivanje) - onemogućavanje pristupa varijablama članicama osim putem ugrađenih metoda za njihovo čitanje i pisanje. Time se osigurava da objekt ne može doći u neko nepredviđeno stanje iz bilo kojeg razloga
  • 5. 5 A & E - Apstrakcija  Apstrakcija – klase / objekti predstavljaju koncepte iz domene problema koji rješavamo  Klasa DinamickoPolje  Apstrakcija koncepta dinamičkog polja s dobro definiranim karakteristikama  Nije li to isto što i struktura u C-u?  Struktura predstavlja agregatni skup podataka nad kojima operiraju “vanjski” elementi programa (funkcije)  Vanjske funkcije nisu dio strukture – zbog toga struktura nije “potpuna” jer je za razumijevanje koncepta koji predstavlja potrebno proučiti nešto što nije dio same definicije strukture  Struktura nije “zatvorena” u smislu da ne upravlja sama svojim ponašanjem i stanjem!  Modeliranjem koncepta pomoću klase rješavamo navedene probleme
  • 6. 6  Enkapsulacija  “niti jedan dio složenog sustava ne bi smio ovisiti o unutrašnjim detaljima drugog dijela”  “unutrašnji detalji” – korisnika klase DinamickoPolje uopće ne treba zanimati kako je realizirana njegova funkcionalnost (barem u teoriji ) A & E - Enkapsulacija
  • 7. 7 Primjer DinamickoPolje implementacija  Koncept dinamičkog polja je vrlo jednostavan i praktički implicira način implementacije (dinamička alokacija memorije za elemente polja), ali kod složenijih klasa to ni u kojem slučaju nije tako  Čak i kod dinamičkog polja možemo imati varijabilnost u implementaciji: Npr., ako je rukovanje memorijom skriveno od korisnika klase, može se izraditi vlastiti modul za upravljanje memorijom (ne koristimo malloc i realloc, već vlastitu implementaciju – npr. radi efikasnosti)
  • 8. 8 Primjer DinamickoPolje enkapsulacija  Enkapsulaciju postižemo deklariranjem unutrašnjih detalja klase kao private  Budući da tada ionako ne može pristupiti tim dijelovima, korisnik klase DinamickoPolje ne može o njima ni ovisiti (zato jer ih ne može izravno referencirati u programskom kodu kojega on piše)
  • 9. 9 Javno sučelje klase  Sve što je u klasi deklarirano kao public dio je javnog sučelja klase  Javno sučelje klase predstavlja “prozor u svijet” kroz koji klasa komunicira s ostalim dijelovima programa  Definiranjem članskih varijabli kao private, klasa “skriva” svoje stanje
  • 10. 10 Enkapsulacija u stvarnom životu i u programiranju  Svaki sustav kod kojega nije bitno kako radi već što radi  Postoji sučelje putem kojega korisnik komunicira sa sustavom (npr. daljinski upravljač - Play, Stop, Eject, ... )  Za korisnika klase DinamickoPolje je bitno da klasa ima očekivano ponašanje, a kako je unutar klase omogućeno takvo ponašanje, korisnika (uglavnom) ne zanima!
  • 11. 11 Pojam objekta  Ovako izgleda deklaracija klase (novi tip podatka): class MojaKlasa { ... };  Slično kao i kod struktura, klasa predstavlja predložak iz kojega će se kreirati objekti  Kod struktura se konkretna instanca strukture naziva varijabla (strukture)  Kod klase se konkretna instanca klase naziva se naziva objekt  Klasa je jedna, a iz nje se može instancirati (stvoriti) proizvoljan broj objekata  Svi objekti imaju isti skup varijabli članica i funkcija članica  Objekti se razlikuju po vrijednostima koje imaju njihove varijable članice (te vrijednosti predstavljaju stanje objekta)  Analogija sa strukturom podataka polje – svi elementi polja su istog tipa, a vrijednosti pojedinih elemenata se razlikuju. Elementu polja se pristupa putem indeksa
  • 12. 12 Kreiranje objekata  Slično kao i kod struktura, kreiranje objekta primarno podrazumijeva alociranje prostora u memoriji gdje će objekt (odnosno njegove članske varijable) biti fizički smješten  Moguća su dva standardna načina:  Smještanje objekta na stog - Objekt se deklarira kao lokalni objekt unutar funkcije  Smještanje objekta na heap (gomilu) - “životni vijek” objekta nije vezan uz kontekst izvođenja funkcije već se objekt eksplicitno mora “uništiti” (izbrisati iz memorije)