Speaker / Predavač : Mr Aleksandar Kupusinac , dipl. ing.
Title / Naslov: Invarijanta klase u objektno orijentisanom programiranju
Abstract / Abstrakt:
Kada se želi dati odgovor na pitanje da li je neki softver ispravan ili ne, nailazi se na sledeći problem, a to je da se ne može govoriti o tome da li je neki softver tačan ili ne, već samo da li je korektan ili ne u odnosu na neku specifikaciju. Drugim rečima, potrebno je ispitati da li napisani softver izvršava ono što se od njega tražilo u specifikaciji. Ukoliko se softver ponaša u skladu sa unapred propisanom specifikacijom, zaključuje se da je korektan. Činjenica je da svaki program nešto “radi”, ali se postavlja pitanje da li njegov “rad” uspešno rešava problem koji je opisan u specifikaciji, odnosno da li ima svrhe koristiti taj program za rešavanje datog problema. Na primer, program koji sortira celobrojni niz nema svrhe koristiti za izračunavanje integrala. Dakle, korektnost je relativna i zavisi od neke specifikacije, odnosno od opisa neke čovekove potrebe da softver rešava neki problem. Da bi se mogla analizirati korektnost objektno orijentisanog programa važno je razmotriti osnove metodologije objektno orijentisanog programiranja, počev od entiteta i klase entiteta, preko modela, pa do objekta i klase (objekata). Po definiciji, objekat predstavlja model ili uprošćenu sliku entiteta, pa je očigledno neophodno da se obezbedi mehanizam koji bi garantovao da objekat u svakom trenutku ima smisla, odnosno, iako je objekat samo uprošćena slika entiteta, on i dalje treba da zadrži bitne osobine koje čine suštinu entiteta kojeg predstavlja. Suština je unutrašnja relacija nekog entiteta, po kojoj je dati entitet ono što jeste. Potrebno je odgovoriti na pitanje šta je to suštinsko u svakoj klasi entiteta, ono što treba da bude prisutno i u modelu, a zatim i u samoj realizaciji klase u nekom programskom jeziku. Zbog toga, da bi se dobili valjani odgovori potrebno je razmotriti odnos suštine klase entiteta i invarijante klase, koja zauzima centralno mesto kada se govori o korektnosti objektno orijentisanog programa.