
Rešavanje programerskih problema podrazumeva pravljenje modela okoline u kojoj se dati problem razmatra i analizira, a u modeliranju te okoline jedan od osnovnih alata je apstrakcija. Osnovni nivo apstrakcije predstavlja uočavanje određenih šablona uz prepoznavanje zajedničkih osobina objekata kojima su modelovani entiteti iz stvarnog sveta, dok naredni nivo apstrakcije predstavlja uključivanje/isključivanje nekih detalja o tim objektima.
Složeni problemi se analiziraju i rešavaju deljenjem problemskog zadatka na manje celine, pa se u tom smislu složenost tretira apstrakcijama, odnosno kontrolisanim uvođenjem detalja. Određene detalje je potrebno zanemariti na nekom nivou apstrakcije da bi se složenost svela na razumnu meru.
U opisu nekog fenomena programer/projektant svesno uklanja neke detalje, procenjujući da ti detalji nisu neophodni ili nisu esencijalno značajni sa aspekta datih potreba. To svakako ima za posledicu da se za određeni fenomen mogu kreirati različite apstrakcije koje će zadržavati/isključivati različite detalje o datom fenomenu, za različite potrebe.
Hijerarhija apstrakcija predstavlja uzastopnu primenu postupka apstrahovanja/konkretizovanja, pri čemu je konkretizacija postupak suprotan apstrakciji. Svaki nivo apstrakcije sadrži informacije koje odgovaraju upravo tom nivou apstrakcije. Svakako, programer/projktant mora vrlo dobro da poznaje problem koji se rešava kako bi mogao da odredi koji detalji su karakteristični za svaki nivo apstrakcije, kao i koje detalje je potrebno izostaviti na određenom nivou apstrakcije.
U tom smislu, može se reći da je apstrakcija najvažniji alat za upravljanje složenim projektima i problemima. Koncept sakrivanja, potiskivanja ili izostavljanja detalja omogućava upravljanje složenošću, dok, sa druge strane, ističe aspekte ili detalje koji su važni za bolje razumevanje i rešavanje datog problema, pri uslovima od interesa.
Nakon specifikacije apstrakcije, koja predstavlja sam opis te apstrakcije, prelazi se na implementaciju apstrakcije, odnosno njenu konkretizaciju u nekom implementacionom okruženju. Programi su, bez obzira na izbor konkretnog objektno-orijentisanog implementacionog okruženja, organizovani kao kolekcije objekata koji međusobno sarađuju na određeni način, pri čemu je svaki objekat primerak ili instanca neke klase, dok su sve klase, povezane relacijama nasleđivanja, članice neke hijerahije klasa. Objekti pri tome predstavljaju apstrakcije podataka sa interfejsom preko imenovanih operacija i skrivenim lokalnim stanjem.
Apstakcija, dakle, ima cilj da istakne esencijalne karakteristike objekta, da izdvoji njegove razlike u odnosu na druge vrste objekata i time omogući definisanje jasne konceptualne granice iz perspektive datog problema. Programer/projektant zapravo traži kompromis između gubitka važnih detalja i opterećenja nebitnim detaljima.