2010-05-25 13 views
7

Qui ho alcuni veri suonatori di no alle mie mani e sto cercando di dare loro il motivo per cui OOP è stato sviluppato in primo luogo. Mi rendo conto che OOP non è perfetto per tutti i problemi e le situazioni, ma è stato sviluppato per un motivo ...Qual è stato il pensiero dietro lo sviluppo della programmazione orientata agli oggetti?

La mia ipotesi è che alcuni di quei motivi sarebbero:

  • Maintainability
  • riutilizzabilità
  • documento-capacità
  • Astrazione di tecnologie complesse
  • Dynamic Extension a runtime ...
  • Probabilmente alcune cose di cui non sono nemmeno a conoscenza ...

Ma non ho molto da fare e mi chiedevo perché OOP è stato sviluppato in primo luogo, ed è storia.

Quali sono state le persone che hanno sviluppato OOP cercando di realizzare? Cosa li ha portati a sviluppare l'OOP?

+2

Questa sarebbe una buona domanda wiki della comunità. –

+3

E hai controllato Wikipedia e Google? La maggior parte di queste informazioni è già disponibile. –

+1

hi leeand00. Se lo desideri, modifica questa domanda e seleziona la casella di controllo "Wiki della community". Non particolarmente intuitivo, ma che designa una domanda di discussione piuttosto che una tecnica. A meno che tu non lo faccia, alcune persone voteranno per chiudere la domanda. –

risposta

3

Ho sempre tenuto il parere che programmazione orientata agli oggetti è stato creato in modo da poter pensare a problemi complessi in modo che gli esseri umani potrebbero comprendere:

Tutto nel mondo è un oggetto, gli oggetti hanno proprietà, e un po ' gli oggetti possono anche eseguire azioni (o avere azioni eseguite su di loro).

1

Un motivo per cui è possibile contribuire al dibattito è che OOP aiuta a modellare il mondo reale utilizzando classi, funzioni e proprietà per definire concetti concreti e oggetti in modo astratto. Si potrebbe obiettare che OOP sperava di aiutare gli sviluppatori nella modellazione del codice dopo i processi e gli oggetti del mondo reale che costituiscono uno specifico spazio problematico.

1

Un buon libro per questo è Object-Oriented Software Construction di Bertrand Meyer (ampiamente considerato un testo fondamentale di programmazione orientata agli oggetti). Dalla pagina di Wikipedia:

Il libro, noto tra i suoi fan come "OOSC", presenta la tecnologia oggetto come una risposta ai principali problemi di ingegneria del software, con particolare attenzione su come affrontare i fattori di qualità del software di correttezza, robustezza, estendibilità e riusabilità. Inizia con l'esame dei problemi della qualità del software, quindi introduce i tipi di dati astratti come base teorica per la tecnologia dell'oggetto e procede con le principali tecniche orientate agli oggetti: classi, oggetti, genericità, ereditarietà, Design by Contract, concorrenza e persistenza . Include ampie discussioni su questioni metodologiche.

+0

Hai intenzione di collegarti alla seguente pagina? http://en.wikipedia.org/wiki/Object-Oriented_Software_Construction – stakx

+0

@stakx Sì !! Grazie per la segnalazione. –

1

Paul Graham ha una buona lista di motivi per cui persone come OOP:

http://www.paulgraham.com/noop.html

+2

A dire il vero, questo non suona come un "elenco di ragioni per cui la gente ama OOP", più come "elenco dei motivi per cui penso che i programmatori OOP facciano schifo". È sempre divertente vedere le persone parlare di altri tipi di linguaggi o di programmatori invece di provare a vendere le loro cose preferite. –

0

Penso che quello che motived OOP in primo luogo sono questi fatti (o dovrei dire ipotesi?):

  • pensiamo naturalmente in termini di oggetti/cose
  • oggetti sono buone per catturare/modello realtà
  • oggetti possono essere utilizzati in modo uniforme in tutto il dev. processo (requisito, analisi, implementazione)

Se questo è vero è un'altra domanda. Vedi Do We Think in Terms of Objects.

L'essenza della programmazione orientata agli oggetti è

  • oggetto = identità + dati + comportamento

Quali sono le caratteristiche esatte fornite in un linguaggio OOP è anche un'altra questione. Vedi lo wikipedia page.

PS: Un sacco di cosiddetto codice orientato agli oggetti è in realtà un codice procedurale mascherato in codice orientato agli oggetti. Il problema principale con OOP, come lo conosciamo, è che richiede esperienza per catturare la collaborazione tra gli oggetti quando una responsabilità non può essere banalmente assegnata a un oggetto.

1

La teoria a parte, ciò che ha realmente spinto l'adozione di OOPS è stata l'arrivo di GUI basate su Windows.

Se stai programmando un'applicazione terminale DOS o Mainframe, non hai davvero bisogno di OOP, certo che potrebbe essere utile ma non c'è alcun motivo valido per adottarlo. Tuttavia, non appena si avvia la codifica per una GUI basata su "wimp", gestirla in modo efficiente senza OOP è molto difficile, in particolare non appena si esce da un sistema semplice.

Ho tagliato i denti codificando per Mac indietro quando Pascal era la lingua predefinita, dovevi gestire il tuo ciclo di eventi principale e fare queste cose attraverso i rettangoli per ridisegnare una finestra quando era sullo sfondo coperto da finestre davanti ad esso. Di conseguenza, vaste quantità di persino il programma più semplice riguardavano l'infrastruttura di base e non era un compito banale mantenere le interfacce pulite in modo che il codice non scendesse in grovigli di spaghetti. Lo stesso valeva per Windows (leggete uno dei primi libri di programmazione di Charles Petzold) e le varie altre GUI in quel momento.

L'adozione di OOP ha semplificato notevolmente questo aspetto poiché OOP è una soluzione naturale per le GUI. Oggi lo consideriamo ovvio e naturale, ma non è sempre stato così e certamente l'adozione di OOP è stata considerata come una sfida importante per i programmatori di allora. Tuttavia il risultato è stato che tutti i nuovi programmatori dalla fine degli anni '90 sono cresciuti con gli OOP perché è davvero necessario per gestire le GUI con il risultato che è praticamente il modo predefinito di codificare e di conseguenza il suo utilizzo si è diffuso ampiamente oltre l'interfaccia.

2

Alan Kay, che ha coniato il termine "Programmazione orientata agli oggetti" ha explained his thinking in alcune occasioni. In sostanza, ha preso l'idea dalla biologia - il modo in cui ogni cellula è un'entità autosufficiente e interagisce solo con altre cellule attraverso "messaggi", senza sapere nulla su come funziona l'altra cellula, e tutte queste entità autonome aggiungere fino a un organismo vivente. Pensava che questo modo di dividere la responsabilità, con molte entità che si prendevano cura di se stesse e comunicavano solo inviando messaggi, avrebbe reso più facile mantenere i programmi organizzati. Ha anche detto di considerare il World Wide Web come un'estensione di questo modello.

+0

Mi piace questa risposta! MrGreen La natura conoscerebbe il modo migliore per farlo. – leeand00

Problemi correlati