Pogledajmo sad primjer našeg koda. Imamo baznu klasu "Robot", iz koje su izvedene klase "RobotLine", "RobotMaze" i "RobotSoccer".
To znači da je npr. "RobotLine" vrsta "Robot" (ne dekliniramo jer se imena klasa ne mijenjaju).
Robot ima neke zajedničke osobine za sve:
- name (osobina),
- blink (radnja),
- delayMs (radnja),
- firmwarePrint (radnja),
- goAhead() (radnja).
Posljednja je radnja posebno zanimljiva. Sve druge se izvršavaju jednako na svakom robotu i nema razlike je li robot RobotMaze ili RobotLine, npr.
goAhead() je za svaki robot drugačiji. Očito da se motori ne mogu pokretati na isti način na Soccer robotu kao na Maze robotu. Međutim, ime funkcije je isto.
Slijedi izuzetno bitan opis koncepta u objektnom programiranju pa ga dobro proučite, da uočite o čemu se radi.
Za svaki od robota definiramo njegovu funkciju koja pokreće robota naprijed i spremimo goAhead() u svaku od klasa.
Ista funkcija se pojavljuje i u baznoj klasi, Robot, ali tamo neće biti definirana.
Mi sad možemo razvijati kod koji je baziran na klasi robot. Kad želimo da robot ide naprijed, u kodu pozovemo goAhead(). U tom času, razvoja općenitog programa, mi ne znamo koji će to robot biti. To je bit. Mi razvijamo općeniti program za bilo kojeg robota. Kod više ne ovisi o svakom pojedinom robotu i svaki od njih može imati potpuno nezavisan razvoj, sve dok postoji definicija funkcije goAhead().
Nakon toga možemo imati posebnog programera za klasu Robot, posebnog za RobotLine, itd. Njihovi su razvoji nezavisni, svatko ispravlja svoje greške i radi nezavisno od drugih. To je jedan odličan način podjele rada i radikalno olakšava pronalaženje problema.