Nella programmazione orientata agli oggetti il principio aperto/chiuso (open/closed principle, abbreviato con OCP) afferma che le entità (classi, moduli, funzioni, ecc.) software dovrebbero essere aperte all'estensione, ma chiuse alle modifiche; in maniera tale che un'entità possa permettere che il suo comportamento sia modificato senza alterare il suo codice sorgente.
In particolare, una volta completata l'implementazione di un'entità, questa non dovrebbe essere più modificata, eccetto che per eliminare errori di programmazione. L'introduzione di nuove caratteristiche o la modifica di quelle esistenti dovrebbe richiedere la creazione di nuove entità.
Ciò è particolarmente importante in un ambiente di produzione, in cui i cambiamenti al codice sorgente possono richiedere la revisione del codice, test di unità, e altre procedure tali da garantire la qualità di un prodotto software: il codice che rispetta il principio non cambia quando viene esteso, e quindi non ha bisogno di tale sforzo.