Neslužbene stranice predmeta Oblikovni obrasci u programiranju (OOUP)
O predmetu:
Razmatra se programsko oblikovanje
kao vještina organiziranja interakcije komponenti
s ciljem postizanja poželjnih svojstava programskog sustava.
Obrazlaže se potreba za oblikovanjem programskih podsustava
koji pored dobrih statičkih svojstava
(korektnost, performansa, upotrebljivost)
imaju i dobra dinamička svojstva
(lako održavanje, otpornost na promjene).
Navode se simptomi koji ukazuju
na neadekvatna dinamička svojstva programa,
te općenita načela oblikovanja kojima se
uzroci simptoma mogu otkloniti.
Uvodi se pojam oblikovnog obrasca kao isprobanog rješenja
kojim se uvedena općenita načela mogu ostvariti
u razredima čestih konkretnih problema.
Razmatraju se klasifikacije obrazaca
prema razini apstrakcije, svrsi i području primjene.
Detaljno se proučavaju važniji oblikovni obrasci
kao konceptualna rješenja koja se mogu
primijenjivati u svakodnevnoj praksi.
Predmet se sastoji od dva sata predavanja tjedno,
te laboratorijskih vježbi
koje se kolokviraju jednom u svakom ciklusu.
Pretpostavljena su osnovna znanja
iz domene objektno orijentiranog programiranja
stečena na uvodnim kolegijima.
Iako se izloženi koncepti mogu primijeniti
u gotovo bilo kojem modernom programskom jeziku,
blagi naglasak predmeta je na jeziku C++.
Predavanja
-
Uvodno predavanje (tjedan 1)
pdf
-
Načela oblikovanja (tjedni 2-5)
pdf
-
Važniji oblikovni obrasci (tjedni 6-9)
pdf
-
Ostali oblikovni obrasci (tjedni 10-13)
pdf
Laboratorijske vježbe
-
Laboratorijska vježba 1 (dinamički polimorfizam, načela)
html
-
Laboratorijska vježba 2 (važniji obrasci)
html
-
Laboratorijska vježba 3 (ostali obrasci)
html
-
Često postavljana pitanja o C++-u
html
Korisne knjige
Načela i obrasci programskog oblikovanja
-
Design Patterns;
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides;
Addison-Wesley; 1995
-
Agile Software Development: Principles, Patterns, and Practices;
Robert C. Martin; Prentice Hall; 2002
-
Large-Scale C++ Software Design;
John Lakos; Addison-Wesley; 1996
-
Modern C++ Design: Generic Programming and Design Patterns Applied;
A. Alexandrescu; Addison-Wesley; 2001
-
Head First Design Patterns;
Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra;
O'Reilly Media, Inc.; 2004
-
The Elements of Programming Style;
Brian W. Kernighan, P. J. Plauger;
Computing Mcgraw-Hill; 1978
Razvojne metodologije
-
The Mythical Man-Month; F. Brooks;
Addison Wesley; 1995
-
The Pragmatic Programmer;
A. Hunt, D. Thomas; Addison Wesley; 2000
-
Generative Programming: Methods, Tools, and Applications;
Krysztof Czarnecki, Ulrich Eisenecker;
Addison-Wesley Professional; 2000
-
Extreme Programming Adventures in C\#;
Ron Jeffries;
Microsoft Press; 2004
C++, generičko programiranje
-
[More] Effective {C++|STL}; S. Meyers;
Addison Wesley; 1996
-
C++ FAQs; Marshall P. Cline, Greg Lomow, Mike Girou;
Addison-Wesley Professional; 1998
-
Demistificirani C++;
Julijan Šribar i Boris Motik;
Element; 2006
-
Generic Programming and the STL:
Using and Extending the C++ Standard Template Library
Addison-Wesley Professional Computing Series;
Matthew H. Austern; 1998
-
C++ Templates: The Complete Guide;
by David Vandevoorde, Nicolai M. Josuttis
Addison-Wesley Professional; 2002
Zanimljivi članci
Istraživanja o programskoj organizaciji i arhitekturi
-
Brian Foote and Joseph Yoder, Big Ball of Mud, PLOP'97
(pdf)
-
Hayden Melton, Ewan Tempero:
An Empirical Study of Cycles among Classes in Java,
OOPSLA'06
(pdf)
-
Brian Foote:
Pattern labyrinth
(html)
-
Patterns at hillside.net
(html)
Programsko oblikovanje, organiziranje interakcije komponenata
-
R. Martin:
Principles and Patterns
(pdf)
-
Joel Spolsky:
Don't Let Architecture Astronauts Scare You
(html)
Općenito o programskom inženjerstvu
-
TIOBE Programming Community Index
(html)
-
Bug koji je uništio Arijanu
(1, 2)
-
Kako napisati dobar CV
(html)
-
Buba koja je u standarnoj biblioteci Jave
mirno proležala devet godina
(html)
-
B. Stroustrup o nastavnim programima u programskom inženjerstvu
(html)
-
Kako postati hacker, od Erica Raymonda
(html)
-
Hackers and painters, od Paula Grahama
(html)
-
Jack Reeves o oblikovanju programske podrške
(html)
-
P. Graham o pokretanju tvrtke
(html)
-
Standard jezika C, ISO/IEC 9899, draft 2007
(pdf)
O patentima na programska rješenja
-
P. Graham o patentima
(html)
-
Zašto patenti koče inovaciju
(html)
O programskom stilu
-
O programskom stilu (Wikipedia)
(html)
-
Googleov programski stil za C/C++
(html)
-
Vodič za pisanje programa koji se ne mogu održavati
(html)
O C++-u, sortirano prema lucidnosti
-
Biblioteka Boost
(html)
-
FAQ Bjarnea Stroustrupa
(html)
-
Najlakši način za naučiti C++ u 21 dan
(html)
-
FAQ Marshala Clinea
(html)
-
Scott Meyers i Andrei Alexandrescu:
"C++ and the Perils of Double-Checked Locking"
(pdf)
-
Curtis Krauskopf
"C++ Interview Questions"
(html)
O komuniciranju na Internetu
-
O stilistici e-mailiranja (Wikipedia)
(html)
-
RFC 1855, Nettiquette guidelines
(html)
-
P. Graham o izražavanju neslaganja
(html)