Open closed principle

Ovaj članak je „slobodni“ prevod dijela 9. poglavlja iz knjige „Agile Principles, Patterns, and Practices in C#“ – „Open closed principles“ (autori Robert Martin i Micah Martin). Članak je fokusiran na upotrebu C++ jezika i objektno orjentisanog dizajna (OOD) kao i prema softverskom inžinjeringu. Nadam se da je članak pragmatičan i da će pomoći softverskim inžinjerima u njihovom radu. U ovom članku će se upotrebljavati Boochova notacija za označavanje u objektno orjentisanom dizajnu. Continue reading

Single responsibility principle

Ovaj princip je opisan u radu Tom DeMarco i Meilir Page-Jones. Oni su ga nazvali kohezija. U nekim radovima se termin kohezija na nivou definicije paketa upotrebljava na mnogo suptilniji način. Ipak, na nivou definicije klasa termin koehezija  je u skladu sa definicijom ovog principa. Suština ovog principa se može iskazati kroz sljedeću definiciju:

NE BI TREBALO NIKADA DA POSTOJI VIŠE OD JEDNOG RAZLOGA DA SE IZVRŠI PROMJENA KLASE

Pretpostavimo da imamo klasu koja je odgovorna za dvije funkcionalnosti – odnosno da imamo klasu unutar koje su implementirane dvije različite usluge za neki programski sistem. Sa stanovišta poštovanja SRP – Single Responsibility Principle-a, ovako definisana klasa nije korektna.

Zašto je bitno SRP ispoštovati? Zato što implementacija prethodno pomenute dvije odgovornosti u jednoj klasi može biti uzrok kasnijih potpuno nezavisnih izmjena u definiciji klase. Kada se pojavi novi zahtjev od strane korisnika za doradom jedne od funkcionalnosti implementacija tog zahtjeva se može manifestovati kroz izmjenu ponašanja cijele klase odnosno i one druge funkcionalnosti.

Ukoliko je klasa odgovorna za realizaciju više od jedne funkcionalnosti, tada će postojati realna vjerovatnoća da se od strane korisnika ispostavljaju nezavisni zahtjevi za svaku od funkcionalnosti koja je implementirana u jednoj klasi. Continue reading

LSP – Liskov Substitution Principle

Ovaj tekst je slobodni i nerecenzirani prevod  Engineering Notebook columns for The C++ Reporta. Tekst za temu ima jedan od fundamentalnih principa objektno orjentisanog dizajna (OOD) – „Liskov Substitution Principle“. Tekst je prije svega orjentisan prema upotrebi u programskom jeziku C++ i prema OOD. U tekstu će biti korišćena Booch i Rumbaugh-ova grafička notacija (verzija 0,8) za dokumentovanje OOD.Slika u side-baru daje najosnovniji prikaz grafičkih elemenata ove notacije

Continue reading