I linguaggi di programmazione orientati agli oggetti sono procedurali? [duplicare]

4

Programmazione procedurale significa che la codifica dell'applicazione è una serie di compiti. Fai A, quindi fai B, poi fai C. E spesso avvolgi questi compiti in procedure o funzioni che possono essere facilmente richiamate ed eseguite più volte nel codice.

La programmazione orientata agli oggetti viene spesso eseguita facendo A, quindi facendo B, quindi facendo C. Ma gli oggetti vengono utilizzati (e correggono se ho torto perché non sono sicuro) come modi sofisticati per archiviare, manipolare e nascondere i dati. Ciò influisce in modo significativo sulla progettazione del programma. Ma il flusso generale dell'applicazione è ancora fare A, quindi fare B, quindi fare C.

Sei d'accordo? In tal caso, diresti che OOP è essenzialmente un tipo di programmazione procedurale?

    
posta Aviv Cohn 07.03.2014 - 08:17
fonte

2 risposte

11

Le lingue orientate agli oggetti non sono richieste per essere procedurali, OCaml (o F #) è un linguaggio orientato agli oggetti che è fondamentalmente funzionale.

Ora la maggior parte dei linguaggi orientati agli oggetti sono imperativi e procedurali ma possiedono funzionalità o framework che consentono di programmare Aspect / Behavioral / Functional all'interno di essi, in C # per esempio si possono usare i metodi lambda e anonimi per la programmazione funzionale, gli attributi (annotazioni) per i dichiarativi programmazione e modifiche dell'IL post-compilazione per la programmazione Aspect.

    
risposta data 07.03.2014 - 08:24
fonte
0

Le lingue orientate agli oggetti sono più un chiarimento su come i dati sono incapsulati, non su come è programmato il flusso del controllo. Scala ad esempio supporta stili di programmazione sia funzionali che procedurali, in cui è possibile eseguire manualmente una funzione su ciascun elemento di un array attraverso un ciclo

var arr = Array(<data>) 
for(item <- arr) {
   foo(item) 
}

O si potrebbe semplicemente dire all'array che dovrebbe eseguire la funzione

arr.foreach(foo)

OOP sta incapsulando e separando il codice, che dovrebbe consentire una migliore individuazione dei bug e mantenere i bug più confinati.

Procedural sta programmando una cosa dopo l'altra, dove in funzionale si dovrebbe piuttosto dire cosa dovrebbe accadere piuttosto che l'ordine esatto in cui dovrebbe accadere.

Forse guarda questa domanda Cos'è esattamente la programmazione procedurale? Quanto è esattamente diverso da OOP? È lo stesso della programmazione funzionale?

    
risposta data 07.03.2014 - 12:15
fonte

Leggi altre domande sui tag