Spesso un livello di astrazione viene comunemente usato per "astrarre" i dettagli lontani.
Supponiamo che tu abbia un programma per spostare denaro tra banche diverse. C'è una funzione per spostare denaro in BankA e una funzione diversa per spostare denaro in BankB e così via. Le diverse funzioni potrebbero esistere perché le informazioni richieste dalle diverse banche variano (come un semplice esempio, si potrebbe chiedere al mittente nome e cognome, e un altro richiede ai mittenti prima l'iniziale e il cognome).
Le tue funzioni potrebbero essere:
MoveMoneyToBankA(amount, accountNo, senderFirstName, senderSurname)
{
... Code to move money to bank A
}
MoveMoneyToBankB(amount, accountNo, senderFirstInitial, senderSurname)
{
... Code to move money to bank A
}
Per astrarre tutte le diverse cose a cui un programma deve pensare quando comunica con banchi diversi, un livello di astrazione potrebbe essere implementato aggiungendo la funzione 'MoveMoneyToBank'
MoveMoneyToBank(amount, accountNo, senderFirstName, senderSurname, bankName)
{
... If bank name = 'BankA' call MoveMoneyToBankA
... If bank name = 'BankB', find senderFirstInitial using senderFirstName, and call 'MoveMoneyToBankB'
}
Quindi ciò che hai fatto qui è astratto dei dettagli che devono essere gestiti quando si comunica con due banche diverse. Un programmatore ora può semplicemente utilizzare la funzione generale MoveMoneyToBank e non deve pensare ai diversi requisiti di ogni banca.
In realtà, questo potrebbe non essere solo funzioni con nello stesso programma, ma anche diversi progetti all'interno della stessa soluzione, o un nuovo progetto software che richiama molti componenti e si occupa della complessità di lavorare con tutti i componenti separati per raggiungere un obiettivo comune.